畢業(yè)設(shè)計(jì)---電子數(shù)字時(shí)鐘_第1頁(yè)
已閱讀1頁(yè),還剩34頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p>  畢 業(yè) 設(shè) 計(jì) (論 文)</p><p>  機(jī)械與電氣工程 系(院)電氣自動(dòng)化技術(shù)專業(yè) </p><p>  畢業(yè)設(shè)計(jì)(論文)題目 多功能數(shù)字電子鐘 </p><p>  學(xué)生姓名 </p><p>  班 級(jí)

2、 </p><p>  學(xué) 號(hào) </p><p>  指導(dǎo)教師 </p><p>  完成日期 2011 年 6 月 7 日</p><p>  畢業(yè)設(shè)計(jì)(論

3、文)任務(wù)書(shū)</p><p><b>  摘 要</b></p><p>  數(shù)字鐘是一種用數(shù)字電路技術(shù)實(shí)現(xiàn)時(shí)、分、秒計(jì)時(shí)的裝置,與機(jī)械式時(shí)鐘相比具有更高的準(zhǔn)確性和直觀性,且無(wú)機(jī)械裝置,具有更長(zhǎng)的使用壽命,已得到廣泛的使用。數(shù)字鐘從原理上講是一種典型的數(shù)字電路,其中包括了組合邏輯和時(shí)序電路。</p><p>  我設(shè)計(jì)的多功能數(shù)字時(shí)鐘系統(tǒng)是由中

4、央控制器、時(shí)鐘系統(tǒng)、報(bào)警系統(tǒng)、溫度檢測(cè)器、顯示器及鍵盤(pán)部分組成??刂破鞑捎脝纹瑱C(jī)AT89C51,溫度檢測(cè)部分采用DS18B20溫度傳感器,時(shí)鐘系統(tǒng)用時(shí)鐘芯片DS1302,用LCD液晶1602A作為顯示器。單片機(jī)通過(guò)時(shí)鐘芯片DS1302獲取時(shí)間數(shù)據(jù),對(duì)數(shù)據(jù)處理后顯示時(shí)間;溫度傳感器DS18B20采集溫度信號(hào)送給單片機(jī)處理,單片機(jī)再把時(shí)間數(shù)據(jù)和溫度數(shù)據(jù)送液晶顯示器1602顯示;本系統(tǒng)共設(shè)置4個(gè)功能按鍵,其中一個(gè)為整機(jī)復(fù)位按鍵,另外三個(gè)用于時(shí)

5、鐘的各種操作。</p><p>  關(guān)鍵詞:?jiǎn)纹瑱C(jī)AT89C51 LCD1602液晶顯示器 DS18B20 DS1302</p><p><b>  Abstract</b></p><p>  A digital clock is a kind of digital circuit technology implementation,

6、minutes and seconds timing device, and the mechanical clock compared with higher accuracy and intuitive, and without a mechanical device, having a longer service life, has been widely used. A digital clock from principle

7、 speaking is a kind of typical digital circuits, including combination logic and sequential circuits.</p><p>  This multi-functional digital clock system is composed of a central controller, clock system, al

8、arm system, temperature detectors, monitor and keyboard parts. Controller using SCM AT89C51, temperature detection part is DS18B20 temperature sensor, clock system with clock chip DS1302, with the 1602A as a liquid cryst

9、al display LCD. Microcontroller through the clock chip DS1302-time data acquisition, data processing right after the show time; temperature sensor DS18B20 collecting temperature signal</p><p>  Key words:AT8

10、9C51;LCD1602 Display;DS18B20;DS1302</p><p><b>  目 錄</b></p><p><b>  摘 要I</b></p><p>  AbstractII</p><p><b>  第一章 概述1</b></p&g

11、t;<p>  第二章 設(shè)計(jì)方案論證2</p><p>  第三章 電路硬件設(shè)計(jì)及分析5</p><p>  3.1 時(shí)鐘電路5</p><p>  3.2 復(fù)位電路5</p><p>  3.3 DS1302時(shí)鐘電路6</p><p>  3.4 DS18B20溫度計(jì)電路8</p&

12、gt;<p>  3.5 鍵盤(pán)電路9</p><p>  3.6 顯示電路9</p><p>  3.7 按鍵提示電路10</p><p>  第四章 軟件設(shè)計(jì)11</p><p>  4.1 主函數(shù)流程圖11</p><p>  4.2 DS18B20溫度計(jì)程序流程12</

13、p><p>  4.3 按鍵程序流程圖13</p><p>  4.4 定時(shí)器T0中斷服務(wù)程序流程圖14</p><p>  4.5 電路圖15</p><p>  4.6 Proteus仿真效果圖16</p><p><b>  參考文獻(xiàn)17</b></p><p

14、><b>  致 謝18</b></p><p>  附錄1 主程序清單19</p><p><b>  第一章 概述</b></p><p>  時(shí)鐘,自從它發(fā)明的那天起,就成為人類的朋友,但隨著時(shí)間的推移,人們對(duì)它的功能又提出了新的要求,怎樣讓時(shí)鐘更好的為人民服務(wù),怎樣讓我們的老朋友煥發(fā)青春呢?這就要求人們

15、不斷設(shè)計(jì)出新型時(shí)鐘。本方案設(shè)計(jì)的多功能電子鐘除了傳統(tǒng)的顯示時(shí)間功能之外還可以測(cè)試溫度、電網(wǎng)頻率、電壓、并提供了過(guò)壓報(bào)警、非接觸止鬧等功能。其中溫度采用AD590溫度傳感器電路測(cè)得,非接觸止鬧則采用紅外控制技術(shù)實(shí)現(xiàn)。</p><p>  20世紀(jì)末,電子技術(shù)獲得了飛速的發(fā)展,在其推動(dòng)下,現(xiàn)代電子產(chǎn)品幾乎滲透了社會(huì)的各個(gè)領(lǐng)域,有力地推動(dòng)了社會(huì)生產(chǎn)力的發(fā)展和社會(huì)信息化程度的提高,同時(shí)也使現(xiàn)代電子產(chǎn)品性能進(jìn)一步提高,產(chǎn)品

16、更新?lián)Q代的節(jié)奏也越來(lái)越快。數(shù)字鐘已成為人們?nèi)粘I钪校罕夭豢缮俚谋匦杵罚瑥V泛用于個(gè)人家庭以及車站、碼頭、劇場(chǎng)、辦公室等公共場(chǎng)所,給人們的生活、學(xué)習(xí)、工作、娛樂(lè)帶來(lái)極大的方便。由于數(shù)字集成電路技術(shù)的發(fā)展和采用了先進(jìn)的石英技術(shù),使數(shù)字鐘具有走時(shí)準(zhǔn)確、性能穩(wěn)定、集成電路有體積小、功耗小、功能多、攜帶方便等優(yōu)點(diǎn),,因此在許多電子設(shè)備中被廣泛使用。</p><p>  電子鐘是人們?nèi)粘I钪谐S玫挠?jì)時(shí)工具,而數(shù)字式電子鐘又

17、有其體積小、重量輕、走時(shí)準(zhǔn)確、結(jié)構(gòu)簡(jiǎn)單、耗電量少等優(yōu)點(diǎn)而在生活中被廣泛應(yīng)用,因此本次設(shè)計(jì)就用數(shù)字集成電路和一些簡(jiǎn)單的邏輯門(mén)電路來(lái)設(shè)計(jì)一個(gè)數(shù)字式電子鐘,使其完成時(shí)間及星期的顯示功能。</p><p>  本次設(shè)計(jì)以數(shù)字電子為主,分別對(duì)1S時(shí)鐘信號(hào)源、秒計(jì)時(shí)顯示、分計(jì)時(shí)顯示、小時(shí)計(jì)時(shí)顯示、整點(diǎn)報(bào)時(shí)及校時(shí)電路進(jìn)行設(shè)計(jì),然后將它們組合,來(lái)完成時(shí)、分、秒的顯示并且有整點(diǎn)報(bào)時(shí)和走時(shí)校準(zhǔn)的功能。并通過(guò)本次設(shè)計(jì)加深對(duì)數(shù)字電子技術(shù)

18、的理解以及更熟練使用計(jì)數(shù)器、觸發(fā)器和各種邏輯門(mén)電路的能力。</p><p>  第二章 設(shè)計(jì)方案論證</p><p><b>  方案一 </b></p><p>  用主芯片為AT89C51的單片機(jī)控制實(shí)現(xiàn),使用單片機(jī)內(nèi)部的定時(shí)計(jì)數(shù)器實(shí)現(xiàn)時(shí)間的設(shè)定,使用按鍵進(jìn)行時(shí)間的調(diào)整和定時(shí),按鍵有蜂鳴器提示,溫度傳感器使用DALLAS公司生產(chǎn)的單總

19、線式數(shù)字溫度傳感器,它具有微型化、低功耗、高性能、抗干擾能力強(qiáng)、易配處理器等優(yōu)點(diǎn),特別適用于構(gòu)成多點(diǎn)溫度測(cè)控系統(tǒng),可直接將溫度轉(zhuǎn)化成串行數(shù)字信號(hào)(提供9位二進(jìn)制數(shù)字)給單片機(jī)處理,且在同一總線上可以掛接多個(gè)傳感器芯片。顯示時(shí)間和溫度使用數(shù)碼管顯示。方案1系統(tǒng)結(jié)構(gòu)框圖如圖1.1所示。</p><p>  圖1.1 方案1系統(tǒng)結(jié)構(gòu)框圖</p><p><b>  方案二 <

20、;/b></p><p>  用主芯片為AT89C51的單片機(jī)控制實(shí)現(xiàn),為了滿足單片機(jī)系統(tǒng)的實(shí)時(shí)控制的需求,采用實(shí)時(shí)鐘芯片DS1302,使用按鍵進(jìn)行時(shí)間的調(diào)整和定時(shí),按鍵蜂鳴器提示,溫度傳感器使用普通的溫度傳感器,由于溫度傳感器采集的數(shù)據(jù)為模擬量,又因?yàn)閱纹瑱C(jī)AT89C51內(nèi)部沒(méi)有集成模數(shù)轉(zhuǎn)換器,需要在控制系統(tǒng)的外部使用A/D轉(zhuǎn)換裝置,另外系統(tǒng)還應(yīng)該把采集來(lái)的數(shù)據(jù)進(jìn)行信號(hào)處理,顯示溫度和時(shí)間使用LCD160

21、2顯示。方案2系統(tǒng)結(jié)構(gòu)框圖如圖1.2所示。</p><p>  圖1.2 方案2系統(tǒng)結(jié)構(gòu)框圖</p><p><b>  方案三 </b></p><p>  用主芯片為AT89C51的單片機(jī)控制實(shí)現(xiàn),為了滿足單片機(jī)系統(tǒng)的實(shí)時(shí)控制的需求,采用實(shí)時(shí)鐘芯片DS1302,使用按鍵進(jìn)行時(shí)間的調(diào)整和定時(shí),按鍵有蜂鳴器提示,溫度傳感器使用DALLAS

22、公司生產(chǎn)的單總線式數(shù)字溫度傳感器。顯示時(shí)間和溫度使用LCD1602顯示。方案3系統(tǒng)結(jié)構(gòu)框圖如圖1.3所示。</p><p>  圖1.3 方案3系統(tǒng)結(jié)構(gòu)框圖</p><p><b>  方案選擇 </b></p><p>  方案一直接使用單片機(jī)內(nèi)集成的定時(shí)器,產(chǎn)生定時(shí)節(jié)拍,編制軟件計(jì)數(shù)器,進(jìn)行節(jié)拍技術(shù),理論上講,不但能夠完成秒表設(shè)計(jì),還

23、能夠?qū)崿F(xiàn)分鐘、刻鐘、小時(shí)的實(shí)時(shí)計(jì)時(shí)功能,在此基礎(chǔ)上,如果加上足夠精確的誤差時(shí)間補(bǔ)償處理,甚至可以實(shí)現(xiàn)日、星期、月、年等日歷功能。但使用片內(nèi)定時(shí)器有以下幾個(gè)問(wèn)題:</p><p><b>  1、時(shí)間補(bǔ)償</b></p><p>  片內(nèi)定時(shí)器采用中斷方式提供計(jì)時(shí)節(jié)拍,中斷的實(shí)質(zhì)是隨機(jī)程序切換,那么,中斷響應(yīng)時(shí)間是不可精確預(yù)測(cè)的。這樣,必然會(huì)導(dǎo)致計(jì)時(shí)節(jié)拍的時(shí)間誤差,在計(jì)

24、時(shí)時(shí)間較短的情況下,比如1~99s計(jì)時(shí),可以采用一些軟件措施進(jìn)行誤差補(bǔ)償,但當(dāng)系統(tǒng)所需要的計(jì)時(shí)時(shí)間較長(zhǎng)時(shí),比如進(jìn)行年、月、日的日歷計(jì)時(shí),定時(shí)中斷誤差扥積累就會(huì)很大,無(wú)法滿足時(shí)間精度的要求。因此,在需要日歷、時(shí)鐘的場(chǎng)合,片內(nèi)定時(shí)器的作用有限。片內(nèi)定時(shí)器只適合于單片機(jī)短時(shí)間計(jì)時(shí)的要求。 </p><p><b>  2、時(shí)鐘維持</b></p><p>  使用片內(nèi)定時(shí)

25、器進(jìn)行計(jì)時(shí)的時(shí)候,單片機(jī)始終要處于工作狀態(tài)。才能維持計(jì)時(shí)時(shí)間,一旦停機(jī)或進(jìn)入待機(jī)狀態(tài),開(kāi)機(jī)后,計(jì)時(shí)時(shí)間就需要重新設(shè)定。在單片機(jī)系統(tǒng)中,有時(shí),需要維持一個(gè)時(shí)鐘,對(duì)控制工作進(jìn)行時(shí)間標(biāo)定。不管單片機(jī)系統(tǒng)開(kāi)機(jī)、關(guān)機(jī)還是待機(jī),系統(tǒng)時(shí)鐘要始終維持。</p><p>  為了滿足單片機(jī)系統(tǒng)的實(shí)時(shí)鐘需求,最可靠的方法是采用實(shí)時(shí)鐘芯片DS1302。溫度的數(shù)據(jù)采集如果是一般的溫度傳感器,需要對(duì)信號(hào)進(jìn)行處理,另外還需要模數(shù)轉(zhuǎn)換裝置,如

26、果采用的是數(shù)字溫度傳感器18B20,可以直接將采集的信號(hào)轉(zhuǎn)化為數(shù)字信息供單片機(jī)控制,這樣不僅節(jié)約了成本,還提高了系統(tǒng)的可靠性和穩(wěn)定性。所以本設(shè)計(jì)采用的是方案三。</p><p>  第三章 電路硬件設(shè)計(jì)及分析</p><p><b>  3.1 時(shí)鐘電路</b></p><p>  系統(tǒng)的時(shí)鐘電路設(shè)計(jì)是采用的內(nèi)部方式,即利用芯片內(nèi)部的振蕩電路。

27、51單片機(jī)內(nèi)部有一個(gè)用于構(gòu)成振蕩器的高增益反相放大器。引腳XTAL1和XTAL2分別是此放大器的輸入端和輸出端。這個(gè)放大器與作為反饋元件的片外晶體諧振器一起構(gòu)成一個(gè)自激振蕩器。外接晶體諧振器以及電容C1和C2構(gòu)成并聯(lián)諧振電路,接在放大器的反饋回路中。對(duì)外接電容的值雖然沒(méi)有嚴(yán)格的要求,但電容的大小會(huì)影響震蕩器頻率的高低、震蕩器的穩(wěn)定性、起振的快速性和溫度的穩(wěn)定性。因此,此系統(tǒng)電路的晶體振蕩器的值為12MHz,電容應(yīng)盡可能的選擇陶瓷電容,電

28、容值約為22μF。在焊接刷電路板時(shí),晶體振蕩器和電容應(yīng)盡可能安裝得與單片機(jī)芯片靠近,以減少寄生電容,更好地保證震蕩器穩(wěn)定和可靠地工作。時(shí)鐘電路如圖2.1所示。</p><p>  圖2.1 時(shí)鐘電路圖</p><p><b>  3.2 復(fù)位電路</b></p><p>  復(fù)位是由外部的復(fù)位電路來(lái)實(shí)現(xiàn)的。片內(nèi)復(fù)位電路是復(fù)位引腳RST通常采用

29、上電自動(dòng)復(fù)位和按鍵手動(dòng)復(fù)位兩種方式,此電路系統(tǒng)采用的是按鍵手動(dòng)復(fù)位電路,高電平時(shí)復(fù)位,如圖所示。當(dāng)時(shí)鐘頻率選用12MHz時(shí),C取22μF,R約為1K。復(fù)位電路如圖2.2所示</p><p>  圖2.2 復(fù)位電路圖</p><p>  3.3 DS1302時(shí)鐘電路</p><p>  本設(shè)計(jì)中的采用的時(shí)鐘芯片是DS1302</p><p>

30、;  DS1302的結(jié)構(gòu)及工作原理</p><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是D

31、S1202的升級(jí)產(chǎn)品,與DS1202兼容,但增加了主電源/后備電源雙電源引腳,同時(shí)提供了對(duì)后備電源進(jìn)行涓細(xì)電流充電的能力。DS1302這些電路的接口簡(jiǎn)單、價(jià)格低廉、使用方便,被廣泛地采用。</p><p>  時(shí)鐘電路DS1302是DALLAS公司的一種具有涓細(xì)電流充電能力的電路,主要特點(diǎn)是采用串行數(shù)據(jù)傳輸,可為掉電保護(hù)電源提供可編程的充電功能,并且可以關(guān)閉充電功能。采用普通32.768kHz晶振。</p&

32、gt;<p><b>  引腳功能及結(jié)構(gòu)</b></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

33、.768kHz晶振。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必須保持低電平。只

34、有在SCLK為低電平時(shí),才能將RST置為高電平。I/O為串行數(shù)據(jù)輸入輸出端(雙向),后面有詳細(xì)說(shuō)明。SCLK為時(shí)鐘輸入端。下圖2.3為DS1302的引腳功能圖2.3:</p><p>  圖2.3 DS1302封裝圖</p><p>  DS1302的控制字節(jié)</p><p>  DS1302的控制字如圖2.4所示??刂谱止?jié)的最高有效位(位7)必須是邏輯1,如果它為

35、0,則不能把數(shù)據(jù)寫(xiě)入DS1302中,位6如果為0,則表示存取日歷時(shí)鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進(jìn)行寫(xiě)操作,為圖表示進(jìn)行讀操作,控制字節(jié)總是從最低位開(kāi)始輸出?!?lt;/p><p>  圖2.4DS1302的控制字</p><p>  DS1302的寄存器  </p><p>  DS1302有12個(gè)寄存器,

36、其中有7個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式,其日歷、時(shí)間寄存器及其控制字見(jiàn)表1此外,DS1302還有年份寄存器、控制寄存器、充電寄存器、時(shí)鐘突發(fā)寄存器及與RAM相關(guān)的寄存器等。時(shí)鐘突發(fā)寄存器可一次性順序讀寫(xiě)除充電寄存器外的所有寄存器內(nèi)容。DS1302與RAM相關(guān)的寄存器分為兩類:一類是單個(gè)RAM單元,共31個(gè),每個(gè)單元組態(tài)為一個(gè)8位的字節(jié),其命令控制字為C0H~FDH,其中奇數(shù)為讀操作,偶數(shù)為寫(xiě)操作;另一類為突發(fā)方式下

37、的RAM寄存器,此方式下可一次性讀寫(xiě)所有的RAM的31個(gè)字節(jié),命令控制字為FEH(寫(xiě))、FFH(讀)。 </p><p>  DS1302與單片機(jī)之間能簡(jiǎn)單地采用同步串行的方式進(jìn)行通信,僅需三根I/O線:復(fù)位(RST)、I/O數(shù)據(jù)線、串行時(shí)鐘(SCLK)。DS1302時(shí)鐘電路如圖2.5所示。</p><p>  圖2.5 DS1302時(shí)鐘電路圖 </p>

38、<p>  3.4 DS18B20溫度計(jì)電路</p><p>  DS18B20它具有3引腳TO-92小體積封裝形式,溫度測(cè)量范圍為-55℃~+125℃,可編程為9位~12位A/D轉(zhuǎn)換精度,測(cè)溫分辨率可達(dá)0.0625℃,被測(cè)溫度用符號(hào)擴(kuò)展的16位數(shù)字量方式串行輸出,其工作電源既可在遠(yuǎn)端引入,也可采用寄生電源方式產(chǎn)生,多個(gè)DS18B20可以并聯(lián)到3根或2根線上,CPU只需一根端口線就能與多個(gè)DS18

39、B20通信,占用微處理器的端口較少,可節(jié)省大量的引線和邏輯電路。以上特點(diǎn)使DS18B20非常適用于遠(yuǎn)距離多點(diǎn)溫度檢測(cè)系統(tǒng)。電路圖如圖2.4所示。</p><p>  圖2.6 DS18B20溫度計(jì)電路</p><p><b>  3.5 鍵盤(pán)電路</b></p><p>  鍵盤(pán)接口是單片機(jī)應(yīng)用系統(tǒng)中最常用的接口之一,鍵盤(pán)的類型很多,常用

40、的有獨(dú)立式鍵盤(pán)和矩陣式鍵盤(pán),因?yàn)楸驹O(shè)計(jì)需要的鍵盤(pán)比較少,所以采用獨(dú)立式鍵盤(pán)。 在鍵盤(pán)的應(yīng)用中,需要解決鍵盤(pán)消抖的問(wèn)題,一般使用的是軟件消抖的方法。鍵盤(pán)的電路圖如圖2.5所示。</p><p>  圖2.6 鍵盤(pán)電路圖</p><p><b>  3.6 顯示電路</b></p><p>  顯示器是單片機(jī)常用的功能單元之一,顯示器的主要功能

41、是為單片機(jī)系統(tǒng)使用者提供必要的單片機(jī)工作信息,或者提供工作狀態(tài)的提示信息,顯示器的工作是由單片機(jī)通過(guò)顯示接口驅(qū)動(dòng)的。本設(shè)計(jì)采用的是LCD1602顯示電路圖如圖2.6所示。</p><p>  圖2.7 LCD1602顯示電路圖</p><p>  3.7 按鍵提示電路</p><p>  本設(shè)計(jì)具有按鍵蜂鳴器響的功能,使得按鍵可靠工作。按鍵提示電路如圖2.7所示

42、。 </p><p>  圖2.7 按鍵提示電路如圖 </p><p><b>  第四章 軟件設(shè)計(jì)</b></p><p>  4.1 主函數(shù)流程圖</p><p>  主函數(shù)流程圖如圖3.1所示。</p><p>  圖3.1 主函數(shù)流

43、程圖</p><p>  4.2 DS18B20溫度計(jì)程序流程</p><p>  DS1820溫度計(jì)程序流程圖如圖3.2所示。</p><p>  圖3.2 DS1820溫度計(jì)程序流程圖</p><p>  4.3 按鍵程序流程圖</p><p>  按鍵程序流程圖如圖3.3所示。</p>&l

44、t;p>  圖3.3 按鍵程序流程圖 </p><p>  4.4 定時(shí)器T0中斷服務(wù)程序流程圖</p><p>  定時(shí)器T0中斷服務(wù)程序流程圖如圖3.4所示。</p><p>  圖3.4 定時(shí)器T0中斷服務(wù)程序流程圖</p><p><b>  4.5 電路圖</b></p><

45、;p>  4.6 Proteus仿真效果圖</p><p>  帶時(shí)鐘顯示的溫度計(jì)Proteus仿真效果圖如圖4.1所示。</p><p>  圖4.1 帶時(shí)鐘顯示的溫度計(jì)Proteus仿真效果圖</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 陳梓城《實(shí)用電子電路設(shè)計(jì)與調(diào)試》中國(guó)電

46、力出版社2006</p><p>  [2] 曹薇《單片機(jī)原理及應(yīng)用》 中國(guó)實(shí)力水電出版社 2004.8</p><p>  [3] 高吉祥《全國(guó)大學(xué)生電子設(shè)計(jì)大賽培訓(xùn)教程》電子工業(yè)出版社2007.5</p><p>  [4] DS1302 DATASHEET www.datasheet5.com</p><p>  [5] DS1

47、8B20 DATASHEET www.datasheet5.com</p><p>  [6] 郭天祥,《新概念51單片機(jī)C語(yǔ)言教程——入門(mén)、提高、開(kāi)發(fā)、拓展全攻略》;北京:電子工業(yè)出版社;2009</p><p>  [7] 宋戈、黃鶴松、員玉良、蔣海峰,《51單片機(jī)應(yīng)用開(kāi)發(fā)范例大全》;北京:人民郵電出版社;2010</p><p>  [8] 閻石,《數(shù)字

48、電子技術(shù)基礎(chǔ)(第四版)》;北京:高等教育出版社;1998</p><p>  [9] 鄒顯圣,《基于AT89C51單片機(jī)數(shù)字時(shí)鐘的研究》,機(jī)電產(chǎn)品開(kāi)發(fā)與創(chuàng)新;2009,(5)</p><p>  [10] 劉伏文、王春華,《MCS-51單片機(jī)存儲(chǔ)器結(jié)構(gòu)詳解》;電子制作;2007,(10).</p><p>  [11] 盧旭錦,《基于Keil C的AT24C0

49、2串行E~2PROM的編程》;現(xiàn)代電子技術(shù);2007,(8)</p><p><b>  致 謝</b></p><p>  這款多功能計(jì)數(shù)器采用了現(xiàn)在廣泛使用的單片機(jī)技術(shù)為核心,軟硬件結(jié)合,使硬件部分大為簡(jiǎn)化,提高了系統(tǒng)穩(wěn)定性,并采用大屏幕液晶顯示、紅外遙控裝置和電壓報(bào)警裝置使人機(jī)交互簡(jiǎn)便易行,較為有效地完成了題目的要求。</p><p>

50、  本次畢業(yè)設(shè)計(jì)得到xx老師的大力支持,他提出了許多的意見(jiàn)和建議,他的指導(dǎo)是我受益匪淺,在此表示衷心的感謝。</p><p>  由于本人能力有限,在設(shè)計(jì)中難免會(huì)出現(xiàn)錯(cuò)誤與不足,希望各位老師及讀者給予批評(píng)指正并提出寶貴意見(jiàn)。</p><p><b>  附錄1 主程序清單</b></p><p>  #include<reg51.h>

51、;</p><p>  #include"DS18B20_3.H"</p><p>  #define uint unsigned int</p><p>  #define uchar unsigned char</p><p>  uchar a,miao,shi,fen,ri,yue,nian,week,flag,k

52、ey1n,temp;</p><p>  #define yh 0x80 //LCD第一行的初始位置,因?yàn)長(zhǎng)CD1602字符地址首位D7恒定為1(100000000=80)</p><p>  #define er 0x80+0x40 //LCD第二行初始位置(因?yàn)榈诙械谝粋€(gè)字符位置地址是0x40)</p><p>  sbit rs=P2^0;</p>

53、;<p>  sbit en=P2^2;</p><p>  sbit rw=P2^1; //如果硬件上rw接地,就不用寫(xiě)這句和后面的rw=0了</p><p>  sbit led=P2^6; //LCD背光開(kāi)關(guān)</p><p>  sbit IO=P1^1;</p><p>  sbit SCLK=P1^0;</p&g

54、t;<p>  sbit RST=P1^2;</p><p>  sbit ACC0=ACC^0;</p><p>  sbit ACC7=ACC^7;</p><p>  sbit key1=P1^5; //設(shè)置鍵</p><p>  sbit key2=P1^6; //加鍵</p><p>  s

55、bit key3=P1^7; //減鍵</p><p>  sbit buzzer=P1^3;//蜂鳴器,通過(guò)三極管9012驅(qū)動(dòng),端口低電平響</p><p>  uchar code tab1[]={"20 - - "}; //年顯示的固定字符</p><p>  uchar code tab2[]={" : : &q

56、uot;};//時(shí)間顯示的固定字符</p><p>  void delay(uint xms)//延時(shí)函數(shù),有參函數(shù)</p><p><b>  {</b></p><p><b>  uint x,y;</b></p><p>  for(x=xms;x>0;x--)</p>

57、<p>  for(y=110;y>0;y--);</p><p><b>  }</b></p><p>  write_1602com(uchar com)//****液晶寫(xiě)入指令函數(shù)****</p><p><b>  {</b></p><p>  rs=0;//數(shù)據(jù)/指令

58、選擇置為指令</p><p>  rw=0; //讀寫(xiě)選擇置為寫(xiě)</p><p>  P0=com;//送入數(shù)據(jù)</p><p><b>  delay(1);</b></p><p>  en=1;//拉高使能端,為制造有效的下降沿做準(zhǔn)備</p><p><b>  delay(1);

59、</b></p><p>  en=0;//en由高變低,產(chǎn)生下降沿,液晶執(zhí)行命令</p><p><b>  }</b></p><p>  write_1602dat(uchar dat)//***液晶寫(xiě)入數(shù)據(jù)函數(shù)****</p><p><b>  {</b></p>

60、<p>  rs=1;//數(shù)據(jù)/指令選擇置為數(shù)據(jù)</p><p>  rw=0; //讀寫(xiě)選擇置為寫(xiě)</p><p>  P0=dat;//送入數(shù)據(jù)</p><p><b>  delay(1);</b></p><p>  en=1; //en置高電平,為制造下降沿做準(zhǔn)備</p><p&

61、gt;<b>  delay(1);</b></p><p>  en=0; //en由高變低,產(chǎn)生下降沿,液晶執(zhí)行命令</p><p><b>  }</b></p><p>  lcd_init()//***液晶初始化函數(shù)****</p><p><b>  {</b>&l

62、t;/p><p>  write_1602com(0x38);//設(shè)置液晶工作模式,意思:16*2行顯示,5*7點(diǎn)陣,8位數(shù)據(jù)</p><p>  write_1602com(0x0c);//開(kāi)顯示不顯示光標(biāo)</p><p>  write_1602com(0x06);//整屏不移動(dòng),光標(biāo)自動(dòng)右移</p><p>  write_1602com(

63、0x01);//清顯示</p><p>  write_1602com(yh+1);//日歷顯示固定符號(hào)從第一行第1個(gè)位置之后開(kāi)始顯示</p><p>  for(a=0;a<14;a++)</p><p><b>  {</b></p><p>  write_1602dat(tab1[a]);//向液晶屏寫(xiě)日歷

64、顯示的固定符號(hào)部分</p><p>  //delay(3);</p><p><b>  }</b></p><p>  write_1602com(er+2);//時(shí)間顯示固定符號(hào)寫(xiě)入位置,從第2個(gè)位置后開(kāi)始顯示</p><p>  for(a=0;a<8;a++)</p><p>&l

65、t;b>  {</b></p><p>  write_1602dat(tab2[a]);//寫(xiě)顯示時(shí)間固定符號(hào),兩個(gè)冒號(hào)</p><p>  //delay(3);</p><p><b>  }</b></p><p><b>  }</b></p><p&

66、gt;  void write_byte(uchar dat)//寫(xiě)一個(gè)字節(jié)</p><p><b>  {</b></p><p><b>  ACC=dat;</b></p><p><b>  RST=1;</b></p><p>  for(a=8;a>0;a--

67、)</p><p><b>  {</b></p><p><b>  IO=ACC0;</b></p><p><b>  SCLK=0;</b></p><p><b>  SCLK=1;</b></p><p>  ACC=A

68、CC>>1;</p><p><b>  }</b></p><p><b>  }</b></p><p>  uchar read_byte()//讀一個(gè)字節(jié)</p><p><b>  {</b></p><p><b>  

69、RST=1;</b></p><p>  for(a=8;a>0;a--)</p><p><b>  {</b></p><p><b>  ACC7=IO;</b></p><p><b>  SCLK=1;</b></p><p>

70、;<b>  SCLK=0;</b></p><p>  ACC=ACC>>1;</p><p><b>  }</b></p><p>  return (ACC);</p><p><b>  }</b></p><p>  void w

71、rite_1302(uchar add,uchar dat)//向1302芯片寫(xiě)函數(shù),指定寫(xiě)入地址,數(shù)據(jù)</p><p><b>  {</b></p><p><b>  RST=0;</b></p><p><b>  SCLK=0;</b></p><p><b&g

72、t;  RST=1;</b></p><p>  write_byte(add);</p><p>  write_byte(dat);</p><p><b>  SCLK=1;</b></p><p><b>  RST=0;</b></p><p><

73、b>  }</b></p><p>  uchar read_1302(uchar add)//從1302讀數(shù)據(jù)函數(shù),指定讀取數(shù)據(jù)來(lái)源地址</p><p><b>  {</b></p><p>  uchar temp;</p><p><b>  RST=0;</b></

74、p><p><b>  SCLK=0;</b></p><p><b>  RST=1;</b></p><p>  write_byte(add);</p><p>  temp=read_byte();</p><p><b>  SCLK=1;</b>

75、</p><p><b>  RST=0;</b></p><p>  return(temp);</p><p><b>  }</b></p><p>  uchar BCD_Decimal(uchar bcd)//BCD碼轉(zhuǎn)十進(jìn)制函數(shù),輸入BCD,返回十進(jìn)制</p><p&

76、gt;<b>  {</b></p><p>  uchar Decimal;</p><p>  Decimal=bcd>>4;</p><p>  return(Decimal=Decimal*10+(bcd&=0x0F));</p><p><b>  }</b></

77、p><p>  void ds1302_init() //1302芯片初始化子函數(shù)(2010-01-07,12:00:00,week4)</p><p><b>  {</b></p><p><b>  RST=0;</b></p><p><b>  SCLK=0;</b>&l

78、t;/p><p>  write_1302(0x8e,0x00); //允許寫(xiě),禁止寫(xiě)保護(hù) </p><p>  write_1302(0x8e,0x80); //打開(kāi)寫(xiě)保護(hù)</p><p><b>  }</b></p><p>  void write_temp(uchar add,uchar dat)//向LCD寫(xiě)溫度

79、數(shù)據(jù),并指定顯示位置</p><p><b>  {</b></p><p>  uchar gw,sw;</p><p>  gw=dat%10;//取得個(gè)位數(shù)字</p><p>  sw=dat/10;//取得十位數(shù)字</p><p>  write_1602com(er+add);//er是

80、頭文件規(guī)定的值0x80+0x40</p><p>  write_1602dat(0x30+sw);//數(shù)字+30得到該數(shù)字的LCD1602顯示碼</p><p>  write_1602dat(0x30+gw);//數(shù)字+30得到該數(shù)字的LCD1602顯示碼</p><p>  write_1602dat(0xdf);//顯示溫度的小圓圈符號(hào),0xdf是液晶屏字符

81、庫(kù)的該符號(hào)地址碼</p><p>  write_1602dat(0x43);//顯示"C"符號(hào),0x43是液晶屏字符庫(kù)里大寫(xiě)C的地址碼</p><p><b>  }</b></p><p>  void write_sfm(uchar add,uchar dat)//向LCD寫(xiě)時(shí)分秒,有顯示位置加、現(xiàn)示數(shù)據(jù),兩個(gè)參

82、數(shù)</p><p><b>  {</b></p><p>  uchar gw,sw;</p><p>  gw=dat%10;//取得個(gè)位數(shù)字</p><p>  sw=dat/10;//取得十位數(shù)字</p><p>  write_1602com(er+add);//er是頭文件規(guī)定的值0x

83、80+0x40</p><p>  write_1602dat(0x30+sw);//數(shù)字+30得到該數(shù)字的LCD1602顯示碼</p><p>  write_1602dat(0x30+gw);//數(shù)字+30得到該數(shù)字的LCD1602顯示碼</p><p><b>  }</b></p><p>  void writ

84、e_nyr(uchar add,uchar dat)//向LCD寫(xiě)年月日,有顯示位置加數(shù)、顯示數(shù)據(jù),兩個(gè)參數(shù)</p><p><b>  {</b></p><p>  uchar gw,sw;</p><p>  gw=dat%10;//取得個(gè)位數(shù)字</p><p>  sw=dat/10;//取得十位數(shù)字</p

85、><p>  write_1602com(yh+add);//設(shè)定顯示位置為第一個(gè)位置+add</p><p>  write_1602dat(0x30+sw);//數(shù)字+30得到該數(shù)字的LCD1602顯示碼</p><p>  write_1602dat(0x30+gw);//數(shù)字+30得到該數(shù)字的LCD1602顯示碼</p><p><

86、b>  }</b></p><p>  void write_week(uchar week)//寫(xiě)星期函數(shù)</p><p><b>  {</b></p><p>  write_1602com(yh+0x0c);//星期字符的顯示位置</p><p>  switch(week)</p>

87、<p><b>  {</b></p><p>  case 1:write_1602dat('M');//星期數(shù)為1時(shí),顯示</p><p>  write_1602dat('O');</p><p>  write_1602dat('N');</p><p&g

88、t;<b>  break;</b></p><p>  case 2:write_1602dat('T');//星期數(shù)據(jù)為2時(shí)顯示</p><p>  write_1602dat('U');</p><p>  write_1602dat('E');</p><p>&l

89、t;b>  break;</b></p><p>  case 3:write_1602dat('W');//星期數(shù)據(jù)為3時(shí)顯示</p><p>  write_1602dat('E');</p><p>  write_1602dat('D');</p><p><b&

90、gt;  break;</b></p><p>  case 4:write_1602dat('T');//星期數(shù)據(jù)為4是顯示</p><p>  write_1602dat('H');</p><p>  write_1602dat('U');</p><p><b> 

91、 break;</b></p><p>  case 5:write_1602dat('F');//星期數(shù)據(jù)為5時(shí)顯示</p><p>  write_1602dat('R');</p><p>  write_1602dat('I');</p><p><b>  bre

92、ak;</b></p><p>  case 6:write_1602dat('S');//星期數(shù)據(jù)為6時(shí)顯示</p><p>  write_1602dat('T');</p><p>  write_1602dat('A');</p><p><b>  break;&

93、lt;/b></p><p>  case 7:write_1602dat('S');//星期數(shù)據(jù)為7時(shí)顯示</p><p>  write_1602dat('U');</p><p>  write_1602dat('N');</p><p><b>  break;</

94、b></p><p><b>  }</b></p><p><b>  }</b></p><p>  //****************鍵盤(pán)掃描有關(guān)函數(shù)**********************</p><p>  void keyscan()</p><p>

95、<b>  {</b></p><p>  if(key1==0)//---------------key1為功能鍵(設(shè)置鍵)--------------------</p><p><b>  {</b></p><p>  delay(9);//延時(shí),用于消抖動(dòng)</p><p>  if(key

96、1==0)//延時(shí)后再次確認(rèn)按鍵按下</p><p><b>  {</b></p><p>  buzzer=0;//蜂鳴器短響一次</p><p>  delay(20);</p><p><b>  buzzer=1;</b></p><p>  while(!key1

97、);</p><p><b>  key1n++;</b></p><p>  if(key1n==9)</p><p>  key1n=1;//設(shè)置按鍵共有秒、分、時(shí)、星期、日、月、年、返回,8個(gè)功能循環(huán)</p><p>  switch(key1n)</p><p><b>  {&

98、lt;/b></p><p>  case 1: TR0=0;//關(guān)閉定時(shí)器</p><p><b>  //TR1=0;</b></p><p>  write_1602com(er+0x09);//設(shè)置按鍵按動(dòng)一次,秒位置顯示光標(biāo)</p><p>  write_1602com(0x0f);//設(shè)置光標(biāo)為閃爍&

99、lt;/p><p>  temp=(miao)/10*16+(miao)%10;//秒數(shù)據(jù)寫(xiě)入DS1302</p><p>  write_1302(0x8e,0x00);</p><p>  write_1302(0x80,0x80|temp);//miao</p><p>  write_1302(0x8e,0x80);</p>

100、<p><b>  break;</b></p><p>  case 2: write_1602com(er+6);//按2次fen位置顯示光標(biāo)</p><p>  //write_1602com(0x0f);</p><p><b>  break;</b></p><p>  c

101、ase 3: write_1602com(er+3);//按動(dòng)3次,shi</p><p>  //write_1602com(0x0f);</p><p><b>  break;</b></p><p>  case 4: write_1602com(yh+0x0e);//按動(dòng)4次,week</p><p>  //

102、write_1602com(0x0f);</p><p><b>  break;</b></p><p>  case 5: write_1602com(yh+0x0a);//按動(dòng)5次,ri</p><p>  //write_1602com(0x0f);</p><p><b>  break;</b

103、></p><p>  case 6: write_1602com(yh+0x07);//按動(dòng)6次,yue</p><p>  //write_1602com(0x0f);</p><p><b>  break;</b></p><p>  case 7: write_1602com(yh+0x04);//按動(dòng)7

104、次,nian</p><p>  //write_1602com(0x0f);</p><p><b>  break;</b></p><p><b>  case 8:</b></p><p>  write_1602com(0x0c);//按動(dòng)到第8次,設(shè)置光標(biāo)不閃爍</p>&

105、lt;p>  TR0=1;//打開(kāi)定時(shí)器</p><p>  temp=(miao)/10*16+(miao)%10;</p><p>  write_1302(0x8e,0x00);</p><p>  write_1302(0x80,0x00|temp);//miao數(shù)據(jù)寫(xiě)入DS1302</p><p>  write_1302(0

106、x8e,0x80);</p><p>  break;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if(key1n!=0)//

107、當(dāng)key1按下以下。再按以下鍵才有效(按鍵次數(shù)不等于零)</p><p><b>  {</b></p><p>  if(key2==0) //上調(diào)鍵</p><p><b>  {</b></p><p>  delay(10);</p><p>  if(key2==

108、0)</p><p><b>  {</b></p><p>  buzzer=0;//蜂鳴器短響一次</p><p>  delay(20);</p><p><b>  buzzer=1;</b></p><p>  while(!key2);</p>&l

109、t;p>  switch(key1n)</p><p><b>  {</b></p><p>  case 1:miao++;//設(shè)置鍵按動(dòng)1次,調(diào)秒</p><p>  if(miao==60)</p><p>  miao=0;//秒超過(guò)59,再加1,就歸零</p><p>  wri

110、te_sfm(0x08,miao);//令LCD在正確位置顯示"加"設(shè)定好的秒數(shù)</p><p>  temp=(miao)/10*16+(miao)%10;//十進(jìn)制轉(zhuǎn)換成DS1302要求的DCB碼</p><p>  write_1302(0x8e,0x00); //允許寫(xiě),禁止寫(xiě)保護(hù) </p><p>  write_1302(0x80,t

111、emp);</p><p>  //向DS1302內(nèi)寫(xiě)秒寄存器80H寫(xiě)入調(diào)整后的秒數(shù)據(jù)BCD碼</p><p>  write_1302(0x8e,0x80); //打開(kāi)寫(xiě)保護(hù)</p><p>  write_1602com(er+0x09);</p><p>  //因?yàn)樵O(shè)置液晶的模式是寫(xiě)入數(shù)據(jù)后,光標(biāo)自動(dòng)右移,所以要指定返回</p&

112、gt;<p>  //write_1602com(0x0b);</p><p><b>  break;</b></p><p>  case 2:fen++;</p><p>  if(fen==60)</p><p><b>  fen=0;</b></p><

113、p>  write_sfm(0x05,fen);//令LCD在正確位置顯示"加"設(shè)定好的分?jǐn)?shù)據(jù)</p><p>  temp=(fen)/10*16+(fen)%10;//十進(jìn)制轉(zhuǎn)換成DS1302要求的DCB碼</p><p>  write_1302(0x8e,0x00);//允許寫(xiě),禁止寫(xiě)保護(hù) </p><p>  write_1302

114、(0x82,temp);</p><p>  //向DS1302內(nèi)寫(xiě)分寄存器82H寫(xiě)入調(diào)整后的分?jǐn)?shù)據(jù)BCD碼</p><p>  write_1302(0x8e,0x80);//打開(kāi)寫(xiě)保護(hù)</p><p>  write_1602com(er+6);</p><p>  //因?yàn)樵O(shè)置液晶的模式是寫(xiě)入數(shù)據(jù)后,指針自動(dòng)加一,在這里是寫(xiě)回原來(lái)的位置

115、</p><p><b>  break;</b></p><p>  case 3:shi++;</p><p>  if(shi==24)</p><p><b>  shi=0;</b></p><p>  write_sfm(2,shi);//令LCD在正確的位置顯示

116、"加"設(shè)定好的小時(shí)數(shù)據(jù)</p><p>  temp=(shi)/10*16+(shi)%10;//十進(jìn)制轉(zhuǎn)換成DS1302要求的DCB碼</p><p>  write_1302(0x8e,0x00);//允許寫(xiě),禁止寫(xiě)保護(hù) </p><p>  write_1302(0x84,temp);</p><p>  //DS

117、1302內(nèi)寫(xiě)小時(shí)寄存器84H寫(xiě)入調(diào)整后的小時(shí)數(shù)據(jù)BCD碼</p><p>  write_1302(0x8e,0x80);//打開(kāi)寫(xiě)保護(hù)</p><p>  write_1602com(er+3);</p><p>  //設(shè)置液晶的模式是寫(xiě)入數(shù)據(jù)后,指針自動(dòng)加一,所以需要光標(biāo)回位</p><p><b>  break;</

118、b></p><p>  case 4:week++;</p><p>  if(week==8)</p><p><b>  week=1;</b></p><p>  write_1602com(yh+0x0C);//指定'加'后的周數(shù)據(jù)顯示位置</p><p>  wr

119、ite_week(week);//指定周數(shù)據(jù)顯示內(nèi)容</p><p>  temp=(week)/10*16+(week)%10;//十進(jìn)制轉(zhuǎn)換成DS1302要求的DCB碼</p><p>  write_1302(0x8e,0x00);//允許寫(xiě),禁止寫(xiě)保護(hù) </p><p>  write_1302(0x8a,temp);</p><p>

120、;  //向DS1302內(nèi)寫(xiě)周寄存器8aH寫(xiě)入調(diào)整后的周數(shù)據(jù)BCD碼</p><p>  write_1302(0x8e,0x80);//打開(kāi)寫(xiě)保護(hù)</p><p>  write_1602com(yh+0x0e);</p><p>  //因?yàn)樵O(shè)置液晶的模式是寫(xiě)入數(shù)據(jù)后,指針自動(dòng)加一,所以需要光標(biāo)回位</p><p><b>  

121、break;</b></p><p>  case 5:ri++;</p><p>  if(ri==32)</p><p><b>  ri=1;</b></p><p>  write_nyr(9,ri);//令LCD在正確的位置顯示"加"設(shè)定好的日期數(shù)據(jù)</p><

122、;p>  temp=(ri)/10*16+(ri)%10;//十進(jìn)制轉(zhuǎn)換成DS1302要求的DCB碼</p><p>  write_1302(0x8e,0x00);//允許寫(xiě),禁止寫(xiě)保護(hù)</p><p>  write_1302(0x86,temp);</p><p>  //向DS1302內(nèi)寫(xiě)日期寄存器86H寫(xiě)入調(diào)整后的日期數(shù)據(jù)BCD碼</p>

123、<p>  write_1302(0x8e,0x80);//打開(kāi)寫(xiě)保護(hù)</p><p>  write_1602com(yh+10);</p><p>  //因?yàn)樵O(shè)置液晶的模式是寫(xiě)入數(shù)據(jù)后,指針自動(dòng)加一,所以需要光標(biāo)回位</p><p><b>  break;</b></p><p>  case 6:

124、yue++;</p><p>  if(yue==13)</p><p><b>  yue=1;</b></p><p>  write_nyr(6,yue);//令LCD在正確的位置顯示"加"設(shè)定好的月份數(shù)據(jù)</p><p>  temp=(yue)/10*16+(yue)%10;//十進(jìn)制轉(zhuǎn)換成

125、DS1302要求的DCB碼</p><p>  write_1302(0x8e,0x00);//允許寫(xiě),禁止寫(xiě)保護(hù)</p><p>  write_1302(0x88,temp);</p><p>  //向DS1302內(nèi)寫(xiě)月份寄存器88H寫(xiě)入調(diào)整后的月份數(shù)據(jù)BCD碼</p><p>  write_1302(0x8e,0x80);//打開(kāi)寫(xiě)

126、保護(hù)</p><p>  write_1602com(yh+7);</p><p>  //因?yàn)樵O(shè)置液晶的模式是寫(xiě)入數(shù)據(jù)后,指針自動(dòng)加一,所以需要光標(biāo)回位</p><p><b>  break;</b></p><p>  case 7:nian++;</p><p>  if(nian==10

127、0)</p><p><b>  nian=0;</b></p><p>  write_nyr(3,nian);//令LCD在正確的位置顯示"加"設(shè)定好的年份數(shù)據(jù)</p><p>  temp=(nian)/10*16+(nian)%10;//十進(jìn)制轉(zhuǎn)換成DS1302要求的DCB碼</p><p>

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論