版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 本科畢業(yè)設(shè)計(jì)(論文)</p><p> 題目電子萬年歷的設(shè)計(jì)</p><p><b> 摘 要</b></p><p> 在當(dāng)代繁忙的工作與生活中,時(shí)間與每一個(gè)人都有非常密切的關(guān)系,每個(gè)人都受到時(shí)間的影響,電子萬年歷的出現(xiàn)給人們的工作與生活帶來了福音。電子萬年歷是實(shí)現(xiàn)對陽歷的日期和時(shí)間以及陰歷的日期顯示的計(jì)時(shí)裝置。
2、隨著科技的發(fā)展,電子萬年歷也有了巨大的進(jìn)步和發(fā)展,目前已經(jīng)廣泛應(yīng)用于家庭、車站、碼頭、辦公室以及銀行等各種場所。已經(jīng)成為人們?nèi)粘I詈凸ぷ髦斜夭豢缮俚碾娮赢a(chǎn)品,具有廣闊的發(fā)展空間和市場前景。</p><p> 本文介紹了基于單片機(jī)AT89C52的電子萬年歷的設(shè)計(jì),該設(shè)計(jì)結(jié)合時(shí)鐘芯片DS1302以及顯示器件LCD12864,能夠直觀的顯示陽歷年、月、日、星期、時(shí)、分、秒,以及通過程序算法轉(zhuǎn)換陽歷的日期,得到陰歷的
3、年、月、日。在顯示陰歷時(shí)間時(shí),能標(biāo)明是否為閏年、閏月,同時(shí)完成對它們的自動(dòng)校正,全部信息均受單片機(jī)AT89C52的控制,并由液晶顯示器件LCD12864顯示。人機(jī)口由4個(gè)按鍵來實(shí)現(xiàn),通過這四個(gè)按鍵可對時(shí)間、日期進(jìn)行人為的自由調(diào)整。</p><p> 本設(shè)計(jì)采用單片機(jī)為核心器件,軟硬件結(jié)合,使硬件部分大為簡化,提高了系統(tǒng)穩(wěn)定性,設(shè)計(jì)出的電子萬年歷可以顯示陽歷的日期和時(shí)間以及陰歷的日期。其軟硬件設(shè)計(jì)簡單,時(shí)間記錄準(zhǔn)
4、確,有較強(qiáng)的實(shí)用性。</p><p> 關(guān)鍵詞:萬年歷;AT89C52;DS1302;LCD12864 </p><p><b> Abstract</b></p><p> In contemporary busy work and life, time and every one has a very close relationsh
5、ip, everyone is the influence of the time, the emergence of electronic calendar to people's work and life bring the Gospel. Electronic calendar is the realization of the solar calendar date and time and date of the d
6、isplay of the timing device. With the development of science and technology, electronic calendar also had great progress and development, now has been used widely in the family, station, wharf, office a</p><p&
7、gt; This paper introduces the AT89C52 single chip microcomputer based on the electronic calendar design, the design with the clock chip DS1302 and display devices LCD12864, can intuitive shows YangLiNian, month, day, we
8、ek, when, minutes and seconds, and through the process of converting solar calendar date algorithm, get the lunar calendar year, month, day. In the display lunar calendar time, can indicate whether for a leap year, inter
9、calary moon, finish at the same time to their automatic adjustmen</p><p> This design uses the MCU as the core, the hardware and software combination to make hardware part greatly simplified and improve the
10、 stability of the system, design of electronic calendar can display the solar calendar date and time, and the date of the lunar calendar. Its software and hardware design simple, time to record and accurate, with strong
11、practicability.</p><p> Keywords: electronic calendar;AT89C52;DS1302;LCD12864</p><p><b> 目 錄</b></p><p><b> 1.緒論1</b></p><p> 1.1 本設(shè)計(jì)的研究背景
12、和研究意義1</p><p> 1.2 設(shè)計(jì)任務(wù)及任務(wù)分析1</p><p> 2. 本設(shè)計(jì)總體設(shè)計(jì)方案2</p><p> 2.1 方案論證與比較2</p><p> 2.1.1 方案一:基于AT89C52的電子萬年歷的設(shè)計(jì)2</p><p> 2.1.2 方案二:基于PLD的電子萬年歷的設(shè)計(jì)2
13、</p><p> 2.1.3 方案三:基于凌陽單片機(jī)的電子萬年歷的設(shè)計(jì)3</p><p> 2.2 本設(shè)計(jì)方案選擇4</p><p> 3.硬件電路的設(shè)計(jì)與計(jì)算5</p><p> 3.1控制電路的設(shè)計(jì)與計(jì)算5</p><p> 3.1.1 電路選擇5</p><p>
14、3.1.2 元器件的選型及參數(shù)計(jì)算5</p><p> 3.2 時(shí)鐘電路的設(shè)計(jì)與計(jì)算8</p><p> 3.2.1電路選擇8</p><p> 3.2.2 元器件的選型及參數(shù)計(jì)算9</p><p> 3.3 顯示電路的設(shè)計(jì)與計(jì)算11</p><p> 3.3.1電路選擇11</p>
15、<p> 3.3.2 元器件的選型及參數(shù)計(jì)算11</p><p> 3.4 硬件總電路圖13</p><p> 4.軟件設(shè)計(jì)及編程14</p><p> 4.1 軟件設(shè)計(jì)功能圖14</p><p> 4.2 軟件設(shè)計(jì)流程圖14</p><p> 4.3 陽歷程序設(shè)計(jì)及功能實(shí)現(xiàn)15&l
16、t;/p><p> 4.4 時(shí)間調(diào)整程序設(shè)計(jì)及功能實(shí)現(xiàn)15</p><p> 4.5 陰歷程序設(shè)計(jì)及功能實(shí)現(xiàn)17</p><p> 5.系統(tǒng)調(diào)試及分析19</p><p> 5.1 硬件電路調(diào)試及結(jié)果分析19</p><p> 5.1.1 單片機(jī)最小系統(tǒng)電路的測試結(jié)果及其分析19</p>
17、<p> 5.1.2 DS1302時(shí)鐘電路的測試結(jié)果及其分析19</p><p> 5.1.3 LCD12864顯示電路的測試結(jié)果及其分析20</p><p> 5.2 軟件調(diào)試及功能分析20</p><p> 5.2.1 陽歷顯示程序功能實(shí)現(xiàn)及其分析20</p><p> 5.2.2時(shí)間調(diào)整程序功能實(shí)現(xiàn)及其分析
18、21</p><p> 5.2.3 陰歷顯示程序功能實(shí)現(xiàn)及其分析21</p><p> 6.結(jié)論與展望22</p><p><b> 6.1 結(jié)論22</b></p><p><b> 6.2 展望22</b></p><p><b> 謝 辭
19、23</b></p><p><b> 參考文獻(xiàn)24</b></p><p> 附錄一:系統(tǒng)整體電路圖25</p><p> 附錄二:PCB電路圖26</p><p> 附錄三:實(shí)物圖27</p><p> 附錄四:系統(tǒng)完整程序28</p><
20、p><b> 1.緒論</b></p><p> 1.1 本設(shè)計(jì)的研究背景和研究意義</p><p> 隨著電子技術(shù)的迅速發(fā)展,時(shí)間的流逝,從觀察太陽、擺鐘到現(xiàn)在的電子鐘,人類在不斷的研究、不斷的創(chuàng)新。電子萬年歷是實(shí)現(xiàn)對年、月、日、時(shí)、分、秒、農(nóng)歷等顯示的計(jì)時(shí)裝置,廣泛應(yīng)用與家庭、車站、碼頭、辦公室、銀行等各種場所,成為人們?nèi)粘I钪械谋匦杵贰?shù)字集成電路
21、的發(fā)展和石英晶體振蕩器的廣泛應(yīng)用,使得數(shù)字鐘的精度遠(yuǎn)遠(yuǎn)超過老式鐘表。鐘表的數(shù)字化給人們生活帶來了極大的方便,在此基礎(chǔ)上完成的電子萬年歷精度高,功能易于擴(kuò)展,可擴(kuò)展為諸如整點(diǎn)報(bào)時(shí)、定時(shí)自動(dòng)報(bào)警、按時(shí)自動(dòng)打鈴、自動(dòng)啟閉路燈等等具有多種功能的產(chǎn)品。</p><p> 電子萬年歷的出現(xiàn)給人們的生活與工作帶來了諸多的方便,具有讀取方便、顯示直觀,功能多樣、電路簡潔、成本低廉等諸多優(yōu)點(diǎn),具有廣闊的市場前景。</p&g
22、t;<p> 1.2 設(shè)計(jì)任務(wù)及任務(wù)分析</p><p><b> 設(shè)計(jì)任務(wù):</b></p><p> 設(shè)計(jì)一個(gè)電子萬年歷,要求能顯示陽歷年、月、日、星期、<小>時(shí)、分<鐘>、秒和陰歷年、月、日,在顯示農(nóng)歷時(shí)間時(shí),能標(biāo)明是否為閏年。主控芯片使用AT89C52單片,時(shí)鐘芯片使用美國DALlAS公司推出的一種高性能、低功耗、帶
23、RAM的實(shí)時(shí)時(shí)鐘DS1302。</p><p><b> 任務(wù)分析:</b></p><p> 實(shí)現(xiàn)對陽歷時(shí)間、日期及陰歷日期的顯示,需要單片機(jī)的控制,并通過顯示模塊進(jìn)行顯示。能對時(shí)間、日期進(jìn)行調(diào)節(jié),就需要按鍵模塊。</p><p> 2. 本設(shè)計(jì)總體設(shè)計(jì)方案</p><p> 2.1 方案論證與比較</p
24、><p> 2.1.1 方案一:基于AT89C52的電子萬年歷的設(shè)計(jì) </p><p> 采用AT89C52芯片作為硬件核心,采用Flash ROM,內(nèi)部具有4KB ROM 存儲(chǔ)空間,能于3V的超低壓工作,而且與MCS-51系列單片機(jī)完全兼容,編程也簡單,而且價(jià)格便宜,使整體的設(shè)計(jì)成本降低。</p><p> 采用LCD12864液晶顯示屏,液晶顯示屏的顯示功能強(qiáng)
25、大,可顯示大量文字,圖形,顯示多樣,清晰可見,顯示美觀,方便查看。</p><p> 采用DS1302時(shí)鐘芯片實(shí)現(xiàn)時(shí)鐘,DS1302芯片是一種高性能的時(shí)鐘芯片,可自動(dòng)對秒、分、時(shí)、日、周、月、年以及閏年補(bǔ)償?shù)哪赀M(jìn)行計(jì)數(shù),而且精度高, RAM做為數(shù)據(jù)暫存區(qū),工作電壓2.5V~5.5V范圍內(nèi),2.5V時(shí)耗電小于300nA。</p><p> 本方案的系統(tǒng)框圖如圖2.1所示。</p&g
26、t;<p> 圖2.1 方案一系統(tǒng)框圖</p><p> 2.1.2 方案二:基于PLD的電子萬年歷的設(shè)計(jì)</p><p> 采用ALTERA公司的FLEX10K系列PLD器件。設(shè)計(jì)起來結(jié)構(gòu)清晰,各個(gè)模塊,從硬件上設(shè)計(jì)起來相對簡單,控制與顯示的模塊間的連接比較方便。</p><p> 采用點(diǎn)陣式數(shù)碼管顯示,點(diǎn)陣式數(shù)碼管是由八行八列的發(fā)光二極管
27、組成,對于顯示文字比較適合。</p><p> 采用DS1302時(shí)鐘芯片實(shí)現(xiàn)時(shí)鐘,DS1302芯片是一種高性能的時(shí)鐘芯片,可自動(dòng)對秒、分、時(shí)、日、周、月、年以及閏年補(bǔ)償?shù)哪赀M(jìn)行計(jì)數(shù),而且精度高, RAM做為數(shù)據(jù)暫存區(qū),工作電壓2.5V~5.5V范圍內(nèi),2.5V時(shí)耗電小于300nA。</p><p> 本方案的系統(tǒng)框圖如圖2.2所示。</p><p> 圖2.2
28、 方案二系統(tǒng)框圖</p><p> 2.1.3 方案三:基于凌陽單片機(jī)的電子萬年歷的設(shè)計(jì)</p><p> 凌陽16位單片機(jī)有豐富的中斷源和時(shí)基。它的準(zhǔn)確度相當(dāng)高,并且C語言和匯編兼容的編程環(huán)境也很方便來實(shí)現(xiàn)一些遞歸調(diào)用。I/O口功能也比較強(qiáng)大,方便使用。用凌陽16位單片機(jī)做控制器最有特色的就是它的可編程音頻處理,可完成語音的錄制播放和識別。這些都方便對設(shè)計(jì)進(jìn)行擴(kuò)展,使設(shè)計(jì)更加完善,
29、成本也相對低一些。</p><p> 采用LED數(shù)碼管動(dòng)態(tài)掃描,LED數(shù)碼管價(jià)格適中,對于顯示數(shù)字最合適,而且采用動(dòng)態(tài)掃描法與單片機(jī)連接時(shí),占用的單片機(jī)口線少。</p><p> 直接采用單片機(jī)定時(shí)計(jì)數(shù)器提供秒信號,使用程序?qū)崿F(xiàn)年、月、日、星期、時(shí)、分、秒計(jì)數(shù)。采用此種方案雖然減少芯片的使用,節(jié)約成本,但是實(shí)現(xiàn)的時(shí)間誤差較大。</p><p> 本方案的系統(tǒng)框
30、圖如圖2.3所示。</p><p> 圖2.3 方案三系統(tǒng)框圖</p><p> 2.2 本設(shè)計(jì)方案選擇</p><p> 在方案二中,但是考慮到本設(shè)計(jì)的特點(diǎn),PLD在功能擴(kuò)展上比較受局限,而且占用的資源也相對多一些。顯示模塊使用的點(diǎn)陣式數(shù)碼管的價(jià)格相對較高。</p><p> 在方案三中,凌陽單片機(jī)在控制與顯示的結(jié)合上有些復(fù)雜,顯
31、示模組資源相對有限,而且單片機(jī)的穩(wěn)定性不是很高。顯示模塊使用的數(shù)碼管編程繁瑣,操作比液晶顯示復(fù)雜,也不便于直觀的查看。</p><p> 綜上各所述,本次設(shè)計(jì)將選擇方案一:基于AT89C52的電子萬年歷的設(shè)計(jì)。采用AT89C52作為控制系統(tǒng); DS1302提供時(shí)鐘;LCD12864作為顯示。</p><p> 3.硬件電路的設(shè)計(jì)與計(jì)算</p><p> 3.1
32、控制電路的設(shè)計(jì)與計(jì)算</p><p> 3.1.1 電路選擇</p><p> 最小控制系統(tǒng)由單片機(jī)、晶振電路和復(fù)位電路組成。</p><p> 晶體振蕩器的兩端分別接兩個(gè)電容,來對晶振信號退耦。</p><p> 單片機(jī)復(fù)位采用的上電復(fù)位的方式。</p><p> 如圖3.1所示為控制系統(tǒng)電路圖。</
33、p><p> 圖 3.1 控制系統(tǒng)電路圖</p><p> 3.1.2 元器件的選型及參數(shù)計(jì)算</p><p> 1、單片機(jī)AT89C52</p><p> AT89C52 是一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash 存儲(chǔ)器。使用Atmel公司高密度非易失性存儲(chǔ)器技術(shù)制造。片上Flash允許程序存儲(chǔ)器在
34、系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8位CPU和在系統(tǒng)可編程Flash,使得AT89C52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。AT89C52具有以下標(biāo)準(zhǔn)功能:8k字節(jié)Flash,256字節(jié)RAM,32位I/O口線,看門狗定時(shí)器,2個(gè)數(shù)據(jù)指針,三個(gè)16位定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)鐘電路。另外,AT89C52 可降至0Hz靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式。空閑
35、模式下,CPU 停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。</p><p> AT89C52的引腳圖如圖3.2所示。</p><p> 圖3.2 AT89C52引腳圖</p><p> P0 口:P0口是一個(gè)8位漏極開路的雙向I/O口。作為輸出口
36、,每位能驅(qū)動(dòng)8個(gè)TTL邏輯電平。對P0端口寫“1”時(shí),引腳用作高阻抗輸入。 </p><p> 當(dāng)訪問外部程序和數(shù)據(jù)存儲(chǔ)器時(shí),P0口也被作為低8位地址/數(shù)據(jù)復(fù)用。在這種模式下,P0具有內(nèi)部上拉電阻。 </p><p> 在flash編程時(shí),P0口也用來接收指令字節(jié);在程序校驗(yàn)時(shí),輸出指令字節(jié)。程序校驗(yàn)時(shí),需要外部上拉電阻。</p><p> 如圖3.3所示為P
37、0口的上拉電阻電路連接圖。</p><p> 圖3.3 P0口上拉電阻</p><p> P1 口:P1 口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向I/O 口,p1 輸出緩沖器能驅(qū)動(dòng)4 個(gè) TTL 邏輯電平。對P1 端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。 </p><p&
38、gt; 此外,P1.0和P1.2分別作定時(shí)器/計(jì)數(shù)器2的外部計(jì)數(shù)輸入(P1.0/T2)和時(shí)器/計(jì)數(shù)器2 的觸發(fā)輸入(P1.1/T2EX),具體如下表所示。 </p><p> 在flash編程和校驗(yàn)時(shí),P1口接收低8位地址字節(jié)。 </p><p> RST——復(fù)位輸入。當(dāng)振蕩器工作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將是單片機(jī)復(fù)位。</p><p> A
39、LE/PROG——當(dāng)訪問外部程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。一般情況下,ALE仍以時(shí)鐘振蕩頻率的1/6輸出固定的脈沖信號,因此它可對外輸出時(shí)鐘或用于定時(shí)目的。要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器時(shí)將跳過一個(gè)ALE脈沖。</p><p> 對FLASH存儲(chǔ)器編程期間,該引腳還用于輸入編程脈沖(PROG)。</p><p> PSEN——程序
40、儲(chǔ)存允許(PSEN)輸出是外部程序存儲(chǔ)器的讀選通信號,當(dāng)AT89C52由外部程序存儲(chǔ)器取指令(或數(shù)據(jù))時(shí),每個(gè)機(jī)器周期兩次PSEN有效,即輸出兩個(gè)脈沖,在此期間,當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器,將跳過兩次PSEN信號。</p><p> EA/VPP——外部訪問允許,欲使CPU僅訪問外部程序存儲(chǔ)器,EA端必須保持低電平。需注意的是:如果加密位LB1被編程,復(fù)位時(shí)內(nèi)部會(huì)鎖存EA端狀態(tài)。</p><p&g
41、t; 如EA端為高電平(接Vcc端),CPU則執(zhí)行內(nèi)部程序存儲(chǔ)器的指令。</p><p><b> 2、單片機(jī)晶振電路</b></p><p> 晶振電路采用的是頻率為12MHz的晶體振蕩器。在晶振的兩端接兩個(gè)電容值為30pF電容的目的是為晶振輸出信號濾波。如圖3.4所示為晶振電路連接圖。</p><p> 圖3.4 單片機(jī)晶振電路&
42、lt;/p><p><b> 3、單片機(jī)復(fù)位電路</b></p><p> 復(fù)位電路采用的復(fù)位方式為上電復(fù)位。復(fù)位電路中使用的電容C2的值為30pF,電阻R11的值為10K。上電瞬間,電容充電電流最大,電容相當(dāng)于短路,RST端為高電平,自動(dòng)復(fù)位;電容兩端的電壓達(dá)到電源電壓時(shí),電容充電電流為零,電容相當(dāng)于開路,RST端為低電平,程序正常運(yùn)行。如圖3.5所示為復(fù)位電路圖。
43、</p><p> 圖3.5 單片機(jī)復(fù)位電路</p><p> 3.2 時(shí)鐘電路的設(shè)計(jì)與計(jì)算</p><p><b> 3.2.1電路選擇</b></p><p> 時(shí)鐘電路的晶體振蕩器與單片機(jī)的晶振一樣,兩端分別接兩個(gè)電容,來對晶振信號退耦。</p><p> 如圖3.6所示為時(shí)鐘電
44、路連接圖。</p><p> 圖3.6 時(shí)鐘芯片電路圖</p><p> 3.2.2 元器件的選型及參數(shù)計(jì)算</p><p> 1、時(shí)鐘芯片DS1302</p><p> DS1302 是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘電路,它可以對年、月、日、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能,工作電壓為2
45、.5V~5.5V。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號或RAM數(shù)據(jù)。DS1302內(nèi)部有一個(gè)31×8的用于臨時(shí)性存放數(shù)據(jù)的RAM寄存器。DS1302是DS1202的升級產(chǎn)品,與DS1202兼容,但增加了主電源/后背電源雙電源引腳,同時(shí)提供了對后背電源進(jìn)行涓細(xì)電流充電的能力。</p><p> 如圖3.7所示為DS1302引腳圖,其中Vcc1為后備電源,Vcc2為主
46、電源。X1和X2是振蕩源,外接32.768KHz晶振。</p><p> 圖3.7 DS1302引腳圖</p><p> 控制字節(jié)的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入DS1302中,位6如果為0,則表示存取日歷時(shí)鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進(jìn)行寫操作,為1表示進(jìn)行讀操作,控制字節(jié)總是從最低位開始
47、輸出。 </p><p> 在控制指令字輸入后的下一個(gè)SCLK時(shí)鐘的上升沿時(shí),數(shù)據(jù)被寫入DS1302,數(shù)據(jù)輸入從低位即位0開始。同樣,在緊跟8位的控制指令字后的下一個(gè)SCLK脈沖的下降沿讀出DS1302的數(shù)據(jù),讀出數(shù)據(jù)時(shí)從低位0位到高位7。讀寫時(shí)序如下圖3.8所示。</p><p> 圖3.8 DS1302讀/寫時(shí)序圖</p><p> DS1302有12個(gè)
48、寄存器,其中有7個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式,其日歷、時(shí)間寄存器及其控制字見表3-1。</p><p> 表3-1 DS1302的日歷、時(shí)間寄存器</p><p> 2、DS1302晶振電路</p><p> DS1302的晶振電路與單片機(jī)的晶振電路相似,唯一不同之處在晶振的頻率,DS1302所選晶振頻率為32.768KHz。如圖3.9
49、所示為DS1302的晶振電路。</p><p> 圖3.9 DS1302晶振電路</p><p> 3.3 顯示電路的設(shè)計(jì)與計(jì)算</p><p><b> 3.3.1電路選擇</b></p><p> 圖3.10 顯示電路連接圖</p><p> LCD12864的引腳直接接在單片機(jī)
50、的引腳上面,RE、RW、E、PSB依次接在單片機(jī)P1.0至P1.3口上,數(shù)據(jù)口D0-D7依次接在單片機(jī)P0口上。A引腳上接一個(gè)10K的滑動(dòng)變阻器來調(diào)節(jié)顯示屏的亮度。顯示部分電路圖如圖3.10所示。</p><p> 3.3.2 元器件的選型及參數(shù)計(jì)算</p><p> 1、LCD12864液晶顯示</p><p> 12864是一種具有4位/8位并行、2線或3
51、線串行多種接口方式,內(nèi)部含有國標(biāo)一級、二級簡體中文字庫的點(diǎn)陣圖形液晶顯示模塊;其顯示分辨率為128×64, 內(nèi)置8192個(gè)16*16點(diǎn)漢字,和128個(gè)16*8點(diǎn)ASCII字符集。利用該模塊靈活的接口方式和簡單、方便的操作指令,可構(gòu)成全中文人機(jī)交互圖形界面??梢燥@示8×4行16×16點(diǎn)陣的漢字。 也可完成圖形顯示.低電壓低功耗是其又一顯著特點(diǎn)。由該模塊構(gòu)成的液晶顯示方案與同類型的圖形點(diǎn)陣液晶顯示模塊相比,不論
52、硬件電路結(jié)構(gòu)或顯示程序都要簡潔得多,且該模塊的價(jià)格也略低于相同點(diǎn)陣的圖形液晶模塊。</p><p> 各管腳功能如表3—2所示。</p><p> 表3—2 12864管腳功能表</p><p> LCD12864的數(shù)據(jù)傳輸過程如圖圖3.11所示。</p><p> 圖3.11 寫數(shù)據(jù)(8位數(shù)據(jù)線模式)</p>&
53、lt;p> LCD12864讀數(shù)據(jù)的時(shí)序圖如圖3.12所示。</p><p> 圖3.12 讀數(shù)據(jù)(8位數(shù)據(jù)線模式)</p><p> 3.4 硬件總電路圖</p><p> 系統(tǒng)總電路圖見附錄一,PCB板見附錄二。</p><p><b> 4.軟件設(shè)計(jì)及編程</b></p><p
54、> 4.1 軟件設(shè)計(jì)功能圖</p><p> 軟件系統(tǒng)功能圖如圖4.1所示。</p><p> 圖4.1 軟件系統(tǒng)功能圖</p><p> 4.2 軟件設(shè)計(jì)流程圖</p><p> 軟件系統(tǒng)流程圖如圖4.2所示。</p><p> 圖4.2 軟件流程圖</p><p>
55、4.3 陽歷程序設(shè)計(jì)及功能實(shí)現(xiàn)</p><p> 因?yàn)槭褂昧藭r(shí)鐘芯片DS1302,陽歷程序只需從DS1302各個(gè)寄存器中讀出年、月、日、星期、時(shí)、分、秒等數(shù)據(jù),在處理即可。在首次對DS1302進(jìn)行操作前,必須對它進(jìn)行初始化,然后從DS1302中讀出數(shù)據(jù),再經(jīng)過處理后,送給顯示模塊單元。陽歷程序設(shè)計(jì)系統(tǒng)流程圖如圖4.3所示。</p><p> 圖4.3 計(jì)算陽歷程序流程圖</p&
56、gt;<p> 4.4 時(shí)間調(diào)整程序設(shè)計(jì)及功能實(shí)現(xiàn)</p><p> 調(diào)整時(shí)間用4個(gè)按鈕調(diào)整,1個(gè)用于控制,1個(gè)用于移位,兩外2個(gè)作為加、減調(diào)節(jié)按鈕。在調(diào)節(jié)時(shí)間過程中,逃調(diào)整的位與其他的位應(yīng)該有區(qū)別,所以增加了漢字顯示提示功能,即調(diào)整的位有相應(yīng)的漢字提示。當(dāng)按下一位按鈕時(shí),即進(jìn)入下一位的調(diào)整,并有相應(yīng)漢字提示。時(shí)間調(diào)整程序流程圖如圖4.4所示。</p><p> 圖4.
57、4 時(shí)間調(diào)整程序流程圖</p><p> 4.5 陰歷程序設(shè)計(jì)及功能實(shí)現(xiàn)</p><p> 陰歷程序的實(shí)現(xiàn)是靠陽歷日期來推算。要根據(jù)陽歷日期來推算陰歷日期,首先要設(shè)計(jì)算法。推算方法是,根據(jù)陽歷當(dāng)前日期在一年中的天數(shù)來計(jì)算陰歷日期。陽歷一個(gè)月不是30天就是31天(2月除外,閏年2月為29天,平年2月為28天)。陰歷一年有12個(gè)月或13個(gè)月(含閏月),一個(gè)月為29天或30天。如果把一個(gè)只
58、有29天的月稱為小月,用1標(biāo)志,把30天的月稱為大月,用0標(biāo)志,那么12位二進(jìn)制就能表示一年12個(gè)月的大小。如果有閏月,則把閏月的月份作為一字節(jié)的高4位,低4位表示閏月大小,大月為0,小月為1。這樣一字節(jié)就包含了所有閏月信息。陰歷春節(jié)和陽歷元旦相差天數(shù)也用一字節(jié)表示。總共用4字節(jié)就可以存儲(chǔ)一年中任何一天陽歷與陰歷對應(yīng)關(guān)系的有關(guān)數(shù)據(jù),例如2004年的陰歷與陽歷對應(yīng)關(guān)系如表4-1所示。</p><p> 表4-1
59、 2004年的陰歷與陽歷對應(yīng)關(guān)系表</p><p> 2004年春節(jié)和元旦相差21天,這樣2004年的信息表示為:21,42H,52H,21H。其中表示12個(gè)月大小信息的字節(jié),第4位和第7位不用。第一字節(jié)位十進(jìn)制,其他的都為十六進(jìn)制。按此方法,100年的陽歷和陰歷對應(yīng)關(guān)系表共使用400字節(jié)。</p><p> 先要根據(jù)當(dāng)前陽歷的日期,算出陽歷為該年中的第幾天,計(jì)算出當(dāng)前陽歷日期為該年的
60、第幾天后,再減去該年春節(jié)和元旦的日差,如果夠減,則相減的結(jié)果就是陰歷在該年中的總第幾天,根據(jù)該數(shù)據(jù)就可以推算出具體的當(dāng)前陰歷日期;如果不夠減,則表示當(dāng)前陰歷為陽歷的前一年,在這種情況下,根據(jù)實(shí)際,當(dāng)前陰歷日期會(huì)處于陰歷的11月或12月,此時(shí)春節(jié)和元旦的日差減去前面計(jì)算出的當(dāng)前陽歷日期在陽歷中的第幾天的數(shù)據(jù),其結(jié)果表示當(dāng)前陰歷日期距離春節(jié)的天數(shù)。再根據(jù)查表所得的該年的陰歷的閏月和大小月信息,就可以推算出該天的陰歷日期。</p>
61、<p> 陰歷程序算法流程圖如圖4.5所示。</p><p> 圖4.5 陰歷程序流程圖</p><p><b> 5.系統(tǒng)調(diào)試及分析</b></p><p> 5.1 硬件電路調(diào)試及結(jié)果分析</p><p> 電子萬年歷的電路系統(tǒng)比較簡單,但對于焊接方面不可輕視,電路系統(tǒng)中只要出于一處的錯(cuò)誤,就
62、會(huì)對檢測造成很大的不便,電路中的交線較多,對于各種鋒利的引腳要注意處理,否則會(huì)刺穿被帶有包皮的導(dǎo)線,對電路造成短路現(xiàn)象。硬件電路實(shí)物圖見附錄三。</p><p> 5.1.1 單片機(jī)最小系統(tǒng)電路的測試結(jié)果及其分析</p><p> 焊接好單片機(jī)最小系統(tǒng)電路后,測試是否有虛焊、短路等問題以及單片機(jī)是否正常工作。用萬用表的二極管檔測試,若有’吱吱吱’的響聲則表示有短路,這種方法也可以檢查線
63、路是否連接通。給單片機(jī)最小系統(tǒng)上電,用萬用表電壓檔測試單片機(jī)各引腳輸出電壓是否正常,電壓表的讀數(shù)如圖5.1所示。用示波器檢測單片機(jī)晶振是否起振,晶振的波形輸出如圖5.2所示。</p><p> 圖5.1 電壓表測試讀數(shù)</p><p> 5.1.2 DS1302時(shí)鐘電路的測試結(jié)果及其分析</p><p> 時(shí)鐘芯片DS1302與單片機(jī)的連接比較簡單,電路焊
64、接好后,檢測電路是否有虛焊、短路的問題,用萬用表測試時(shí)鐘芯片各腳電壓,用示波器檢測時(shí)鐘芯片的晶振是否起振。</p><p> 在測試時(shí)鐘電路的時(shí)候,發(fā)現(xiàn)時(shí)鐘電路的輸出波形不正常,經(jīng)過檢查和測試,發(fā)現(xiàn)晶振沒有添加去耦電容,在添加了電容之后,時(shí)鐘電路輸出波形工作正常了。如圖5.3所示為DS1302的實(shí)物連接圖。</p><p> 圖5.3 DS1302實(shí)物圖</p><
65、;p> 5.1.3 LCD12864顯示電路的測試結(jié)果及其分析</p><p> 液晶顯示電路的連接很簡單,很容易焊接。但需要需要注意的是,由于液晶屏是接在AT89S52的P0口,所以必須要接上拉電阻。焊接好后,檢測電路是否有虛焊、短路的問題,用萬用表測試各腳的電壓。測試滑動(dòng)變阻器能否調(diào)節(jié)顯示屏亮度。在芯片中燒入一個(gè)簡單的液晶屏顯示程序,測試液晶屏能否顯示。</p><p>
66、如圖5.4所示為LCD12864的實(shí)物連接圖。</p><p> 圖5.4 LCD12864實(shí)物圖</p><p> 5.2 軟件調(diào)試及功能分析</p><p> 5.2.1 陽歷顯示程序功能實(shí)現(xiàn)及其分析</p><p> 陽歷程序的設(shè)計(jì)很簡單,編寫好DS1302讀寫程序和陽歷和時(shí)間顯示程序,在主函數(shù)中調(diào)用,很容易就能實(shí)現(xiàn)陽歷和時(shí)間
67、的顯示功能。</p><p> 在編寫程序時(shí),由于沒有掌握好DS1302的讀寫時(shí)序,導(dǎo)致DS1302不能正常讀數(shù)。經(jīng)過認(rèn)真分析時(shí)序,最后終于編寫出了DS1302的正確程序。如圖5.5所示為12864顯示出的時(shí)間日期。</p><p> 圖5.5 陽歷時(shí)間日期顯示</p><p> 5.2.2時(shí)間調(diào)整程序功能實(shí)現(xiàn)及其分析</p><p>
68、; 時(shí)間調(diào)整程序比較復(fù)雜,程序多了,就很容易出錯(cuò),所以在編寫過程中要很細(xì)心。</p><p> 將編寫好的程序燒入單片機(jī)中進(jìn)行檢查。在寫這部分程序時(shí),感覺不是很困難,只要認(rèn)真按照邏輯順序編寫就行了。如圖5.6所示是時(shí)間日期的調(diào)節(jié)部分。</p><p> 圖5.6 月份的調(diào)節(jié)顯示</p><p> 5.2.3 陰歷顯示程序功能實(shí)現(xiàn)及其分析</p>
69、<p> 陰歷程序的編寫難點(diǎn)主要在算法上,在有了算法和陰歷與陽歷轉(zhuǎn)陰歷的關(guān)系表的情況下,陰歷程序也很容易編寫。</p><p> 編寫好程序,燒入開發(fā)板檢測。在程序加入了農(nóng)歷子程序后,農(nóng)歷不能正常顯示。在仔細(xì)查看程序,發(fā)現(xiàn)返回的農(nóng)歷是16進(jìn)制數(shù)。而我把它當(dāng)成了十進(jìn)制數(shù),以至于不能正常顯示。修改后,顯示正常,如圖5.7所示。</p><p> 圖5.7 陽歷與陰歷顯示&
70、lt;/p><p><b> 6.結(jié)論與展望</b></p><p><b> 6.1 結(jié)論</b></p><p> 通過本次設(shè)計(jì),本系統(tǒng)能完成以下功能:</p><p> (1)顯示公歷日期功能(年、月、日、時(shí)、分、秒以及星期)</p><p> ?。?)可通過按鍵調(diào)
71、節(jié)年、月、日、時(shí)、分、秒以及星期</p><p> ?。?)可動(dòng)態(tài)完整顯示年</p><p> 本設(shè)計(jì)的亮點(diǎn)是在顯示陰歷日期時(shí),使用漢字的顯示,顯示農(nóng)歷的年份采用的天干地支的表現(xiàn)方式。例如,在2012年的農(nóng)歷閏四月初一時(shí),顯示格式為“壬辰年閏四月初一”,使顯示更為美觀。</p><p> 本設(shè)計(jì)硬件電路較簡單,所以器件較少,電路中使用了AT89C52單片機(jī)、DS
72、1302時(shí)鐘芯片和LCD12864液晶顯示器,實(shí)現(xiàn)了預(yù)計(jì)功能。</p><p><b> 6.2 展望</b></p><p> 在本次設(shè)計(jì)中仍然存在著不足之處。</p><p> 1、顯示的年限過短,只能顯示2000年—2100年之間的部分。</p><p> 2、通過按鍵調(diào)節(jié)年、月、日后,如果不調(diào)節(jié)星期,星期
73、的顯示就會(huì)出現(xiàn)與正常的星期不匹配,目前還沒辦法自動(dòng)校正,只能通過手動(dòng)調(diào)節(jié)星期,才能使所顯示的星期與正常星期匹配。由</p><p> 3、于未來的陰歷日期是不能準(zhǔn)確預(yù)測出的,所以,所顯示的陰歷日期有可能與其他版本的電子萬年歷在未來的陰歷日期顯示上出現(xiàn)不匹配的情況。</p><p> 4、由于使用的是C語言進(jìn)行的編程,所以整個(gè)程序顯得很臃腫,在現(xiàn)有的程序設(shè)計(jì)基礎(chǔ)上,還可以進(jìn)行精簡。<
74、;/p><p> 5、本設(shè)計(jì)的功能還可以在現(xiàn)有基礎(chǔ)上再次擴(kuò)展,還可以添加鬧鈴功能,跑馬表功能,以及整點(diǎn)報(bào)時(shí)功能等等,還有很大的擴(kuò)展空間。</p><p><b> 謝 辭</b></p><p> 首先我必須感謝院領(lǐng)導(dǎo)對我們畢業(yè)生在畢業(yè)設(shè)計(jì)過程中的支持與關(guān)懷!</p><p> 其次我要特別感邱紅兵老師,不管在選題
75、階段,還是在設(shè)計(jì)階段、在制作階段,正是他給予我不斷的指導(dǎo)與幫助,導(dǎo)師淵博的學(xué)識、嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度、求實(shí)創(chuàng)新的工作作風(fēng)、對事業(yè)和科學(xué)的執(zhí)著追求,以及對我諄諄教誨給我留下了深刻的印象,使我受益終身。在課題的研究設(shè)計(jì)過程中,我不僅從邱老師那里學(xué)到許多專業(yè)知識,更重要的是學(xué)會(huì)了學(xué)習(xí)新知識并將其鞏固的方法,這無疑是一把開啟未來生活的鑰匙,特此向邱老師表示衷心的感謝!</p><p> 最后我要感謝我的同學(xué)們,在設(shè)計(jì)和焊接過
76、程遇到困難時(shí),正是由于同學(xué)們的幫助我才能順利的克服困難,畢業(yè)設(shè)計(jì)的完成離不開同學(xué)們的幫助!</p><p> 在大學(xué)四年的學(xué)習(xí)生活中,還得到了許多領(lǐng)導(dǎo)和老師的熱情關(guān)心和幫助,在此,向所有關(guān)心和幫助過我的領(lǐng)導(dǎo)、老師、同學(xué)和朋友們表示由衷的謝意!</p><p> 衷心的感謝在百忙之中評閱論文和參加答辯的各位教授、老師!</p><p><b> 參考文
77、獻(xiàn)</b></p><p> ?。?]康光華.電子技術(shù)基礎(chǔ)(數(shù)字部分).北京:電子工業(yè)出版社,2006.02</p><p> [2]李建忠.《單片機(jī)原理及應(yīng)用》.陜西:西安電子科技大學(xué)出版, 2006.02 [3]張俊謨.《單片機(jī)中級教程》.北京:北京航空航天大學(xué)出版, 2006.03</p><p
78、> [4]李飛光.《單片機(jī)課程設(shè)計(jì)實(shí)例指導(dǎo)》.北京:北京航空航天大學(xué)出版社, 2004[5]李振聲.《實(shí)驗(yàn)電子技術(shù)》(P182~193).國防工業(yè)大學(xué)出版社,2001[6]何立民.《單片機(jī)應(yīng)用技術(shù)選編》.北京:北京航空航天大學(xué)出版社, 2000.08[7]萬光毅.《單片機(jī)實(shí)驗(yàn)與實(shí)踐教程》.北京:北京航空航天大學(xué)出版社, 2005.01[8]周航慈.《單片機(jī)程序設(shè)計(jì)基礎(chǔ)》.北京:北京航空航天大
79、學(xué)出版社, 1991.11[9]黃遵熹.《單片機(jī)原理接口與應(yīng)用》.陜西:西北工業(yè)大學(xué)出版社, 1997.05</p><p> [10]Kuglanp,kriegerE,SantiagoE. The 8051 microcontronller.2009:P110—122</p><p> 附錄一:系統(tǒng)整體電路圖</p><p> 附錄二:
80、PCB電路圖</p><p><b> 附錄三:實(shí)物圖</b></p><p> 附錄四:系統(tǒng)完整程序</p><p><b> 顯示子程序:</b></p><p> #define data_bus P0</p><p> #define RS P1_1&
81、lt;/p><p> #define R_W P1_3</p><p> #define EP1_2</p><p> #define PSB P1_0</p><p> void delay(unsigned int cont)</p><p> {unsigned char j;</p>
82、<p> unsigned int i;</p><p> for(i=0;i<cont;i++)for(j=0;j<10;j++);}</p><p> void cheak_busy(void)</p><p><b> {</b></p><p> RS=0;R_W=1;E=1; w
83、hile(data_bus&0X80); E=0;</p><p><b> }</b></p><p> void write_order(unsigned char command)</p><p><b> {</b></p><p> cheak_busy();RS=0;R_
84、W=0;E=1; data_bus=command; delay(50);E=0;</p><p><b> }</b></p><p> void write_data(unsigned char datas)</p><p><b> {</b></p><p> cheak_busy(
85、);RS=1;R_W=0;E=1; data_bus=datas; delay(50); E=0;</p><p><b> }</b></p><p> void screen_int(void)</p><p><b> {</b></p><p> PSB=1; //--并行數(shù)據(jù)傳輸&
86、lt;/p><p> delay(50); write_order(0X30);//-- 8位數(shù)據(jù),基本指令</p><p> delay(50); write_order(0X02); //--地址歸位</p><p> delay(50); write_order(0X0C); //--整體顯示。關(guān)閉游標(biāo)</p><p> delay
87、(50); write_order(0X80); //--設(shè)定起始顯示位置</p><p> delay(50); write_order(0X01); //--清屏</p><p> delay(50); write_order(0X06); //--進(jìn)入設(shè)定點(diǎn)</p><p><b> }</b></p><p&
88、gt; void clear_screen(void)//--需要修改部分</p><p><b> {</b></p><p> write_order(0X01);delay(50); write_order(0X06); //--進(jìn)入設(shè)定點(diǎn)</p><p> delay(50);delay(5000);</p>
89、<p><b> }</b></p><p> void puts_char(unsigned char row,unsigned char line,unsigned char *p)//--字符或者漢字輸出</p><p><b> {</b></p><p> unsigned char star_
90、site=0X80;</p><p> unsigned char *q=0;</p><p> unsigned char over_flag=0;</p><p> if(row<1||line<1)return ;</p><p> if(row==3)</p><p> {row=1;li
91、ne=line+8;}</p><p> else if(row==4)</p><p> {row=2;line=line+8;}</p><p> row=row-1;line=line-1;row=row<<4;</p><p> star_site=star_site|row;</p><p&g
92、t; star_site=star_site|line;</p><p> write_order(star_site);</p><p><b> while(1)</b></p><p><b> {</b></p><p> if(*p=='o')</p>
93、<p><b> {</b></p><p> *q=*(p+1);if(*q=='v')break;</p><p> else {write_data(*p);p++;}</p><p><b> }</b></p><p> else {write_d
94、ata(*p);p++;}</p><p> over_flag++;</p><p> if(over_flag>16)break;</p><p><b> }</b></p><p><b> }</b></p><p> void puts_data(
95、unsigned char row,unsigned char line,unsigned char cont,unsigned int number)//輸出數(shù)據(jù)(暫為四位)</p><p><b> {</b></p><p> code unsigned char *p="0123456789"; </p><p&g
96、t; unsigned char temp[4];</p><p> unsigned char *q;</p><p> unsigned char i;</p><p> unsigned char star_site=0X80;</p><p> if(cont>=5)return;</p><p&
97、gt; if(row<1||line<1)return;</p><p><b> else{</b></p><p> if(row==3)</p><p><b> {</b></p><p> row=1;line=line+8;</p><p>
98、<b> }</b></p><p> else if(row==4)</p><p><b> {</b></p><p> row=2;line=line+8;</p><p><b> }</b></p><p><b> }
99、</b></p><p> row=row-1;line=line-1;row=row<<4;</p><p> star_site=star_site|row;star_site=star_site|line;</p><p> temp[0]=number/1000;temp[1]=number%1000/100;</p>
100、;<p> temp[2]=number%100/10;temp[3]=number%10;</p><p> write_order(star_site);for(i=4-cont;i<4;i++)</p><p> {q=p+temp[i];write_data(*q); }</p><p><b> 整體程序:</b
101、></p><p> #include "AT89X51.H"</p><p> #include "lcddriver.h"</p><p> sbit RST=P1^4;</p><p> sbit SCL=P1^6;</p><p> sbit SDA=P1
102、^5;</p><p> sbit key1=P2^0;</p><p> sbit key2=P2^1;</p><p> sbit key3=P2^2;</p><p> sbit key4=P2^3;</p><p> unsigned char shuzu1[]={0,0,0,0,0,0,0,0,
103、0,0,0,0,0};</p><p> runnian[]={0,31,60,91,121,152,182,213,244,274,305,335,366};</p><p> pingnian[]={0,31,59,90,120,151,181,212,243,273,304,334,365};</p><p> //2000-----2050年
104、 </p><p> guanxibiao[101][4]={{35,0x15,0x51,0x00},{23,0x11,0x52,0x41},</p><p> {42,0x12,0x65,0x00},{31,0x11,0x32,0x00},{21,0x42,0x52,0x21},</p><p> {39,0x52,0x25,0x00},{2
105、8,0x25,0x04,0x71},{48,0x66,0x42,0x00},</p><p> {37,0x33,0x22,0x00},{25,0x15,0x24,0x51},{44,0x05,0x52,0x00},</p><p> {33,0x22,0x65,0x00},{22,0x21,0x25,0x41},{40,0x24,0x52,0x00},</p><
106、p> {30,0x52,0x42,0x91},{49,0x55,0x05,0x00},{38,0x26,0x44,0x00},</p><p> {27,0x53,0x50,0x60},{46,0x53,0x24,0x00},{35,0x25,0x54,0x00},</p><p> {24,0x41,0x52,0x41},{42,0x45,0x25,0x00},{31,0x2
107、4,0x52,0x00},</p><p> {21,0x51,0x12,0x21},{40,0x55,0x11,0x00},{28,0x26,0x21,0x61},</p><p> {47,0x26,0x61,0x00},{36,0x13,0x31,0x00},{25,0x05,0x31,0x51},</p><p> {43,0x12,0x54,0x00
108、},{33,0x51,0x25,0x00},{22,0x42,0x25,0x31},</p><p> {41,0x32,0x22,0x00},{30,0x55,0x02,0x71},{49,0x55,0x22,0x00},</p><p> {38,0x26,0x62,0x00},{27,0x13,0x64,0x60},{45,0x13,0x32,0x00},</p>
109、<p> {34,0x12,0x55,0x00},{23,0x10,0x53,0x51},{42,0x22,0x45,0x00},</p><p> {31,0x52,0x22,0x00},{21,0x52,0x44,0x21},{40,0x55,0x44,0x00},</p><p> {29,0x26,0x50,0x71},{47,0x26,0x64,0x00},{36
110、,0x25,0x32,0x00},</p><p> {25,0x23,0x32,0x50},{44,0x44,0x55,0x00},{32,0x24,0x45,0x00},</p><p> {22,0x55,0x11,0x30},{41,0x33,0x10,0x00},{31,0x55,0x40,0x80},</p><p> {49,0x55,0x50,
111、0x00},{38,0x46,0x64,0x00},{27,0x45,0x65,0x60},};</p><p> Extern char sec=50,min=59,hour=23,day=28,mon=5,week=2,yinli_year=0,</p><p> yinli_mon=0,yinli_day=0;</p><p> extern int
112、year=12,a=0,b=0;</p><p> void delay_ms(unsigned char xms)</p><p><b> {</b></p><p> unsigned char i;</p><p> while(xms--){for(i = 690; i > 0; i--);}&
113、lt;/p><p><b> }</b></p><p> ////////////////////////BCD碼轉(zhuǎn)十進(jìn)制</p><p> unsigned char DS1302_BCD_to_DEC(unsigned char BCD)</p><p><b> {</b></p&
114、gt;<p> unsigned char temp;</p><p> temp = BCD / 16;temp *= 10;temp += BCD % 16;</p><p> return (temp); </p><p><b> }</b></p><p> //////////////
115、////////DS1302初始化</p><p> void DS1302_start()</p><p><b> {</b></p><p> RST = 1;SCL = 0;SDA = 0;</p><p><b> }</b></p><p>
116、 ///////////////////////DS1320結(jié)束</p><p> void DS1302_stop()</p><p><b> {</b></p><p> RST = 0;SCL = 0;SDA = 0;</p><p><b> }</b></p&g
117、t;<p> //////////////////////DS1602寫一個(gè)字節(jié)</p><p> void DS1302_writebyte(unsigned char da)</p><p><b> {</b></p><p> unsigned char i;</p><p> RST =
118、 1;delay(5);</p><p> for(i = 0; i < 8; i++)</p><p><b> {</b></p><p> SCL = 0;delay(18);da >>= 1;SDA = CY;delay(2);SCL = 1; </p><p> delay(8);S
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子萬年歷畢業(yè)設(shè)計(jì)
- 電子萬年歷畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---電子萬年歷設(shè)計(jì)
- 電子萬年歷畢業(yè)設(shè)計(jì)稿
- 電子萬年歷畢業(yè)設(shè)計(jì)2
- 畢業(yè)設(shè)計(jì)----電子萬年歷論文設(shè)計(jì)
- 電子萬年歷設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---電子萬年歷的設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---電子萬年歷的設(shè)計(jì)
- 電子萬年歷
- 電子鐘萬年歷畢業(yè)設(shè)計(jì)
- 萬年歷課程設(shè)計(jì)--萬年歷電子時(shí)鐘
- 數(shù)字萬年歷畢業(yè)設(shè)計(jì)
- 萬年歷電子時(shí)鐘溫度畢業(yè)設(shè)計(jì)
- 電子萬年歷畢業(yè)論文
- 畢業(yè)論文——電子萬年歷設(shè)計(jì)
- 電子萬年歷設(shè)計(jì)-畢業(yè)論文
- 畢業(yè)論文——電子萬年歷設(shè)計(jì)
- 萬年歷畢業(yè)設(shè)計(jì)---基于stc89c52萬年歷的設(shè)計(jì)
- 數(shù)碼萬年歷的畢業(yè)設(shè)計(jì)
評論
0/150
提交評論