版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(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> 題目電子萬(wàn)年歷的設(shè)計(jì)</p><p><b> 摘 要</b></p><p> 在當(dāng)代繁忙的工作與生活中,時(shí)間與每一個(gè)人都有非常密切的關(guān)系,每個(gè)人都受到時(shí)間的影響,電子萬(wàn)年歷的出現(xiàn)給人們的工作與生活帶來(lái)了福音。電子萬(wàn)年歷是實(shí)現(xiàn)對(duì)陽(yáng)歷的日期和時(shí)間以及陰歷的日期顯示的計(jì)時(shí)裝置。
2、隨著科技的發(fā)展,電子萬(wàn)年歷也有了巨大的進(jìn)步和發(fā)展,目前已經(jīng)廣泛應(yīng)用于家庭、車(chē)站、碼頭、辦公室以及銀行等各種場(chǎng)所。已經(jīng)成為人們?nèi)粘I詈凸ぷ髦斜夭豢缮俚碾娮赢a(chǎn)品,具有廣闊的發(fā)展空間和市場(chǎng)前景。</p><p> 本文介紹了基于單片機(jī)AT89C52的電子萬(wàn)年歷的設(shè)計(jì),該設(shè)計(jì)結(jié)合時(shí)鐘芯片DS1302以及顯示器件LCD12864,能夠直觀的顯示陽(yáng)歷年、月、日、星期、時(shí)、分、秒,以及通過(guò)程序算法轉(zhuǎn)換陽(yáng)歷的日期,得到陰歷的
3、年、月、日。在顯示陰歷時(shí)間時(shí),能標(biāo)明是否為閏年、閏月,同時(shí)完成對(duì)它們的自動(dòng)校正,全部信息均受單片機(jī)AT89C52的控制,并由液晶顯示器件LCD12864顯示。人機(jī)口由4個(gè)按鍵來(lái)實(shí)現(xiàn),通過(guò)這四個(gè)按鍵可對(duì)時(shí)間、日期進(jìn)行人為的自由調(diào)整。</p><p> 本設(shè)計(jì)采用單片機(jī)為核心器件,軟硬件結(jié)合,使硬件部分大為簡(jiǎn)化,提高了系統(tǒng)穩(wěn)定性,設(shè)計(jì)出的電子萬(wàn)年歷可以顯示陽(yáng)歷的日期和時(shí)間以及陰歷的日期。其軟硬件設(shè)計(jì)簡(jiǎn)單,時(shí)間記錄準(zhǔn)
4、確,有較強(qiáng)的實(shí)用性。</p><p> 關(guān)鍵詞:萬(wà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的電子萬(wàn)年歷的設(shè)計(jì)2</p><p> 2.1.2 方案二:基于PLD的電子萬(wàn)年歷的設(shè)計(jì)2
13、</p><p> 2.1.3 方案三:基于凌陽(yáng)單片機(jī)的電子萬(wàn)年歷的設(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 陽(yáng)歷程序設(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)電路的測(cè)試結(jié)果及其分析19</p>
17、<p> 5.1.2 DS1302時(shí)鐘電路的測(cè)試結(jié)果及其分析19</p><p> 5.1.3 LCD12864顯示電路的測(cè)試結(jié)果及其分析20</p><p> 5.2 軟件調(diào)試及功能分析20</p><p> 5.2.1 陽(yáng)歷顯示程序功能實(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í)間的流逝,從觀察太陽(yáng)、擺鐘到現(xiàn)在的電子鐘,人類(lèi)在不斷的研究、不斷的創(chuàng)新。電子萬(wàn)年歷是實(shí)現(xiàn)對(duì)年、月、日、時(shí)、分、秒、農(nóng)歷等顯示的計(jì)時(shí)裝置,廣泛應(yīng)用與家庭、車(chē)站、碼頭、辦公室、銀行等各種場(chǎng)所,成為人們?nèi)粘I钪械谋匦杵贰?shù)字集成電路
21、的發(fā)展和石英晶體振蕩器的廣泛應(yīng)用,使得數(shù)字鐘的精度遠(yuǎn)遠(yuǎn)超過(guò)老式鐘表。鐘表的數(shù)字化給人們生活帶來(lái)了極大的方便,在此基礎(chǔ)上完成的電子萬(wàn)年歷精度高,功能易于擴(kuò)展,可擴(kuò)展為諸如整點(diǎn)報(bào)時(shí)、定時(shí)自動(dòng)報(bào)警、按時(shí)自動(dòng)打鈴、自動(dòng)啟閉路燈等等具有多種功能的產(chǎn)品。</p><p> 電子萬(wàn)年歷的出現(xiàn)給人們的生活與工作帶來(lái)了諸多的方便,具有讀取方便、顯示直觀,功能多樣、電路簡(jiǎn)潔、成本低廉等諸多優(yōu)點(diǎn),具有廣闊的市場(chǎng)前景。</p&g
22、t;<p> 1.2 設(shè)計(jì)任務(wù)及任務(wù)分析</p><p><b> 設(shè)計(jì)任務(wù):</b></p><p> 設(shè)計(jì)一個(gè)電子萬(wàn)年歷,要求能顯示陽(yáng)歷年、月、日、星期、<小>時(shí)、分<鐘>、秒和陰歷年、月、日,在顯示農(nóng)歷時(shí)間時(shí),能標(biāo)明是否為閏年。主控芯片使用AT89C52單片,時(shí)鐘芯片使用美國(guó)DALlAS公司推出的一種高性能、低功耗、帶
23、RAM的實(shí)時(shí)時(shí)鐘DS1302。</p><p><b> 任務(wù)分析:</b></p><p> 實(shí)現(xiàn)對(duì)陽(yáng)歷時(shí)間、日期及陰歷日期的顯示,需要單片機(jī)的控制,并通過(guò)顯示模塊進(jìn)行顯示。能對(duì)時(shí)間、日期進(jìn)行調(diào)節(jié),就需要按鍵模塊。</p><p> 2. 本設(shè)計(jì)總體設(shè)計(jì)方案</p><p> 2.1 方案論證與比較</p
24、><p> 2.1.1 方案一:基于AT89C52的電子萬(wàn)年歷的設(shè)計(jì) </p><p> 采用AT89C52芯片作為硬件核心,采用Flash ROM,內(nèi)部具有4KB ROM 存儲(chǔ)空間,能于3V的超低壓工作,而且與MCS-51系列單片機(jī)完全兼容,編程也簡(jiǎn)單,而且價(jià)格便宜,使整體的設(shè)計(jì)成本降低。</p><p> 采用LCD12864液晶顯示屏,液晶顯示屏的顯示功能強(qiáng)
25、大,可顯示大量文字,圖形,顯示多樣,清晰可見(jiàn),顯示美觀,方便查看。</p><p> 采用DS1302時(shí)鐘芯片實(shí)現(xiàn)時(shí)鐘,DS1302芯片是一種高性能的時(shí)鐘芯片,可自動(dòng)對(duì)秒、分、時(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的電子萬(wàn)年歷的設(shè)計(jì)</p><p> 采用ALTERA公司的FLEX10K系列PLD器件。設(shè)計(jì)起來(lái)結(jié)構(gòu)清晰,各個(gè)模塊,從硬件上設(shè)計(jì)起來(lái)相對(duì)簡(jiǎn)單,控制與顯示的模塊間的連接比較方便。</p><p> 采用點(diǎn)陣式數(shù)碼管顯示,點(diǎn)陣式數(shù)碼管是由八行八列的發(fā)光二極管
27、組成,對(duì)于顯示文字比較適合。</p><p> 采用DS1302時(shí)鐘芯片實(shí)現(xiàn)時(shí)鐘,DS1302芯片是一種高性能的時(shí)鐘芯片,可自動(dòng)對(duì)秒、分、時(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 方案三:基于凌陽(yáng)單片機(jī)的電子萬(wàn)年歷的設(shè)計(jì)</p><p> 凌陽(yáng)16位單片機(jī)有豐富的中斷源和時(shí)基。它的準(zhǔn)確度相當(dāng)高,并且C語(yǔ)言和匯編兼容的編程環(huán)境也很方便來(lái)實(shí)現(xiàn)一些遞歸調(diào)用。I/O口功能也比較強(qiáng)大,方便使用。用凌陽(yáng)16位單片機(jī)做控制器最有特色的就是它的可編程音頻處理,可完成語(yǔ)音的錄制播放和識(shí)別。這些都方便對(duì)設(shè)計(jì)進(jìn)行擴(kuò)展,使設(shè)計(jì)更加完善,
29、成本也相對(duì)低一些。</p><p> 采用LED數(shù)碼管動(dòng)態(tài)掃描,LED數(shù)碼管價(jià)格適中,對(duì)于顯示數(shù)字最合適,而且采用動(dòng)態(tài)掃描法與單片機(jī)連接時(shí),占用的單片機(jī)口線(xiàn)少。</p><p> 直接采用單片機(jī)定時(shí)計(jì)數(shù)器提供秒信號(hào),使用程序?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ò)展上比較受局限,而且占用的資源也相對(duì)多一些。顯示模塊使用的點(diǎn)陣式數(shù)碼管的價(jià)格相對(duì)較高。</p><p> 在方案三中,凌陽(yáng)單片機(jī)在控制與顯示的結(jié)合上有些復(fù)雜,顯
31、示模組資源相對(duì)有限,而且單片機(jī)的穩(wěn)定性不是很高。顯示模塊使用的數(shù)碼管編程繁瑣,操作比液晶顯示復(fù)雜,也不便于直觀的查看。</p><p> 綜上各所述,本次設(shè)計(jì)將選擇方案一:基于AT89C52的電子萬(wàn)年歷的設(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è)電容,來(lái)對(duì)晶振信號(hào)退耦。</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口線(xiàn),看門(mén)狗定時(shí)器,2個(gè)數(shù)據(jù)指針,三個(gè)16位定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)鐘電路。另外,AT89C52 可降至0Hz靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e
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位漏極開(kāi)路的雙向I/O口。作為輸出口
36、,每位能驅(qū)動(dòng)8個(gè)TTL邏輯電平。對(duì)P0端口寫(xiě)“1”時(shí),引腳用作高阻抗輸入。 </p><p> 當(dāng)訪(fǎng)問(wèn)外部程序和數(shù)據(jù)存儲(chǔ)器時(shí),P0口也被作為低8位地址/數(shù)據(jù)復(fù)用。在這種模式下,P0具有內(nèi)部上拉電阻。 </p><p> 在flash編程時(shí),P0口也用來(lái)接收指令字節(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 邏輯電平。對(duì)P1 端口寫(xiě)“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)訪(fǎng)問(wèn)外部程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。一般情況下,ALE仍以時(shí)鐘振蕩頻率的1/6輸出固定的脈沖信號(hào),因此它可對(duì)外輸出時(shí)鐘或用于定時(shí)目的。要注意的是:每當(dāng)訪(fǎng)問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí)將跳過(guò)一個(gè)ALE脈沖。</p><p> 對(duì)FLASH存儲(chǔ)器編程期間,該引腳還用于輸入編程脈沖(PROG)。</p><p> PSEN——程序
40、儲(chǔ)存允許(PSEN)輸出是外部程序存儲(chǔ)器的讀選通信號(hào),當(dāng)AT89C52由外部程序存儲(chǔ)器取指令(或數(shù)據(jù))時(shí),每個(gè)機(jī)器周期兩次PSEN有效,即輸出兩個(gè)脈沖,在此期間,當(dāng)訪(fǎng)問(wèn)外部數(shù)據(jù)存儲(chǔ)器,將跳過(guò)兩次PSEN信號(hào)。</p><p> EA/VPP——外部訪(fǎng)問(wèn)允許,欲使CPU僅訪(fǎng)問(wèn)外部程序存儲(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電容的目的是為晶振輸出信號(hào)濾波。如圖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)于開(kāi)路,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è)電容,來(lái)對(duì)晶振信號(hào)退耦。</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 是美國(guó)DALLAS公司推出的一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘電路,它可以對(duì)年、月、日、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能,工作電壓為2
45、.5V~5.5V。采用三線(xiàn)接口與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兼容,但增加了主電源/后背電源雙電源引腳,同時(shí)提供了對(duì)后背電源進(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ù)寫(xiě)入DS1302中,位6如果為0,則表示存取日歷時(shí)鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進(jìn)行寫(xiě)操作,為1表示進(jìn)行讀操作,控制字節(jié)總是從最低位開(kāi)始
47、輸出。 </p><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。讀寫(xiě)時(shí)序如下圖3.8所示。</p><p> 圖3.8 DS1302讀/寫(xiě)時(shí)序圖</p><p> DS1302有12個(gè)
48、寄存器,其中有7個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式,其日歷、時(shí)間寄存器及其控制字見(jiàn)表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)變阻器來(lái)調(diào)節(jié)顯示屏的亮度。顯示部分電路圖如圖3.10所示。</p><p> 3.3.2 元器件的選型及參數(shù)計(jì)算</p><p> 1、LCD12864液晶顯示</p><p> 12864是一種具有4位/8位并行、2線(xiàn)或3
51、線(xiàn)串行多種接口方式,內(nèi)部含有國(guó)標(biāo)一級(jí)、二級(jí)簡(jiǎn)體中文字庫(kù)的點(diǎn)陣圖形液晶顯示模塊;其顯示分辨率為128×64, 內(nèi)置8192個(gè)16*16點(diǎn)漢字,和128個(gè)16*8點(diǎn)ASCII字符集。利用該模塊靈活的接口方式和簡(jiǎn)單、方便的操作指令,可構(gòu)成全中文人機(jī)交互圖形界面。可以顯示8×4行16×16點(diǎn)陣的漢字。 也可完成圖形顯示.低電壓低功耗是其又一顯著特點(diǎn)。由該模塊構(gòu)成的液晶顯示方案與同類(lèi)型的圖形點(diǎn)陣液晶顯示模塊相比,不論
52、硬件電路結(jié)構(gòu)或顯示程序都要簡(jiǎn)潔得多,且該模塊的價(jià)格也略低于相同點(diǎn)陣的圖形液晶模塊。</p><p> 各管腳功能如表3—2所示。</p><p> 表3—2 12864管腳功能表</p><p> LCD12864的數(shù)據(jù)傳輸過(guò)程如圖圖3.11所示。</p><p> 圖3.11 寫(xiě)數(shù)據(jù)(8位數(shù)據(jù)線(xiàn)模式)</p>&
53、lt;p> LCD12864讀數(shù)據(jù)的時(shí)序圖如圖3.12所示。</p><p> 圖3.12 讀數(shù)據(jù)(8位數(shù)據(jù)線(xiàn)模式)</p><p> 3.4 硬件總電路圖</p><p> 系統(tǒng)總電路圖見(jiàn)附錄一,PCB板見(jiàn)附錄二。</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 陽(yáng)歷程序設(shè)計(jì)及功能實(shí)現(xiàn)</p><p> 因?yàn)槭褂昧藭r(shí)鐘芯片DS1302,陽(yáng)歷程序只需從DS1302各個(gè)寄存器中讀出年、月、日、星期、時(shí)、分、秒等數(shù)據(jù),在處理即可。在首次對(duì)DS1302進(jìn)行操作前,必須對(duì)它進(jìn)行初始化,然后從DS1302中讀出數(shù)據(jù),再經(jīng)過(guò)處理后,送給顯示模塊單元。陽(yáng)歷程序設(shè)計(jì)系統(tǒng)流程圖如圖4.3所示。</p><p> 圖4.3 計(jì)算陽(yáng)歷程序流程圖</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í)間過(guò)程中,逃調(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)是靠陽(yáng)歷日期來(lái)推算。要根據(jù)陽(yáng)歷日期來(lái)推算陰歷日期,首先要設(shè)計(jì)算法。推算方法是,根據(jù)陽(yáng)歷當(dāng)前日期在一年中的天數(shù)來(lái)計(jì)算陰歷日期。陽(yáng)歷一個(gè)月不是30天就是31天(2月除外,閏年2月為29天,平年2月為28天)。陰歷一年有12個(gè)月或13個(gè)月(含閏月),一個(gè)月為29天或30天。如果把一個(gè)只
58、有29天的月稱(chēng)為小月,用1標(biāo)志,把30天的月稱(chēng)為大月,用0標(biāo)志,那么12位二進(jìn)制就能表示一年12個(gè)月的大小。如果有閏月,則把閏月的月份作為一字節(jié)的高4位,低4位表示閏月大小,大月為0,小月為1。這樣一字節(jié)就包含了所有閏月信息。陰歷春節(jié)和陽(yáng)歷元旦相差天數(shù)也用一字節(jié)表示??偣灿?字節(jié)就可以存儲(chǔ)一年中任何一天陽(yáng)歷與陰歷對(duì)應(yīng)關(guān)系的有關(guān)數(shù)據(jù),例如2004年的陰歷與陽(yáng)歷對(duì)應(yīng)關(guān)系如表4-1所示。</p><p> 表4-1
59、 2004年的陰歷與陽(yáng)歷對(duì)應(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)歷和陰歷對(duì)應(yīng)關(guān)系表共使用400字節(jié)。</p><p> 先要根據(jù)當(dāng)前陽(yáng)歷的日期,算出陽(yáng)歷為該年中的第幾天,計(jì)算出當(dāng)前陽(yáng)歷日期為該年的
60、第幾天后,再減去該年春節(jié)和元旦的日差,如果夠減,則相減的結(jié)果就是陰歷在該年中的總第幾天,根據(jù)該數(shù)據(jù)就可以推算出具體的當(dāng)前陰歷日期;如果不夠減,則表示當(dāng)前陰歷為陽(yáng)歷的前一年,在這種情況下,根據(jù)實(shí)際,當(dāng)前陰歷日期會(huì)處于陰歷的11月或12月,此時(shí)春節(jié)和元旦的日差減去前面計(jì)算出的當(dāng)前陽(yáng)歷日期在陽(yá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> 電子萬(wàn)年歷的電路系統(tǒng)比較簡(jiǎn)單,但對(duì)于焊接方面不可輕視,電路系統(tǒng)中只要出于一處的錯(cuò)誤,就
62、會(huì)對(duì)檢測(cè)造成很大的不便,電路中的交線(xiàn)較多,對(duì)于各種鋒利的引腳要注意處理,否則會(huì)刺穿被帶有包皮的導(dǎo)線(xiàn),對(duì)電路造成短路現(xiàn)象。硬件電路實(shí)物圖見(jiàn)附錄三。</p><p> 5.1.1 單片機(jī)最小系統(tǒng)電路的測(cè)試結(jié)果及其分析</p><p> 焊接好單片機(jī)最小系統(tǒng)電路后,測(cè)試是否有虛焊、短路等問(wèn)題以及單片機(jī)是否正常工作。用萬(wàn)用表的二極管檔測(cè)試,若有’吱吱吱’的響聲則表示有短路,這種方法也可以檢查線(xiàn)
63、路是否連接通。給單片機(jī)最小系統(tǒng)上電,用萬(wàn)用表電壓檔測(cè)試單片機(jī)各引腳輸出電壓是否正常,電壓表的讀數(shù)如圖5.1所示。用示波器檢測(cè)單片機(jī)晶振是否起振,晶振的波形輸出如圖5.2所示。</p><p> 圖5.1 電壓表測(cè)試讀數(shù)</p><p> 5.1.2 DS1302時(shí)鐘電路的測(cè)試結(jié)果及其分析</p><p> 時(shí)鐘芯片DS1302與單片機(jī)的連接比較簡(jiǎn)單,電路焊
64、接好后,檢測(cè)電路是否有虛焊、短路的問(wèn)題,用萬(wàn)用表測(cè)試時(shí)鐘芯片各腳電壓,用示波器檢測(cè)時(shí)鐘芯片的晶振是否起振。</p><p> 在測(cè)試時(shí)鐘電路的時(shí)候,發(fā)現(xiàn)時(shí)鐘電路的輸出波形不正常,經(jīng)過(guò)檢查和測(cè)試,發(fā)現(xiàn)晶振沒(méi)有添加去耦電容,在添加了電容之后,時(shí)鐘電路輸出波形工作正常了。如圖5.3所示為DS1302的實(shí)物連接圖。</p><p> 圖5.3 DS1302實(shí)物圖</p><
65、;p> 5.1.3 LCD12864顯示電路的測(cè)試結(jié)果及其分析</p><p> 液晶顯示電路的連接很簡(jiǎn)單,很容易焊接。但需要需要注意的是,由于液晶屏是接在AT89S52的P0口,所以必須要接上拉電阻。焊接好后,檢測(cè)電路是否有虛焊、短路的問(wèn)題,用萬(wàn)用表測(cè)試各腳的電壓。測(cè)試滑動(dòng)變阻器能否調(diào)節(jié)顯示屏亮度。在芯片中燒入一個(gè)簡(jiǎn)單的液晶屏顯示程序,測(cè)試液晶屏能否顯示。</p><p>
66、如圖5.4所示為L(zhǎng)CD12864的實(shí)物連接圖。</p><p> 圖5.4 LCD12864實(shí)物圖</p><p> 5.2 軟件調(diào)試及功能分析</p><p> 5.2.1 陽(yáng)歷顯示程序功能實(shí)現(xiàn)及其分析</p><p> 陽(yáng)歷程序的設(shè)計(jì)很簡(jiǎn)單,編寫(xiě)好DS1302讀寫(xiě)程序和陽(yáng)歷和時(shí)間顯示程序,在主函數(shù)中調(diào)用,很容易就能實(shí)現(xiàn)陽(yáng)歷和時(shí)間
67、的顯示功能。</p><p> 在編寫(xiě)程序時(shí),由于沒(méi)有掌握好DS1302的讀寫(xiě)時(shí)序,導(dǎo)致DS1302不能正常讀數(shù)。經(jīng)過(guò)認(rèn)真分析時(shí)序,最后終于編寫(xiě)出了DS1302的正確程序。如圖5.5所示為12864顯示出的時(shí)間日期。</p><p> 圖5.5 陽(yáng)歷時(shí)間日期顯示</p><p> 5.2.2時(shí)間調(diào)整程序功能實(shí)現(xiàn)及其分析</p><p>
68、; 時(shí)間調(diào)整程序比較復(fù)雜,程序多了,就很容易出錯(cuò),所以在編寫(xiě)過(guò)程中要很細(xì)心。</p><p> 將編寫(xiě)好的程序燒入單片機(jī)中進(jìn)行檢查。在寫(xiě)這部分程序時(shí),感覺(jué)不是很困難,只要認(rèn)真按照邏輯順序編寫(xiě)就行了。如圖5.6所示是時(shí)間日期的調(diào)節(jié)部分。</p><p> 圖5.6 月份的調(diào)節(jié)顯示</p><p> 5.2.3 陰歷顯示程序功能實(shí)現(xiàn)及其分析</p>
69、<p> 陰歷程序的編寫(xiě)難點(diǎn)主要在算法上,在有了算法和陰歷與陽(yáng)歷轉(zhuǎn)陰歷的關(guān)系表的情況下,陰歷程序也很容易編寫(xiě)。</p><p> 編寫(xiě)好程序,燒入開(kāi)發(fā)板檢測(cè)。在程序加入了農(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 陽(yáng)歷與陰歷顯示&
70、lt;/p><p><b> 6.結(jié)論與展望</b></p><p><b> 6.1 結(jié)論</b></p><p> 通過(guò)本次設(shè)計(jì),本系統(tǒng)能完成以下功能:</p><p> ?。?)顯示公歷日期功能(年、月、日、時(shí)、分、秒以及星期)</p><p> ?。?)可通過(guò)按鍵調(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ì)硬件電路較簡(jiǎn)單,所以器件較少,電路中使用了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、顯示的年限過(guò)短,只能顯示2000年—2100年之間的部分。</p><p> 2、通過(guò)按鍵調(diào)節(jié)年、月、日后,如果不調(diào)節(jié)星期,星期
73、的顯示就會(huì)出現(xiàn)與正常的星期不匹配,目前還沒(méi)辦法自動(dòng)校正,只能通過(guò)手動(dòng)調(diào)節(jié)星期,才能使所顯示的星期與正常星期匹配。由</p><p> 3、于未來(lái)的陰歷日期是不能準(zhǔn)確預(yù)測(cè)出的,所以,所顯示的陰歷日期有可能與其他版本的電子萬(wàn)年歷在未來(lái)的陰歷日期顯示上出現(xiàn)不匹配的情況。</p><p> 4、由于使用的是C語(yǔ)言進(jìn)行的編程,所以整個(gè)程序顯得很臃腫,在現(xiàn)有的程序設(shè)計(jì)基礎(chǔ)上,還可以進(jìn)行精簡(jiǎ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)對(duì)我們畢業(yè)生在畢業(yè)設(shè)計(jì)過(guò)程中的支持與關(guān)懷!</p><p> 其次我要特別感邱紅兵老師,不管在選題
75、階段,還是在設(shè)計(jì)階段、在制作階段,正是他給予我不斷的指導(dǎo)與幫助,導(dǎo)師淵博的學(xué)識(shí)、嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度、求實(shí)創(chuàng)新的工作作風(fēng)、對(duì)事業(yè)和科學(xué)的執(zhí)著追求,以及對(duì)我諄諄教誨給我留下了深刻的印象,使我受益終身。在課題的研究設(shè)計(jì)過(guò)程中,我不僅從邱老師那里學(xué)到許多專(zhuān)業(yè)知識(shí),更重要的是學(xué)會(huì)了學(xué)習(xí)新知識(shí)并將其鞏固的方法,這無(wú)疑是一把開(kāi)啟未來(lái)生活的鑰匙,特此向邱老師表示衷心的感謝!</p><p> 最后我要感謝我的同學(xué)們,在設(shè)計(jì)和焊接過(guò)
76、程遇到困難時(shí),正是由于同學(xué)們的幫助我才能順利的克服困難,畢業(yè)設(shè)計(jì)的完成離不開(kāi)同學(xué)們的幫助!</p><p> 在大學(xué)四年的學(xué)習(xí)生活中,還得到了許多領(lǐng)導(dǎo)和老師的熱情關(guān)心和幫助,在此,向所有關(guān)心和幫助過(guò)我的領(lǐng)導(dǎo)、老師、同學(xué)和朋友們表示由衷的謝意!</p><p> 衷心的感謝在百忙之中評(píng)閱論文和參加答辯的各位教授、老師!</p><p><b> 參考文
77、獻(xiàn)</b></p><p> ?。?]康光華.電子技術(shù)基礎(chǔ)(數(shù)字部分).北京:電子工業(yè)出版社,2006.02</p><p> ?。?]李建忠.《單片機(jī)原理及應(yīng)用》.陜西:西安電子科技大學(xué)出版, 2006.02 [3]張俊謨.《單片機(jī)中級(jí)教程》.北京:北京航空航天大學(xué)出版, 2006.03</p><p
78、> ?。?]李飛光.《單片機(jī)課程設(shè)計(jì)實(shí)例指導(dǎo)》.北京:北京航空航天大學(xué)出版社, 2004[5]李振聲.《實(shí)驗(yàn)電子技術(shù)》(P182~193).國(guó)防工業(yè)大學(xué)出版社,2001[6]何立民.《單片機(jī)應(yīng)用技術(shù)選編》.北京:北京航空航天大學(xué)出版社, 2000.08[7]萬(wàn)光毅.《單片機(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寫(xiě)一個(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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子萬(wàn)年歷畢業(yè)設(shè)計(jì)
- 電子萬(wàn)年歷畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---電子萬(wàn)年歷設(shè)計(jì)
- 電子萬(wàn)年歷畢業(yè)設(shè)計(jì)稿
- 電子萬(wàn)年歷畢業(yè)設(shè)計(jì)2
- 畢業(yè)設(shè)計(jì)----電子萬(wàn)年歷論文設(shè)計(jì)
- 電子萬(wàn)年歷設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---電子萬(wàn)年歷的設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---電子萬(wàn)年歷的設(shè)計(jì)
- 電子萬(wàn)年歷
- 電子鐘萬(wàn)年歷畢業(yè)設(shè)計(jì)
- 萬(wàn)年歷課程設(shè)計(jì)--萬(wàn)年歷電子時(shí)鐘
- 數(shù)字萬(wàn)年歷畢業(yè)設(shè)計(jì)
- 萬(wàn)年歷電子時(shí)鐘溫度畢業(yè)設(shè)計(jì)
- 電子萬(wàn)年歷畢業(yè)論文
- 畢業(yè)論文——電子萬(wàn)年歷設(shè)計(jì)
- 電子萬(wàn)年歷設(shè)計(jì)-畢業(yè)論文
- 畢業(yè)論文——電子萬(wàn)年歷設(shè)計(jì)
- 萬(wàn)年歷畢業(yè)設(shè)計(jì)---基于stc89c52萬(wàn)年歷的設(shè)計(jì)
- 數(shù)碼萬(wàn)年歷的畢業(yè)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論