基于89C52單片機(jī)的電子時鐘設(shè)計課程設(shè)計_第1頁
基于89C52單片機(jī)的電子時鐘設(shè)計課程設(shè)計_第2頁
基于89C52單片機(jī)的電子時鐘設(shè)計課程設(shè)計_第3頁
基于89C52單片機(jī)的電子時鐘設(shè)計課程設(shè)計_第4頁
基于89C52單片機(jī)的電子時鐘設(shè)計課程設(shè)計_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、畢業(yè)設(shè)計題目基于89C52單片機(jī)的電子時鐘設(shè)計英文題目ElectronicClockDesignBasedon89C52學(xué)生姓名陳志仁學(xué)號09325202專業(yè)電子信息工程系別機(jī)械與電子工程系指導(dǎo)教師黃河職稱講師二零一三年六月摘要至今,微處理器的發(fā)展已有40多年的歷史,起初由美國Intel公司首推的4為微處理器Intel4004,實現(xiàn)將單片處理器和運算器等元件集成在一片電路芯片上。此后微處理器的迅猛發(fā)展,微處理器內(nèi)集成的元件也越來越多,其中包括增加了存儲器、I/O接口電路、定時/計數(shù)器、串行通信口、中斷控制、系統(tǒng)總線以及系統(tǒng)時鐘等,大大加強(qiáng)了微處理器的性能,并針對特定的領(lǐng)域制作出最大效率的微處理

2、器。不同功能的微處理器稱為微控制器,也被我們簡稱為單片機(jī)。本文主要介紹以單片機(jī)ST89C52和DS12C887時鐘芯片為核心的電子時鐘顯示,LCD1602為液晶顯示器件,此電子時鐘顯示具有年月日等基本時間顯示,以及秒表計時處理、鬧鐘定時、蜂鳴、溫度的設(shè)計。單片機(jī)通過對時鐘、溫度等數(shù)據(jù)處理后傳送至LCD顯示輸出,也可通過按鍵對時間進(jìn)行調(diào)節(jié)。通過單片機(jī)外圍接口的擴(kuò)展實現(xiàn)溫度采集等功能。關(guān)鍵詞:電子時鐘;AT89C52;計時;溫度ABSTRACTThisprojectmainlyintroducesthattheelectronicclockwhichbasedonmicrocontrollerST

3、89C52display.LCD1602Liquidcrystaldisplaydevicesselectronicclockdisplayhasthedateandtimedisplay.Stopwatchtimingprocessing,alarmclocktimingandthedesignofbuzzer,temperature.SCMthroughtheclock,temperatureandotherdataprocessingandtransmitssignalstotheLCDdisplayoutput,alsobyadjustingbuttonfortime.Throught

4、heexpansionofsingle-chipperipheralinterfacetoachievetemperatureacquisitionfunctions.Keywords:electronicclock。ST89C52。timing。temperature第一章緒論系統(tǒng)設(shè)計的背景和意義1.1.1電子時鐘設(shè)計的背景隨著微電子技術(shù)的迅猛發(fā)展,電子產(chǎn)品技術(shù)也得到了很大的提高,單片機(jī)技術(shù)也同樣水漲船高。單片機(jī)是把一個計算機(jī)系統(tǒng)集成到一個芯片上,它的產(chǎn)生是近代計算機(jī)技術(shù)發(fā)展史上一個重要的里程碑,它標(biāo)志這計算機(jī)正式形成了通用計算機(jī)系統(tǒng)和嵌入式計算機(jī)系統(tǒng)兩大分支。以單片機(jī)為核心的智能化產(chǎn)品將計

5、算機(jī)技術(shù)、信息處理技術(shù)和電子測量與控制技術(shù)結(jié)合在一起,把智能賦予各種機(jī)械裝置,對傳統(tǒng)的產(chǎn)品結(jié)構(gòu)和應(yīng)用方式產(chǎn)生了本質(zhì)性的變革。由于其微小的體積和低成本的投入已普遍涉及現(xiàn)代人類生活中所用的電子和機(jī)械產(chǎn)品中,其中手機(jī)、電話、計算器、家用電器、電子玩具、電腦以及鼠標(biāo)等電腦配件中都集成有至少1部單片機(jī)。1.1.2電子時鐘設(shè)計的意義從古時的日晷、沙漏計時到近代的機(jī)械計時,再延續(xù)到現(xiàn)代的通過數(shù)字電路實現(xiàn)計時,其定時的準(zhǔn)確性和精度都不是非常的理想,隨著單片機(jī)的體積小、易控制、功能強(qiáng)、價格低廉、穩(wěn)定可靠、集成度高等優(yōu)點,注定了它的廣泛普及。在智能家居、工業(yè)控制、通信、航天等領(lǐng)域有著極大的作用。電子時鐘集成的單片

6、機(jī),極大的提高了電子時鐘顯示的準(zhǔn)確性和快捷性,最大化的方便了人們。此外由于單片機(jī)的精確性大到工業(yè)過程中的大型控制系統(tǒng),小到早已遍及全世界的兒童玩具和智能家居控制,無時無刻的影響和方便人類的生活。同樣的因為單片機(jī)的功能強(qiáng)、體積小、質(zhì)量輕、靈活好用、性價比高等優(yōu)良的性能,使得它可以更好地融入到更多更全面的系統(tǒng)中,可以構(gòu)成許多功能不同的微電子產(chǎn)品。根據(jù)這種實際情況,設(shè)計了只采用一個單片機(jī)制作的多功能電子時鐘,具備了最基本的時間日期顯示功能,定時鬧鈴功能和溫度顯示功能,以及秒表功能,還可以針對家電等電氣產(chǎn)品的自動控制對其進(jìn)行相應(yīng)的擴(kuò)展,同樣可以避免操作繁瑣的控制器而產(chǎn)生的失誤,準(zhǔn)確實現(xiàn)“一對多”的控制

7、;溫度傳感器的添加,使得此電子時鐘可以準(zhǔn)確,快捷的進(jìn)行溫度顯示,為人們的生活工作提供的極大的便利。對此設(shè)計還可以進(jìn)一步的擴(kuò)展利用,也可在此設(shè)計添加濕度傳感器,進(jìn)而實時進(jìn)行濕度的顯示。1.1.3電子時鐘設(shè)計的應(yīng)用電子鐘已成為人們?nèi)粘I钪胁豢苫蛉钡纳钇罚瑥V泛是廣場,旅店等公共場合的必須設(shè)施,給人們的衣食住行帶來極大的方便。由于單片機(jī)集成系統(tǒng)技術(shù)的迅猛發(fā)展,使電子時鐘具有走時準(zhǔn)確、性能穩(wěn)定、攜帶方便、性價比高等優(yōu)點可以構(gòu)成許多功能不同的微電子產(chǎn)品。方案論證電子時鐘電路的種類繁多,有通過數(shù)字電路和單片機(jī)集成等等,針對各種各樣的情況或者不同領(lǐng)域所需要的電子時鐘的要求也不盡相同,在生活上需要的電子時鐘

8、精度就沒有多大的要求,而在工業(yè)控制和航天等一些需要精準(zhǔn)的時間便需要高精準(zhǔn)的電子時鐘,本設(shè)計的題目是基于89C52單片機(jī)的電子時鐘設(shè)計,此設(shè)計的需要正常顯示的是年、月、日、星期、時、分、秒。本設(shè)計需要硬件系統(tǒng)和軟件系統(tǒng)的結(jié)合。121方案1基于STC89C52單片機(jī)的電子時鐘的設(shè)計此方案是直接使用STC89C52單片機(jī)的集成電路來進(jìn)行電子時鐘的設(shè)計。相比于常用的51單片機(jī)STC89C52增加了一些功能,核心CPU為8位使用靈巧以及可編程Flash存儲器,成為了嵌入式系統(tǒng)的應(yīng)用變得更加的靈活多樣,解決方案也變得有效。首先采用單片機(jī)的集成電路來進(jìn)行計時,便需要此單片機(jī)的定時器/計數(shù)器每隔一定時間產(chǎn)生的

9、一個中斷信號,當(dāng)中斷次數(shù)到達(dá)一定時會產(chǎn)生一個秒信號,當(dāng)秒信號累加到了一定值便進(jìn)行分的累加,依次類推,之后便是時、日、星期、月、年的進(jìn)位。這樣也就實現(xiàn)了利用單片機(jī)集成電路的電子時鐘的設(shè)計。其次通過單片機(jī)的集成電路來實現(xiàn)電子時鐘的設(shè)計,不需要再加入其它的芯片,實現(xiàn)了資源的充分,但是用此方案所設(shè)計的電子時鐘精度不夠,且掉電后數(shù)據(jù)易丟失,編程復(fù)雜。1.2.2方案2基于DS12C887的電子時鐘的設(shè)計此種方案是在以單片機(jī)為核心裝置的基礎(chǔ)上,加上一個相關(guān)的時鐘芯片,此類芯片有許多,比如MC146818,DS12887等等。它們雖然可以滿足單片機(jī)系統(tǒng)對時鐘的相關(guān)要求,但是此類芯片連接單片機(jī)較為復(fù)雜,數(shù)據(jù)總線

10、和地址總線的占用頗多,且芯片的體積相比其它較大,在如今寸土寸金的時代此種芯片已變得越來越不合適,由于近年來愈來愈多串行接口的芯片的廣泛應(yīng)用,也產(chǎn)生了一些串行接口的時鐘芯片,其中DS12C887便是其中的一種它的綜合性能相比MC146818,DS12887等較好且價格公道的串行接口時鐘芯片。通過52單片機(jī)的核心控制和DS12C887時鐘芯片的輔助,實現(xiàn)單片機(jī)的同步信號,加上一些基本必要電路進(jìn)行集成來構(gòu)成整個電子時鐘設(shè)計的完成,其中外加的電路有顯示電路、鍵盤電路、鬧鈴電路。如果想在此系統(tǒng)進(jìn)行擴(kuò)展還可在電路上增設(shè)相應(yīng)的電路。由于在系統(tǒng)設(shè)計時,需要考慮諸多因素:功耗、精確度、軟件編程的簡便,芯片的體積

11、、芯片成本等。結(jié)合上述的各種影響DS12C887芯片為最佳選擇,故方案2被采用。第二章電子時鐘的硬件設(shè)計2.1單片機(jī)的選擇單片微型計算機(jī)簡稱為單片機(jī),是典型的嵌入式微控制器。通常,單片機(jī)由單塊集成電路芯片構(gòu)成,內(nèi)部包含有計算機(jī)的基本功能部件:存儲器、中央處理器(CPU)和I/O接口電路等。因此,單片機(jī)只需要配合適當(dāng)?shù)能浖巴獠吭O(shè)備,便可成為一個單片機(jī)控制系統(tǒng)。單片機(jī)經(jīng)歷SCM、MCU、SoC三大階段的發(fā)展,使得單片機(jī)具有了多功能、高性能、低電壓、低價格、低功耗、大存儲容量、強(qiáng)I/O功能及較好的兼容性等優(yōu)點。1、多功能單片機(jī)中盡可能地把諸多模塊都集成在一塊芯片上,使得單片機(jī)可以實現(xiàn)的功能更加繁多

12、。其中把ADC、DAC以及多路模擬開關(guān)和采樣/保持器乃至LED等顯示驅(qū)動器集成在單片機(jī)芯片中,也就是外圍器件的內(nèi)置化。2、高性能為了提高執(zhí)行速度和執(zhí)行效率,單片機(jī)開始使用RISC結(jié)構(gòu)、流水線和DSP的設(shè)計技術(shù),使單片機(jī)的性能有了顯著的提高。由于系統(tǒng)資源和系統(tǒng)復(fù)雜程度的增加,開始使用高級語言來開發(fā)單片機(jī)的程序。使用高級語言明顯降低開發(fā)難度以及縮短了開發(fā)的周期,軟件的可讀性和可移植性也得到了大大的提升,便于改進(jìn)和擴(kuò)充功能。3、低電壓和低功耗因單片機(jī)使用的場合空間有限,對其體積的要求嚴(yán)格,這也決定了單片機(jī)具有低電壓和低功耗的特性非常重要。目前單片機(jī)制造工藝普遍應(yīng)用CHMOS工藝,其中HMOS工藝為互

13、補(bǔ)金屬氧化物具有高速度、高密度的特點,再加上CMOS工藝具備了低功耗的優(yōu)良特性。由于CHMOS工藝的大量采用,很多單片機(jī)可以在更低的電壓下工作(1.2V或0.9V),功耗已經(jīng)降低到uA級。這些特性使得單片機(jī)系統(tǒng)可以在更小電源的支持下工作更長的時間。目前,國內(nèi)生產(chǎn)單片機(jī)的種類繁多,在此,我們采用為89C52單片機(jī)為主控制器。89C52內(nèi)置8位中央處理器、256字節(jié)內(nèi)部數(shù)據(jù)存儲器RAM、8k片內(nèi)部程序存儲器(ROM)32個雙向輸入/輸出(I/O)口、3個16位定時/計數(shù)器和5個兩級中斷結(jié)構(gòu),一個全雙工串行通信口,片內(nèi)時鐘振蕩電路。此外,89C52還可工作于低功耗模式,可通過兩種軟件選擇空閑和掉電模

14、式。在空閑模式下凍結(jié)CPU而RAM定時器、串行口和中斷系統(tǒng)維持其功能。掉電模式下,保存RAM數(shù)據(jù),時鐘振蕩停止,同時停止芯片內(nèi)其它功能。89C52具有PDIP(40pin)和PLCC(44pin)兩種封裝形式。單片機(jī)的基本簡介單片機(jī)有兩種基本結(jié)構(gòu):一種是在通用微型計算機(jī)中廣泛采用的,數(shù)據(jù)存儲器和程序存儲器共用一個存儲器空間的結(jié)構(gòu),稱為“馮諾依曼”(VonNeumann)結(jié)構(gòu)。另一種稱為“哈佛”(Harvard)結(jié)構(gòu)是將數(shù)據(jù)存儲器和程序存儲器完全分開,采用不同的訪問指令進(jìn)行訪問,目前的單片機(jī)多采用“哈佛”結(jié)構(gòu)。2.2.189C52單片機(jī)主要功能特性標(biāo)準(zhǔn)MCS-51內(nèi)核和指令系統(tǒng)片內(nèi)8kROM(可

15、擴(kuò)充64kB外部存儲器)32個雙向I/O口256x8bit內(nèi)部RAM(可擴(kuò)充64kB外部存儲器)3個16位可編程定時/計數(shù)器時鐘頻率3.5-12/24/33MHZ向上或向下定時計數(shù)器改進(jìn)型快速編程脈沖算法6個中斷源5.0V工作電壓全雙工串行通信口布爾處理器幀錯誤偵測4層優(yōu)先級中斷結(jié)構(gòu)一自動地址識別兼容TTL和CMOS邏輯電平空閑和掉電節(jié)省模式PDIP(40)和PLCC(44)封裝形式89C52單片機(jī)各引腳功能1主電源引腳有VCC、VSS。VCC(40腳):接+5V電源,為程序運行和校檢時提供所需的電能。VSS(20腳):為接地端。2外界晶體引腳有XTAL1、XTAL2。XTAL1(18腳):片

16、內(nèi)它屬于一個反向振蕩放大器輸入端,此放大器構(gòu)成了片內(nèi)振蕩器,可以提供單片機(jī)相應(yīng)的時鐘控制信號。XTAL2(19腳)在單片機(jī)內(nèi)部,接至上述振蕩器的反向輸出端。當(dāng)使用內(nèi)部時鐘時,兩引線端用于外接石英晶體和微調(diào)電容;當(dāng)使用外部時鐘時,用于接外部時鐘信號,外部時鐘由XTAL1引入,XTAL2處于懸空狀態(tài)。3控制類引腳包括RESET(即為RST/VPD)、ALE、PSEN、EA,可以提供控制信號,有些具有復(fù)用功能。RSR/VPD(9腳):VPD是單片機(jī)內(nèi)部備用電源,為單片機(jī)的上電復(fù)位和掉電保護(hù)端。振蕩器工作時,在此引腳加上兩個機(jī)器周期的高電平將使單片機(jī)進(jìn)行復(fù)位(REST)操作。復(fù)位后應(yīng)使此引腳電平保持為

17、不超過0.5V的低電平,以保證單片機(jī)正常運行。當(dāng)電源端出現(xiàn)故障、小于低電平設(shè)定值或者掉電,此引腳可接入備用電源(VPD)以保持內(nèi)部RAM中的數(shù)據(jù)不出現(xiàn)異常。ALE/PROG(30腳):地址鎖存允許信號,以平均每機(jī)器周期兩次有效的信號輸出。在訪問片外存儲器或I/O時,用于鎖存低八位地址,以實現(xiàn)低八位地址與數(shù)據(jù)的隔離。在不訪問外部RAM和ROM時,ALE可以1/6的振蕩頻率固定速率輸出,可作為對外輸出的時鐘或用作外部定時脈沖。注意:在訪問外部RAM期間,ALE脈沖會跳過兩個機(jī)器周期此信號有效3次,此種狀態(tài)下便不適合作為時鐘輸出。PSEN(29腳):片外程序存儲器讀選通信號,低電平有效。在從片外程序

18、存儲器取指期間,在每個機(jī)器周期中,當(dāng)有效時,程序存儲器的內(nèi)容被送上P0口(數(shù)據(jù)總線)。EA/VPP(31腳):片外程序存儲器訪問允許控制信號,此控制信號低電平為有效。EA=1(高電平),選擇片內(nèi)程序存儲器;EA=0(低電平),則程序存儲器全部在片外而不管片內(nèi)是否有程序存儲器4四個輸入/輸出引腳包括P0口、P1口、P2口和P3口。P0(39腳-32腳)8位、漏極開路的雙向I/O口。當(dāng)使用片外存儲器時,復(fù)用作低八位地址和數(shù)據(jù)總線分時復(fù)用。P1(1腳-8腳)一8位、準(zhǔn)雙向I/O口。P2(21腳-28腳)一8位、準(zhǔn)雙向I/O口。當(dāng)使用片外存儲器時,復(fù)用作輸出高8位地址。P3(10腳-17腳)一8位、準(zhǔn)

19、雙向I/O口,具有內(nèi)部上拉電路。P3口功能表:P3口各引腳的第二功能P3口的位第二功能簡要說明P3.0RXD串行數(shù)據(jù)接收口P3.1TXD串行數(shù)據(jù)發(fā)射口P3.2INTO外部中斷0輸入P3.3INT1外部中斷1輸入P3.4TO計數(shù)器0計數(shù)輸入P3.5T1計數(shù)器1計數(shù)輸入P3.6WR外部RAM寫信號P3.7RD外部RAM讀信號89C52單片機(jī)內(nèi)部結(jié)構(gòu)圖:第三章電子時鐘的軟件設(shè)計3.1程序總體設(shè)計3.1.1程序總體流程圖開始Y功能鍵鬧鐘按鍵結(jié)束初始化,設(shè)置初值LCD顯示時間顯示時間確定鬧鐘控制正常計時調(diào)節(jié)時間圖3.1主程序流程圖3.2DS12C887使用說明及流程圖主程序運行后,首先DS12C887將

20、會進(jìn)行初始化的設(shè)置,如果串行口中具有相應(yīng)的數(shù)據(jù),然后需要獲取時鐘信息就必須調(diào)用相應(yīng)的程序來從時鐘芯片中獲取,最后時鐘信息的顯示也需要調(diào)用相應(yīng)的程序,依次返復(fù)進(jìn)行。這段程序包括對DS12C887某個單元讀寫內(nèi)容和對DS12C887設(shè)定時間。DS12C887的流程圖如圖3.2所示。調(diào)用程序獲取時鐘信送數(shù)據(jù)顯示圖3.2DS12C887的流程圖3.31602液晶顯示屏操作說明及流程圖液晶顯示屏的顯示主要是通過從芯片中加載程序,分別對秒、分、時、星期、日、月、年、溫度進(jìn)行相應(yīng)的顯示,并且對可對時間進(jìn)行加減操作,可通過鍵盤進(jìn)行操作更新時間的顯示。1602LCD的流程圖如圖3.3所示。開始1602初始L-化

21、-讀取數(shù)據(jù)第一行顯讀取數(shù)據(jù)第二行顯圖3.31602LCD的流程圖3.4鍵盤控制說明及流程圖當(dāng)功能鍵按下時,秒位置閃爍。每次按下功能鍵按下時,分別在秒、分、時、星期、日、月、年處閃爍。當(dāng)功能鍵再次按下時,加一或減一鍵有效并在相應(yīng)位置加一或減一。如選定秒位,按下增大鍵,調(diào)整顯示位秒的增加,當(dāng)秒增加至滿60后,自動清零,同時調(diào)節(jié)一次送至下一位顯示,顯示位置重新回到調(diào)節(jié)處;當(dāng)按下減小鍵時,調(diào)整顯示位秒的減小,當(dāng)秒減至0后,自動跳轉(zhuǎn)為59,同時調(diào)節(jié)一次送至下一位顯示,顯示位置重新回到調(diào)節(jié)處;年月日時分的調(diào)節(jié)原理相同。鍵盤加一減一流程圖如圖3-4所示。圖3-4鍵盤加一減一流程圖3.5主程序主程序主要對按鍵

22、進(jìn)行掃描,以及判斷定時和鬧鈴時間是否已到,若到則調(diào)用相關(guān)程序,該段程序如下:3.5.1延時程序動態(tài)掃描時液晶顯示需要用到延時程序,此設(shè)計使用的是延時程序,此程序需要反復(fù)調(diào)用程序如下:DELAY:MOVR4,#0FHDE1:MOVR5,#0FFHDJNZR5,$DJNZR4,DE1RET此類延時程序所延時的程序計算為:由于DJNZ指令執(zhí)行時間為2個機(jī)器周期。假設(shè)單片機(jī)的工作頻率為12MHz,則一個機(jī)器周期是lys。上述延時執(zhí)行的時間0FFHx2ys=512ys,也是循環(huán)一次完成的時間,因其循環(huán)OFH次,所以其循環(huán)完成總的時間約為512ysx0FH=8.192ms。此類延時程序算法與此相同。3.5

23、.2時鐘芯片程序下面給出的便是調(diào)用時鐘芯片DS12C887的初始化和獲取內(nèi)部事件的匯編程序:ORG0000HAJMPSTARTSTART:ACALLSETTIME。設(shè)置初始時間LOOP:ACALLGETTIME。循環(huán)讀取當(dāng)前時間AJMPLOOP。SETTIME:MOVDPTR,#7D0AH。DS12C887的A寄存器MOVA,#20HMOVXDPTR,A。打開DS12C887的內(nèi)部晶振并使RTC(實時時鐘)記錄時間INCDPTR。DS12C887的B寄存器MOVA,#08HMOVXDPTR,A。設(shè)十進(jìn)制BCD碼,24小時制,不定時MOVDPTR,#7D0DH。DS12C887的D寄存器MOVX

24、A,DPTR。如果D寄存器的第7位為0表示電池耗盡JNBACC.7,ERRORMOVDPTR,#7D00H。DS12C887的秒單元MOVA,#00HMOVXDPTR,A。寫入秒MOVDPTR,#7D02H。DS12C887分單元MOVA,#21HMOVXDPTR,A。寫入分MOVDPTR,#7D04H。DS12C887時單元MOVA,#03HMOVXDPTR,A。寫入時MOVDPTR,#7D06H。DS12C887星期單元MOVA,#03HMOVXDPTR,A。寫入星期MOVDPTR,#7D07H。DS12C887日單元MOVA,#20HMOVXDPTR,A。寫入日MOVDPTR,#7D08

25、H。DS12C887月單元MOVA,#07HMOVXDPTR,A。寫入月MOVDPTR,#7D09H。DS12C887年單元MOVA,#05HMOVXDPTR,A。寫入年時間ERROR:RETGETTIME:MOVDPTR,#7D0AHMOVXA,DPTRJBACC.7,GETTIME。REGISTERA的UIP位=0時才可以讀數(shù)據(jù)MOVDPTR,#7D00HMOVXA,DPTRMOVR2,A。SECONDSACALLDISPLAYMOVDPTR,#7D02HMOVXA,DPTRMOVR1,AACALLDISPLAY。MINUTESMOVDPTR,#7D04HMOVXA,DPTRMOVR0,A

26、。HOURSACALLDISPLAYACALLDELAYRETDISPLAY:MOVDPTR,#TABMOVSCON,#00HMOVR3,AANLA,#0FHMOVCA,A+DPTRMOVSBUF,AJNBTI,$CLRTIMOVA,R3SWAPAANLA,#0FHMOVCA,A+DPTRMOVSBUF,AJNBTI,$CLRTIRETDELAY:MOVR4,#0FHDE1:MOVR5,#0FFHDJNZR5,$DJNZR4,DE1RETTAB:DB03H,9FH,25H,0DH,99H,49H,41H,1FH,01H,09H,11H,0C1H,63H,85H,61H,71HEND日期的顯示,

27、秒表的顯示,倒計時的顯示,調(diào)鬧鈴,調(diào)定時的顯示,閃爍的顯示程序與以上的的掃描相似,有的以子程序的方式出現(xiàn),通過子程序調(diào)用語句ACALL調(diào)用;有點直接嵌套在相應(yīng)的程序里面,順序執(zhí)行,或者用調(diào)轉(zhuǎn)語句AJMP調(diào)用。3.5.2液晶時鐘顯示調(diào)用程序四個按鍵控制液晶時鐘的顯示,P3.2為調(diào)時選擇鍵,按第1次為秒鐘調(diào)整,按第2次為分鐘調(diào)整,按第3次為時鐘調(diào)整。P3.3為加1鍵。P3.4為減1鍵。P3.5為確認(rèn)鍵。RSBITP2.0RWBITP2.1EBITP2.2LCDEQUP0H_BITEQU20HM_BITEQU21HS_BITEQU22HHHEQU23HMMEQU24HSSEQU25HHH_BITEQ

28、U26HMM_BITEQU27HSS_BITEQU28H。=ORG00HAJMPMAINORG0BHAJMPTIME0ORG30H。=主程序=MAIN:MOVSP,#60HMOVP1,#00HMOVR5,#00HMOVH_BIT,#00HMOVM_BIT,#00HMOVS_BIT,#00HMOVHH_BIT,#00HMOVMM_BIT,#00HMOVSS_BIT,#00HMOVHH,#00HMOVMM,#00HMOVSS,#00HMOVTMOD,#01HMOVTH0,#3CHMOVTL0,#0B0HSETBEASETBET0SETBTR0MOVLCD,#01HLCALLLCDWCLOOP:LC

29、ALLEYLCALLKEYLCALLEYYLJMPLOOP。=顯示子程序=EY:LCALLLOOP1LCALLLCDSETMOVDPTR,#TAB1MOVA,H_BITLCALLDISPMOVA,HH_BITLCALLDISPMOVA,#58MOVLCD,ALCALLWRRMOVA,M_BITLCALLDISPMOVA,MM_BITLCALLDISPMOVA,#58MOVLCD,ALCALLWRRMOVA,S_BITLCALLDISPMOVA,SS_BITLCALLDISPRET。=bcd碼轉(zhuǎn)換子程序=LOOP1:MOVA,SSMOVB,#10DIVABMOVS_BIT,AMOVSS_BIT,

30、BMOVA,MMMOVB,#10DIVABMOVM_BIT,AMOVMM_BIT,BMOVA,HHMOVB,#10DIVABMOVH_BIT,AMOVHH_BIT,BRET。=中斷子程序=TIME0:PUSHAccPUSHPSWMOVTH0,#3cHMOVTL0,#0B0HINcR5cJNER5,#20,LOOP2MOVR5,#00HINcSSMOVA,SSCJNEA,#60,LOOP2MOVSS,#00HINCMMMOVA,MMCJNEA,#60,LOOP2MOVMM,#00HINCHHMOVA,HHCJNEA,#24,LOOP2MOVHH,#00HLOOP2:POPPSWPOPACCRET

31、I。=按鍵檢測子程序=KEY:clreaJNBP3.2,SS_KEYKEY1:setbeaRET。=秒鐘調(diào)整子程序=SS_KEY:LCALLEY1LCALLDIS1JNBP3.2,SS_KEYSSA:LCALLEY1JNBP3.3,S_ADDKEYJNBP3.4,S_DECKEYLCALLDIS1JNBP3.2,MM_KEYJNBP3.5,KEY3LJMPSSAKEY3:LJMPKEY1。=秒加1=S_ADDKEY:lcalley1LCALLDIS1JNBP3.3,S_ADDKEYINCSSMOVA,SSCJNEA,#60,SS_KEY1MOVSS,#00HSS_KEY1:LJMPSSA。=秒

32、減1=S_DECKEY:lcalley1LCALLDIS1JNBP3.4,S_DECKEYMOVA,SSCJNEA,#00,SS_KEY2MOVSS,#60SS_KEY2:DECSSLJMPSS_KEY1。=分鐘調(diào)整子程序=MM_KEY:LCALLEY2LCALLDIS1JNBP3.2,MM_KEYMMA:LCALLEY2JNBP3.3,M_ADDKEYJNBP3.4,M_DECKEYLCALLDIS1JNBP3.2,HH_KEYJNBP3.5,KEY4LJMPMMAKEY4:LJMPKEY1。=分加1=M_ADDKEY:lcalley2LCALLDIS1JNBP3.3,M_ADDKEYINC

33、MMMOVA,MMCJNEA,#60,MM_KEY1MOVMM,#00HMM_KEY1:LJMPMMA。=分減1=M_DECKEY:lcalley2LCALLDIS1JNBP3.4,M_DECKEYMOVA,MMCJNEA,#00,MM_KEY2MOVMM,#60MM_KEY2:DECMMLJMPMM_KEY1。=時鐘調(diào)整子程序=HH_KEY:LCALLEY3LCALLDIS1JNBP3.2,HH_KEYHHA:LCALLEY3JNBP3.3,H_ADDKEYJNBP3.4,H_DECKEYLCALLDIS1JNBP3.2,SSBJNBP3.5,KEY5LJMPHHAKEY5:LJMPKEY1

34、。=時加1=H_ADDKEY:lcalley3LCALLDIS1JNBP3.3,H_ADDKEYINCHHMOVA,HHCJNEA,#24,HH_KEY1MOVHH,#00HHH_KEY1:LJMPHHA。=時減1=H_DECKEY:lcalley3LCALLDIS1JNBP3.4,H_DECKEYMOVA,HHCJNEA,#00,HH_KEY2MOVHH,#24HH_KEY2:DECHHLJMPHH_KEY1SSB:LJMPSS_KEYDISP:MOVCA,A+DPTRMOVLCD,ALCALLWRRRETLCDSET:MOVLCD,#38HLCALLLCDWCMOVLCD,#06HLCAL

35、LLCDWCMOVLCD,#0CHLCALLLCDWCMOVLCD,#0C4HLCALLLCDWCRETLCDWC:CLRRSCLRRWCLRELCALLLCDBFSETBERETWRR:SETBRSCLRRWCLRELCALLLCDBFSETBERETLCDBF:MOVLCD,#0FFHCLRRSSETBRWCLRENOPSETBEJBLCD.7,LCDBFRETEYY:MOVLCD,#80HLCALLLCDWCMOVDPTR,#TAB2MOVR2,#16MOVR1,#00HEYY1:MOVA,R1LCALLDISPINCR1DJNZR2,EYY1RETEY1:MOVLCD,#0C4HLCA

36、LLLCDWCMOVR4,#02EY11:LCALLHINDDJNZR4,EY11LCALLLOOP1MOVA,S_BITLCALLDISPMOVA,SS_BITLCALLDISPRETEY2:MOVLCD,#0C4HLCALLLCDWCLCALLHINDLCALLLOOP1MOVA,M_BITLCALLDISPMOVA,MM_BITLCALLDISPLCALLHINDRETEY3:MOVLCD,#0C4HLCALLLCDWCLCALLLOOP1MOVA,H_BITLCALLDISPMOVA,HH_BITLCALLDISPMOVR4,#02EY33:LCALLHINDDJNZR4,EY33RE

37、THIND:MOVR3,#3HIND1:MOVA,#MOVLCD,ALCALLWRRDJNZR3,HIND1RET。=延時程序=DIS1:MOVR6,#20DJNZR6,$RET。=段碼表=TAB1:DB30H,31h,32H,33H,34H,35H,36H,37H,38H,39HTAB2:DBZhiRenChenDesignend溫度顯示調(diào)用程序TEMPER_LEQU36HTEMPER_HEQU35HTEMPER_NUMEQU60HFLAG1BIT00HDQBITP3.3RSEQUP3.7。RSv-P2.0RWEQUP3.6。R/WP2.1EEQUP3.5。EP2.2LCD_DBEQUP1A

38、AA:MOVSP,#70HLCALLGET_TEMPERLCALLTEMPER_COVLCALLDISPLAY。調(diào)用顯示子程序LJMPAAANOP。讀出轉(zhuǎn)換后的溫度值GET_TEMPER:SETBDQ。定時入口BCD:LCALLINIT_1820JBFLAG1,S22LJMPCC。若DS18B20不存在則返回S22:LCALLDELAY1MOVA,#0CCH。跳過ROM匹配0CCLCALLWRITE_1820MOVA,#44H。發(fā)出溫度轉(zhuǎn)換命令LCALLWRITE_1820NOPLCALLDELAYLCALLDELAYCBA:LCALLINIT_1820JBFLAG1,ABCLJMPCBAABC:LCALLDELAY1MOVA,#0CCH。跳過ROM匹配LCALLWRITE_1820MOVA,#0BEH。發(fā)出讀溫度命令LCALLWRITE_1820LCALLREAD_18200。READ_1820RET。讀DS18B20的程序,從DS18B20中讀出一個字節(jié)的數(shù)據(jù)READ_1820:MOVR2,#8RE1:CLRCSETBDQNOPNOPCLRDQNOPNOPNOPSETBDQMOVR3,#7DJ

溫馨提示

  • 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

提交評論