版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 基于單片機(jī)萬(wàn)年歷的設(shè)計(jì)</p><p> 畢業(yè)設(shè)計(jì)項(xiàng)目: 基于單片機(jī)萬(wàn)年歷的設(shè)計(jì) </p><p> 專 業(yè): 計(jì) 算 機(jī) 應(yīng) 用 技 術(shù) </p><p> 年 級(jí): </p><p> 學(xué)
2、 號(hào): </p><p> 姓 名: </p><p> 指 導(dǎo) 老 師: </p><p><b> 摘 要</b>
3、;</p><p> 本文借助電路仿真軟件Protues對(duì)基于AT89S51單片機(jī)的電子萬(wàn)年歷的設(shè)計(jì)方法及仿真進(jìn)行了全面的闡述。該電子萬(wàn)年歷在硬件方面主要采用AT89C51單片機(jī)作為主控核心,由DS1302時(shí)鐘芯片提供時(shí)鐘、1602LCM點(diǎn)陣液晶顯示屏顯示。AT89C51單片機(jī)是由Atmel公司推出的,功耗小,電壓可選用4~6V電壓供電;DS1302時(shí)鐘芯片是美國(guó)DALLAS公司推出的具有涓細(xì)電流充電功能的低功
4、耗實(shí)時(shí)時(shí)鐘芯片,它可以對(duì)年、月、日、星期、時(shí)、分、秒進(jìn)行計(jì)時(shí),還具有閏年補(bǔ)償?shù)榷喾N功能,而且DS1302的使用壽命長(zhǎng),誤差小;數(shù)字顯示是采用的LED液晶顯示屏來(lái)顯示,可以同時(shí)顯示年、月、日、星期、時(shí)、分、秒等信息。此外,該電子萬(wàn)年歷還具有時(shí)間校準(zhǔn)等功能。在軟件方面,主要包括日歷程序、時(shí)間調(diào)整程序,顯示程序等。所有程序編寫(xiě)完成后,在Keil軟件中進(jìn)行調(diào)試,確定沒(méi)有問(wèn)題后,在Proteus軟件中嵌入單片機(jī)內(nèi)進(jìn)行仿真。</p>
5、<p> 論文主要研究了液晶顯示器LCM及時(shí)鐘芯片DS1302,溫度傳感器DS18B20與單片機(jī)之間的硬件互聯(lián)及通信,對(duì)數(shù)種硬件連接方案進(jìn)行了詳盡的比較,在軟件方面對(duì)日歷算法也進(jìn)行了論述。</p><p> 研究結(jié)果表明,由于萬(wàn)年歷的應(yīng)用相當(dāng)普遍,所以其設(shè)計(jì)的核心在于硬件成本的節(jié)約軟件算法的優(yōu)化,力求做到物美價(jià)廉,才能擁有更廣闊的市場(chǎng)前景。</p><p> 關(guān)鍵詞:?jiǎn)纹瑱C(jī)
6、;DS1302;DS18B20;LCM1602</p><p><b> Abstract</b></p><p> This paper mainly discuss the design and simulation of electronic calender based on AT89S51 with the help of Protues.On the
7、hardware side, the electronic calendar using AT89C51 microcontroller as the main control center, clock provided by the DS1302 clock chip , 1602LED dot matrix LCD display.Atmel Corporation AT89C51 microcontroller is produ
8、cted by Atmel Corporation, low power consumption, voltage can be selected 4V~ 6V voltage power supply; DS1302 clock chip, launched in the United States with</p><p> This article focus on liquid crystal scre
9、en LCM1602 and clock chip DS1302,temperature sensor DS18B20 which connected and communicated with Microcontroller.Several solutions will also compared with each other.On software side,calender calculation will be discuss
10、ed as well.</p><p> The results are as follows:as electronic calender are widely used in our daily life.It should</p><p> be chip and convenient so as to win more profit. </p><p&g
11、t; Keywords:Microcontroller,DS1302;DS18B20;LCD1602</p><p><b> 目 錄</b></p><p><b> 摘 要I</b></p><p> AbstractII</p><p><b> 緒論1</b&
12、gt;</p><p> 第一章 方案設(shè)計(jì)2</p><p> 第一節(jié) 系統(tǒng)基本方案選擇和論證2</p><p> 1.1 單片機(jī)芯片的選擇2</p><p> 1.2 顯示模塊選擇方案和論證2</p><p> 1.3 時(shí)鐘芯片的選擇方案和論證2</p><p> 1.
13、4 溫度傳感器的選擇方案與論證3</p><p> 第二節(jié) 電路設(shè)計(jì)最終方案決定3</p><p> 第二章 系統(tǒng)的硬件設(shè)計(jì)與實(shí)現(xiàn)4</p><p> 第一節(jié) 電路設(shè)計(jì)框圖4</p><p> 第二節(jié) 系統(tǒng)硬件概述4</p><p> 第三節(jié) 主要單元電路的設(shè)計(jì)5</p><p
14、> 3.1 AT89S51單片機(jī)主控制模塊的設(shè)計(jì)5</p><p> 3.2 單片機(jī)中斷系統(tǒng)7</p><p> 3.3時(shí)鐘電路模塊的設(shè)計(jì)9</p><p> 3.4溫度采集模塊設(shè)計(jì)10</p><p> 3.5 顯示模塊的設(shè)計(jì)11</p><p> 3.6 DS1302原理及說(shuō)明11&l
15、t;/p><p> 3.7 LCM1602工作原理及說(shuō)明14</p><p> 3.8 系統(tǒng)仿真電路14</p><p> 第三章 系統(tǒng)的軟件設(shè)計(jì)16</p><p> 第一節(jié) 程序流程框圖16</p><p> 第二節(jié) 子程序18</p><p> 第四章 系統(tǒng)測(cè)試19&l
16、t;/p><p> 4.1 硬件測(cè)試19</p><p> 4.2 軟件測(cè)試19</p><p><b> 結(jié)束語(yǔ)20</b></p><p><b> 致謝21</b></p><p><b> 參考文獻(xiàn)22</b></p>
17、<p><b> 附錄:程序24</b></p><p><b> 緒論</b></p><p> 隨著社會(huì)、科技的發(fā)展,人類得知時(shí)間,從觀太陽(yáng)、擺鐘到現(xiàn)在電子鐘,不斷研究、創(chuàng)新。為了在觀測(cè)時(shí)間的同時(shí),能夠了解其它與人類密切相關(guān)的信息,比如溫度、星期、日期等,電子萬(wàn)年歷誕生了,它集時(shí)間、日期、星期和溫度功能于一身,具有讀取方
18、便、顯示直觀、功能多樣、電路簡(jiǎn)潔等諸多優(yōu)點(diǎn),符合電子儀器儀表的發(fā)展趨勢(shì)。伴隨著電子技術(shù)的迅速發(fā)展,特別是隨大規(guī)模集成電路出現(xiàn),給人類生活帶來(lái)了根本性的改變。由其是單片機(jī)技術(shù)的應(yīng)用產(chǎn)品已經(jīng)走進(jìn)了千家萬(wàn)戶。電子萬(wàn)年歷的出現(xiàn)給人們的生活帶來(lái)的諸多方便,作為一種附加功能,現(xiàn)在越來(lái)越廣泛的被應(yīng)用于各種電子產(chǎn)品中,具有廣闊的市場(chǎng)前景。</p><p> 通過(guò)以往對(duì)工業(yè)自動(dòng)化的相關(guān)課程學(xué)習(xí)和理解獨(dú)立完成制作電子萬(wàn)年歷的設(shè)計(jì)。
19、電子萬(wàn)年歷作為電子類小產(chǎn)品不僅是市場(chǎng)上的寵兒,也是是單片機(jī)設(shè)計(jì)培訓(xùn)中一個(gè)很實(shí)用的題目。因?yàn)檫@個(gè)課題有很好的開(kāi)放性和可發(fā)揮性,對(duì)制作者的要求比較高,不僅考察了對(duì)單片機(jī)的掌握能力更加強(qiáng)調(diào)了對(duì)單片機(jī)擴(kuò)展的應(yīng)用。而且要求設(shè)計(jì)的電子萬(wàn)年歷在操作上力求簡(jiǎn)潔,功能上盡量齊全,顯示界面也要出色。所以,電子萬(wàn)年歷制作無(wú)論從實(shí)用目的,還是從培養(yǎng)能力的角度來(lái)看都是很有價(jià)值的畢業(yè)設(shè)計(jì)課題。本電子萬(wàn)年歷的設(shè)計(jì)在硬件方面主要采用AT89S51單片機(jī)作為主控核心,由
20、DS1302時(shí)鐘芯片提供時(shí)鐘、1602LCM點(diǎn)陣液晶顯示屏顯示。AT89S51單片機(jī)是由Atmel公司推出的,功耗小,電壓可選用4~6V電壓供電[1];DS1302時(shí)鐘芯片是美國(guó)DALLAS公司推出的具有涓細(xì)電流充電功能的低功耗實(shí)時(shí)時(shí)鐘芯片,它可以對(duì)年、月、日、星期、時(shí)、分、秒進(jìn)行計(jì)時(shí),還具有閏年補(bǔ)償?shù)榷喾N功能,而且DS1302的使用壽命長(zhǎng),誤差??;數(shù)字顯示是采用的LED液晶顯示屏來(lái)顯示,可以同時(shí)顯示年、月、日、星期、時(shí)、分、秒等信息。
21、此外,該電子萬(wàn)年歷還具有時(shí)間校準(zhǔn)等功能。在軟件方面</p><p><b> 第一章 方案設(shè)計(jì)</b></p><p> 第一節(jié) 系統(tǒng)基本方案選擇和論證</p><p> 1.1 單片機(jī)芯片的選擇</p><p> 本設(shè)計(jì)采用AT89S51芯片作為硬件核心,該芯片采用Flash ROM,內(nèi)部具有4KB ROM存儲(chǔ)
22、空間,相對(duì)于本設(shè)計(jì)而言程序空間完全夠用。能于3V的超低壓工作,而且與MCS-51系列單片機(jī)完全兼容,而且運(yùn)用于電路設(shè)計(jì)中時(shí)具備ISP在線編程技術(shù),當(dāng)在對(duì)電路進(jìn)行調(diào)試時(shí),由于程序的錯(cuò)誤修改或?qū)Τ绦虻男略龉δ苄枰獰氤绦驎r(shí),避免芯片的多次拔插對(duì)芯片造成的損壞。</p><p> 1.2 顯示模塊選擇方案和論證</p><p><b> 方案一:</b></p&g
23、t;<p> 采用點(diǎn)陣式數(shù)碼管顯示,點(diǎn)陣式數(shù)碼管是由八行八列的發(fā)光二極管組成,對(duì)于顯示文字比較適合,如采用在顯示數(shù)字顯得太浪費(fèi),且價(jià)格也相對(duì)較高,所以也不用此種作為顯示。</p><p><b> 方案二:</b></p><p> 采用LED數(shù)碼管動(dòng)態(tài)掃描,LED數(shù)碼管價(jià)格雖適中,對(duì)于顯示數(shù)字也最合適,而且采用動(dòng)態(tài)掃描法與單片機(jī)連接時(shí),占用的單片
24、機(jī)口線少。但是由于數(shù)碼管動(dòng)態(tài)掃描需要借助74LS164移位寄存器進(jìn)行移位,該芯片在電路調(diào)試時(shí)往往會(huì)有很多障礙,所以不采用LED數(shù)碼管作為顯示[2]。</p><p><b> 方案三:</b></p><p> 采用LCD液晶顯示屏,液晶顯示屏的顯示功能強(qiáng)大,可顯示大量文字,圖形,顯示多樣,清晰可見(jiàn)[3],對(duì)于電子萬(wàn)年歷而言,一個(gè)1602的液晶屏即可,價(jià)格也還能接
25、受,需要的接口線較多,但會(huì)給調(diào)試帶來(lái)諸多方便,所以此設(shè)計(jì)中采用LCD1602液晶顯示屏作為顯示模塊。</p><p> 1.3 時(shí)鐘芯片的選擇方案和論證</p><p><b> 方案一:</b></p><p> 直接采用單片機(jī)定時(shí)計(jì)數(shù)器提供秒信號(hào),使用程序?qū)崿F(xiàn)年、月、日、星期、時(shí)、分、秒計(jì)數(shù)。采用此種方案雖然可以減少時(shí)鐘芯片的使用,
26、節(jié)約成本,但是,實(shí)現(xiàn)的時(shí)間誤差較大。所以不采用此方案。</p><p><b> 方案二:</b></p><p> 采用DS1302時(shí)鐘芯片實(shí)現(xiàn)時(shí)鐘,DS130是美國(guó)DALLAS公司推出的一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘電路,它可以對(duì)年、月、日、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能,工作電壓為2.5V~5.5V。采用三線接口與CPU進(jìn)行同步通信,并可
27、采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù)。DS1302內(nèi)部有一個(gè)31×8的用于臨時(shí)性存放數(shù)據(jù)的RAM寄存器。DS1302是DS1202的升級(jí)產(chǎn)品,與DS1202兼容,但增加了主電源/后背電源雙電源引腳,同時(shí)提供了對(duì)后背電源進(jìn)行涓細(xì)電流充電的能力。主要特點(diǎn)是采用串行數(shù)據(jù)傳輸,可為掉電保護(hù)電源提供可編程的充電功能,并且可以關(guān)閉充電功能。采用普通32.768kHz晶振[4]。因此,本設(shè)計(jì)中采用DS1302提供時(shí)鐘。<
28、/p><p> ?。?4 溫度傳感器的選擇方案與論證</p><p><b> 方案一:</b></p><p> 使用熱敏電阻作為傳感器,用熱敏電阻與一個(gè)相應(yīng)阻值電阻相串聯(lián)分壓,利用熱敏電阻阻值隨溫度變化而變化的特性,采集這兩個(gè)電阻變化的分壓值,并進(jìn)行A/D轉(zhuǎn)換。此設(shè)計(jì)方案需用A/D轉(zhuǎn)換電路,增加硬件成本而且熱敏電阻的感溫特性曲線并不是嚴(yán)格線
29、性的,會(huì)產(chǎn)生較大的測(cè)量誤差[5]。</p><p><b> 方案二:</b></p><p> 采用數(shù)字式溫度傳感器DS18B20,此類傳感器為數(shù)字式傳感器而且僅需要一條數(shù)據(jù)線進(jìn)行數(shù)據(jù)傳輸,易于與單片機(jī)連接,可以避免A/D模數(shù)轉(zhuǎn)換模塊,降低硬件成本,簡(jiǎn)化系統(tǒng)電路[6]。另外,數(shù)字式溫度傳感器還具有測(cè)量精度高、測(cè)量范圍廣等優(yōu)點(diǎn)。因此,本設(shè)計(jì)DS18B20溫度傳感器
30、作為溫度采集模塊。</p><p> 第二節(jié) 電路設(shè)計(jì)最終方案決定</p><p> 綜上各模塊的選擇方案與論證,確定最后的主要硬件資源如下:采用AT89S51作為主控制系統(tǒng);DS1302提供時(shí)鐘;DS18B20作為數(shù)字式溫度傳感器;LCD1602液晶屏作為顯示。</p><p> 第二章 系統(tǒng)的硬件設(shè)計(jì)與實(shí)現(xiàn)</p><p> 第一
31、節(jié) 電路設(shè)計(jì)框圖</p><p> 本系統(tǒng)的電路系統(tǒng)框圖如圖1所示。AT89S51單片機(jī)對(duì)DS1302和DS18B20寫(xiě)入控制字并讀取相應(yīng)的數(shù)據(jù),繼而控制LCM1602作出對(duì)應(yīng)的顯示。</p><p><b> 圖1 系統(tǒng)硬件框圖</b></p><p> 第二節(jié) 系統(tǒng)硬件概述</p><p> 本電路是由AT8
32、9S51單片機(jī)作為控制核心,能在3V超低壓工作,AT89S51是一個(gè)低功耗,高性能CMOS 8位單片機(jī),片內(nèi)含4kBytes ISP(In-system programmable)的可反復(fù)擦寫(xiě)1000次的Flash只讀程序存儲(chǔ)器,器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)制造,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲(chǔ)單元,功能強(qiáng)大的微型計(jì)算機(jī)的AT89S51可為許多嵌
33、入式控制應(yīng)用系統(tǒng)提供高性價(jià)比的解決方案;時(shí)鐘電路由DS1302提供,它是一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘電路,它可以對(duì)年、月、日、周、時(shí)、分、秒進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能,工作電壓為2.5V~5.5V。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù)。DS1302內(nèi)部有一個(gè)31*8的用于臨時(shí)性存放數(shù)據(jù)的RAM寄存器。可產(chǎn)生年、月、日、周、時(shí)、分、秒,具有使用壽命長(zhǎng),精度高和低功耗等特點(diǎn),同時(shí)
34、具有掉電自動(dòng)保存功能;溫度的采集由DS18B20完成,它具有獨(dú)特的單線接口方式,DS18B20在與微處理</p><p> 第三節(jié) 主要單元電路的設(shè)計(jì)</p><p> 3.1 AT89S51單片機(jī)主控制模塊的設(shè)計(jì)</p><p> AT89S51是一個(gè)低功耗,高性能CMOS 8位單片機(jī),片內(nèi)含4k Bytes ISP(In-system programmab
35、le)的可反復(fù)擦寫(xiě)1000次的Flash只讀程序存儲(chǔ)器,器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)制造,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲(chǔ)單元,功能強(qiáng)大的微型計(jì)算機(jī)的AT89S51可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價(jià)比的解決方案。AT89S51具有如下特點(diǎn):40個(gè)引腳,4kBytes Flash片內(nèi)程序存儲(chǔ)器,128Bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),32
36、個(gè)外部雙向輸入/輸出(I/O)口,5個(gè)中斷優(yōu)先級(jí)2層中斷嵌套中斷,2個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,看門(mén)狗(WDT)電路,片內(nèi)時(shí)鐘振蕩器。此外,AT89S51設(shè)計(jì)和配置了振蕩頻率可為0Hz并可通過(guò)軟件設(shè)置省電模式??臻e模式下,CPU暫停工作,而RAM定時(shí)計(jì)數(shù)器,串行口,外中斷系統(tǒng)可繼續(xù)工作,掉電模式凍結(jié)振蕩器而保存RAM的數(shù)據(jù),停止芯片其它功能直至外中斷激活或硬件復(fù)位。同時(shí)該芯片還具有PDIP、TQFP和PLCC<
37、/p><p> P0口:P0口為一個(gè)8位漏級(jí)開(kāi)路雙向I/O口,每腳可吸收8TTL門(mén)電流。當(dāng)P1口的管腳第一次寫(xiě)1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。</p><p> P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器
38、能接收輸出4TTL門(mén)電流。P1口管腳寫(xiě)入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。 </p><p> P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門(mén)電流,當(dāng)P2口被寫(xiě)“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出
39、電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫(xiě)時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。 </p><p> P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門(mén)電流。當(dāng)P3口寫(xiě)入“1”后
40、,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。</p><p> I/O口作為輸入口時(shí)有兩種工作方式,即所謂的讀端口與讀引腳。讀端口時(shí)實(shí)際上并不從外部讀入數(shù)據(jù),而是把端口鎖存器的內(nèi)容讀入到內(nèi)部總線,經(jīng)過(guò)某種運(yùn)算或變換后再寫(xiě)回到端口鎖存器。只有讀端口時(shí)才真正地把外部的數(shù)據(jù)讀入到內(nèi)部總線。輸入緩沖器CPU將根據(jù)不同的指令分別發(fā)出讀端口或讀引腳信號(hào)
41、以完成不同的操作。這是由硬件自動(dòng)完成的,不需要我們操心,1然后再實(shí)行讀引腳操作,否則就可能讀入出錯(cuò),如果不對(duì)端口置1,端口鎖存器原來(lái)的狀態(tài)有可能為0Q端為0Q^為1加到場(chǎng)效應(yīng)管柵極的信號(hào)為1,該場(chǎng)效應(yīng)管就導(dǎo)通對(duì)地呈現(xiàn)低阻抗,此時(shí)即使引腳上輸入的信號(hào)為1,也會(huì)因端口的低阻抗而使信號(hào)變低使得外加的1信號(hào)讀入后不一定是1。若先執(zhí)行置1操作,則可以使場(chǎng)效應(yīng)管截止引腳信號(hào)直接加到三態(tài)緩沖器中實(shí)現(xiàn)正確的讀入,由于在輸入操作時(shí)還必須附加一個(gè)準(zhǔn)備動(dòng)作,
42、所以這類I/O口被稱為準(zhǔn)雙向口。89C51的P0/P1/P2/P3口作為輸入時(shí)都是準(zhǔn)雙向口。</p><p> 單片機(jī)的最小系統(tǒng)如圖2所示:18引腳和19引腳接時(shí)鐘電路,XTAL1接外部晶振和微調(diào)電容的一端,在片內(nèi)它是振蕩器倒相放大器的輸入,XTAL2接外部晶振和微調(diào)電容的另一端,在片內(nèi)它是振蕩器倒相放大器的輸出.第9引腳為復(fù)位輸入端,接上電容,電阻及開(kāi)關(guān)后夠上電復(fù)位電路,20引腳為接地端,40引腳為電源端.單
43、片機(jī)的最小系統(tǒng)如下圖所示:圖2中的晶振頻率為12MHz,復(fù)位方式為上電自動(dòng)復(fù)位[8]-[9]。</p><p> 圖2 單片機(jī)最小系統(tǒng)</p><p> 3.2 單片機(jī)中斷系統(tǒng)</p><p> 在提及單片機(jī)的最小系統(tǒng)后,現(xiàn)對(duì)單片機(jī)的另一重要應(yīng)用系統(tǒng)即中斷系統(tǒng)做一個(gè)比較詳細(xì)的介紹。</p><p> 在CPU 與外設(shè)交換信息時(shí),存在著
44、一個(gè)快速CPU與慢速的外設(shè)之間的矛盾。為解決這個(gè)問(wèn)題,發(fā)展了中斷的概念。單片機(jī)在某一時(shí)刻只能處理一個(gè)任務(wù),當(dāng)多個(gè)任務(wù)同時(shí)要求單片機(jī)處理時(shí),這一要求應(yīng)該怎么實(shí)現(xiàn)呢?通過(guò)中斷可以實(shí)現(xiàn)多個(gè)任務(wù)的資源共享。所謂的中斷就是,當(dāng)CPU正在處理某項(xiàng)事務(wù)的時(shí)候,如果外界或者內(nèi)部發(fā)生了緊急事件,要求CPU暫停正在處理工作而去處理這個(gè)緊急事件,待處理完后,再回到原來(lái)中斷的地方,繼續(xù)執(zhí)行原來(lái)被中斷的程序,這個(gè)過(guò)程稱作中斷。 </p><p
45、> 從中斷的定義我們可以看到中斷應(yīng)具備中斷源、中斷響應(yīng)、中斷返回這樣三個(gè)要素。中斷源發(fā)出中斷請(qǐng)求,單片機(jī)對(duì)中斷請(qǐng)求進(jìn)行響應(yīng),當(dāng)中斷響應(yīng)完成后應(yīng)進(jìn)行中斷返回,返回被中斷的地方繼續(xù)執(zhí)行原來(lái)被中斷的程序。MCS-51單片機(jī)的中斷源共有兩類,它們分別是:外部中斷和內(nèi)部中斷。外部中斷0(INT0)來(lái)自P3.2引腳,通過(guò)外部中斷0觸發(fā)方式控制位IT0(TCON.0),來(lái)決定中斷輸入信號(hào)是低電平有效還是負(fù)跳變有效。一旦輸入信號(hào)有效,便使IE0
46、標(biāo)志置一,向CPU申請(qǐng)中斷;外部中斷1(INT1)來(lái)自P3.3引腳,通過(guò)外部中斷1觸發(fā)方式控制位IT1(TCON.2),來(lái)決定中斷輸入信號(hào)是低電平有效還是負(fù)跳變有效。一旦輸入信號(hào)有效,便使IE0標(biāo)志置一,向CPU申請(qǐng)中斷。內(nèi)部中斷有三個(gè):TF0,TF1,RI或TI。TF0(TCON.5),片內(nèi)定時(shí)/計(jì)數(shù)器T0溢出中斷請(qǐng)求標(biāo)志。當(dāng)定時(shí)/計(jì)數(shù)器T0發(fā)生溢出時(shí),置位TF0,并向CPU申請(qǐng)中斷;TF1(TCON.7),片內(nèi)定時(shí)/計(jì)數(shù)器T1溢出中
47、斷請(qǐng)求標(biāo)志。當(dāng)定時(shí)/計(jì)數(shù)器T1發(fā)生溢出時(shí),置位TF1,并向CPU申請(qǐng)中斷;RI(SCON.0)或TI(SCON.1),串行口中斷請(qǐng)求</p><p> MCS-51單片機(jī)為用戶提供了四個(gè)專用寄存器,來(lái)控制單片機(jī)的中斷系統(tǒng)。定時(shí)器控制寄存器(TCON),該寄存器用于保存外部中斷請(qǐng)求以及定時(shí)器的計(jì)數(shù)溢出。進(jìn)行字節(jié)操作時(shí),寄存器地址為88H。按位操作時(shí),各位的地址為88H~8FH,當(dāng)CPU采樣到INT0(或INT1)
48、端出現(xiàn)有效中斷請(qǐng)求時(shí),IE0(IE1)位由硬件置“1”。當(dāng)中斷響應(yīng)完成轉(zhuǎn)向中斷服務(wù)程序時(shí),由硬件把IE0(或IE1)清零, 當(dāng)計(jì)數(shù)器產(chǎn)生計(jì)數(shù)溢出時(shí),相應(yīng)的溢出標(biāo)志位由硬件置“1”。當(dāng)轉(zhuǎn)向中斷服務(wù)時(shí),再由硬件自動(dòng)清“0”。計(jì)數(shù)溢出標(biāo)志位的使用有兩種情況:采用中斷方式時(shí),作中斷請(qǐng)求標(biāo)志位來(lái)使用;采用查詢方式時(shí),作查詢狀態(tài)位來(lái)使用;串行口控制寄存器(SCON),進(jìn)行字節(jié)操作時(shí),寄存器地址為98H。按位操作時(shí),各位的地址為98H~9FH,當(dāng)發(fā)送
49、完一幀串行數(shù)據(jù)后,由硬件置“1”;在轉(zhuǎn)向中斷服務(wù)程序后,用軟件清“0”,當(dāng)接收完一幀串行數(shù)據(jù)后,由硬件置“1”;在轉(zhuǎn)向中斷服務(wù)程序后,用軟件清“0”。串行中斷請(qǐng)求由TI和RI的邏輯或得到。就是說(shuō),無(wú)論是發(fā)送標(biāo)志還是接收標(biāo)志,都會(huì)產(chǎn)生串行中斷請(qǐng)求;中斷允許控制寄存器(IE),進(jìn)行字節(jié)操作時(shí),寄存器地</p><p> MCS-51單片機(jī)復(fù)位后(IE)=00H,因此中斷系統(tǒng)處于禁止?fàn)顟B(tài)。單片機(jī)在中斷響應(yīng)后不會(huì)自動(dòng)關(guān)
50、閉中斷。因此在轉(zhuǎn)中斷服務(wù)程序后,應(yīng)根據(jù)需要使用有關(guān)指令禁止中斷,即以軟件方式關(guān)閉中斷。中斷優(yōu)先級(jí)控制寄存器(IP)MCS-51單片機(jī)的中斷優(yōu)先級(jí)控制比較簡(jiǎn)單,因?yàn)橄到y(tǒng)只定義了高、低2個(gè)優(yōu)先級(jí)。高優(yōu)先級(jí)用“1”表示,低優(yōu)先級(jí)用“0”表示。各中斷源的優(yōu)先級(jí)由中斷優(yōu)先級(jí)寄存器(IP)進(jìn)行設(shè)定。IP寄存器地址0B8H,位地址為0BFH~0B8H。</p><p> 3.3時(shí)鐘電路模塊的設(shè)計(jì)</p><
51、;p> DS1302 是美國(guó)DALLAS公司推出的一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘芯片,它可以對(duì)年、月、日、周、時(shí)、分、秒進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能,工作電壓為2.5V~5.5V。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù)。DS1302內(nèi)部有一個(gè)31×8的用于臨時(shí)性存放數(shù)據(jù)的RAM寄存器。DS1302是DS1202的升級(jí)產(chǎn)品,與DS1202兼容,但增加了主電源/后背電
52、源雙電源引腳,同時(shí)提供了對(duì)后背電源進(jìn)行涓細(xì)電流充電的能力[11]。</p><p> DS1302的引腳排列,其中Vcc1為后備電源,VCC2為主電源。在主電源關(guān)閉的情況下,也能保持時(shí)鐘的連續(xù)運(yùn)行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當(dāng)Vcc2大于Vcc1+0.2V時(shí),Vcc2給DS1302供電。當(dāng)Vcc2小于Vcc1時(shí),DS1302由Vcc1供電。X1和X2是振蕩源,外接32.768kHz晶振
53、。RST是復(fù)位/片選線,通過(guò)把RST輸入驅(qū)動(dòng)置高電平來(lái)啟動(dòng)所有的數(shù)據(jù)傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng)RST為高電平時(shí),所有的數(shù)據(jù)傳送被初始化,允許對(duì)DS1302進(jìn)行操作。如果在傳送過(guò)程中RST置為低電平,則會(huì)終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在Vcc>2.0V之前,RST必須保持低電平。只有在SCLK為低電
54、平時(shí),才能將RST置為高電平。I/O為串行數(shù)據(jù)輸入輸出端(雙向),SCLK為時(shí)鐘輸入端。DS1302的控制字節(jié)的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫(xiě)入DS1302中,位6如果為0,則表示存取日歷時(shí)鐘數(shù)據(jù),為1表示存取</p><p> 圖3 DS1302與單片機(jī)的連接</p><p> 3.4溫度采集模塊設(shè)計(jì)</p><p> 采用數(shù)字式
55、溫度傳感器DS18B20,它是數(shù)字式溫度傳感器,具有測(cè)量精度高,電路連接簡(jiǎn)單特點(diǎn),此類傳感器僅需要一條數(shù)據(jù)線進(jìn)行數(shù)據(jù)傳輸,使用P0.7與DS18B20的I/O口連接加一個(gè)上拉電阻,Vcc接電源,Vss接地。獨(dú)特的一線接口,只需要一條口線通信多點(diǎn)能力,簡(jiǎn)化了分布式溫度傳感應(yīng)用無(wú)需外部元件可用數(shù)據(jù)總線供電,電壓范圍為3.0V至5.5V無(wú)需備用電源 測(cè)量溫度范圍為-55度至+125度。-10度至+85度范圍內(nèi)精度為±0.5度溫度傳感
56、器可編程的分辨率為9~12位[12]。DS18B20連線如圖4所示:</p><p> 圖4 DS18B20管腳連線</p><p> 3.5 顯示模塊的設(shè)計(jì)</p><p> 如下圖5所示,采用LCM1602液晶顯示器,單片機(jī)P1口作為數(shù)據(jù)輸出口,RS,R\W,E分別通過(guò)10K的上拉電阻連接到單片機(jī)的P0.0,P0.1,P0.2。VDD接5V電源,VSS接地
57、。VEE為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地電源時(shí)對(duì)比度最高(對(duì)比度過(guò)高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過(guò)一個(gè)10K的電位器調(diào)整對(duì)比度)。RS為寄存器選擇,高電平1時(shí)選擇數(shù)據(jù)寄存器、低電平0時(shí)選擇指令寄存器。R/W為讀寫(xiě)信號(hào)線,高電平(1)時(shí)進(jìn)行讀操作,低電平(0)時(shí)進(jìn)行寫(xiě)操作。E(或EN)端為使能(enable)端,下降沿使能。DB0-DB7為雙向數(shù)據(jù)總線,同時(shí)最高位DB7也是忙信號(hào)檢測(cè)位。BLA、BLK分別為顯示器背光
58、燈的正、負(fù)極[13]。</p><p> 圖5 LCM1602與單片機(jī)的連接</p><p> 3.6 DS1302原理及說(shuō)明 </p><p> (1) 時(shí)鐘芯片DS1302的工作原理</p><p> DS1302在每次進(jìn)行讀、寫(xiě)程序前都必須初始化,先把SCLK端置 “0”,接著把RST端置“1”,最后才給予SCLK脈沖;讀/寫(xiě)
59、時(shí)序如下圖7所示。圖6為DS1302的控制字,此控制字的位7必須置1,若為0則不能把對(duì)DS1302進(jìn)行讀寫(xiě)數(shù)據(jù)。對(duì)于位6,若對(duì)程序進(jìn)行讀/寫(xiě)時(shí)RAM=1,對(duì)時(shí)間進(jìn)行讀/寫(xiě)時(shí),CK=0。位1至位5指操作單元的地址。位0是讀/寫(xiě)操作位,進(jìn)行讀操作時(shí),該位為1;該位為0則表示進(jìn)行的是寫(xiě)操作??刂谱止?jié)總是從最低位開(kāi)始輸入/輸出的。表2為DS1302的日歷、時(shí)間寄存器內(nèi)容:“CH”是時(shí)鐘暫停標(biāo)志位,當(dāng)該位為1時(shí),時(shí)鐘振蕩器停止,DS1302處于低
60、功耗狀態(tài);當(dāng)該位為0時(shí),時(shí)鐘開(kāi)始運(yùn)行?!癢P”是寫(xiě)保護(hù)位,在任何的對(duì)時(shí)鐘和RAM的寫(xiě)操作之前,WP必須為0。當(dāng)“WP”為1時(shí),寫(xiě)保護(hù)位防止對(duì)任一寄存器的寫(xiě)操作。</p><p> (2) DS1302的控制字</p><p> DS1302的控制字如圖6所示??刂谱止?jié)的高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫(xiě)入DS1302中,位6如果0,則表示存取日歷時(shí)鐘數(shù)據(jù),為1表示
61、存取RAM數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進(jìn)行寫(xiě)操作,為1表示進(jìn)行讀操作,控制字節(jié)總是從最低位開(kāi)始輸出。</p><p> 圖6 DS1302的控制字 </p><p> (3) 數(shù)據(jù)輸入輸出</p>
62、<p> 在控制指令字輸入后的下一個(gè)SCLK時(shí)鐘的上升沿時(shí),數(shù)據(jù)被寫(xiě)入DS1302,數(shù)據(jù)輸入從低位即位0開(kāi)始。同樣,在緊跟8位的控制指令字后的下一個(gè)SCLK脈沖的下降沿讀出DS1302的數(shù)據(jù),讀出數(shù)據(jù)時(shí)從低位0位到高位7[14]。如下圖7所示:</p><p> 圖7 DS1302讀與寫(xiě)的時(shí)序圖</p><p> DS1302的寄存器</p><p>
63、; DS1302有12個(gè)寄存器,其中有7個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式,其日歷、時(shí)間寄存器及其控制字見(jiàn)圖8。</p><p> 圖8 DS1302的日歷、時(shí)間寄存器 </p><p> 此外,DS1302 還有年份寄存器、控制寄存器、充電寄存器、時(shí)鐘突發(fā)寄存器及與RAM相關(guān)的寄存器等。時(shí)鐘突發(fā)寄存器可一次性順序讀寫(xiě)除充
64、電寄存器外的所有寄存器內(nèi)容。 DS1302與RAM相關(guān)的寄存器分為兩類:一類是單個(gè)RAM單元,共31個(gè),每個(gè)單元組態(tài)為一個(gè)8位的字節(jié),其命令控制字為C0H~FDH,其中奇數(shù)為讀操作,偶數(shù)為寫(xiě)操作;另一類為突發(fā)方式下的RAM寄存器,此方式下可一次性讀寫(xiě)所有的RAM的31個(gè)字節(jié),命令控制字為FEH(寫(xiě))、FFH(讀)。 </p><p> 3.7 LCM1602工作原理及說(shuō)明</p><p>
65、; (1)寄存器選擇控制</p><p> 1602字符型LCD通常有14條引腳線或16條引腳線的LCD,多出來(lái)的2條線是背光電源線。1602液晶模塊內(nèi)部的字符發(fā)生存儲(chǔ)器(CGROM)已經(jīng)存儲(chǔ)了160個(gè)不同的點(diǎn)陣字符[15],圖形寄存器選擇控制表如表1所示:</p><p> 表1 1602寄存器選擇控制表 </p><p><b> (2)指令集
66、</b></p><p> 1602通過(guò)D0~D7的8位數(shù)據(jù)端傳輸數(shù)據(jù)和指令。顯示模式設(shè)置(初始化)00111000[0x38]設(shè)置16×2顯示,5×7點(diǎn)陣,8位數(shù)據(jù)接口;顯示開(kāi)關(guān)及光標(biāo)設(shè)置:(初始化) 00001DCBD顯示(1有效)、C光標(biāo)顯示(1有效)、B光標(biāo)閃爍(1有效)。000001NS N=1(讀或?qū)懸粋€(gè)字符后地址指針加1并且光標(biāo)加1),N=0(讀或?qū)懸粋€(gè)字符后地址指
67、針減1并且光標(biāo)減1),S=1且N=1(當(dāng)寫(xiě)一個(gè)字符后,整屏顯示左移),S=0當(dāng)寫(xiě)一個(gè)字符后,整屏顯示不移動(dòng)。數(shù)據(jù)指針設(shè)置:數(shù)據(jù)首地址為80H,所以數(shù)據(jù)地址為80H+地址碼(0-27H,40-67H)。其他設(shè)置:01H(顯示清屏,數(shù)據(jù)指針=0,所有顯示=0);02H(顯示回車(chē),數(shù)據(jù)指針=0)[16]。</p><p> 3.8 系統(tǒng)仿真電路</p><p> 本次仿真使用軟件Protue
68、s7.0,該軟件元件庫(kù)豐富,元件封裝要求相對(duì)簡(jiǎn)單且參數(shù)調(diào)整方便,除此之外,程序還可進(jìn)行動(dòng)態(tài)調(diào)試。系統(tǒng)仿真截圖如圖9所示:</p><p> 圖9 系統(tǒng)仿真電路圖</p><p> 如圖,左上角為顯示模塊LCM1602,U1是時(shí)鐘芯片DS1302,U2是主控模塊AT89C51,U3為溫度傳感器DS18B20,右下角是鍵盤(pán)控制模塊。第三章 系統(tǒng)的軟件設(shè)計(jì)</p><p&
69、gt; 第一節(jié) 程序流程框圖</p><p> 圖10 主程序流程圖</p><p> 主程序流程圖如上圖10所示。由于LCM1602,DS18B20,DS1302的數(shù)據(jù)讀取及指令寫(xiě)入函數(shù)均已在各自的頭文件中完成,在主程序中只須引用即可。</p><p> 由于在硬件電路方面上設(shè)計(jì)了時(shí)間調(diào)整按鍵和開(kāi)關(guān),因此應(yīng)有對(duì)應(yīng)的時(shí)間調(diào)整程序。時(shí)間調(diào)整程序的流程圖如圖11
70、所示。</p><p> 圖11 時(shí)間調(diào)整程序流程圖</p><p><b> 第二節(jié) 子程序</b></p><p> 由于本系統(tǒng)程序涉及的可編程器件有LCM1602,DS18B20以及DS1302,各芯片的控制字及數(shù)據(jù)讀寫(xiě)如果混雜,將會(huì)使程序可讀性大大降低,因此采用子程序的方法進(jìn)行調(diào)用并將其封裝于各自的頭文件中。詳盡的程序設(shè)計(jì)見(jiàn)附錄。
71、</p><p><b> 第四章 系統(tǒng)測(cè)試</b></p><p><b> 4.1 硬件測(cè)試</b></p><p> 在Protues仿真結(jié)束后,于焊接板上完成了硬件組裝。在調(diào)試硬件時(shí)遇到過(guò)很多問(wèn)題,但只要細(xì)心、認(rèn)真檢查這些問(wèn)題都是可以避免的,主要問(wèn)題及解決辦法現(xiàn)列如下:</p><p>
72、; 接通電源后LCM1602沒(méi)有正確的顯示。在不通電狀態(tài)下用萬(wàn)用表檢測(cè)電路是否正常連接,在檢查回路時(shí)發(fā)現(xiàn)有的點(diǎn)之間看似連接,但由于虛焊導(dǎo)致其并無(wú)電氣連接,只能對(duì)焊腳進(jìn)行在加工直到解決問(wèn)題。</p><p> 電路工作一段時(shí)間之后有的芯片發(fā)熱嚴(yán)重。經(jīng)查發(fā)現(xiàn)原來(lái)是有尖銳的管腳刺破鄰近的漆包線造成短路,斷掉該線并再次連接可解決問(wèn)題。</p><p><b> 4.2 軟件測(cè)試 &
73、lt;/b></p><p> 由于本系統(tǒng)涉及到多個(gè)子程序,多個(gè)芯片的編程。首先必須對(duì)可編程芯片的控制字即其控制指令要熟記于心。其次,芯片很多都有時(shí)鐘輸入端,需要晶振支持。對(duì)芯片的讀寫(xiě)都需要在相應(yīng)的觸發(fā)沿到來(lái)時(shí)才能進(jìn)行。由于DS18B20是串行通信數(shù)據(jù),只用一個(gè)口線傳輸,在處理采集的模擬信號(hào)時(shí)需要一定的時(shí)間,會(huì)對(duì)延時(shí)有較高要求。所以在調(diào)用溫度子程序時(shí),先關(guān)閉定時(shí)器1中斷允許,在溫度子程序反回時(shí)再打開(kāi)定時(shí)器
74、1中斷允許。</p><p><b> 結(jié)束語(yǔ)</b></p><p> 以上所述即是電子萬(wàn)年歷的設(shè)計(jì)全過(guò)程,經(jīng)過(guò)多次的反復(fù)測(cè)試與分析,對(duì)電路的原理及功能更加熟悉,同時(shí)提高了設(shè)計(jì)能力與及對(duì)電路的分析能力.經(jīng)過(guò)此設(shè)計(jì),基本完成了設(shè)計(jì)任務(wù)的要求。硬件層面而言操作相對(duì)簡(jiǎn)單,界面比較友好。</p><p> 在硬件電路方面,詳盡解析了各個(gè)獨(dú)立元件
75、的選擇依據(jù),對(duì)數(shù)種方案進(jìn)行了全面的比較。在時(shí)鐘芯片的選擇上,若直接采用單片機(jī)定時(shí)計(jì)數(shù)器提供秒信號(hào),使用程序?qū)崿F(xiàn)年、月、日、星期、時(shí)、分、秒計(jì)數(shù)。采用此種方案雖然可以減少時(shí)鐘芯片的使用,節(jié)約成本,但是,實(shí)現(xiàn)的時(shí)間誤差較大。因此采用專業(yè)的時(shí)鐘芯片DS1302,它可以對(duì)年、月、日、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能,主要特點(diǎn)是采用串行數(shù)據(jù)傳輸,可為掉電保護(hù)電源提供可編程的充電功能;在顯示模塊的選擇上,若采用LED數(shù)碼管動(dòng)態(tài)掃描,LED
76、數(shù)碼管價(jià)格雖適中,對(duì)于顯示數(shù)字也最合適,而且采用動(dòng)態(tài)掃描法與單片機(jī)連接時(shí),占用的單片機(jī)口線少。但是由于數(shù)碼管動(dòng)態(tài)掃描需要借助74LS164移位寄存器進(jìn)行移位,該芯片在電路調(diào)試時(shí)往往會(huì)有很多障礙,因此本次設(shè)計(jì)選擇了LCM1602,液晶顯示屏的顯示功能強(qiáng)大,可顯示大量文字,圖形,顯示多樣,清晰可見(jiàn);在溫度采集模塊的選擇上,沒(méi)有采用熱敏電阻,因?yàn)樵O(shè)計(jì)方案需用A/D轉(zhuǎn)換電路,增加硬件成本而且熱敏電阻的感溫特性曲線并不是嚴(yán)格線性的,會(huì)產(chǎn)生較大的測(cè)
77、量誤差。最后選擇了DS18B20,此類傳感器為數(shù)字式傳感器而且僅需要一條數(shù)據(jù)線進(jìn)行</p><p> 在軟件設(shè)計(jì)方面,對(duì)日歷算法和時(shí)間調(diào)整算法都做了比較詳細(xì)的闡述,可讀性較強(qiáng)。</p><p> 美中不足的是并沒(méi)有給出與陽(yáng)歷同步的陰歷算法,久經(jīng)思索卻終究未能達(dá)成。</p><p> 綜上所述,本設(shè)計(jì)雖然實(shí)現(xiàn)了電子萬(wàn)年歷的功能,但在硬件的選擇上應(yīng)該更優(yōu)化,使成本
78、更低;在軟件方面也需要完善,一個(gè)真正實(shí)用的萬(wàn)年歷應(yīng)該具有計(jì)算陰歷歷法的功能。</p><p><b> 致謝</b></p><p> 在***學(xué)院的三年學(xué)習(xí)時(shí)間即將過(guò)去,三年時(shí)間并不算長(zhǎng),但對(duì)我而言,是磨礪青春、揮灑書(shū)生意氣的三年,也是承受師恩、增長(zhǎng)才干、提高學(xué)識(shí)的三年。我將以積極的面貌重新投入到火熱的工作和事業(yè)中。在此,謹(jǐn)對(duì)培育我的母校、教導(dǎo)我的老師、幫助我的
79、同學(xué)們致予最誠(chéng)摯的謝意和敬意。 </p><p> 這次課程設(shè)計(jì),我一直很努力地去做,過(guò)程中得到了老師的悉心指導(dǎo)和同學(xué)們大力</p><p> 熱心幫助,并對(duì)我的設(shè)計(jì)提出許多有益的建議,在此對(duì)他們表示衷心的感謝。同時(shí)也要感謝學(xué)校能給我這次機(jī)會(huì)去嘗試自己設(shè)計(jì)一些東西,使自己所學(xué)專業(yè)知識(shí)與實(shí)踐相結(jié)合。最后也要感謝有關(guān)我參考過(guò)的文獻(xiàn)的作者,是他們?yōu)槲姨峁┲R(shí)的源泉,使我最終能順利地完成這次課
80、程設(shè)計(jì)。</p><p> 在畢業(yè)之際,我衷心地同學(xué)和朋友們?cè)谝院蟮娜松缆飞显阶咴綄拸V,也深深相信在未來(lái)的日子里我們將一路攜手前行,會(huì)遇到很多的碰撞和交流,我們將始終記得我們?cè)谌T(mén)峽職業(yè)技術(shù)學(xué)院同窗學(xué)習(xí),這將是我克服困難、不斷前進(jìn)的精神動(dòng)力。</p><p><b> 參考文獻(xiàn)</b></p><p> [1]胡乾斌,李光斌,李玲,喻
81、紅.單片微型計(jì)算機(jī)原理與應(yīng)用.華中科技大學(xué)出版社,1996.</p><p> [2]劉勇.?dāng)?shù)字電路.電子工業(yè)出版社,2004.</p><p> [3]陳正振.電子電路設(shè)計(jì)與制作.廣西交通職業(yè)技術(shù)學(xué)院信息工程系,2007.</p><p> [4]楊子文.單片機(jī)原理及應(yīng)用.西安電子科技大學(xué)出版社,2006.</p><p> [5]
82、王萍.電子技術(shù)實(shí)驗(yàn)教程.機(jī)械工業(yè)出版社,2009.</p><p> [6]沈紅衛(wèi).單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)實(shí)例與分析,北京:北京航空航天大學(xué)出版社.2003</p><p> [7]李光飛.單片機(jī)課程設(shè)計(jì)實(shí)例指導(dǎo),北京:北京航空航天大學(xué)出版社. 2004</p><p> [8]王法能.單片機(jī)原理及應(yīng)用,科學(xué)出版社. 2004</p><p&g
83、t; [9]樓然苗,李光飛.51系列單片機(jī)設(shè)計(jì)實(shí)例[M].北京航空航天大學(xué)出版社,2003.</p><p> [10]朱定華,戴汝平.單片微機(jī)原理與應(yīng)用[M].清華大學(xué)出版社,2003.</p><p> [11]胡漢才.單片機(jī)原理與接口技術(shù)[M].清華大學(xué)出版社,2004.</p><p> [12]余家春.Protel 99 SE電路設(shè)計(jì)實(shí)用教程[M]
84、.中國(guó)鐵道出版社,2004.</p><p> [13]張培仁.基于匯編語(yǔ)言編程MCS-51單片機(jī)原理與應(yīng)用.北京:清華大學(xué)出版社,2003.</p><p> [14]T.Someya,J.Small,P.Kim,C.Nuckolls,J.T.Yardley.Alcohol vapor sensors</p><p> based on single-wal
85、led carbon nanotube field effect transistors[M].Nano Letters,2003.</p><p> [15]M.Penza et al.Alcohol detection using carbon nanotubes acoustic and optical </p><p> sensors[M].Applied Physics L
86、etters,2004.</p><p> [16]F.Rettig,R.Moos.Direct thermoelectric gas sensors Design aspects and first gas </p><p> sensors[M].Sens Actuators B,2007.</p><p><b> 附錄:程序</b>
87、;</p><p><b> 主程序:</b></p><p> #include<reg52.h></p><p> #include"lcd1602.h"</p><p> #include"ds1302.h"</p><p> #
88、include"ds18b20.h"</p><p> #define uint unsigned int</p><p> #define uchar unsigned char</p><p> uint b[6];</p><p> //年、月、日、時(shí)、分、秒</p><p> uc
89、har code row1[]={"2009-01-01"};</p><p> uchar code row2[]={"00:00:00"};</p><p> uchar year1[12]={31,28,31,30,31,30,31,31,30,31,30,31};//平年</p><p> uchar year2
90、[12]={31,29,31,30,31,30,31,31,30,31,30,31};//潤(rùn)年</p><p> uchar j[6]={0x85,0x88,0x8b,0x84+0x40,0x87+0x40,0x8a+0x40};//LCD地址</p><p> uchar i,k,jj=0,w,clock=0,bigclock=0,c=0,num;</p><p&
91、gt; //i循環(huán)數(shù),k溫度緩存,jj地址位</p><p> uint temp;</p><p> sbit b1=P3^0;//設(shè)置</p><p> sbit b2=P3^1;//上調(diào)</p><p> sbit b3=P3^2;//下調(diào)</p><p> sbit b4=P3^3;//轉(zhuǎn)換<
92、/p><p> sbit b5=P3^4;//鬧鐘</p><p> sbit speaker=P3^5;</p><p><b> lcdscan()</b></p><p> {for(i=0;i<6;i++)</p><p> { lcdwrite(j[i]);</p&
93、gt;<p> lcdshuju(a[11-i*2]+0x30);</p><p> lcdwrite(j[i]+0x01);</p><p> lcdshuju(a[10-i*2]+0x30);</p><p><b> }</b></p><p><b> }</b>&l
94、t;/p><p> void key()</p><p> {if(b1==0)</p><p> { dsaddshuju(0x80,(a[1]<<4)+a[0]+0x80);</p><p> while(b1==0)</p><p><b> {</b></p&
95、gt;<p> for(i=0;i<6;i++)</p><p> {b[i]=a[11-i*2+clock]*10+a[10-i*2+clock];}</p><p><b> if(b4==0)</b></p><p> { delay(3);</p><p><b> jj
96、++;</b></p><p><b> if(jj==6)</b></p><p><b> {jj=0;}</b></p><p><b> }</b></p><p><b> if(b2==0)</b></p>&
97、lt;p> {delay(3);</p><p><b> b[jj]++;</b></p><p> if(b[5]==60)b[5]=0;</p><p> if(b[4]==60)b[4]=0;</p><p> if(b[3]==24)b[3]=0;</p><p>
98、if((b[0]%4==0&&b[0]%100!=0)||b[0]%400==0){if(b[2]>year2[b[1]-1])b[2]=1;}</p><p> else {if(b[2]>year1[b[1]-1])b[2]=1;}</p><p> if(b[1]==13)b[1]=1;</p><p> if(b[0]==1
99、00)b[0]=0;</p><p><b> }</b></p><p><b> if(b3==0)</b></p><p> {delay(3);</p><p><b> b[jj]--;</b></p><p> if(b[5]
100、==-1)b[5]=59;</p><p> if(b[4]==-1)b[4]=59;</p><p> if(b[3]==-1)b[3]=23;</p><p> if((b[0]%4==0&&b[0]%100!=0) || b[0]%400==0){if(b[2]<=0)b[2]=year2[b[1]-1];}</p>
101、<p> else {if(b[2]<=0)b[2]=year1[b[1]-1];}</p><p> if(b[1]==0)b[1]=12;</p><p> if(b[0]==-1)b[0]=99;</p><p><b> }</b></p><p> for(i=0;i<6;i++
102、)</p><p> { a[11-i*2+clock]=b[i]/10;</p><p> a[10-i*2+clock]=b[i]%10;</p><p><b> }</b></p><p> lcdwrite(j[jj]);</p><p> lcdshuju(0);<
103、/p><p> lcdwrite(j[jj]+1);</p><p> lcdshuju(0);</p><p> delay(200);</p><p> lcdwrite(j[jj]);</p><p> lcdshuju(a[11-2*jj+clock]+0x30);</p><p>
104、; lcdwrite(j[jj]+1);</p><p> lcdshuju(a[10-2*jj+clock]+0x30);</p><p> delay(200);</p><p><b> if(b1==1)</b></p><p> { dsaddshuju(0x80,(a[1]<<
105、4)+a[0]);</p><p><b> dson();}</b></p><p> if(b5==0)clock=12;}}}</p><p> void main()</p><p> {speaker=0;</p><p><b> lcdrw=0;</b&
106、gt;</p><p><b> dson();</b></p><p><b> lcdon();</b></p><p> lcdwrite(0x83);</p><p> for(i=0;i<10;i++)</p><p> {lcdshuju(row
107、1[i]);</p><p><b> delay(1);</b></p><p><b> }</b></p><p> lcdwrite(0x84+0x40);</p><p> for(i=0;i<8;i++)</p><p><b> {&l
108、t;/b></p><p> lcdshuju(row2[i]);</p><p><b> delay(1);</b></p><p><b> }</b></p><p><b> dsrst=0;</b></p><p><b&
109、gt; dssclk=0;</b></p><p><b> while(1)</b></p><p> {for(i=0;i<5;i++)</p><p> {dsrst=1;</p><p> dswrite(0x81+i*2);</p><p> k=dsre
110、ad();</p><p><b> dsrst=0;</b></p><p> a[i*2]=k&0x0f;</p><p> a[i*2+1]=(k>>4)&0x0f;</p><p><b> }</b></p><p><
111、;b> dsrst=1;</b></p><p> dswrite(0x8d);</p><p> k=dsread();</p><p><b> dsrst=0;</b></p><p> a[10]=k&0x0f;</p><p> a[11]=(k&g
112、t;>4)&0x0f;</p><p> delay(100);</p><p> lcdscan();</p><p><b> key();</b></p><p><b> if(b5==0)</b></p><p> {for(i=0;i
113、<12;i++)</p><p> {if(a[i+12]==a[i])num++;}</p><p> if(num==12)bigclock=1;</p><p> else num=0;</p><p> lcdwrite(0x8e);</p><p> lcdshuju('&&
114、#39;);}</p><p><b> else </b></p><p> {lcdwrite(0x8e);</p><p> lcdshuju(0x00);}</p><p> if(bigclock==1)</p><p> { speaker=1;</p>&
115、lt;p><b> c++;</b></p><p> if(c==100){bigclock=0;speaker=0;}</p><p><b> }</b></p><p> temp=readtemperature();//temp是uint型的。不然會(huì)出現(xiàn)溫度到25后回00的現(xiàn)象??赡苁怯捎谑M(jìn)制與
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于單片機(jī)的萬(wàn)年歷設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于單片機(jī)萬(wàn)年歷的設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于單片機(jī)萬(wàn)年歷的設(shè)計(jì)
- 基于單片機(jī)的萬(wàn)年歷設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 單片機(jī)萬(wàn)年歷系統(tǒng)畢業(yè)設(shè)計(jì)
- 基于單片機(jī)的測(cè)溫萬(wàn)年歷畢業(yè)設(shè)計(jì)
- 基于51單片機(jī)的萬(wàn)年歷畢業(yè)設(shè)計(jì)
- 基于單片機(jī)的電子萬(wàn)年歷畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---單片機(jī)控制的萬(wàn)年歷設(shè)計(jì)
- 基于單片機(jī)的電子萬(wàn)年歷設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于51單片機(jī)的萬(wàn)年歷設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于51單片機(jī)的萬(wàn)年歷設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于單片機(jī)的數(shù)字萬(wàn)年歷設(shè)計(jì)
- 基于單片機(jī)的萬(wàn)年歷設(shè)計(jì)畢業(yè)設(shè)計(jì).doc
- 51單片機(jī)萬(wàn)年歷畢業(yè)設(shè)計(jì)論文
- 畢業(yè)設(shè)計(jì)----基于單片機(jī)的電子萬(wàn)年歷的設(shè)計(jì)
- 基于單片機(jī)的電子萬(wàn)年歷的設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 基于51單片機(jī)的液晶萬(wàn)年歷畢業(yè)設(shè)計(jì)
- 基于單片機(jī)的電子萬(wàn)年歷的設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 51基于單片機(jī)的電子萬(wàn)年歷畢業(yè)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論