版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、26/28課程設(shè)計(jì) 題 目 基于單片機(jī)的數(shù)字鬧鐘設(shè)計(jì)系統(tǒng) 學(xué)生 學(xué) 號(hào) 學(xué) 院 電子與信息工程專 業(yè) 信息工程二一年十二月二十五日目錄TOC o 1-2 h z uHYPERLINK l _Toc2811313531系統(tǒng)概述 PAGEREF _Toc281131353 h 2HYPERLINK l _Toc2811313542 AT89C51單片機(jī)簡(jiǎn)介 PAGEREF _Toc281131354 h 2HYPERLINK l _Toc2811313553 硬件系統(tǒng)設(shè)計(jì) PAGEREF _Toc281131355 h 3HYPERLINK l _Toc2811313563.1系統(tǒng)框架設(shè)計(jì) PAG
2、EREF _Toc281131356 h 3HYPERLINK l _Toc2811313573.2模塊設(shè)計(jì) PAGEREF _Toc281131357 h 4HYPERLINK l _Toc2811313584 軟件系統(tǒng)設(shè)計(jì) PAGEREF _Toc281131358 h 10HYPERLINK l _Toc2811313594.1主程序設(shè)計(jì) PAGEREF _Toc281131359 h 10HYPERLINK l _Toc2811313604.2源程序 PAGEREF _Toc281131360 h 15HYPERLINK l _Toc2811313615 總結(jié) PAGEREF _Toc
3、281131361 h 24HYPERLINK l _Toc2811313626 參考文獻(xiàn) PAGEREF _Toc281131362 h 25基于單片機(jī)的數(shù)字鬧鐘系統(tǒng)設(shè)計(jì)鵬信息工程大學(xué)電子與信息工程學(xué)院信息工程系, 210044摘要:隨著計(jì)算機(jī)在社會(huì)領(lǐng)域的滲透和大規(guī)模集成電路的發(fā)展,單片機(jī)的應(yīng)用正在不斷地走向深入,由于它具有功能強(qiáng),體積小,功耗低,價(jià)格便宜,工作可靠,使用方便等特點(diǎn),因此特別適合于與控制有關(guān)的系統(tǒng),越來越廣泛地應(yīng)用于工業(yè)自動(dòng)化控制、自動(dòng)檢測(cè)、智能儀器儀表、家用電器、電力電子、機(jī)電一體化設(shè)備等各個(gè)方面。本文介紹了基于單片機(jī)的數(shù)字鬧鐘系統(tǒng)??梢栽O(shè)置現(xiàn)在的時(shí)間與顯示鬧鈴設(shè)置時(shí)間,若
4、時(shí)間到則發(fā)出一分鐘鬧鈴響。本系統(tǒng)主要用到AT89C51單片機(jī)定時(shí)器時(shí)間計(jì)時(shí)處理、按鍵掃描與七段顯示器掃描的設(shè)計(jì)方法等等。關(guān)鍵字:?jiǎn)纹瑱C(jī);AT89C51;數(shù)字鬧鐘Microcontroller Based Digital Clock SystemLi PengDept. Information Engineering, NanjingUniversity of Information Science & Technology, 210044ABSTRACTWith computers in the in filtration and the development of large-scale
5、integrated circuits.SCM application is steadily deepening, as it has strong function, small size, low power dissipation, low prices, reliable, easy to use features, it is particularly suited to and control of the system, increasingly widely used in industrial automationcontrol,automatic examination,
6、intelligence instrument appearance,home appliances,electric power electronics,the machine electricity integral whole etc.This article describes the number of alarm systems based on single chip. You can set the time and display the current alarm setting time, if the time to issue the alarm goes off i
7、n one minute. The system is mainly used in processing time AT89C51 microcontroller timer time, and the seven-segment display key scan method of scanning the design and so on.Keywords: Microcontroller;AT89C51;Digital Clock1系統(tǒng)概述數(shù)字電子鐘具有走時(shí)準(zhǔn)確,一鐘多用等特點(diǎn),在生活中已經(jīng)得到廣泛的應(yīng)用。近些年,人們對(duì)數(shù)字鐘的要求也越來越高,傳統(tǒng)的時(shí)鐘已不能滿足人們的需求。多功能數(shù)字
8、鐘不管在性能還是在樣式上都發(fā)生了質(zhì)的變化,有電子鬧鐘、數(shù)字鬧鐘等等。單片機(jī)具有體積小、功能強(qiáng)可靠性高、價(jià)格低廉等一系列優(yōu)點(diǎn),不僅已成為工業(yè)測(cè)控領(lǐng)域普遍采用的智能化控制工具,而且已滲入到人們工作和和生活的各個(gè)角落,有力地推動(dòng)了各行業(yè)的技術(shù)改造和產(chǎn)品的更新?lián)Q代,應(yīng)用前景廣闊。單片機(jī)在多功能數(shù)字鐘中的應(yīng)用已是非常普遍的,人們對(duì)數(shù)字鐘的功能與工作順序都非常熟悉,但是卻很少知道它的部結(jié)構(gòu)以與工作原理。由單片機(jī)作為數(shù)字鐘的核心控制器,可以通過它的時(shí)鐘信號(hào)進(jìn)行計(jì)時(shí)實(shí)現(xiàn)計(jì)時(shí)功能,將其時(shí)間數(shù)據(jù)經(jīng)單片機(jī)輸出,利用顯示器顯示出來。通過鍵盤可以進(jìn)行定時(shí)、校時(shí)功能。輸出設(shè)備顯示器可以用液晶顯示技術(shù)和數(shù)碼管顯示技術(shù)。本文
9、所述數(shù)字鬧鐘設(shè)計(jì)主要指時(shí)鐘顯示、時(shí)間設(shè)置、整點(diǎn)報(bào)時(shí)等控制系統(tǒng)。本文采用AT89C51型單片機(jī)為核心實(shí)現(xiàn)智能時(shí)鐘控制,至所以選擇AT89C51型單片機(jī)而沒有選擇其他單片機(jī)主要原因在于AT89C51型單片機(jī)進(jìn)入市場(chǎng)時(shí)間早、總線開放、仿真開發(fā)設(shè)備多、芯片與其開發(fā)設(shè)備價(jià)格低廉、速度較快、電磁兼容性較好的。AT89C51單片機(jī)與工業(yè)標(biāo)準(zhǔn)的MCS-51的各方面性能比較,其最大的特點(diǎn)是只讀存儲(chǔ)器可以反復(fù)擦除,是一種精簡(jiǎn)版本高效微控制器,AT89C51單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。2 AT89C51單片機(jī)簡(jiǎn)介AT89S51是一個(gè)低功耗,高性能CMOS 8位單片機(jī),片含4k Byte
10、s ISP(In-system programmable)的可反復(fù)擦寫1000次的Flash只讀程序存儲(chǔ)器,器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)制造,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)與80C51引腳結(jié)構(gòu),芯片集成了通用8位中央處理器和ISP Flash存儲(chǔ)單元,功能強(qiáng)大的微型計(jì)算機(jī)的AT89S51可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價(jià)比的解決方案。AT89S51具有如下特點(diǎn):40個(gè)引腳,4k Bytes Flash片程序存儲(chǔ)器,128 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),32個(gè)外部雙向輸入/輸出(I/O)口,5個(gè)中斷優(yōu)先級(jí)2層中斷嵌套中斷,2個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行
11、通信口,看門狗(WDT)電路,片時(shí)鐘振蕩器。 此外,AT89S51設(shè)計(jì)和配置了振蕩頻率可為0Hz并可通過軟件設(shè)置省電模式??臻e模式下,CPU暫停工作,而RAM定時(shí)計(jì)數(shù)器,串行口,外中斷系統(tǒng)可繼續(xù)工作,掉電模式凍結(jié)振蕩器而保存RAM的數(shù)據(jù),停止芯片其它功能直至外中斷激活或硬件復(fù)位。同時(shí)該芯片還具有PDIP、TQFP和PLCC等三種封裝形式,以適應(yīng)不同產(chǎn)品的需求。 主要特性: 8031 CPU與MCS-51 兼容 4K字節(jié)可編程FLASH存儲(chǔ)器(壽命:1000寫/擦循環(huán)) 全靜態(tài)工作:0Hz-33MHz 三級(jí)程序存儲(chǔ)器XX鎖定 128*8位部RAM 32條可編程I/O線 兩個(gè)16位定時(shí)器/計(jì)數(shù)器
12、6個(gè)中斷源 可編程串行通道 低功耗的閑置和掉電模式 片振蕩器和時(shí)鐘電路 3 硬件系統(tǒng)設(shè)計(jì)3.1系統(tǒng)框架設(shè)計(jì)系統(tǒng)框架如圖1復(fù)位電路蜂鳴器整點(diǎn)報(bào)時(shí)按鍵k1、k2、k3K4、k5電源部分,直流電5v段選8個(gè)七段共陰極數(shù)碼管顯示秒、分鐘、小時(shí)日、月、年位選部分接p2口控制部分單片機(jī)(AT89C51)圖1 系統(tǒng)框架圖3.2模塊設(shè)計(jì)3.2.1單片機(jī)系統(tǒng)電路AT89C51芯片外形與引腳分布如圖2圖2 AT89C51芯片外形與引腳分布圖如圖2所示,AT89C51有40引腳,雙列直插(DIP)封裝,所用引腳功能如下:VCC 運(yùn)行時(shí)加5VGND 接地XTAL1 振蕩器反相放大器與部時(shí)鐘發(fā)生器的輸入端XTAL2 振
13、蕩器反相放大器的輸出端RST 復(fù)位輸入,高電平有效,在晶振工作時(shí),在RST引腳上作用2個(gè)機(jī)器周期以上的高電平,將使單片機(jī)復(fù)位。WDT溢出將使該引腳輸出高電平,設(shè)置SFT AUXR的DISRTO位(地址8EH)可打開或關(guān)閉該功能。DISRTO位缺省為RESET輸出高電平打開狀態(tài)。EA/VPP 片外程序存儲(chǔ)器訪問允許信號(hào)。欲使CPU僅訪問外部程序存儲(chǔ)器(地址為0000H-FFFFH),EA端必須保持低電平(接地),如果EA端為高電平(接Vcc端),CPU則執(zhí)行部程序存儲(chǔ)器中的指令。P1口,P2口P1,P2是一組帶部上拉電阻的8位雙向I/O口。運(yùn)行時(shí)通過P1口控制驅(qū)動(dòng)電路的工作,將數(shù)據(jù)送到數(shù)碼管,顯
14、示相應(yīng)的段碼,為了達(dá)到減少功耗或滿足端口對(duì)最大電流的限制,應(yīng)加上一限流電阻。P2.0P2.7口控制數(shù)碼管的位選,使六個(gè)數(shù)碼管輪流顯示數(shù)據(jù),等于0時(shí)位選三極管導(dǎo)通,等于1 時(shí)位選三極管截止。無自鎖開關(guān)(S2P3.7)開關(guān)接相應(yīng)引腳P3.7,當(dāng)開關(guān)按下時(shí),相應(yīng)引腳為低電平0,斷開時(shí)引腳為高電平1。3.2.2 復(fù)位電路單片機(jī)復(fù)位的條件是:必須使RST/VPD 或RST引(9)加上持續(xù)兩個(gè)機(jī)器周期(即24個(gè)振蕩周期)的高電平。例如,若時(shí)鐘頻率為12 MHz,每機(jī)器周期為1s,則只需2s以上時(shí)間的高電平,在RST引腳出現(xiàn)高電平后的第二個(gè)機(jī)器周期執(zhí)行復(fù)位。單片機(jī)常見的復(fù)位如圖所示。電路為上電復(fù)位電路,它是
15、利用電容充電來實(shí)現(xiàn)的。在接電瞬間,RESET端的電位與VCC相同,隨著充電電流的減少,RESET的電位逐漸下降。只要保證RESET為高電平的時(shí)間大于兩個(gè)機(jī)器周期,便能正常復(fù)位。該電路除具有上電復(fù)位功能外,若要復(fù)位,只需按圖中的RESET鍵,此時(shí)電源VCC經(jīng)電阻R1、R2分壓,在RESET端產(chǎn)生一個(gè)復(fù)位高電平。復(fù)位電路設(shè)計(jì)如圖3圖3復(fù)位電路3.2.3晶振電路晶振電路設(shè)計(jì)如圖4圖4晶振電路XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時(shí)鐘源驅(qū)動(dòng)器件,XTAL1應(yīng)不接。有余輸入至部時(shí)鐘信號(hào)要通過一個(gè)二分頻觸發(fā)器,因此對(duì)外部時(shí)
16、鐘信號(hào)的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。C1,C2在是電時(shí)幫助晶振起振。3.3.4數(shù)碼管顯示驅(qū)動(dòng)電路數(shù)碼管點(diǎn)亮田:段選和位選,結(jié)合圖5,圖6abcdegGNDfdpGNDabcefgddpabcdefgdpdpgfedcba5V(a)(b)共陰極共陽極圖5數(shù)碼管引腳圖(a) (b)圖6 位選電路圖5為數(shù)碼管的引腳圖,每位的段碼線(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口輸出段碼對(duì)各個(gè)顯示位來說都是相同的。當(dāng)數(shù)碼
17、管正常工作時(shí)必須接上拉電阻,數(shù)碼管點(diǎn)亮一般要510mA的電流,po輸出電流不到1mA,同時(shí)上拉電阻起到一個(gè)限流的作用。在多位LED顯示時(shí),為了簡(jiǎn)化電路,降低成本,節(jié)省系統(tǒng)資源,將所有的N位段選碼并聯(lián)在一起,由一片74HC595控制。由于所有LED的段選碼皆由一個(gè)74HC595并行輸出口控制,因此,在每一瞬間,N位LED會(huì)顯示相同的字符。想要每位顯示不同的字符,就必須采用掃描的方法,即在每一瞬間只使用一位顯示字符。在此瞬間,74HC595并行輸出口輸出相應(yīng)字符段選碼,而位選則控制I/O口在該顯示位送入選通電平,以保證該位顯示相應(yīng)字符。如此輪流,使每位分時(shí)顯示該位應(yīng)顯示字符。由于74HC595具有
18、鎖存功能,而且串行輸入段選碼需要一定時(shí)間,因此,不需要延時(shí),即可形成視覺暫留效果。圖6為位選電路,PNP型三極管的集電極接數(shù)碼管的公共端,當(dāng)P2口對(duì)應(yīng)的引腳輸出低電平時(shí)三極管導(dǎo)通,對(duì)應(yīng)的數(shù)碼管顯示數(shù)據(jù)。這樣,在同一時(shí)刻,多位LED中只有選通的那1位顯示出字符,而其他5位則是熄滅的。同樣,在下一時(shí)刻,只讓下一位的位選線處于選通狀態(tài),而其他個(gè)位的位選線處于關(guān)閉狀態(tài),在段碼線上輸出將要顯示字符的段碼,則同一時(shí)刻,只有選通位顯示出相應(yīng)的字符,而其他各位則是熄滅的。如此循環(huán)下去,就可以使各位顯示出將要顯示的字符。雖然這些字符是在不同時(shí)刻出現(xiàn)的,而在同一時(shí)刻,只有一位顯示,其他各位熄滅,但由于LED的余輝
19、和人眼的視覺暫留作用,只要每位顯示間隔足夠短,則可以造成多位同時(shí)亮的假象,達(dá)到同時(shí)顯示的效果。3.3.5整點(diǎn)報(bào)時(shí)電路設(shè)計(jì)本電路采用無源蜂鳴器作為發(fā)聲報(bào)時(shí)的聲源,對(duì)P1.7口延時(shí)翻轉(zhuǎn)電平產(chǎn)生驅(qū)動(dòng)波形(如圖7)對(duì)蜂鳴器進(jìn)行驅(qū)動(dòng)。通過改變延時(shí)時(shí)間進(jìn)而改方波的占功比可以得到驅(qū)動(dòng)蜂鳴器的方波信號(hào)。這樣蜂鳴器報(bào)時(shí)時(shí)就可以聽到不同音調(diào)的報(bào)時(shí)聲。圖7 波形圖3.3.6按鈕設(shè)置電路按鈕設(shè)置電路如圖8圖8按鈕設(shè)置電路按鍵按下時(shí),由于抖動(dòng)的問題,用延時(shí)的方法去除抖動(dòng),原因與解決方案如圖9是否有鍵按下消抖,延時(shí)10ms是否有鍵按下確認(rèn)是哪一個(gè)鍵被按下圖9 延時(shí)方法除抖動(dòng)3.3.7整體電路圖系統(tǒng)整體電路如圖10所示圖1
20、0 系統(tǒng)整體電路圖4 軟件系統(tǒng)設(shè)計(jì)4.1主程序設(shè)計(jì)4.1.1中斷程序流程圖主程序開始程序初始化定時(shí)器裝初值50ms,開中斷秒寄存器單元清0秒值加1計(jì)數(shù)寄存單元清0判斷秒滿60?分值加1判斷分滿60?分寄存器單元清0時(shí)值加1判斷時(shí)滿24?時(shí)、分、秒寄存器單元清0天值賦1天值加1月值加1判斷年滿一世紀(jì)?年值加1月值賦1判斷月12年寄存器單元清0中斷返回開啟整點(diǎn)報(bào)時(shí)判斷天滿該月的總天數(shù)?計(jì)數(shù)器加1,判斷是否加到20次圖11 中斷程序流程圖4.1.2時(shí)、分、秒按鍵判斷和調(diào)時(shí)設(shè)置流程顯示時(shí)分秒判斷日期顯示鍵是否按下?延時(shí)去抖動(dòng)顯示年月日判斷秒設(shè)置鍵是否按下?判斷分設(shè)置鍵是否按下?判斷時(shí)設(shè)置鍵是否按下?判
21、斷秒設(shè)置鍵抬起?秒值加1判斷秒滿60?分值加1秒清0日設(shè)置鍵抬起后,判斷有沒有再次按下?分設(shè)置鍵抬起后,判斷有沒有再次按下?分是否滿60?分清0時(shí)值加1時(shí)是否滿60?時(shí)分秒清0時(shí)設(shè)置鍵抬起后,判斷有沒有再次按下?判斷時(shí)鍵抬起?判斷分鍵抬起?圖12 時(shí)、分、秒按鍵判斷和調(diào)時(shí)設(shè)置流程4.1.3年、月、日按鍵判斷和調(diào)時(shí)設(shè)置流程圖顯示年月日判斷時(shí)間顯示鍵是否按下?延時(shí)去抖動(dòng)顯示時(shí)分秒判斷日設(shè)置鍵是否按下?判斷月設(shè)置鍵是否按下?判斷年設(shè)置鍵是否按下?判斷日設(shè)置鍵抬起?日值加1判斷日滿最大天數(shù)?月值加1日清0日設(shè)置鍵抬起后,判斷有沒有再次按下?月設(shè)置鍵抬起后,判斷有沒有再次按下?月是否13?給月賦1年值加
22、1年是否到一世紀(jì)?年清0年設(shè)置鍵抬起后,判斷有沒有再次按下?判斷年鍵抬起?判斷年鍵抬起?圖13 年、月、日按鍵判斷和調(diào)時(shí)設(shè)置流程圖4.1.4顯示時(shí)、分、秒子程序流程圖顯示時(shí)分秒開秒十位位選秒/10對(duì)應(yīng)地表地址中的數(shù)送p0使數(shù)碼管顯示延時(shí)開秒個(gè)位位選開分隔符位選送#40到p0延時(shí)延時(shí)秒%10對(duì)應(yīng)地表地址中的數(shù)送p0使數(shù)碼管顯示開分十位位選分/10對(duì)應(yīng)地表地址中的數(shù)送p0使數(shù)碼管顯示延時(shí)開分個(gè)位位選開分隔符位選送#40到p0延時(shí)延時(shí)分%10對(duì)應(yīng)地表地址中的數(shù)送p0使數(shù)碼管顯示時(shí)/10對(duì)應(yīng)地表地址中的數(shù)送p0使數(shù)碼管顯示延時(shí)開時(shí)個(gè)位位選延時(shí)時(shí)%10對(duì)應(yīng)地表地址中的數(shù)送p0使數(shù)碼管顯示開時(shí)十位位選圖1
23、4 顯示時(shí)、分、秒子程序流程圖4.1.5顯示年、月、日子程序流程圖顯示年月日開日十位位選日/10對(duì)應(yīng)地表地址中的數(shù)送p0使數(shù)碼管顯示延時(shí)開日個(gè)位位選開分隔符位選送#40到p0延時(shí)延時(shí)日%10對(duì)應(yīng)地表地址中的數(shù)送p0使數(shù)碼管顯示開月十位位選月/10對(duì)應(yīng)地表地址中的數(shù)送p0使數(shù)碼管顯示延時(shí)開月個(gè)位位選開分隔符位選送#40到p0延時(shí)延時(shí)月%10對(duì)應(yīng)地表地址中的數(shù)送p0使數(shù)碼管顯示年/10對(duì)應(yīng)地表地址中的數(shù)送p0使數(shù)碼管顯示延時(shí)開年個(gè)位位選延時(shí)年%10對(duì)應(yīng)地表地址中的數(shù)送p0使數(shù)碼管顯示開年十位位選圖15 顯示年、月、日子程序流程圖4.2源程序包括主程序、中斷子程序、顯示子程序、判斷按鍵和調(diào)時(shí)設(shè)置程序
24、、等待按鍵抬起程序、報(bào)時(shí)子程序、延時(shí)子程序用單片機(jī)AT89C51設(shè)計(jì)一個(gè)多功能電子時(shí)鐘能實(shí)現(xiàn)時(shí)分秒年月日顯示,能整點(diǎn)報(bào)時(shí),還有調(diào)整時(shí)間、日期的功能。單片機(jī)AT89C51的P0口接數(shù)碼管的7段,P2口接數(shù)碼管的位選。P1.0-P1.5接按鍵,P1.7接蜂鳴,數(shù)碼管是一個(gè)八位一體共陰的,時(shí)間初始值1:59:55,日期初始值10年11月11號(hào)SET_1 BIT P1.0 ;秒、日控制鍵SET_2 BIT P1.1 ;分、月控制鍵SET_3 BIT P1.2 ;時(shí)、年控制鍵SET_4 BIT P1.3 ;切換時(shí)分秒顯示SET_5 BIT P1.4 ;切換年月日顯示SECOND EQU 30H ;秒寄儲(chǔ)
25、單元MINUTE EQU 31H ;分寄儲(chǔ)單元HOUR EQU 32H ;時(shí)寄儲(chǔ)單元DAY EQU 33H ;日寄儲(chǔ)單元MONTH EQU 34H ;月寄儲(chǔ)單元YEAR EQU 35H ;年寄儲(chǔ)單元TCNT EQU 36H ;計(jì)數(shù)寄儲(chǔ)單元YYY EQU 37H ;月天數(shù)比較單元 ORG 0000H AJMP TANG ORG 000BH LJMP INT_T0TANG: MOV DPTR,#TAB;把DPTR指針指向表格TAB的所在的地址,用于讀數(shù)碼管值表 MOV HOUR,#1 ;對(duì)時(shí)、分、秒、年、月、日初始化 MOV MINUTE,#59 MOV SECOND,#55 MOV DAY,#1
26、1 MOV MONTH,#11 MOV YEAR,#10 MOV TCNT,#0;計(jì)數(shù)器 MOV TMOD,#01H;設(shè)置定時(shí)器0模式1,模式1定時(shí)最大值65.536ms,而模式0最大8.192ms MOV TH0,#3CH;定時(shí)初值50s(65535-50000)/256商放高八位 MOV TL0,#0b0H;(65535-50000)%256余數(shù)放低八 MOV IE,#82H;中斷允許寄存器IE,cpu開中斷,T0 開中斷 SETB TR0;啟動(dòng)定時(shí)器0;*;設(shè)置時(shí)分秒程序:;判斷時(shí)分秒是否有控制鍵按下,是哪一個(gè)鍵按下,并調(diào)用顯示時(shí)分秒;* A1: LCALL DISPLAY1;顯示秒分時(shí)
27、 JNB SET_5,A2;SET_5按下為低電平,為0,跳轉(zhuǎn),不按為1,順序執(zhí)行,即若日月年切換鍵沒按下,順序執(zhí)行 JNB SET_1,S1;按下去跳轉(zhuǎn)到s1JNB SET_2,S2 JNB SET_3,S3LJMP A1 S1: LCALL DELAY ;去抖動(dòng)等待抬起 SET_1,A1;判斷按鍵是否抬起,抬起秒就加1 INC SECOND ;秒值加1 MOV A,SECOND CJNE A,#60,timej0 ;判斷是否加到60秒MOV SECOND,#0LJMP K1 S2: LCALL DELAY SET_2,A1 K1: INC MINUTE ;分鐘值加1 MOV A,MINUT
28、E CJNE A,#60,timej1 ;判斷是否加到60分 MOV MINUTE,#0 LJMP K2S3: LCALL DELAY SET_3,A1 K2: INC HOUR ;小時(shí)值加1MOV A,HOUR CJNE A,#24,timeJ2;判斷是否加到24小時(shí) MOV HOUR,#0 MOV MINUTE,#0MOV SECOND,#0 LJMP D LJMP A1;*;控制時(shí)分秒等待按鍵抬起;*timej0: SET_1,A1;沒到60秒,判斷K1鍵抬起?抬起進(jìn)入A1判斷按鍵有沒有再次按下,若按下繼續(xù)加1LCALL DISPLAY1SJMP timej0timej1: SET_2,
29、A1 LCALL DISPLAY1 SJMP timej1timej2: SET_3,A1 LCALL DISPLAY1 SJMP timej2;*; 設(shè)置年月日程序:;判斷年月日是否有控制鍵按下,是哪個(gè)按鍵按下,并調(diào)用顯示年月日;*A2: LCALL DISPLAY2 JNB SET_4,A1 JNB SET_1,h1 JNB SET_2,h2 JNB SET_3,h3 LJMP A2 h1: LCALL DELAY ;去消抖 SET_1,A2 F: INC DAY ;日加一 MOV A,MONTH ADD A,#9 MOVC A,A+DPTR;DPTR占一個(gè)首地址了,十個(gè)數(shù)對(duì)應(yīng)一個(gè)首地址+
30、9個(gè)地址表地址加9以便找到對(duì)應(yīng)月的天數(shù) MOV YYY,A MOV A,DAY CJNE A,YYY,y0;判斷天數(shù),為真跳轉(zhuǎn),即顯示天數(shù)達(dá)到該月滿天數(shù),就過一個(gè)月,到下一月 MOV DAY,#0 LJMP M1 D: LJMP Y3 h2: LCALL DELAY SET_2,A2 M1: INC MONTH ;月加一 MOV A,MONTH CJNE A,#13,Y1;判斷是否加到12 MOV MONTH ,#1 LJMP M2 h3: LCALL DELAY SET_3,A2 M2: INC YEAR ;年加一 MOV A,YEAR CJNE A,#100,Y2;判斷是否加到99 MOV
31、 YEAR,#0 LJMP A2;*;控制年月日等待按鍵抬起;*Y0: SET_1,A2;日抬起LCALL DISPLAY2SJMP Y0Y1: SET_2,A2;月抬起 LCALL DISPLAY2 SJMP Y1Y2: SET_3,A2;年抬起LCALL DISPLAY2SJMP Y2Y3: SET_3,A2;調(diào)整年等待鍵抬起并顯示年 LCALL DELAY1LCALL DELAY1 LCALL DISPLAY2 SJMP F;*;定時(shí)器中斷服務(wù)程序,對(duì)秒,分鐘,小時(shí)與日,月,年的計(jì)數(shù);*INT_T0: MOV TH0,#3chMOV TL0,#0b0h INC TCNTMOV A,TCN
32、T CJNE A,#20,RETUNE ;計(jì)時(shí)1秒INC SECONDMOV TCNT,#0 MOV A,MINUTESEC: MOV A,SECONDCJNE A,#60,RETUNEINC MINUTEMOV SECOND,#0MOV A,MINUTECJNE A,#60,RETUNELCALL BS ;調(diào)用整點(diǎn)報(bào)時(shí)LCALL BS LCALL DELAY1 LCALL BSLCALL BSLCALL BS LCALL DELAY1LCALL BSLCALL BSLCALL BS LCALL DELAY1 LCALL BSLCALL BS LCALL DELAY1 INC HOUR MOV
33、 MINUTE ,#0 MOV A,HOUR CJNE A,#24,RETUNE INC DAY MOV HOUR,#0 MOV MINUTE,#0 MOV SECOND,#0 MOV A,MONTH ADD A,#9 MOVC A,A+DPTR MOV YYY,A;對(duì)應(yīng)month的天數(shù)給 MOV A,DAY CJNE A,YYY,RETUNE INC MONTHMOV DAY,#1 MOV A,MONTH CJNE A,#13,RETUNEINC YEAR MOV MONTH,#1 MOV A,YEAR CJNE A,#99,RETUNE MOV YEAR,#0 MOV TCNT,#0RET
34、UNE:RETI;用于中斷服務(wù)子程序的末尾,中斷返回;*;秒時(shí)分、年月日顯示控制子程序;*DISPLAY1: MOV A,SECOND ;顯示秒MOV B,#10 DIV AB;A除以B,商 放A中,余數(shù)放中 MOV p2,#0FDh;數(shù)碼管位選 ,使第2個(gè)數(shù)碼管亮 MOVC A,A+DPTR;若A中存的商為2,A+DPTR就是把DPTR對(duì)應(yīng)的TAB表首地址+表序號(hào)2,這樣就可讀出對(duì)應(yīng)數(shù)碼管表中的值06H,也就是數(shù)字2 MOV P0,A;通過p0控制數(shù)碼管輸出秒十位數(shù)字 LCALL DELAY MOV A,B MOV p2,#0FEh; MOVC A,A+DPTR MOV P0,A;通過p0控
35、制數(shù)碼管輸出秒個(gè)位數(shù)字 LCALL DELAY MOV p2,#0FBh;數(shù)碼管位選 ,為該數(shù)碼管亮做準(zhǔn)備 MOV P0,#40H ;顯示分隔符,數(shù)字中間一橫亮,數(shù)碼管abcdefg.當(dāng)g亮?xí)r為-,即01000000為40H顯示分隔符 LCALL DELAY MOV A,MINUTE ;顯示分鐘 MOV B,#10 DIV AB MOV p2,#0EFh MOVC A,A+DPTR MOV P0,A;通過p0控制數(shù)碼管輸出分十位數(shù)字 LCALL DELAY MOV A,B MOV p2,#0F7h MOVC A,A+DPTR MOV P0,A LCALL DELAYMOV p2,#0DFh M
36、OV P0,#40H ;顯示分隔符 LCALL DELAY MOV A,HOUR ;顯示小時(shí) MOV B,#10 DIV AB MOV p2,#7Fh MOVC A,A+DPTR MOV P0,A LCALL DELAY MOV A,BMOV p2,#0BFh MOVC A,A+DPTR MOV P0,A LCALL DELAY RETDISPLAY2: MOV A,DAY ;顯示日 MOV B,#10 DIV ABMOV p2,#0FDh MOVC A,A+DPTR MOV P0,A LCALL DELAY MOV A,B MOV p2,#0FEh MOVC A,A+DPTR MOV P0,
37、A LCALL DELAYMOV p2,#0FBh MOV P0,#40H ;顯示分隔符 LCALL DELAY MOV A,MONTH ;顯示月 MOV B,#10 DIV ABMOV p2,#0EFh MOVC A,A+DPTR MOV P0,A LCALL DELAY MOV A,B MOV p2,#0F7h MOVC A,A+DPTR MOV P0,A LCALL DELAYMOV p2,#0DFh MOV P0,#40H ;顯示分隔符 LCALL DELAY MOV A,YEAR ;顯示年 MOV B,#10 DIV ABMOV p2,#7Fh MOVC A,A+DPTR MOV P0,A LCALL DEL
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度出租車安全責(zé)任險(xiǎn)投保合同3篇
- 二零二五版智能制造生產(chǎn)線轉(zhuǎn)讓合同樣本3篇
- 2025年度個(gè)人失業(yè)保險(xiǎn)貸款抵押擔(dān)保合同示范2篇
- 二零二四年墻布供應(yīng)與施工一體化服務(wù)合同3篇
- 買賣土地合同
- 2025年度新能源車輛充電設(shè)施投資建設(shè)合同4篇
- 2025年度船舶節(jié)能減排改造合同范本3篇
- 2025年度互動(dòng)娛樂游戲版權(quán)購買與授權(quán)合同范本4篇
- 二零二五版網(wǎng)絡(luò)安全技術(shù)股權(quán)合作合同4篇
- 2025年度電器產(chǎn)品售后服務(wù)滿意度調(diào)查與改進(jìn)服務(wù)合同4篇
- 運(yùn)動(dòng)技能學(xué)習(xí)與控制課件第十一章運(yùn)動(dòng)技能的練習(xí)
- 蟲洞書簡(jiǎn)全套8本
- 射頻在疼痛治療中的應(yīng)用
- 四年級(jí)數(shù)學(xué)豎式計(jì)算100道文檔
- “新零售”模式下生鮮電商的營(yíng)銷策略研究-以盒馬鮮生為例
- 項(xiàng)痹病辨證施護(hù)
- 職業(yè)安全健康工作總結(jié)(2篇)
- 懷化市數(shù)字經(jīng)濟(jì)產(chǎn)業(yè)發(fā)展概況及未來投資可行性研究報(bào)告
- 07FD02 防空地下室電氣設(shè)備安裝
- 教師高中化學(xué)大單元教學(xué)培訓(xùn)心得體會(huì)
- 彈簧分離問題經(jīng)典題目
評(píng)論
0/150
提交評(píng)論