基于at89c51單片機(jī)的多功能電子萬年歷的設(shè)計畢業(yè)設(shè)計_第1頁
基于at89c51單片機(jī)的多功能電子萬年歷的設(shè)計畢業(yè)設(shè)計_第2頁
基于at89c51單片機(jī)的多功能電子萬年歷的設(shè)計畢業(yè)設(shè)計_第3頁
基于at89c51單片機(jī)的多功能電子萬年歷的設(shè)計畢業(yè)設(shè)計_第4頁
基于at89c51單片機(jī)的多功能電子萬年歷的設(shè)計畢業(yè)設(shè)計_第5頁
已閱讀5頁,還剩54頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

畢業(yè)設(shè)計論文基于AT89C51單片機(jī)的多功能電子萬年歷的設(shè)計學(xué)生姓名學(xué)院名稱專業(yè)名稱電子信息工程技術(shù)指導(dǎo)教師2012年5月12日摘要本文介紹了基于AT89C51單片機(jī)的多功能電子萬年歷的硬件結(jié)構(gòu)和軟硬件設(shè)計方法。系統(tǒng)以AT89C51單片機(jī)為控制器,以串行時鐘日歷芯片DS1302記錄日歷和時間,它可以對年、月、日、時、分、秒進(jìn)行計時,還具有溫度顯示等多種功能。萬年歷采用直觀的數(shù)字顯示,可以在LED上同時顯示年、月、日、周日、時、分、秒,還具有時間校準(zhǔn)等功能。此萬年歷具有讀取方便、顯示直觀、功能多樣、電路簡潔、成本低廉等諸多優(yōu)點,具有廣闊的市場前景。關(guān)鍵字AT89C51;電子萬年歷;DS1302;DS18B20目錄1緒論111課題研究的背景112課題的研究目的與意義113課題解決的主要內(nèi)容12系統(tǒng)的總體設(shè)計221系統(tǒng)方案的構(gòu)想與確定222器件的選用2221單片機(jī)的選擇23系統(tǒng)硬件的設(shè)計431系統(tǒng)硬件電路設(shè)計4311系統(tǒng)硬件框圖4312AT89C51單片機(jī)5313溫度傳感器的介紹8314DS1302104系統(tǒng)的軟件設(shè)計1341主程序1342從1302讀取日期和時間程序145PROTEUS使用1551編程環(huán)境PROTEUS1552用PROTEUSISIS對電子萬年歷的硬件電路設(shè)計1553用PROTEUSISIS進(jìn)行電子萬年歷的仿真測試19結(jié)論21致謝22參考文獻(xiàn)25附錄23附錄1241緒論11課題研究的背景隨著科技的快速發(fā)展,時間的流逝,從觀太陽、擺鐘到現(xiàn)在電子鐘,人類不斷研究,不斷創(chuàng)新紀(jì)錄。它可以對年、月、日、時、分、秒進(jìn)行計時,還具有溫度顯示等多種功能,而且DS1302的使用壽命長,誤差小。對于數(shù)字電子萬年歷采用直觀的數(shù)字顯示,可以同時顯示年、月、日、時、分、秒和溫度等信息,還具有時間校準(zhǔn)等功能。該電路采用AT89C51單片機(jī)作為核心,功耗小,能在3V的低壓工作,電壓可選用35V電壓供電。此萬年歷具有讀取方便、顯示直觀、功能多樣、電路簡潔、成本低廉等諸多優(yōu)點,符合電子儀器儀表的發(fā)展趨勢,具有廣闊的市場前景。12課題的研究目的與意義二十一世紀(jì)是數(shù)字化技術(shù)高速發(fā)展的時代,而單片機(jī)在數(shù)字化高速發(fā)展的時代扮演著極為重要的角色。電子萬年歷的開發(fā)與研究在信息化時代的今天亦是當(dāng)務(wù)之急,因為它應(yīng)用在學(xué)校、機(jī)關(guān)、企業(yè)、部隊等單位禮堂、訓(xùn)練場地、教學(xué)室、公共場地等場合,可以說遍及人們生活的每一個角落。所以說電子萬年歷的開發(fā)是國家之所需,社會之所需,人民之所需。由于社會對信息交換不斷提高的要求及高新技術(shù)的逐步發(fā)展,促使電子萬年歷發(fā)展并且投入市場得到廣泛應(yīng)用。13課題解決的主要內(nèi)容本課題所研究的電子萬年歷是單片機(jī)控制技術(shù)的一個具體應(yīng)用,主要研究內(nèi)容包括以下幾個方面(1)選用電子萬年歷芯片時,應(yīng)重點考慮功能實在、使用方便、單片存儲、低功耗、抗斷電的器件。(2)根據(jù)選用的電子萬年歷芯片設(shè)計外圍電路和單片機(jī)的接口電路。(3)在硬件設(shè)計時,結(jié)構(gòu)要盡量簡單實用、易于實現(xiàn),使系統(tǒng)電路盡量簡單。(4)根據(jù)設(shè)計的硬件電路,編寫控制AT89C51芯片的單片機(jī)程序。(5)通過編程、編譯、調(diào)試,把程序下載到單片機(jī)上運行,并實現(xiàn)本設(shè)計的功能。(6)在硬件電路和軟件程序設(shè)計時,主要考慮提高人機(jī)界面的友好性,方便用戶操作等因素。(7)軟件設(shè)計時必須要有完善的思路,要做到程序簡單,調(diào)試方便。2系統(tǒng)的總體設(shè)計單片機(jī)電子萬年歷的制作有多種方法,可供選擇的器件和運用的技術(shù)也有很多種。所以,系統(tǒng)的總體設(shè)計方案應(yīng)在滿足系統(tǒng)功能的前提下,充分考慮系統(tǒng)使用的環(huán)境,所選的結(jié)構(gòu)要簡單使用、易于實現(xiàn),器件的選用著眼于合適的參數(shù)、穩(wěn)定的性能、較低的功耗以及低廉的成本。21系統(tǒng)方案的構(gòu)想與確定系統(tǒng)的功能往往決定了系統(tǒng)采用的結(jié)構(gòu),經(jīng)過成本,性能,功耗等多方面的考慮決定用LM016L和LEDMPX做顯示器,RESPACK8對單片機(jī)AT89C51進(jìn)行供電,時間芯片DS1302以及溫度傳感器DS18B20溫度傳感器連接單片機(jī)AT89C51。從而實現(xiàn)多功能電子萬年歷的功能。22器件的選用單片機(jī)AT89C51顯示屏LM016L溫度傳感器DS18B20傳感器DS1302排阻RESPACK8221單片機(jī)的選擇單片機(jī)自70年代問世以來以微處理器(MPU)技術(shù)及超大規(guī)模集成電路技術(shù)的發(fā)展為先導(dǎo),用廣泛的應(yīng)用領(lǐng)域拉動得到蓬勃發(fā)展,單片機(jī)功能正日漸完善。單片機(jī)的應(yīng)用,使許多領(lǐng)域的技術(shù)水平和自動化程度大大提高,可以說當(dāng)今世界正在經(jīng)受一場以單片機(jī)技術(shù)為標(biāo)志的新技術(shù)革命浪潮的沖擊。主要單片機(jī)類型如下1MCS51系列單片機(jī)MCS51系列單片機(jī)主要是指INTEL公司生產(chǎn)的以51位內(nèi)核的單片機(jī)芯片,具有8位CPU、4K字節(jié)ROM、128字節(jié)RAM、可擴(kuò)展外部64K字節(jié)RAM和ROM、2個16位的定時器/計數(shù)器、4個8位并行I/O口、1個全雙工串行I/O口、21字節(jié)的專用寄存器、5個中斷源、片內(nèi)自帶振蕩器、片內(nèi)單總線等功能部件。(2)AT89C51單片機(jī)AT89C51單片機(jī)的主要特性如下與MCS51產(chǎn)品指令系統(tǒng)完全兼容4K字節(jié)的在線編程FLASH存儲器,1000次擦寫周期4055V的工作電壓范圍全靜態(tài)工作模式033MHZ三級程序存儲器鎖1288字節(jié)內(nèi)部RAM32個可編程I/O口線2個16位定時/計數(shù)器6個中斷源全雙工串行UART通道低功耗空閑和掉電模式中斷可從空閑模式喚醒系統(tǒng)看門狗(WDT)及雙數(shù)據(jù)指針掉電標(biāo)識和快速編程特性具有掉電狀態(tài)下的中斷恢復(fù)功能靈活的在系統(tǒng)編程(ISP字節(jié)或頁寫模式)由于AT89C51單片機(jī)片內(nèi)有4K字節(jié)的在線編程FLASH存儲器,可以擦寫1000次,具有掉電模式,而且具有掉電狀態(tài)下的中斷恢復(fù)功能,對設(shè)計開發(fā)非常實用。所以選用AT89C51單片機(jī)作為電子萬年歷芯片的控制單片機(jī)。3系統(tǒng)硬件的設(shè)計根據(jù)上述所確定的系統(tǒng)方案構(gòu)想,下面進(jìn)行系統(tǒng)硬件電路的具體設(shè)計,系統(tǒng)的總體結(jié)構(gòu)框圖如圖所示。31系統(tǒng)硬件電路設(shè)計311系統(tǒng)硬件框圖系統(tǒng)硬件框圖如圖31年月日時分秒,顯示屏7圖31系統(tǒng)硬件框圖P0AT89C51P2P1P3DS1302溫度顯示器DS18B20312AT89S51單片機(jī)本系統(tǒng)采用的是美國ATMEL公司生產(chǎn)的AT89C51單片機(jī),首先我們來熟悉一下AT89C51單片機(jī)的外部引腳和內(nèi)部結(jié)構(gòu)。1單片機(jī)的引腳功能AT89C51單片機(jī)有40個引腳。VCC電源電壓5VGND接地P0口P0口是一組8位漏極開路型雙向I/O口,也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時,每位能驅(qū)動8個TTL邏輯門電路,對端口寫“1”可作為高阻抗輸入端用。在訪問外部數(shù)據(jù)存儲器或程序存儲器時,這組口線分時轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線服用,在訪問期間激活內(nèi)部上拉電阻。在FLASH編程時,P0口接收指令字節(jié),而在程序校驗時,輸出指令字節(jié),校驗時要求外接上拉電阻。P1口P1口是一個帶內(nèi)部上拉電阻的8位雙向I/O,P1的輸出緩沖級可驅(qū)動(吸收或輸出電流)4個TTL邏輯門電路。對端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口。作輸入口使用時,因為內(nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流。FLASH編程和程序校驗期間,P1接收低8位地址。P2口P2口是一個帶內(nèi)部上拉電阻的8位雙向I/O,P2的輸出緩沖級可驅(qū)動(吸收或輸出電流)4個TTL邏輯門電路。對端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口。作輸入口使用時,因為內(nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流。在訪問外部程序存儲器或16位地址的外部數(shù)據(jù)存儲器(例如執(zhí)行MOVXDPTR指令)時,P2口送出高8位地址數(shù)據(jù)。在訪問8位地址的外部數(shù)據(jù)存儲器(MOVXRI指令)時,P2口線上的內(nèi)容(也即特殊功能寄存器(SFR)區(qū)中P2寄存器的內(nèi)容),在整個訪問期間不改變。FLASH編程和程序校驗期間,P2亦接收低高位地址和其他控制信號。P3口P3口是一組帶內(nèi)部上拉電阻的8位雙向I/O,P3的輸出緩沖級可驅(qū)動(吸收或輸出電流)4個TTL邏輯門電路。對P3口寫入“1”時,它們被內(nèi)部的上拉電阻拉高并可作為輸入端口。作輸入端時,被外部拉低的P3口將用上拉電阻輸出電流。P3口除了作為一般的I/O口線外,更重要的用途是它的第二功能,見表31所示P3口還接收一些用于FLASH閃速存儲器編程和程序校驗的控制信號。表31P3口的第二功能圖端口引腳第二功能P30RXD(串行輸入口)P31TXD(串行輸出口)P32INT0(外中斷0)P33INT1(外中斷1)P34T0(定時/計時器0外部輸入)P35T1(定時/計時器1外部輸入)P36WR(外部數(shù)據(jù)存儲器寫選通)P37RD(外部數(shù)據(jù)存儲器讀選通)RST復(fù)位輸入。當(dāng)振蕩器工作時,RST引腳出現(xiàn)兩個機(jī)器周期以上高電平將使單片機(jī)復(fù)位。WDT溢出將使引腳輸出高電平,設(shè)置SFRAUXR的DISRT0(地址8EH)可打開或關(guān)閉該功能。DISRT0位缺省為RESET輸出高電平打開狀態(tài)。ALE/PROG當(dāng)訪問外部程序存儲器或數(shù)據(jù)存儲器時,ALE(地址鎖存器允許)輸出脈沖用于鎖存地址的低8位字節(jié)。即使不訪問外部存儲器,ALE仍以時鐘振蕩頻率的1/6輸出固定的正脈沖信號,因此它可對外輸出時鐘或用于定時目的。要注意的是每當(dāng)訪問外部數(shù)據(jù)存儲器時將跳過一個ALE脈沖。對FLASH存儲器編程期間,該引腳還用于輸入編程脈沖(PROG)。如有必要,可通過多特殊功能寄存器(SFR)區(qū)中的8EH單元的D0位置,可禁止ALE操作。該位置后,只有一條MOVX和MOVC指令A(yù)LE才會被激活。另外,該引腳會被微弱拉高,單片機(jī)執(zhí)行外部程序時,應(yīng)設(shè)置ALE無效。PSEN程序存儲允許(PSEN)輸出是外部程序存儲器的讀選通信號,當(dāng)AT89C51由外部程序存儲器取指令(或數(shù)據(jù))時,每個機(jī)器周期兩次PSEN有效,即輸出兩個脈沖。當(dāng)訪問外部數(shù)據(jù)存儲器,沒有兩次有效的PSEN信號。EA/VPP外部訪問允許。欲使CPU僅訪問外部程序存儲器(地址為0000HFFFFH),EA端必須保持低電平(接地)。需要注意的是如果加密位LB1被編程,復(fù)位時內(nèi)部會鎖存EA端狀態(tài)。如EA端為高電平(接VCC端),CPU則執(zhí)行內(nèi)部程序存儲器中的指令。FLASH存儲器編程時,該引腳加上12V的變成電壓VPPXTAL1振蕩器反相放大器及內(nèi)部時鐘發(fā)生器的輸入端。XTAL2振蕩器反相放大器的輸出端。AT89C51單片機(jī)內(nèi)部結(jié)構(gòu)2AT89C51單片機(jī)與MCS51完全兼容看門狗(WDT)WDT是一種需要軟件控制的復(fù)位方式。WDT由13位計數(shù)器和特殊功能寄存器中的看門狗定時器復(fù)位存儲器(WDTRST)構(gòu)成。WDT在默認(rèn)情況下無法工作;為了激活WDT,用戶必須往WDTRST寄存器(地址0A6H)中依次寫入01EH和0E1H。當(dāng)WDT激活后,晶振工作,WDT在每個機(jī)器周期都會增加。WDT計時周期依賴于外部時鐘頻率。除了復(fù)位(硬件復(fù)位或WDT溢出復(fù)位),沒有辦法停止WDT工作。當(dāng)WDT溢出,它將驅(qū)動RSR引腳輸出一個高電平。可編程串口(UART)在AT89C51中,UART的操作與AT89C51和AT89C52一樣。AT89C51系列單片機(jī)的串行通信口可以工作于同步和異步通信方式。當(dāng)工作于異步方式時,它具有全雙工的操作功能,也就是說,它可以同時進(jìn)行數(shù)據(jù)的發(fā)送和接收。串行口內(nèi)的接收器采用的是雙緩沖結(jié)構(gòu),能夠在接收到的第一個字節(jié)從接收寄存器讀走之前就開始接收第二個字節(jié)(當(dāng)然,如果第二個字節(jié)接收完畢,而第一個字節(jié)仍然沒有被讀走,那將會丟掉一個字節(jié))。串行口的發(fā)送和接收操作都是通過特殊功能寄存器中的數(shù)據(jù)緩沖寄存器SBUF進(jìn)行的,但在SBUF的內(nèi)部,接收寄存器和發(fā)送寄存器在物理結(jié)構(gòu)上是完全獨立的。如果將數(shù)據(jù)寫入SBUF,數(shù)據(jù)會被送入發(fā)送寄存器準(zhǔn)備發(fā)送。如果執(zhí)行SBUF指令,則讀出的數(shù)據(jù)一定來自接收緩存器。因此,CPU對SBUF的讀寫,實際上是分別訪問2個不同的寄存器。這2個寄存器的功能決不能混淆。振蕩電路AT89C51系列單片機(jī)的內(nèi)部振蕩器,由一個單極反相器組成。XTAL1反相器的輸入,XTAL2為反相器的輸出。可以利用它內(nèi)部的振蕩器產(chǎn)生時鐘,只要XTAL1和XTAL2引腳上一個晶體及電容組成的并聯(lián)諧振電路,便構(gòu)成一個完整的振蕩信號發(fā)生器,此方式稱為內(nèi)部方式。另一種方式由外部時鐘源提供一個時鐘信號到XTAL1端輸入,而XTAL2端浮空。在組成一個單片機(jī)應(yīng)用系統(tǒng)時,多數(shù)采用這種方式,這種方式結(jié)構(gòu)緊湊,成本低廉,可靠性高。在電路中,對電容C1和C2的值要求不是很嚴(yán)格,如果使用高質(zhì)的晶振,則不管頻率為多少,C1、C2通常都選擇30PF。定時/計數(shù)器AT89C51單片機(jī)內(nèi)含有2個16位的定時器/計數(shù)器。當(dāng)用于定時器方式時,定時器的輸入來自內(nèi)部時鐘發(fā)生電路,每過一個機(jī)器周期,定時器加1,而一個機(jī)器周期包含有12個振蕩周期,所以,定時器的技術(shù)頻率為晶振頻率的1/12,而計數(shù)頻率最高為晶振頻率的1/24。為了實現(xiàn)定時和計數(shù)功能,定時器中含有3種基本的寄存器控制寄存器、方式寄存器和定時器/計數(shù)器。控制寄存器是一個8位的寄存器,用于控制定時器的工作狀態(tài),方式寄存器是一個8位的寄存器,用于確定定時器的工作方式,定時器/計數(shù)器是16位的計數(shù)器,分為高字節(jié)和低字節(jié)兩部分。RAM高于7FH內(nèi)部數(shù)據(jù)存儲器的地址是8位的,也就是說其地址空間只有256字節(jié),但內(nèi)部RAM的尋址方式實際上可提供384字節(jié)。的直接地址訪問同一個存儲空間,高于7FH的間接地址訪問另一個存儲空間。這樣,雖然高128字節(jié)區(qū)分與專用寄器,即特殊功能寄存器區(qū)的地址是重合的,但實際上它們是分開的。究竟訪問哪一區(qū),存是通過不同的尋址方式加以區(qū)分的。SFRSFR是具有特殊功能的所有寄存器的集合,共含有22個不同寄存器,它們的地址分配在80HFFH中。雖然如此,不是所有的單元都被特殊功能寄存器占用,未被占用的單元,其內(nèi)容是不確定的。如對這些單元進(jìn)行讀操作,得到的是一些隨機(jī)數(shù),而寫入則無效,所以在編程時不應(yīng)該將數(shù)據(jù)寫入這些未確定的地址單元中,特殊功能寄存器主要有累加器ACC、B寄存器、程序狀態(tài)字寄存器PSW、堆棧指針SP、數(shù)據(jù)指針DPTR、I/O端口、串行口數(shù)據(jù)緩沖器SBUF、定時器寄存器、捕捉寄存器、控制寄存器。中斷系統(tǒng)AT89C51單片機(jī)有6個中斷源,中斷系統(tǒng)主要由中斷允許寄存器IE、中斷優(yōu)先級寄存器IP、優(yōu)先級結(jié)構(gòu)和一些邏輯門組成。IE寄存器用于允許或禁止中斷;IP寄存器用于確定中斷源的優(yōu)先級別;優(yōu)先級結(jié)構(gòu)用于執(zhí)行中斷源的優(yōu)先排序;有關(guān)邏輯門用于輸入中斷請求信號。在整個中斷響應(yīng)過程中CPU所執(zhí)行的操作步驟如下(1)完成當(dāng)前指令的操作(2)將PC內(nèi)容壓入堆棧(3)保存當(dāng)前的中斷狀態(tài)(4)阻止同級的中斷請求(5)將中斷程序入口地址送PC寄存器(6)執(zhí)行中斷服務(wù)程序(7)返回313溫度傳感器的介紹AT89C51作為溫度測試系統(tǒng)設(shè)計的核心器件。該器件是INTEL公司生產(chǎn)的MCS一5L系列單片機(jī)中的基礎(chǔ)產(chǎn)品,采用了可靠的CMOS工藝制造技術(shù),具有高性能的8位單片機(jī),屬于標(biāo)準(zhǔn)的MCS51的CMOS產(chǎn)品。不僅結(jié)合了HMOS的高速和高密度技術(shù)及CHMOS的低功耗特征,而且繼承和擴(kuò)展了MCS48單片機(jī)的體系結(jié)構(gòu)和指令系統(tǒng)。單片機(jī)小系統(tǒng)的電路圖如圖2所示。DS18B20可以程序設(shè)定912位的分辨率,精度為05C??蛇x更小的封裝方式,更寬的電壓適用范圍。分辨率設(shè)定,及用戶設(shè)定的報警溫度存儲在EPROM中,掉電后依然保存。溫度傳感器DS18B20引腳如圖3所示。8引腳封裝TO92封裝圖2溫度傳感器引腳功能說明NC空引腳,懸空不使用;VDD可選電源腳,電源電壓范圍355V。當(dāng)工作于寄生電源時,此引腳必須接地。DQ數(shù)據(jù)輸入/輸出腳。漏極開路,常態(tài)下高電平。GND為電源地DS18B20內(nèi)部結(jié)構(gòu)主要由四部分組成64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器TH和TL、配置寄存器。光刻ROM中的64位序列號是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼。64位光刻ROM的排列是開始8位(28H)是產(chǎn)品類型標(biāo)號,接著的48位是該DS18B20自身的序列號,最后8位是前面56位的循環(huán)冗余校驗碼(CRCX8X5X41)。光刻ROM的作用是使每一個DS18B20都各不相同,這樣就可以實現(xiàn)一根總線上掛接多個DS18B20的目的。DS18B20中的溫度傳感器可完成對溫度的測量,以12位轉(zhuǎn)化為例用16位符號擴(kuò)展的二進(jìn)制補(bǔ)碼讀數(shù)形式提供,以00625/LSB形式表達(dá),其中S為符號位。這是12位轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲在18B20的兩個8比特的RAM中,二進(jìn)制中的前面5位是符號位,如果測得的溫度大于0,這5位為0,只要將測到的數(shù)值乘于00625即可得到實際溫度;如果溫度小于0,這5位為1,測到的數(shù)值需要取反加1再乘于00625即可得到實際溫度。例如125的數(shù)字輸出為07D0H,250625的數(shù)字輸出為0191H,250625的數(shù)字輸出為FF6FH,55的數(shù)字輸出為FC90H。DS18B20溫度傳感器的內(nèi)部存儲器包括一個高速暫存RAM和一個非易失性的可電擦除的E2RAM,后者存放高溫度和低溫度觸發(fā)器TH、TL和結(jié)構(gòu)寄存器。暫存存儲器包含了8個連續(xù)字節(jié),前兩個字節(jié)是測得的溫度信息,第一個字節(jié)的內(nèi)容是溫度的低八位,第二個字節(jié)是溫度的高八位。第三個和第四個字節(jié)是TH、TL的易失性拷貝,第五個字節(jié)是結(jié)構(gòu)寄存器的易失性拷貝,這三個字節(jié)的內(nèi)容在每一次上電復(fù)位時被刷新。第六、七、八個字節(jié)用于內(nèi)部計算。第九個字節(jié)是冗余檢驗字節(jié)。該字節(jié)各位的意義如下TMR1R011111低五位一直都是1,TM是測試模式位,用于設(shè)置DS18B20在工作模式還是在測試模式。在DS18B20出廠時該位被設(shè)置為0,用戶不要去改動。R1和R0用來設(shè)置分辨率,如表1所示(DS18B20出廠時被設(shè)置為12位)表1DS18B20溫度轉(zhuǎn)換時間表R1R0分辨率/位溫度最大轉(zhuǎn)向時間00993750110187510113751112750根據(jù)DS18B20的通訊協(xié)議,主機(jī)控制DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過三個步驟每一次讀寫之前都要對DS18B20進(jìn)行復(fù)位,復(fù)位成功后發(fā)送一條ROM指令,最后發(fā)送RAM指令,這樣才能對DS18B20進(jìn)行預(yù)定的操作。復(fù)位要求主CPU將數(shù)據(jù)線下拉500微秒,然后釋放,DS18B20收到信號后等待1660微秒左右,后發(fā)出60240微秒的存在低脈沖,主CPU收到此信號表示復(fù)位成功。314DS1302現(xiàn)在流行的串行時鐘電路很多,如DS1302、DS1307、PCF8485等。這些電路的接口簡單、價格低廉、使用方便,被廣泛地采用。本文介紹的實時時鐘電路DS1302是DALLAS公司的一種具有涓細(xì)電流充電能力的電路,主要特點是采用串行數(shù)據(jù)傳輸,可為掉電保護(hù)電源提供可編程的充電功能,并且可以關(guān)閉充電功能。采用普通32768KHZ晶振。DS1302是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實時時鐘電路,它可以對年、月、日、周日、時、分、秒進(jìn)行計時,具有閏年補(bǔ)償功能,工作電壓為25V55V。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號或RAM數(shù)據(jù)。DS1302內(nèi)部有一個318的用于臨時性存放數(shù)據(jù)的RAM寄存器。DS1302是DS1202的升級產(chǎn)品,與DS1202兼容,但增加了主電源/后背電源雙電源引腳,同時提供了對后背電源進(jìn)行涓細(xì)電流充電的能力。DS1302的引腳排列,其中VCC1為后備電源,VCC2為主電源。在主電源關(guān)閉的情況下,也能保持時鐘的連續(xù)運行。DS1302由VCC1或VCC2兩者中的較大者供電。當(dāng)VCC2大于VCC102V時,VCC2給DS1302供電。當(dāng)VCC2小于VCC1時,DS1302由VCC1供電。X1和X2是振蕩源,外接32768KHZ晶振。RST是復(fù)位/片選線,通過把RST輸入驅(qū)動置高電平來啟動所有的數(shù)據(jù)傳送。RST輸入有兩種功能首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng)RST為高電平時,所有的數(shù)據(jù)傳送被初始化,允許對DS1302進(jìn)行操作。如果在傳送過程中RST置為低電平,則會終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電運行時,在VCC25V之前,RST必須保持低電平。只有在SCLK為低電平時,才能將RST置為高電平。I/O為串行數(shù)據(jù)輸入輸出端雙向,后面有詳細(xì)說明。SCLK始終是輸入端。DS1302的控制字節(jié)的最高有效位位7必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入DS1302中,位6如果為0,則表示存取日歷時鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù)位5至位1指示操作單元的地址最低有效位位0如為0表示要進(jìn)行寫操作,為1表示進(jìn)行讀操作,控制字節(jié)總是從最低位開始輸出。在控制指令字輸入后的下一個SCLK時鐘的上升沿時,數(shù)據(jù)被寫入DS1902,數(shù)據(jù)輸入從低位即位0開始。同樣,在緊跟8位的控制指令字后的下一個SCLK脈沖的下降沿讀出DS1302的數(shù)據(jù),讀出數(shù)據(jù)時從低位0位到高位7。DS1302有12個寄存器,其中有7個寄存器與日歷、時鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式,其日歷、時間寄存器及其控制字見表1。此外,DS1302還有年份寄存器、控制寄存器、充電寄存器、時鐘突發(fā)寄存器及與RAM相關(guān)的寄存器等。時鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器外的所有寄存器內(nèi)容。DS1302與RAM相關(guān)的寄存器分為兩類一類是單個RAM單元,共31個,每個單元組態(tài)為一個8位的字節(jié),其命令控制字為C0HFDH,其中奇數(shù)為讀操作,偶數(shù)為寫操作;另一類為突發(fā)方式下的RAM寄存器,此方式下可一次性讀寫所有的RAM的31個字節(jié),命令控制字為FEH寫、FFH讀。DS1302與CPU的連接需要三條線,即SCLK7、I/O6、RST5。DS1902與89C2051的連接圖,其中,時鐘的顯示用LED。DS1302與CPU的連接,實際上,在調(diào)試程序時可以不加電容器,只加一個32768KHZ的晶振即可。只是選擇晶振時,不同的晶振,誤差也較大。另外,還可以在上面的電路中加入DS18B20,同時顯示實時溫度。只要占用CPU一個口線即可。LED還可以換成LCD,還可以使用北京衛(wèi)信杰科技發(fā)展有限公司生產(chǎn)的10位多功能8段液晶顯示模塊LCM101,內(nèi)含看門狗WDT/時鐘發(fā)生器及兩種頻率的蜂鳴器驅(qū)動電路,并有內(nèi)置顯示RAM,可顯示任意字段筆劃,具有34線串行接口,可與任何單片機(jī)、IC接口。功耗低,顯示狀態(tài)時電流為2A典型值,省電模式時小于1A,工作電壓為24V33V,顯示清晰。DS1302的實時時間流程。根據(jù)流程框圖,不難采集實時時間。下面對DS1302的基本操作進(jìn)行編程根據(jù)本人在調(diào)試中遇到的問題,特作如下說明DS1302與微處理器進(jìn)行數(shù)據(jù)交換時,首先由微處理器向電路發(fā)送命令字節(jié),命令字節(jié)最高位MSBD7必須為邏輯1,如果D70,則禁止寫DS1302,即寫保護(hù);D60,指定時鐘數(shù)據(jù),D61,指定RAM數(shù)據(jù);D5D1指定輸入或輸出的特定寄存器;最低位LSBD0為邏輯0,指定寫操作輸入,D01,指定讀操作輸出。在DS1302的時鐘日歷或RAM進(jìn)行數(shù)據(jù)傳送時,DS1302必須首先發(fā)送命令字節(jié)。若進(jìn)行單字節(jié)傳送,8位命令字節(jié)傳送結(jié)束之后,在下2個SCLK周期的上升沿輸入數(shù)據(jù)字節(jié),或在下8個SCLK周期的下降沿輸出數(shù)據(jù)字節(jié)。DS1302與RAM相關(guān)的寄存器分為兩類一類是單個RAM單元,共31個,每個單元組態(tài)為一個8位的字節(jié),其命令控制字為C0HFDH,其中奇數(shù)為讀操作,偶數(shù)為寫操作;再一類為突發(fā)方式下的RAM寄存器,在此方式下可一次性讀、寫所有的RAM的31個字節(jié)。要特別說明的是備用電源B1,可以用電池或者超級電容器01F以上。雖然DS1302在主電源掉電后的耗電很小,但是,如果要長時間保證時鐘正常,最好選用小型充電電池??梢杂美鲜诫娔X主板上的36V充電電池。如果斷電時間較短幾小時或幾天時,就可以用漏電較小的普通電解電容器代替。100F就可以保證1小時的正常走時。DS1302在第一次加電后,必須進(jìn)行初始化操作。初始化后就可以按正常方法調(diào)整時間。DS1302存在時鐘精度不高,易受環(huán)境影響,出現(xiàn)時鐘混亂等缺點。DS1302可以用于數(shù)據(jù)記錄,特別是對某些具有特殊意義的數(shù)據(jù)點的記錄,能實現(xiàn)數(shù)據(jù)與出現(xiàn)該數(shù)據(jù)的時間同時記錄。這種記錄對長時間的連續(xù)測控系統(tǒng)結(jié)果的分析及對異常數(shù)據(jù)出現(xiàn)的原因的查找具有重要意義。傳統(tǒng)的數(shù)據(jù)記錄方式是隔時采樣或定時采樣,沒有具體的時間記錄,因此,只能記錄數(shù)據(jù)而無法準(zhǔn)確記錄其出現(xiàn)的時間;若采用單片機(jī)計時,一方面需要采用計數(shù)器,占用硬件資源,另一方面需要設(shè)置中斷、查詢等,同樣耗費單片機(jī)的資源,而且,某些測控系統(tǒng)可能不允許。但是,如果在系統(tǒng)中采用時鐘芯片DS1302,則能很好地解決這個問題。4系統(tǒng)的軟件設(shè)計電子萬年歷的功能是在程序控制下實現(xiàn)的。該系統(tǒng)的軟件設(shè)計方法與硬件設(shè)計相對應(yīng),按整體功能分成多個不同的程序模塊,分別進(jìn)行設(shè)計、編程和調(diào)試,最后通過主程序?qū)⒏鞒绦蚰K連接起來。這樣有利于程序修改和調(diào)試,增強(qiáng)了程序的可移植性。41主程序主程序如圖41所示開始液晶屏的初始化讀DS1302分離出的數(shù)據(jù)送人顯示緩存緩存中的數(shù)據(jù)顯示出來讀溫度程序液晶屏上顯示溫度返回圖41主程序圖42從1302讀取日期和時間程序讀1302日期和時間調(diào)整時間和日期YN圖42從1302讀取程序系統(tǒng)初始化開始需要調(diào)整時間嗎5PROTEUS使用51編程環(huán)境PROTEUSPROTEUS軟件是由英國LABCENTERELECTRONICS公司開發(fā)的EDA工具軟件,由ISIS和ARES兩個軟件構(gòu)成,其中ISIS是一款便捷的電子系統(tǒng)仿真平臺軟件,ARES是一款高級的布線編輯軟件,它集成了高級原理布線圖、混合模式SPICE電路仿真、PCB設(shè)計以及自動布線來實現(xiàn)一個完整的電子設(shè)計。52用PROTEUSISIS對電子萬年歷的硬件電路設(shè)計通過PROTEUSISIS軟件的VSM(虛擬仿真技術(shù)),用戶可以對模擬電路、數(shù)字電路、模數(shù)混合電路,以及基于微控制器的系統(tǒng)連同所有外圍接口電子元器件一起仿真。用PROTEUSISIS設(shè)計硬件電路的過程選擇設(shè)計圖紙的到小根據(jù)設(shè)計所使用到元器件的多少,選擇合適大小的設(shè)計圖紙,操作是單擊菜單欄上的SYSTEMSETSHEETSIZE,然后彈出如圖51所示的對話框,從中選擇合適大小的圖紙,也可以選擇USER進(jìn)行圖紙的自定義設(shè)置。在設(shè)計過程中也可以通過此方法調(diào)整圖紙的大小。圖51選取仿真所需的元器件選取元器件的方式是,單擊如圖52所示的按鈕“P”。會彈出如圖53所示的窗口。圖52圖53從此窗口的左上角的“KEYWORDS”中輸入電子萬年歷設(shè)計用到的器件,如輸入“AT89C51”,在中間會列出帶有輸入關(guān)鍵字的元器件,選擇合適的元器件并雙擊它,則已經(jīng)選擇好了該元器件。然后再在“KEYWORDS”中輸入其他所需的元器件,用同樣的方法進(jìn)行操作。最后選擇好所有的元器件如圖54所示。圖54所用器件其中DS18B20代表溫度傳感器,AT89C51代表單片機(jī)會,DS1302代表時鐘芯片,RESPACK8代表八排電阻。把元器件放到圖紙的合適位置,進(jìn)行布線單擊如圖54所示的元器件AT89C51,再在右邊圖紙上單擊,就把元器件放入到了圖紙上。再用同樣的方法把DS1302放入到圖紙的合適位置。如果元器件放置錯誤,這可通過兩次右擊刪除所放置的元器件,如果位置放得不理想,可以先右擊該器件,然后按住左鍵進(jìn)行移動。在布線之前,如果覺得元器件的引腳的方向不好布線,則可以通過單擊這四個按鈕進(jìn)行調(diào)整,這四按鈕的意思分別是順時針旋轉(zhuǎn)90,逆時針旋轉(zhuǎn)90,沿Y軸對稱,沿X軸對稱。通過這樣的調(diào)整,可以使整個布局合理一些。接著進(jìn)行布線,由于PROTEUSISIS有自動布線的功能,比如要把AT89C51的P2口連到DS18B20的DQ口,只要先在P2引腳上單擊一下,再在DQ引腳上單擊,則ISIS自動將兩個引腳連上線。圖55AT89C51與DS1302的連接編輯窗口連接端子要讓最后的設(shè)計成功仿真時,必須放置并連接端子。選擇,從中可以選擇電路原理中的兩個通用的端子,一個是接地,一個是電源。如圖56所示。圖56連接端子在PROTEUSISIS中的最終設(shè)計圖如圖57所示圖57仿真圖最后分別對各元器件的屬性值進(jìn)行設(shè)置,單擊按鈕,進(jìn)行電氣檢測,查看接線是否合理,說明硬件電路已經(jīng)順利的完成。53用PROTEUSISIS進(jìn)行電子萬年歷的仿真測試添加WAVE中編寫的代碼文件單擊工具欄中的文件新建文件夾在彈出的對話框中編寫程序編譯源程序,生成HEX目標(biāo)代碼文件單擊項目全部編譯。如果編譯結(jié)果沒有錯誤,會出現(xiàn)如圖58所示的結(jié)果。圖58加載HEX目標(biāo)代碼文件通過如圖59所示的對話框,選擇剛才編譯生成的HEX文件。設(shè)置使單片機(jī)的運行頻率為6MHZ。圖59單擊按鈕,進(jìn)行對電子萬年歷的仿真測試,運行結(jié)果如圖510所示。圖510仿真測試PROTEUS的調(diào)試功能由于使用的是匯編語言編寫的程序,如果在測量的時候測量值顯示錯誤,說明程序中存在問題,這個問題只用在仿真測量的時候才能被發(fā)現(xiàn),這時可以使用PROTEUS對程序進(jìn)行調(diào)試。單擊按鈕,再單擊菜單欄中的DEBUG,可以在最下面選擇打開內(nèi)存觀察窗口,寄存器值觀察窗口,匯編語言源代碼窗口等等。在匯編語言源代碼窗口中,也可以在所需要設(shè)置斷點的語句前雙擊設(shè)置斷點,當(dāng)設(shè)置斷點的時候,程序運行到所設(shè)斷點處停止,從而可以在內(nèi)存、寄存器等的值的變化,從而找出程序出錯的地方。結(jié)論本課題從理論到實際應(yīng)用,用AT89C51單片機(jī)與DS1302等一些電路的組合,成功的設(shè)計出了一個電子萬年歷。而且所設(shè)計的電子萬年歷設(shè)計也按當(dāng)初要求的能夠在PROTEUS中進(jìn)行仿真,并且能夠很精確的顯示年歷。可以說該電子萬年歷具有很高的實用價值。在軟件設(shè)計的過程中,利用了WAVE這個軟件在程序錄入和調(diào)試的時候的優(yōu)越性,讓我能夠在編寫軟件的時候很方便的發(fā)現(xiàn)軟件中的錯誤,現(xiàn)在已經(jīng)能夠使用KEIL對所設(shè)計的程序進(jìn)行調(diào)試。對于PROTEUS這款軟件,也能熟練掌握電路設(shè)計仿真。由于平時沒有接觸過這兩個軟件,加上畢業(yè)設(shè)計的時間有限,對于他們的連接調(diào)試程序,未能熟練掌握,但以后有機(jī)會的話會再好好學(xué)習(xí)的。本次設(shè)計的電子萬年歷也存在的不足的地方,有待于以后的改進(jìn)。致謝經(jīng)過三個多月的時間,畢業(yè)設(shè)計按照預(yù)期完成了,由于本人的知識水平有限,論文和設(shè)計中有遺漏和缺陷的地方懇請指正。感謝我的指導(dǎo)老師張庭給了我莫大的幫助,在他悉心的指導(dǎo)和嚴(yán)格的要求下,作品和論文順利完成了。論文從選題和最終完成,凝結(jié)著導(dǎo)師的辛勤的汗水,她不辭勞苦的教導(dǎo)、嚴(yán)謹(jǐn)?shù)淖黠L(fēng)使我終生受益。在此畢業(yè)設(shè)計完成之際,謹(jǐn)向?qū)熀退袔椭^我的老師致以崇高的敬意和衷心的感謝。還有感謝家人、朋友還有宿舍里所有的室友,是他們給我創(chuàng)造了良好的學(xué)習(xí)氛圍,在學(xué)習(xí)和生活中給了我支持和幫助。在以后的學(xué)習(xí)生活中我會時時敦促自己更加努力,不辜負(fù)師長、親人、朋友對我的期望。參考文獻(xiàn)1趙長德微型計算機(jī)原理與接口技術(shù)M北京機(jī)械工業(yè)出版社,1999983502曾一江單片機(jī)原理與接口技術(shù)北京科學(xué)出版社,20063王忠民微型計算機(jī)原理M西安西安科技大學(xué)出版社,20031554王金明數(shù)字系統(tǒng)設(shè)計與VERILOGHDL北京電子工業(yè)出版社,20111附錄附錄1引腳定義RSBITP30RWBITP31EBITP32DB0_DB7EQUP1RSTBITP34SCLKBITP35IOBITP37MODEBITP33定義數(shù)據(jù)存儲地址DS1302_ADDRDATA50H地址寄存器DS1302_DATADATA51H數(shù)據(jù)寄存器TIME_YEARDATA52HTIME_MONTDATA53H月寄存器TIME_DAYDATA54H天寄存器WEEK_DATADATA55H星期寄存器HOURDATA56H小時寄存器MINTUEDATA57H分鐘寄存器SECONDDATA58H秒鐘寄存器MONMAXDATA59H顯示數(shù)據(jù)緩沖地址TIME_YEAR_HBUFDATA40HTIME_YEAR_LBUFDATA41HMONT_HBUFDATA42HMONT_LBUFDATA43HTIME_DAY_HBUFDATA44HTIME_DAY_LBUFDATA45HWEEK_DATA_HBUFDATA46HWEEK_DATA_LBUFDATA47HHOUR_HBUFDATA48HHOUR_LBUFDATA49HMINTUE_HBUFDATA4AHMINTUE_LBUFDATA4BHSECOND_HBUFDATA4CHSECOND_LBUFDATA4DHDATA_BUSBITP27FLAGBIT00H標(biāo)志位TEMP_LEQU30H溫度值低字節(jié)TEMP_HEQU31H溫度值高字節(jié)TEMP_DPEQU32H溫度小數(shù)TEMP_INTEQU33H溫度值整數(shù)TEMP_BWEQU34H溫度百位數(shù)TEMP_SWEQU35H溫度十位數(shù)TEMP_GWEQU36H溫度個位數(shù)DIS_BWEQU37H顯示百位數(shù)DIS_SWEQU38H顯示十位數(shù)DIS_GWEQU39H顯示個位數(shù)DIS_DPEQU3AH顯示小數(shù)位DIS_ADDEQU3BH顯示地址程序開始ORG0000HAJMPSTARTORG0013HLJMPINT_1ORG0050HSTARTSETBEASETBEX1MOVSP,70HLCALLINITIALZE調(diào)用初始化液晶屏幕LCALLINIT_P調(diào)用初始畫面MOVA,01H清液晶屏,寫成空白LCALLWRITE_COMLCALLMAIN123MOVTIME_YEAR,10HMOVTIME_MONT,01HMOVTIME_DAY,01HMOVWEEK_DATA,05HMOVHOUR,09HLCALLRW_DS1302主程序MAINLCALLRD_DS1302LCALLDATA_BUFLCALLDISPLAY日歷顯示子程序LCALLREAD_TEMP調(diào)讀溫度程序LCALLPROCESS調(diào)數(shù)據(jù)處理程序AJMPMAIN中斷子程序INT_1CLREX1JNBMODE,SETBSCLKSETBIOMOVR4,01HAGAINMOVR1,6光標(biāo)置年位MOVA,TIME_YEARLCALLKEYMOVTIME_YEAR,ACJNER4,01H,QAZ0MOVR4,00HMOVTIME_YEAR_HBUF,0D3HMOVTIME_YEAR_LBUF,0D3HLJMPQAZ1QAZ0LCALLDATA_BUFMOVR4,01HQAZ1LCALLDISPLAY日歷顯示子程序JBMODE,AGAINJNBMODE,AGAIN1光標(biāo)置月位MOVR1,5MOVA,TIME_MONTLCALLKEYMOVTIME_MONT,ACJNER4,01H,QAZ2MOVR4,00HMOVMONT_HBUF,0D3HMOVMONT_LBUF,0D3HLJMPQAZ3QAZ2LCALLDATA_BUFMOVR4,01HQAZ3LCALLDISPLAYJBMODE,AGAIN1JNBMODE,AGAIN2光標(biāo)置天位MOVR1,4MOVA,TIME_DAYLCALLKEYMOVTIME_DAY,ACJNER4,01H,QAZ4MOVR4,00HMOVTIME_DAY_HBUF,0D3HMOVTIME_DAY_LBUF,0D3HLJMPQAZ5QAZ4LCALLDATA_BUFMOVR4,01HQAZ5LCALLDISPLAYJBMODE,AGAIN2JNBMODE,AGAIN3光標(biāo)置周位MOVR1,3MOVA,WEEK_DATALCALLKEYMOVWEEK_DATA,ACJNER4,01H,QAZ6MOVR4,00HMOVWEEK_DATA_HBUF,0D3HMOVWEEK_DATA_LBUF,0D3HLJMPQAZ7QAZ6LCALLDATA_BUFMOVR4,01HQAZ7LCALLDISPLAYJBMODE,AGAIN3JNBMODE,AGAIN4光標(biāo)置小時位MOVR1,2MOVA,HOURLCALLKEYMOVHOUR,ACJNER4,01H,QAZ8MOVR4,00HMOVHOUR_HBUF,0D3HMOVHOUR_LBUF,0D3HLJMPQAZ9QAZ8LCALLDATA_BUFMOVR4,01HQAZ9LCALLDISPLAYJBMODE,AGAIN4JNBMODE,AGAIN5光標(biāo)置分位MOVR1,1MOVA,MINTUELCALLKEYMOVMINTUE,ACJNER4,01H,QAZ10MOVR4,00HMOVMINTUE_HBUF,0D3HMOVMINTUE_LBUF,0D3HLJMPQAZ11QAZ10LCALLDATA_BUFMOVR4,01HQAZ11LCALLDISPLAYJBMODE,AGAIN5JNBMODE,MOVA,00HMOVSECOND,ALCALLRW_DS1302LCALLDATA_BUFLCALLDISPLAYMOVA,01H清液晶屏,寫成空白LCALLWRITE_COMMOVA,08LCALLWRITE_COMMOVA,0CHLCALLWRITE_COMSETBEX1RETIKEYJBSCLK,NEXT1調(diào)時間/日期子程序JNBSCLK,INCANEXT1JBIO,NEXT2JNBIO,DECA調(diào)節(jié)狀態(tài)下的顯示字程序NEXT2CJNER1,1,JLCALLMINTURN調(diào)分標(biāo)志打開,調(diào)用調(diào)分子程序JCJNER1,2,J1LCALLHOUTURN調(diào)時標(biāo)志打開,調(diào)用調(diào)時子程序J1CJNER1,3,J2LCALLWEETURN調(diào)周標(biāo)志打開,調(diào)用調(diào)周子程序J2CJNER1,4,J3LCALLTIME_DAYTURN調(diào)日標(biāo)志打開,調(diào)用調(diào)日子程序J3CJNER1,5,J4LCALLMONTURN調(diào)月標(biāo)志打開,調(diào)用調(diào)月子程序J4CJNER1,6,J5LCALLYEATURN調(diào)年標(biāo)志打開,調(diào)用調(diào)年子程序J5RETMINTURNMOVR0,AANLA,0FH調(diào)分子程序CJNEA,0AH,MINMOVA,R0ADDA,6MOVR0,AMINMOVA,R0ANLA,0F0H超過六十分,分變?yōu)橐籆JNEA,60H,MIN1MOVR0,00HMIN1MOVA,R0CJNEA,0FFH,MIN2小于一分,分變?yōu)槲迨臡OVR0,59HMIN2MOVA,R0ANLA,0FHCJNEA,0FH,MIN3MOVA,R0SUBBA,6HMOVR0,AMIN3MOVA,R0RETHOUTURNMOVR0,A調(diào)時子程序CJNEA,24H,HOU超過二十三點,時變?yōu)榱鉓OVR0,00HHOUMOVA,R0CJNEA,0FFH,HOU1小于零點,時變?yōu)槎齅OVR0,23HHOU1MOVA,R0ANLA,0FHCJNEA,0AH,HOU2MOVA,R0ADDA,6HMOVR0,AHOU2MOVA,R0ANLA,0FHCJNEA,0FH,HOU3MOVA,R0SUBBA,6HMOVR0,AHOU3MOVA,R0RETWEETURNMOVR0,A調(diào)周子程序CJNEA,7H,WEE超過周七,周變?yōu)橐籑OVR0,00HWEEMOVA,R0CJNEA,0FFH,WEE1小于周一,周變?yōu)槠進(jìn)OVR0,6HWEE1MOVA,R0RETTIME_DAYTURNMOVR0,AMOVA,TIME_MONT判斷月大/月小SUBBA,2HJNZNOTTWOMOVMONMAX,28HAJMPOKNOTTWOMOVA,TIME_MONTSUBBA,4HJNZJUDGEMOVMONMAX,30HAJMPOKJUDGEMOVA,TIME_MONTSUBBA,6HJNZJUDGE1MOVMONMAX,30HAJMPOKJUDGE1MOVA,TIME_MONTSUBBA,9HJNZJUDGE2MOVMONMAX,30HAJMPOKJUDGE2MOVA,TIME_MONTSUBBA,11HJNZJUDGE3MOVMONMAX,30HAJMPOKJUDGE3MOVMONMAX,31HOKMOVA,R0調(diào)日子程序ANLA,0FHCJNEA,0AH,TIME_DAYDAYMOVA,R0ADDA,6MOVR0,ATIME_DAYDAYMOVA,R0超過最大天,天變?yōu)橐籗UBBA,MONMAXMOVA,PSWANLA,80HJNZTIME_DAYDAY1MOVR0,1HTIME_DAYDAY1MOVA,R0小于一天,天變?yōu)樽畲筇霤JNEA,0H,TIME_DAYDAY2MOVR0,MONMAXTIME_DAYDAY2MOVA,R0ANLA,0FHCJNEA,0FH,TIME_DAYDAY3MOVA,R0SUBBA,6HMOVR0,ATIME_DAYDAY3MOVA,R0RETMONTURNMOVR0,A調(diào)月字子程序CJNEA,13H,MON超過十二月,變?yōu)橐辉翸OVR0,1HMONMOVA,R0CJNEA,0H,MON1小于一月,變?yōu)槭翸OVR0,12HMON1MOVA,R0ANLA,0FHCJNEA,0AH,MON2MOVA,R0ADDA,6HMOVR0,AMON2MOVA,R0ANLA,0FHCJNEA,0FH,MON3MOVA,R0SUBBA,6HMOVR0,AMON3MOVA,R0RETYEATURNMOVR0,A調(diào)年子程序CJNEA,9AH,YEA超過九九年,年變?yōu)榱懔隳闙OVR0,0HYEAMOVA,R0CJNEA,0FFH,YEA1小于零零年,年變?yōu)榫啪拍闙OVR0,99HYEA1MOVA,R0ANLA,0FHCJNEA,0AH,YEA2MOVA,R0ADDA,6HMOVR0,AYEA2MOVA,R0ANLA,0FHCJNEA,0FH,YEA3MOVA,R0SUBBA,6HMOVR0,AYEA3MOVA,R0RET讀1302子程序RD_DS1302MOVDS1302_ADDR,8DH讀DS1302中的年LCALLREAD調(diào)用讀DS1302子程序MOVTIME_YEAR,DS1302_DATA把讀000000000000000000000000000MOVTIME_MONT,DS1302_DATA把讀出的月數(shù)據(jù)存入月寄存器中MOVDS1302_ADDR,87H讀DS1302中的天LCALLREADMOVTIME_DAY,DS1302_DATA把讀出的天數(shù)據(jù)存入天寄存器中MOVDS1302_ADDR,85H讀DS1302中的小時LCALLREADMOVHOUR,DS1302_DATA把讀出的天數(shù)據(jù)存入小時寄存器中MOVDS1302_ADDR,83H讀DS1302中的分鐘LCALLREADMOVMINTUE,DS1302_DATA把讀出的天數(shù)據(jù)存入分鐘寄存器中MOVDS1302_ADDR,81H讀DS1302中的秒鐘LCALLREADMOVSECOND,DS1302_DATA把讀出的天數(shù)據(jù)存入秒鐘寄存器中RET寫1302子程序RW_DS1302MOVDS1302_ADDR,8EH寫DS1302控制指令MOVDS1302_DATA,00H寫數(shù)據(jù)到DS1302的8E控制寄存器中,允許對其進(jìn)行寫操作LCALLWRITE調(diào)用寫DS1302子程序MOVDS1302_ADDR,8CHMOVDS1302_DATA,TIME_YEARLCALLWRITEMOVDS1302_ADDR,8AHMOVDS1302_DATA,W

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論