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

下載本文檔

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

文檔簡介

1、 畢業(yè)設(shè)計用紙中文摘要隨著單片機(jī)技術(shù)的飛速發(fā)展,在其推動下,現(xiàn)代的電子產(chǎn)品幾乎滲透到了社會的各個領(lǐng)域,有力地推動了社會生產(chǎn)力的發(fā)展和社會信息化程度的提高,同時也使現(xiàn)代電子產(chǎn)品性能進(jìn)一步提高。時間對于人們來說總是那么的寶貴,可以說時間和金錢是劃上了等號。準(zhǔn)確的掌握時間和分配時間對人們來說至關(guān)重要。因此采用單片機(jī)為主的數(shù)碼管為顯示器的電子時鐘就體現(xiàn)出了很大的優(yōu)勢。電子鐘的設(shè)計方法有很多種,但利用單片機(jī)制作的電子時鐘更具有編程靈活、便于電子功能的擴(kuò)充、精確度高、便于攜帶、顯示直觀等特點。 通過利用MCS-51單片機(jī)內(nèi)部的定時器/計數(shù)器功能來實現(xiàn)電子時鐘的計時方法。主要由AT89S51芯片和LED數(shù)碼

2、顯示管為核心,構(gòu)成了一個單片機(jī)電子時鐘。關(guān)鍵詞:單片機(jī),AT89S51,電子時鐘,LEDAbstractWith the rapid development of microcomputer technology in its promotion, modern electronics into almost all areas of society, a strong impetus to the development of social productive forces and social improvement in the level of information, but al

3、so to further improve the performance of modern electronic products.Time is always so valuable for people who can say that time and money is the equal sign. Accurate grasp of time and allocation of time is crucial to people. Therefore, the digital control based on microcomputer-based electronic cloc

4、k on the display reflects a great advantage. Clock Design There are many ways, however, produced by single chip electronic clock is more flexible programming, and easy expansion of electronic capabilities, high accuracy, easy to carry, display visual and so on. In this paper, through the use of MCS-

5、51 microcontroller's internal timer / counter function to implement the electronic clock timing method. Mainly by the AT89S51 chip and LED digital display tube as the core, forming a single chip electronic clock. Key word: Monolithic integrated circuit,AT89S51,Electronic clock,LED 目錄 第一章、 前言51.1

6、 概述51.2 研究目的5第二章、 電路涉及單片機(jī)概述62.1 單片機(jī)的概念62.2 單片機(jī)的發(fā)展史和發(fā)展趨勢62.2.1 單片機(jī)的發(fā)展歷史62.2.2 單片機(jī)的發(fā)展趨勢62.3 單片機(jī)的特點72.4 MCS-51單片機(jī)的基本結(jié)構(gòu)72.4.1 MCS-51單片機(jī)的基本組成72.4.2 AT89S51單片機(jī)的引腳8第三章、 系統(tǒng)設(shè)計103.1 設(shè)計方法及原理103.1.1 設(shè)計方法93.1.2 電子時鐘原理93.1.3 數(shù)碼管顯示原理93.2 總體設(shè)計103.2.1 系統(tǒng)說明103.2.2 系統(tǒng)框圖103.3 模塊設(shè)計113.3.1 電源部分113.3.2 復(fù)位電路113.3.3 數(shù)碼管的連接電

7、路123.3.4 控制部分13第四章、 軟件設(shè)計154.1 程序流程圖154.2 源程序174.2.1 中斷入口程序174.2.2 主 程 序184.2.3 1秒計時程序184.2.4 閃動調(diào)時程序204.2.5 加1子程序214.2.6 清零程序224.2.7 時鐘調(diào)整程序224.2.8 顯示程序244.2.9 延時程序25參考文獻(xiàn)27 致謝28第 4 頁 共 28 頁 畢業(yè)設(shè)計用紙第一章、前言1.1 概述時鐘電路在計算機(jī)系統(tǒng)中起著非常重要的作用,是保證系統(tǒng)正常工作的基礎(chǔ)。在單片機(jī)的應(yīng)用系統(tǒng)中,時鐘有兩個方面的含義:一是指為保障系統(tǒng)正常工作的基準(zhǔn)振蕩定時信號,主要由晶振和外圍電路組成,晶振頻

8、率的大小決定了單片機(jī)系統(tǒng)工作的快慢;二是指系統(tǒng)的標(biāo)準(zhǔn)定時時鐘,即定時時間,它通常有兩種實現(xiàn)方法:一是用軟件實現(xiàn),即用單片機(jī)內(nèi)部的可編程定時器/計數(shù)器來實現(xiàn);二是用專門的時鐘芯片實現(xiàn)2。由于51系列單片機(jī)的內(nèi)部具有定時器/計數(shù)器的功能,因此采用51系列單片機(jī)里的AT89S51和LED數(shù)碼管為核心,加以必要的電路,來構(gòu)成了一個單片機(jī)電子時鐘。1.2 研究目的通過利用MCS-51單片機(jī)內(nèi)部的定時器/計數(shù)器功能、中斷系統(tǒng)功能、以及外圍的按鍵和LED顯示器等部件,設(shè)計一個基于單片機(jī)的電子時鐘。設(shè)計的電子時鐘通過數(shù)碼管顯示,并能通過按鍵對時間進(jìn)行設(shè)置。第二章、 電路涉及單片機(jī)概述2.1 單片機(jī)的概念 單片

9、機(jī)(MCU)可以定義為:一種把微處理器(CPU)、隨機(jī)存儲器(RAM)、只讀存儲器(ROM)、輸入/輸出(I/O)接口電路、定時器/計數(shù)器、串行通信接口及中斷系統(tǒng)等部件集成在同一塊芯片上的,具有完整功能的微型計算機(jī)。這塊芯片就是硬件,而軟件程序則存放在片內(nèi)的只讀存儲器中。2.2 單片機(jī)的發(fā)展史和發(fā)展趨勢2.2.1 單片機(jī)的發(fā)展歷史1974年12月,美國著名的仙童(Fairchild)公司推出了世界上第一臺單片機(jī)F8。該機(jī)有兩塊集成電路芯片組成,具有與眾不同的指令系統(tǒng),結(jié)構(gòu)奇特,深受民用電器和儀器儀表領(lǐng)域的歡迎和重視。從此單片機(jī)開始迅速發(fā)展,應(yīng)用范圍也在不斷擴(kuò)大,現(xiàn)已成為微型計算機(jī)的重要分支。單

10、片機(jī)的發(fā)展大致經(jīng)歷了外圍集成、總線完善、功能集成、全方位發(fā)展等技術(shù)發(fā)展階段,至今已走過了四代的歷程3。2.2.2 單片機(jī)的發(fā)展趨勢 當(dāng)前,單片機(jī)正朝著高性能和多品種方向發(fā)展。預(yù)計,單片機(jī)將進(jìn)一步向著CMOS化、低功耗、小體積、大容量、高性能、低價格和外圍電路內(nèi)裝化等幾個方向發(fā)展。2.3 單片機(jī)的特點 根據(jù)其結(jié)構(gòu)形式和所采用的半導(dǎo)體工藝,單片機(jī)具有以下主要特點:(1) 性價比高。(2) 集成度高、體積小、可靠性高。由于單片機(jī)將各個功能部件集成在一塊芯片上,且內(nèi)部采用總線結(jié)構(gòu),減少了各個芯片之間的連線,從而大大提高了單片機(jī)的可靠性與抗干擾能力。(3) 控制功能強(qiáng)。單片機(jī)中的指令系統(tǒng)中均有極豐富的轉(zhuǎn)

11、移指令、I/O接口的邏輯操作及位處理功能。(4) 低功耗、低電壓,便于生產(chǎn)便攜式產(chǎn)品。 (5) 外部總線增加了串行總線方式,進(jìn)一步縮小了體積,簡化了結(jié)構(gòu)。 (6) 單片機(jī)的系統(tǒng)擴(kuò)展和系統(tǒng)配置較典型、規(guī)范,易于構(gòu)成各種規(guī)模的應(yīng)用系統(tǒng)。2.4 MCS-51單片機(jī)的基本結(jié)構(gòu)2.4.1 MCS-51單片機(jī)的基本組成MCS-51單片機(jī)的基本組成如圖2.1所示。振蕩與定時電路CPU4KB/8KB程序存儲器21B特殊功能寄存器128B數(shù)據(jù)存儲器總線控制四個8位并行串口一個串型端口兩個16位定時器/計數(shù)器時鐘源計數(shù)輸入內(nèi)部總線內(nèi)部中斷信號外部中斷信號控制P0P1P2P3串行輸入并行輸出圖2.1 MCS-51單

12、片機(jī)的基本組成 從圖2.1中可以看出,MCS-51單片機(jī)內(nèi)部主要包括以下幾部分。(1) 一個8位CPUMCS-51單片機(jī)有一個8位CPU,包括運算器和控制器,并且具有面向控制的處理功能,不僅可以處理字節(jié)數(shù)據(jù)還可以進(jìn)行位變量的處理,如位處理、查表、狀態(tài)檢測、中斷處理等。(2) 數(shù)據(jù)RAM和特殊功能寄存器SFRMCS-51單片機(jī)片內(nèi)具有128B的數(shù)據(jù)RAM,片外最多可以擴(kuò)展到64KB。數(shù)據(jù)RAM用來存儲單片機(jī)運行期間的工作變量、運算的中間結(jié)果、數(shù)據(jù)暫存和緩沖、標(biāo)志位等。(3) 內(nèi)部程序ROMMCS-51單片機(jī)內(nèi)部具有4KB的程序ROM,片外最多可以擴(kuò)展到64KB??梢杂脕泶鎯τ脩舫绦颉?4) 兩個

13、定時器/計數(shù)器MCS-51單片機(jī)內(nèi)部具有兩個16位的定時器/計數(shù)器,具有四種工作方式??梢赃M(jìn)行精確地計時,又可以對外部事件進(jìn)行計數(shù)。(5) 四個8位可編程的I/O并行端口四個8位的I/O并行端口,其中P0口為雙向口,P1P3口為準(zhǔn)雙向口。(6) 一個串行通信端口串行口用來進(jìn)行串行異步通信,與PC機(jī)或者多個單片機(jī)實現(xiàn)主從通信或者構(gòu)成多機(jī)系統(tǒng)以實現(xiàn)更強(qiáng)的的功能。(7) 中斷控制系統(tǒng)MCS-51單片機(jī)具有五個固定的可屏蔽中斷源,三個在片內(nèi),兩個在片外,它們在程序存儲器中有各自的固定中斷入口地址,由此可以進(jìn)入中斷服務(wù)程序。(8) 內(nèi)部時鐘電路路單片機(jī)的時鐘信號用來提供單片機(jī)內(nèi)各種微操作的時間基準(zhǔn),有兩

14、種方法可以得到時鐘信號:一種是內(nèi)部振蕩方式;另一種是外部振蕩方式。2.4.2 AT89S51單片機(jī)的引腳 AT89S51單片機(jī)芯片采用40個引腳、雙列直插封裝(DIP)方式,引腳排列如圖2.2所圖2.2 MCS-51單片機(jī)的引腳排列第 28 頁 共 28 頁第三章、 系統(tǒng)設(shè)計3.1 設(shè)計方法及原理3.1.1 設(shè)計方法(1) 電子時鐘的顯示為XX(時):XX(分):XX(秒)(2) 電子時鐘的時間可調(diào)整,且調(diào)整方法為:按下調(diào)整鍵(S2)的時間小于1秒時(t<1s),關(guān)閉顯示。按下調(diào)整鍵(S2)的時間大于0.5秒時(t>0.5s)分鐘位閃亮,此時按下S2鍵(t<0.5s)該個位數(shù)

15、值加1,當(dāng)加到9時,再按下S2鍵則該個位顯示0,分鐘十位加1。繼續(xù)按下調(diào)整鍵(S2)(t>0.5s)時鐘位閃亮,此時按下S2鍵(t<0.5s)該個位數(shù)值加1,當(dāng)加到9時再按下加S2鍵則該個位顯示0,時鐘十位加1。繼續(xù)按下調(diào)整鍵(S2)(t>0.5s),返回到正常顯示狀態(tài)。3.1.2 電子時鐘原理在單片機(jī)內(nèi)部存儲器設(shè)三個字節(jié)分別存放時鐘的時、分、秒信息。利用定時器和相關(guān)軟件結(jié)合實現(xiàn)1秒定時中斷,每產(chǎn)生一次中斷,存儲器內(nèi)相應(yīng)的秒值加1;若秒值達(dá)到60,則將其清零,并將相應(yīng)的分字節(jié)值加1;若分值達(dá)到60,則清零分字節(jié),并將時字節(jié)值加1;若時值達(dá)到24,則將時字節(jié)清零。3.1.3 數(shù)

16、碼管顯示原理數(shù)碼管的顯示采用動態(tài)顯示。動態(tài)顯示就是指輪流的一位一位的點亮各個顯示位,對顯示器的每一位,采用每隔一段時間點亮一次。利用人的視覺暫留特點能夠看到整個顯示,但必須保證掃描速度夠快,字符才能不閃爍。顯示器的亮度既與導(dǎo)通電流有關(guān),也與點亮?xí)r間和間隔時間的比例有關(guān)。調(diào)整參數(shù)可以實現(xiàn)較高穩(wěn)定度的顯示4。因此采用動態(tài)顯示節(jié)省了I/O口,更降低了能量的消耗。3.2 總體設(shè)計3.2.1 系統(tǒng)說明利用單片機(jī)(AT89S51)制作電子時鐘,由六個LED數(shù)碼管分別顯示小時的十位、小時的個位、分鐘的十位、分鐘的個位、秒鐘的十位、秒鐘的個位。6個PNP管分別控制六個數(shù)碼管的亮滅,采用一個按鍵用于時間調(diào)整。3

17、.2.2 系統(tǒng)框圖 系統(tǒng)框圖如圖3.1所示。電源部分直流電源4.5V控制部分單片機(jī)(AT89S51)復(fù)位電路按鍵S2位選部分6個PNP三極管6個七段共陰極數(shù)碼管顯示秒、分、及小時位圖3.1 系統(tǒng)框圖3.3 模塊設(shè)計3.3.1 電源部分 圖3.2 電源部分如圖3.2所示,從外部引入4.5V的直流電,為單片機(jī)、復(fù)位電路提供電源。3.3.2 復(fù)位電路圖3.3 復(fù)位電路如圖3.3所示,復(fù)位電路主要由1N4148型的二極管, 10UF/16V型的電解電容, 104型的瓷片電容,10K的電阻以及按鍵S1構(gòu)成,S1接芯片的相應(yīng)引腳RST,當(dāng)開關(guān)按下時引腳RST為高電平1,斷開時引腳為低電平0。3.3.3 數(shù)

18、碼管的連接電路圖3.4 數(shù)碼管連接電路圖3.4為LED數(shù)碼管的連接電路,每位的段碼線(a,b,c,d,e,f,g,dp)分別與1個8位的鎖存器輸出相連,由AT89S51控制組合09十個數(shù)據(jù),如令其顯示1則b,c引腳(即2,3引腳)送高電平,此時數(shù)碼管顯示1。由于各位的段碼線并聯(lián),8位I/O口輸出段碼對各個顯示位來說都是相同的。3.3.4 控制部分 如圖3.5所示。圖3.5 控制電路第四章、 軟件設(shè)計4.1 程序流程圖圖4.1描述的是主程序的流程圖,程序開始運行,首先初始化定時器的常數(shù),設(shè)置好T0中斷入口,然后進(jìn)入一個循環(huán),等待中斷T0的到來。圖4.2描述的是一次T0中斷的過程。進(jìn)入中斷,首先現(xiàn)

19、場保護(hù),然后重新設(shè)定定時器初值;然后判斷本輪中斷的次數(shù)是否滿20次,如果不是,則還沒增加到1秒,如果滿20次,然后時間增加1秒,分鐘和時鐘的變化也按相應(yīng)規(guī)則隨之改變。做完上面操作之后,恢復(fù)進(jìn)入中斷前的現(xiàn)場,退出中斷,到此一次中斷結(jié)束。圖4.3描述的是時鐘調(diào)整的程序的執(zhí)行過程。這個過程,根據(jù)按鍵S2的時間去判斷執(zhí)行何種操作。T0中斷現(xiàn)場保護(hù)重裝定時器初值滿20次否秒值加1Y滿60秒否秒緩沖單元清零Y分值加1滿60分否分緩沖單元清零Y時值加1滿24小時否時緩沖單元清零Y恢復(fù)現(xiàn)場結(jié)束NNNN主程序開始設(shè)定定時器常數(shù)開中斷到1秒?顯示時間YN圖4.1 主程序流程圖 圖4.2 T0流程圖時鐘調(diào)整程序按鍵

20、S2時間t>1Y分鐘閃爍,調(diào)時狀態(tài)按鍵S2時間t<0.5Y分值加1分值=60?Y分值清零N關(guān)閉顯示(省電)時鐘閃爍,調(diào)時狀態(tài)NN時值加1時值=24時值清零YY顯示返回YNNS2是否按下按鍵S2時間t<0.5圖4.3 時鐘調(diào)整的程序流程圖 4.2 源程序表4.1 P1口對應(yīng)段碼及數(shù)值顯示數(shù)字P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.016進(jìn)制代碼dpgfedcba0001111113FH10000011006H2010110115BH3010011114FH40110011066H5011011016DH6011111017DH70000011107H801

21、1111117FH9011011116FH4.2.1 中斷入口程序ORG 0000H;程序執(zhí)行開始地址LJMP START;跳到標(biāo)號START執(zhí)行ORG 0003H;外中斷0中斷程序入口RETI ;外中斷0中斷返回ORG 000BH;定時器T0中斷程序入口LJMP INTT0;跳至INTTO執(zhí)行ORG 0013H;外中斷1中斷程序入口RETI ;外中斷1中斷返回ORG 001BH;定時器T1中斷程序入口LJMP INTT1;跳至INTT1執(zhí)行ORG 0023H;串行中斷程序入口地址RETI ;串行中斷程序返回4.2.2 主程序 START: MOV R0, # 70H ;清70H-7AH共11

22、個內(nèi)存單元 MOV R7, # 0BH CLR P3.7CLEARDISP: MOV R0, # 00H INC R0 DJNZ R7, CLEARDISP MOV 20H, # 00H ;清20H(標(biāo)志用) MOV 7AH, # 0AH ;放入"熄滅符"數(shù)據(jù) MOV TMOD, # 11H ;設(shè)T0、T1為16位定時器 MOV TL0, # 0B0H ;50MS定時初值(T0計時用) MOV TH0, # 3CH ;50MS定時初值MOV TL1, # 0B0H ;50MS定時初值(T1閃爍定時用)MOV TH1, # 3CH ;50MS定時初值 SETB EA ;總中斷

23、開放 SETB ET0 ;允許T0中斷 SETB TR0 ;開啟T0定時器 MOV R4, # 14H ;1秒定時用初值(50MS×20) START1: LCALL DISPLAY ;調(diào)用顯示子程序 JNB P3.7, SETMM1 ;P3.7口為0時轉(zhuǎn)時間調(diào)整程序 SJMP START1 ;P3.7口為1時跳回START1 SETMM1: LJMP SETMM ;轉(zhuǎn)到時間調(diào)整程序SETMM4.2.3 1秒計時程序 INTT0: PUSH ACC ;累加器入棧保護(hù) PUSH PSW ;狀態(tài)字入棧保護(hù) CLR ET0 ;關(guān)T0中斷允許 CLR TR0 ;關(guān)閉定時器T0 MOV A,

24、# 0B7H ;中斷響應(yīng)時間同步修正 ADD A, TL0 ;低8位初值修正 MOV TL0, A ;重裝初值(低8位修正值) MOV A, # 3CH ;高8位初值修正 ADDC A, TH0 MOV TH0, A ;重裝初值(高8位修正值) SETB TR0 ;開啟定時器T0 DJNZ R4, OUTT0 ;20次中斷未到中斷退出 ADDSS: MOV R4, # 14H ;20次中斷到(1秒)重賦初值 MOV R0, # 71H ;指向秒計時單元(71H-72H) ACALL ADD1 ;調(diào)用加1程序(加1秒操作) MOV A, R3 ;秒數(shù)據(jù)放入A(R3為2位十進(jìn)制數(shù)組合) CLR C

25、 ;清進(jìn)位標(biāo)志 CJNE A, # 60H, ADDMM ADDMM: JC OUTT0 ;小于60秒時中斷退出 ACALL CLR0 ;大于或等于60秒時對秒計時單元清0 MOV R0, # 77H ;指向分計時單元(76H-77H) ACALL ADD1 ;分計時單元加1分鐘 MOV A, R3 ;分?jǐn)?shù)據(jù)放入A CLR C ;清進(jìn)位標(biāo)志 CJNE A, # 60H, ADDHH ADDHH: JC OUTT0 ;小于60分時中斷退出 ACALL CLR0 ;大于或等于60分時分計時單元清0 MOV R0, # 79H ;指向小時計時單(78H-79H) ACALL ADD1 ;小時計時單元

26、加1小時 MOV A, R3 ;時數(shù)據(jù)放入A CLR C ;清進(jìn)位標(biāo)志 CJNE A, # 24H, HOUR HOUR: JC OUTT0 ;小于24小時中斷退出 ACALL CLR0 ;大于或等于24小時小時計時單元清0 OUTT0: MOV 72H, 76H ;中斷退出時將分、時計時單元數(shù)據(jù)移 MOV 73H, 77H ;入對應(yīng)顯示單元 MOV 74H, 78H MOV 75H, 79H POP PSW ;恢復(fù)狀態(tài)字(出棧) POP ACC ;恢復(fù)累加器 SETB ET0 ;開放T0中斷 RETI ;中斷返回4.2.4 閃動調(diào)時程序T1中斷服務(wù)程序,用作時間調(diào)整時調(diào)整單元閃爍指示INTT

27、1: PUSH ACC ;中斷現(xiàn)場保護(hù) PUSH PSW MOV TL1, #0B0H ;裝定時器T1定時初值 MOV TH1, #3CH DJNZ R2,INTT1OUT ;0.3秒未到退出中斷(50MS中斷6次) MOV R2, #06H ;重裝0.3秒定時用初值 CPL 02H ;0.3秒定時到對閃爍標(biāo)志取反 JB 02H, FLASH1 ;02H位為1時顯示單元"熄滅" MOV 72H, 76H ;02H位為0時正常顯示 MOV 73H, 77H MOV 74H, 78H MOV 75H, 79H INTT1OUT: POP PSW ;恢復(fù)現(xiàn)場 POP ACC RE

28、TI ;中斷退出FLASH1: JB 01H, FLASH2 ;01H位為1時,轉(zhuǎn)小時熄滅控制 MOV 72H, 7AH ;01H位為0時,"熄滅符"數(shù)據(jù)放入分 MOV 73H, 7AH ;顯示單元(72H-73H),將不顯示分?jǐn)?shù)據(jù) MOV 74H, 78H MOV 75H, 79H AJMP INTT1OUT ;轉(zhuǎn)中斷退出FLASH2: MOV 72H, 76H ;01H位為1時,"熄滅符"數(shù)據(jù)放入小時 MOV 73H, 77H ;顯示單元(74H-75H),小時數(shù)據(jù)將不顯示 MOV 74H, 7AH MOV 75H, 7AH AJMP INTT1OU

29、T ;轉(zhuǎn)中斷退出4.2.5 加1子程序 ADD1: MOV A, R0 ;取當(dāng)前計時單元數(shù)據(jù)到A DEC R0 ;指向前一地址 SWAP A ;A中數(shù)據(jù)高四位與低四位交換 ORL A, R0 ;前一地址中數(shù)據(jù)放入A中低四位 ADD A, #01H ;A加1操作 DA A ;十進(jìn)制調(diào)整 MOV R3,A ;移入R3寄存器 ANL A, #0FH ;高四位變0 MOV R0,A ;放回前一地址單元 MOV A, R3 ;取回R3中暫存數(shù)據(jù) INC R0 ;指向當(dāng)前地址單元 SWAP A ;A中數(shù)據(jù)高四位與低四位交換 ANL A, #0FH ;高四位變0 MOV R0,A ;數(shù)據(jù)放入當(dāng)削地址單元中

30、RET ;子程序返回4.2.6 清零程序 對計時單元清零用 CLR0: CLR A ;清累加器 MOV R0,A ;清當(dāng)前地址單元 DEC R0 ;指向前一地址 MOV R0,A ;前一地址單元清0 RET ;子程序返回4.2.7 時鐘調(diào)整程序當(dāng)調(diào)時按鍵按下時進(jìn)入此程序 SETMM: CLR ET0 ;關(guān)定時器T0中斷 CLR TR0 ;關(guān)閉定時器T0 LCALL DL1S ;調(diào)用1秒延時程序 JB P3.7,CLOSEDIS ;鍵按下時間小于1秒,關(guān)閉顯示 MOV R2, #06H ;進(jìn)入調(diào)時狀態(tài),賦閃爍定時初值 SETB ET1 ;允許T1中斷 SETB TR1 ;開啟定時器T1 SET2

31、: JNB P3.7,SET1 ;P3.7口為0(鍵未釋放),等待 SETB 00H ;鍵釋放,分調(diào)整閃爍標(biāo)志置1 SET4: JB P3.7,SET3 ;等待鍵按下 LCALL DL05S ;有鍵按下,延時0.5秒 JNB P3.7,SETHH ;按下時間大于0.5秒轉(zhuǎn)調(diào)小時狀態(tài) MOV R0, #77H ;按下時間小于0.5秒加1分鐘操作 LCALL ADD1 ;調(diào)用加1子程序 MOV A,R3 ;取調(diào)整單元數(shù)據(jù) CLR C ;清進(jìn)位標(biāo)志 CJNE A, #60H,HHH ;調(diào)整單元數(shù)據(jù)與60比較 HHH: JC SET4 ;調(diào)整單元數(shù)據(jù)小于60轉(zhuǎn)SET4循環(huán) LCALL CLR0 ;調(diào)整

32、單元數(shù)據(jù)大于或等于60時清0 CLR C ;清進(jìn)位標(biāo)志 AJMP SET4 ;跳轉(zhuǎn)到SET4循環(huán)CLOSEDIS: SETB ET0 ;省電狀態(tài)。開T0中斷 SETB TR0 ;開啟T0定時器(開時鐘) CLOSE: JB P3.7,CLOSE ;無按鍵按下,等待。 LCALL DISPLAY ;有鍵按下,調(diào)顯示子程序延時削抖 JB P3.7,CLOSE ;是干擾返回CLOSE等待 WAITH: JNB P3.7,WAITH ;等待鍵釋放 LJMP START1 ;返回主程序(LED數(shù)據(jù)顯示亮) SETHH: CLR 00H ;分閃爍標(biāo)志清除(進(jìn)入調(diào)小時狀態(tài)) SETHH1: JNB P3.7

33、,SET5 ;等待鍵釋放 SETB 01H ;小時調(diào)整標(biāo)志置1 SET6: JB P3.7, SET7 ;等待按鍵按下 LCALL DL05S ;有鍵按下延時0.5秒 JNB P3.7, SETOUT ;按下時間大于0.5秒退出時間調(diào)整 MOV R0, #79H ;按下時間小于0.5秒加1小時操作 LCALL ADD1 ;調(diào)加1子程序 MOV A, R3 CLR C CJNE A, #24H,HOUU ;計時單元數(shù)據(jù)與24比較 HOUU: JC SET6 ;小于24轉(zhuǎn)SET6循環(huán) LCALL CLR0 ;大于或等于24時清0操作 AJMP SET6 ;跳轉(zhuǎn)到SET6循環(huán) SETOUT: JNB

34、 P3.7,SETOUT1 ;調(diào)時退出程序。等待鍵釋放 LCALL DISPLAY ;延時削抖 JNB P3.7,SETOUT ;是抖動,返回SETOUT再等待 CLR 01H ;清調(diào)小時標(biāo)志 CLR 00H ;清調(diào)分標(biāo)志 CLR 02H ;清閃爍標(biāo)志 CLR TR1 ;關(guān)閉定時器T1 CLR ET1 ;關(guān)定時器T1中斷 SETB TR0 ;開啟定時器T0 SETB ET0 ;開定時器T0中斷(計時開始) LJMP START1 ;跳回主程序 SET1: LCALL DISPLAY ;鍵釋放等待時調(diào)用顯示程序(調(diào)分) AJMP SET2 ;防止鍵按下時無時鐘顯示 SET3: LCALL DIS

35、PLAY ;等待調(diào)分按鍵時時鐘顯示用 AJMP SET4 SET5: LCALL DISPLAY ;鍵釋放等待時調(diào)用顯示程序(調(diào)小時) AJMP SETHH1 ;防止鍵按下時無時鐘顯示 SET7: LCALL DISPLAY ;等待調(diào)小時按鍵時時鐘顯示用 AJMP SET6 SETOUT1: LCALL DISPLAY ;退出時鐘調(diào)整時鍵釋放等待 AJMP SETOUT ;防止鍵按下時無時鐘顯示4.2.8 顯示程序 顯示數(shù)據(jù)在70H-75H單元內(nèi),用六位LED共陽數(shù)碼管顯示,P0口輸出段碼數(shù)據(jù),P3口作掃描控制,每個LED數(shù)碼管亮1MS時間再逐位循環(huán)。 DISPLAY: MOV R1,#70H ;指向顯示數(shù)據(jù)首址 MOV R5,#0FEH ;掃描控制字初值 PLAY: MOV A,R5 ;掃描字放入A MOV P2,A ;從P2口輸出 MOV A,R1 取顯示數(shù)據(jù)到A MOV DPTR,#TAB ;取段碼表地址 MOVC A,A+DPTR ;查顯示數(shù)據(jù)對應(yīng)段碼 MOV P1,A ;段碼放入P0口 LCALL DL1MS ;顯示1MS INC R1 ;指向下一地址 MOV A,R5 ;掃描控制字放入A JNB ACC.5,ENDOUT ;ACC.5=0時一次顯示結(jié)束

溫馨提示

  • 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

提交評論