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

下載本文檔

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

文檔簡介

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

2、構(gòu)成了一個(gè)單片機(jī)電子時(shí)鐘。關(guān)鍵詞:單片機(jī),AT89S51,電子時(shí)鐘,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 also to f

3、urther 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 clock on th

4、e 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-51 micr

5、ocontroller'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 概述51.2

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

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

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

9、機(jī)存儲器(RAM)、只讀存儲器(ROM)、輸入/輸出(I/O)接口電路、定時(shí)器/計(jì)數(shù)器、串行通信接口及中斷系統(tǒng)等部件集成在同一塊芯片上的,具有完整功能的微型計(jì)算機(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ì)算機(jī)的重要分支。單片機(jī)的發(fā)展大致經(jīng)歷了外圍集成、總線完善、功能集成、全

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

11、功耗、低電壓,便于生產(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所示。振蕩與定時(shí)電路CPU4KB/8KB程序存儲器21B特殊功能寄存器128B數(shù)據(jù)存儲器總線控制四個(gè)8位并行串口一個(gè)串型端口兩個(gè)16位定時(shí)器/計(jì)數(shù)器時(shí)鐘源計(jì)數(shù)輸入內(nèi)部總線內(nèi)部中斷信號外部中斷信號控制P0P1P2P3串行輸入并行輸出圖2.1 MCS-51單片機(jī)的基本組成 從圖2.1中可以看出,MCS-51單

12、片機(jī)內(nèi)部主要包括以下幾部分。(1) 一個(gè)8位CPUMCS-51單片機(jī)有一個(gè)8位CPU,包括運(yùn)算器和控制器,并且具有面向控制的處理功能,不僅可以處理字節(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ī)運(yùn)行期間的工作變量、運(yùn)算的中間結(jié)果、數(shù)據(jù)暫存和緩沖、標(biāo)志位等。(3) 內(nèi)部程序ROMMCS-51單片機(jī)內(nèi)部具有4KB的程序ROM,片外最多可以擴(kuò)展到64KB??梢杂脕泶鎯τ脩舫绦颉?4) 兩個(gè)定時(shí)器/計(jì)數(shù)器MCS-51單片機(jī)內(nèi)部具有兩個(gè)16位的

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

14、外部振蕩方式。2.4.2 AT89S51單片機(jī)的引腳 AT89S51單片機(jī)芯片采用40個(gè)引腳、雙列直插封裝(DIP)方式,引腳排列如圖2.2所圖2.2 MCS-51單片機(jī)的引腳排列第三章、 系統(tǒng)設(shè)計(jì)3.1 設(shè)計(jì)方法及原理3.1.1 設(shè)計(jì)方法(1) 電子時(shí)鐘的顯示為XX(時(shí)):XX(分):XX(秒)(2) 電子時(shí)鐘的時(shí)間可調(diào)整,且調(diào)整方法為:按下調(diào)整鍵(S2)的時(shí)間小于1秒時(shí)(t<1s),關(guān)閉顯示。按下調(diào)整鍵(S2)的時(shí)間大于0.5秒時(shí)(t>0.5s)分鐘位閃亮,此時(shí)按下S2鍵(t<0.5s)該個(gè)位數(shù)值加1,當(dāng)加到9時(shí),再按下S2鍵則該個(gè)位顯示0,分鐘十位加1。繼續(xù)按下調(diào)整鍵(

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

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

17、片機(jī)(AT89S51)復(fù)位電路按鍵S2位選部分6個(gè)PNP三極管6個(gè)七段共陰極數(shù)碼管顯示秒、分、及小時(shí)位圖3.1 系統(tǒng)框圖3.3 模塊設(shè)計(jì)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)按下時(shí)引腳RST為高電平1,斷開時(shí)引腳為低電平0。3.3.3 數(shù)碼管的連接電路圖3.4 數(shù)碼管連接電路圖3.4為LED數(shù)碼管的連接電路,每位的

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

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

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

21、00H;程序執(zhí)行開始地址LJMP START;跳到標(biāo)號START執(zhí)行ORG 0003H;外中斷0中斷程序入口RETI ;外中斷0中斷返回ORG 000BH;定時(shí)器T0中斷程序入口LJMP INTT0;跳至INTTO執(zhí)行ORG 0013H;外中斷1中斷程序入口RETI ;外中斷1中斷返回ORG 001BH;定時(shí)器T1中斷程序入口LJMP INTT1;跳至INTT1執(zhí)行ORG 0023H;串行中斷程序入口地址RETI ;串行中斷程序返回4.2.2 主程序 START: MOV R0, # 70H ;清70H-7AH共11個(gè)內(nèi)存單元 MOV R7, # 0BH CLR P3.7CLEARDISP:

22、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位定時(shí)器 MOV TL0, # 0B0H ;50MS定時(shí)初值(T0計(jì)時(shí)用) MOV TH0, # 3CH ;50MS定時(shí)初值MOV TL1, # 0B0H ;50MS定時(shí)初值(T1閃爍定時(shí)用)MOV TH1, # 3CH ;50MS定時(shí)初值 SETB EA ;總中斷開放 SETB ET0 ;允許T0中斷 SETB TR0 ;開啟T0定時(shí)器 M

23、OV R4, # 14H ;1秒定時(shí)用初值(50MS×20) START1: LCALL DISPLAY ;調(diào)用顯示子程序 JNB P3.7, SETMM1 ;P3.7口為0時(shí)轉(zhuǎn)時(shí)間調(diào)整程序 SJMP START1 ;P3.7口為1時(shí)跳回START1 SETMM1: LJMP SETMM ;轉(zhuǎn)到時(shí)間調(diào)整程序SETMM4.2.3 1秒計(jì)時(shí)程序 INTT0: PUSH ACC ;累加器入棧保護(hù) PUSH PSW ;狀態(tài)字入棧保護(hù) CLR ET0 ;關(guān)T0中斷允許 CLR TR0 ;關(guān)閉定時(shí)器T0 MOV A, # 0B7H ;中斷響應(yīng)時(shí)間同步修正 ADD A, TL0 ;低8位初值修正

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

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

26、E A, # 24H, HOUR HOUR: JC OUTT0 ;小于24小時(shí)中斷退出 ACALL CLR0 ;大于或等于24小時(shí)小時(shí)計(jì)時(shí)單元清0 OUTT0: MOV 72H, 76H ;中斷退出時(shí)將分、時(shí)計(jì)時(shí)單元數(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 閃動(dòng)調(diào)時(shí)程序T1中斷服務(wù)程序,用作時(shí)間調(diào)整時(shí)調(diào)整單元閃爍指示INTT1: PUSH ACC ;中斷現(xiàn)場保護(hù) PUSH PSW MOV TL1, #

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

28、,轉(zhuǎn)小時(shí)熄滅控制 MOV 72H, 7AH ;01H位為0時(shí),"熄滅符"數(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í),"熄滅符"數(shù)據(jù)放入小時(shí) MOV 73H, 77H ;顯示單元(74H-75H),小時(shí)數(shù)據(jù)將不顯示 MOV 74H, 7AH MOV 75H, 7AH AJMP INTT1OUT ;轉(zhuǎn)中斷退出4.2.5 加1子程序 ADD1: MOV A, R0 ;取當(dāng)

29、前計(jì)時(shí)單元數(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)削地址單元中 RET ;子程序返回4.2.6 清零程序 對計(jì)時(shí)單元清零用 CLR0: CLR

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

31、00H ;鍵釋放,分調(diào)整閃爍標(biāo)志置1 SET4: JB P3.7,SET3 ;等待鍵按下 LCALL DL05S ;有鍵按下,延時(shí)0.5秒 JNB P3.7,SETHH ;按下時(shí)間大于0.5秒轉(zhuǎn)調(diào)小時(shí)狀態(tài) MOV R0, #77H ;按下時(shí)間小于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)整單元數(shù)據(jù)大于或等于60時(shí)清0 CLR C ;清進(jìn)位標(biāo)志 AJMP SET4 ;

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

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

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

35、L DISPLAY ;鍵釋放等待時(shí)調(diào)用顯示程序(調(diào)小時(shí)) AJMP SETHH1 ;防止鍵按下時(shí)無時(shí)鐘顯示 SET7: LCALL DISPLAY ;等待調(diào)小時(shí)按鍵時(shí)時(shí)鐘顯示用 AJMP SET6 SETOUT1: LCALL DISPLAY ;退出時(shí)鐘調(diào)整時(shí)鍵釋放等待 AJMP SETOUT ;防止鍵按下時(shí)無時(shí)鐘顯示4.2.8 顯示程序 顯示數(shù)據(jù)在70H-75H單元內(nèi),用六位LED共陽數(shù)碼管顯示,P0口輸出段碼數(shù)據(jù),P3口作掃描控制,每個(gè)LED數(shù)碼管亮1MS時(shí)間再逐位循環(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時(shí)一次顯示結(jié)束 RL

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論