基于單片機(jī)AT89S51控制的數(shù)字時(shí)鐘課程設(shè)計(jì)報(bào)告_第1頁(yè)
基于單片機(jī)AT89S51控制的數(shù)字時(shí)鐘課程設(shè)計(jì)報(bào)告_第2頁(yè)
基于單片機(jī)AT89S51控制的數(shù)字時(shí)鐘課程設(shè)計(jì)報(bào)告_第3頁(yè)
基于單片機(jī)AT89S51控制的數(shù)字時(shí)鐘課程設(shè)計(jì)報(bào)告_第4頁(yè)
基于單片機(jī)AT89S51控制的數(shù)字時(shí)鐘課程設(shè)計(jì)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、寧波技師學(xué)院課 程 設(shè) 計(jì) 報(bào) 告論文題目 基于AT89S51控制的數(shù)字時(shí)鐘 專業(yè)班級(jí) 學(xué)生姓名 _學(xué) 號(hào) _指導(dǎo)教師 _ _寧波技師學(xué)院電氣技術(shù)系二零一三 年 九 月摘 要本系統(tǒng)采用MSC-51系列單片機(jī)以AT89S51為中心器件來設(shè)計(jì)多功能數(shù)字時(shí)鐘。文中詳細(xì)介紹了51單片機(jī)應(yīng)用中的數(shù)據(jù)轉(zhuǎn)換顯示,數(shù)碼管顯示原理,動(dòng)態(tài)掃描顯示原理,單片機(jī)的定時(shí)中斷原理。該時(shí)鐘系統(tǒng)能實(shí)現(xiàn)時(shí)鐘日歷的功能:能進(jìn)行時(shí)、分、秒的顯示;也具有日歷計(jì)算、顯示和時(shí)鐘,日歷的校準(zhǔn)、定時(shí)時(shí)間的設(shè)定,實(shí)現(xiàn)秒表,整點(diǎn)報(bào)時(shí)等功能關(guān)鍵詞:AT89S51;74LS245 ;原理;時(shí)鐘 ;單片機(jī)目錄1引言42總體設(shè)計(jì)方案52.1系統(tǒng)總體結(jié)構(gòu)

2、框圖53硬件設(shè)計(jì)6復(fù)位電路6晶振電路6 數(shù)碼管原理圖7AT89S51的管腳說明84軟件設(shè)計(jì)9主程序流程圖95制作和調(diào)試中遇到的問題和解決方法96結(jié)論107致謝108參考文獻(xiàn)10附錄1C語言程序11附錄2硬件接線圖24附錄3系統(tǒng)仿真圖251 引言近年來隨著科技的飛速開展,單片機(jī)的應(yīng)用正在不斷地走向深入,同時(shí)帶動(dòng)傳統(tǒng)控制檢測(cè)日新月異更新.在實(shí)時(shí)檢測(cè)和自動(dòng)控制的單片機(jī)應(yīng)用系統(tǒng)中,單片機(jī)往往是作為一個(gè)核心部件來使用,僅單片機(jī)方面知識(shí)是不夠的,還應(yīng)根據(jù)具體硬件結(jié)構(gòu),以及針對(duì)具體應(yīng)用對(duì)象特點(diǎn)的軟件結(jié)合,加以完善.本文通過用對(duì)一個(gè)能實(shí)現(xiàn)定時(shí),日歷顯示功能的時(shí)間系統(tǒng)的設(shè)計(jì)學(xué)習(xí),詳細(xì)介紹了51單片機(jī)應(yīng)用中的數(shù)據(jù)

3、轉(zhuǎn)換顯示,數(shù)碼管顯示原理,動(dòng)態(tài)掃描顯示原理,單片機(jī)的定時(shí)中斷原理、從而到達(dá)學(xué)習(xí),了解單片機(jī)相關(guān)指令在各方面的應(yīng)用。2 總體設(shè)計(jì)方案系統(tǒng)AT89S51、LED數(shù)碼管、按鍵、電容,電阻,晶震等局部構(gòu)成,能實(shí)現(xiàn)的功能有:時(shí)間顯示、日期顯示、定時(shí)。左鍵:切換更改工程,按一下選擇更改時(shí)鐘秒位,再按為分位、小時(shí)位。小時(shí)位置在按那么跳出編輯時(shí)間功能。中鍵:給當(dāng)前項(xiàng)進(jìn)行加1的控制,使當(dāng)前項(xiàng)在個(gè)位加1。右鍵:給當(dāng)前項(xiàng)進(jìn)行減1的控制,使當(dāng)前項(xiàng)在個(gè)位減1。2.1 系統(tǒng)總體結(jié)構(gòu)框圖針對(duì)于設(shè)計(jì)思想,做系統(tǒng)的結(jié)構(gòu)框圖如下列圖2-1所示:晶振電路顯示電路復(fù)位電路AAAT89S51按鍵控制電 路圖2-1總體方案方框圖3 硬件

4、設(shè)計(jì)本數(shù)字時(shí)鐘系統(tǒng)的硬件電路主要包括晶振電路、數(shù)碼顯示電路及其它外圍電路等?!?】9復(fù)位電路的根本功能是:系統(tǒng)上電時(shí)提供復(fù)位信號(hào),直至系統(tǒng)電源穩(wěn)定后,撤銷復(fù)位信號(hào)。為可靠起見,電源穩(wěn)定后還要經(jīng)一定的延時(shí)才撤銷復(fù)位信號(hào),以防電源開關(guān)或電源插頭分-合過程中引起的抖動(dòng)而影響復(fù)位。下列圖所示的RC復(fù)位電路可以實(shí)現(xiàn)上述根本功能,Sm為手動(dòng)復(fù)位開關(guān)。圖3-0 復(fù)位電路圖1AT89S51中有一個(gè)構(gòu)成內(nèi)部震蕩器的高增益反向放大器,引腳XTAL1和XTAL2分別是放大器的輸入端和輸出端,這個(gè)放大器與作為反應(yīng)元件的石英晶體構(gòu)成自激震蕩電路。外接石英晶體及電容C1,C2接在放大器的反應(yīng)回路中構(gòu)成并聯(lián)震蕩電路。圖3-

5、1晶體震蕩電路數(shù)碼管原理圖4810。 圖3-2 數(shù)碼管管腳圖3.3.1 AT89S51的管腳說明2 圖3-3 AT89S51管腳圖VCC 電源電壓.GND 接地.RST 復(fù)位輸入.當(dāng)RST變?yōu)楦唠娖讲⒈3?個(gè)機(jī)器周期時(shí),將使單片機(jī)復(fù)位.WDT溢出將使該引腳輸出高電平,設(shè)置SFR AUXR的DISRTO位(地址8EH)可翻開或關(guān)閉該功能.DISKRTO位缺省為RESET輸出高電平翻開狀態(tài).XTAL1 反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入.XTAL2 來自反向振蕩放大器的輸出.P0口 一組8位漏極開路型雙向I/O口.也即地址/數(shù)據(jù)總線復(fù)用口.作為輸出口用時(shí),每位能驅(qū)動(dòng)8個(gè)TTL邏輯門電路,

6、對(duì)端口寫"1"可作為高阻抗輸入端用.在訪問外部數(shù)據(jù)存儲(chǔ)器或程序存儲(chǔ)器時(shí),這組口線分時(shí)轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線復(fù)用,在訪問期間激活內(nèi)部上拉電阻.在Flash編程時(shí),P0口接收指令字節(jié),而在程序校驗(yàn)時(shí),輸出指令字節(jié),校驗(yàn)時(shí),要求外接上拉電阻.P1口 一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口,P1的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門電路.對(duì)端口寫"1",通過內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口.作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流(IIL).Flash編程和程序校驗(yàn)期間,P1接收低8位地址. P

7、2口 一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口.P1的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門電路.對(duì)端口寫"1",通過內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口.作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流(IIL).在訪問外部程序存儲(chǔ)器或16位地址的外部數(shù)據(jù)存儲(chǔ)器時(shí),P2口送出高8位地址數(shù)據(jù).在訪問8位地址的外部數(shù)據(jù)存儲(chǔ)器時(shí),P2口線上的內(nèi)容在整個(gè)訪問期間不改變.Flash編程和程序校驗(yàn)期間,P2亦接收低8位地址.P3口 一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口.P3的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門電路.對(duì)P3口

8、寫"1"時(shí),它們被內(nèi)部的上拉電阻把拉到高電并可作輸入端口.作輸入端口使用時(shí),被外部拉低的P3口將用上拉電阻輸出電流(IIL).P3口除了作為一般的I/O口線外,更重要的用途是它的第二功能,如下列圖所示.P3口還接收一些用于Flash閃速存儲(chǔ)器編程和程序校驗(yàn)期間的控制信號(hào).PSEN/ 程序儲(chǔ)存允許輸出是外部程序存儲(chǔ)器的讀先通信號(hào),當(dāng)AT89S51由外部程序存儲(chǔ)器取指令(或數(shù)據(jù))時(shí),每個(gè)機(jī)器周期兩次PSEN/有效,即輸出兩個(gè)脈沖.當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器,沒有兩次有效的PSEN/信號(hào).EA/VPP 外部訪問允許.欲使CPU僅訪問外部程序存儲(chǔ)器,EA端必須保持低電平,需注意的是:如果

9、加密位LB1被編程,復(fù)位時(shí)內(nèi)部會(huì)鎖存EA端狀態(tài).Flash存儲(chǔ)器編程時(shí),該引腳加上+12V的編程電壓VPP.4 軟件設(shè)計(jì)4.1 主程序流程圖5 制作和調(diào)試中的一些問題和解決方法數(shù)字時(shí)鐘設(shè)計(jì)剛完成時(shí),我經(jīng)過檢查,發(fā)現(xiàn)了一些問題147:1 剛弄好電路板并燒寫程序進(jìn)去后發(fā)現(xiàn)數(shù)碼管不能正確顯示時(shí)間,每個(gè)數(shù)碼管中顯示的數(shù)字幾乎一樣。經(jīng)過詢問老師,自己查閱資料,終于找出問題的原因:由于我在電路中采用的是動(dòng)態(tài)數(shù)碼管顯示,需準(zhǔn)確地調(diào)整延時(shí)子程序DEL1MS。我在程序中采取的延時(shí)時(shí)間為1毫秒。2復(fù)位電路中的開關(guān)不能使電路復(fù)位到初始狀態(tài)即12:00:00,經(jīng)過認(rèn)真檢查電路后我發(fā)現(xiàn)我是開關(guān)的管腳沒接對(duì)。測(cè)試后重新接

10、下開關(guān)的管腳就可以了。6 結(jié)論經(jīng)過調(diào)試之后,我發(fā)現(xiàn)我做的基于AT89S51設(shè)計(jì)的數(shù)字時(shí)鐘,經(jīng)過調(diào)試,一天的時(shí)間里面,差不多在1秒,計(jì)時(shí)是相對(duì)準(zhǔn)確。而且該設(shè)計(jì)的本錢不高,硬件電路簡(jiǎn)單,可以用在對(duì)時(shí)間精度要求不高的場(chǎng)合. 由于時(shí)鐘電路的重要性,時(shí)鐘電路在很多應(yīng)用系統(tǒng)中必不可少,用軟件方法可以實(shí)現(xiàn),但誤差很大。在對(duì)時(shí)間精度要求很高的情況下,通常采用時(shí)鐘芯片來實(shí)現(xiàn)。典型的時(shí)鐘芯片有:DS1302,DS12887,X1203等都可以滿足精度要求。致謝辭在論文完成之際,謹(jǐn)向關(guān)心我、支持我的師長(zhǎng)、朋友和親人表示最衷心的感謝。首先要感謝我尊敬的指導(dǎo)老師陳弢和唐幼君,本論文的工作得到了陳老師悉心的指導(dǎo)和啟發(fā),從

11、論文的選題和具體實(shí)現(xiàn)都給予極大的幫助。唐老師平易近人,我非常感兩位老師。本設(shè)計(jì)的完成,當(dāng)然也少不了同學(xué)的幫助,感謝他們對(duì)我的幫助,沒有他們的幫助,設(shè)計(jì)的任務(wù)是不可能這么快順利完成的。同時(shí),也要感謝我的爸爸媽媽,感謝他們這么多年來默默地支持著我的學(xué)業(yè),我會(huì)再接再厲,以更加飽滿的熱情投入到今后的學(xué)習(xí)和工作中去。參考文獻(xiàn): 1 曹巧媛 單片機(jī)原理與應(yīng)用M.京:電子工業(yè)出版社, 20022 何立民 MCS-51系列單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì).北京航空航天大學(xué)出版社,20003 丁元杰 單片微機(jī)原理及應(yīng)用第2版M.北京機(jī)械工業(yè)出版社,20014 郁凱平 MCS-51單片機(jī)串口一口兩用在LED顯示屏的一例應(yīng)用 ?

12、電子與電腦?2021年第1期5 陳忠平 P89LPC935驅(qū)動(dòng)數(shù)碼管顯示時(shí)鐘的設(shè)計(jì) ?湖南工業(yè)職業(yè)技術(shù)學(xué)院學(xué)報(bào)?2007 年第 02 期6 林成武等 MCS-51單片機(jī)PO口擴(kuò)展技術(shù)研究.?電子元器件應(yīng)用?2007 年第 4 期7 謝自美 ?電子線路設(shè)計(jì)、實(shí)驗(yàn)、測(cè)試 ?.華中理工大學(xué)出版社,20008 李正浩等 51單片機(jī)在LED數(shù)碼管顯示中的應(yīng)用.?實(shí)驗(yàn)科學(xué)與技術(shù)? 2006 年第z1 期9 包國(guó)賓、張建民 單片機(jī)復(fù)位電路的設(shè)計(jì)與分析.?光電技術(shù)應(yīng)用? 2005 年第 03 期10 唐光明 基于中斷技術(shù)的開關(guān)軟件消抖算法?現(xiàn)代機(jī)械? 2006 年第 03 期11 N. Ambramson,

13、Editor, Multiple Acess Communication-Foundation of Emerging Tecnologies, IEEE Press,1992附錄1 C語言程序附錄ORG 0000HLJMP MAIN ;跳到主程序ORG 0003HLJMP INT0 ;跳到外部中斷0ORG 000BH LJMP T0 ;跳到定時(shí)器0ORG 0013HLJMP INT1 ;跳到外部中斷1ORG 001BHLJMP T1 ;跳到定時(shí)器1ORG 0100HMAIN: ;主函數(shù)CLR P3.0 ;關(guān)蜂鳴器ACALL INITIAL ;調(diào)用初始化函數(shù)DONE:JNB 00H,DONE1

14、 ;是否顯示時(shí)間MOV R0,#73H ;顯示時(shí)間ACALL CONVERT ;把時(shí)間存儲(chǔ)器轉(zhuǎn)化到顯示存儲(chǔ)器AJMP TEST ;是否處于調(diào)整狀態(tài)DONE1:JNB 01H,DONE2 ;是否顯示日期MOV R0,#70H ;顯示日期ACALL CONVERT ;轉(zhuǎn)化AJMP TEST ;是否處于調(diào)整狀態(tài)DONE2:JNB 02H,DONE3 ;是否顯示定時(shí)時(shí)間MOV R0,#63H ;顯示定時(shí)時(shí)間ACALL CONVERT ;轉(zhuǎn)化AJMP TEST ;DONE3:MOV R0,#60H ;顯示秒表ACALL CONVERT ;轉(zhuǎn)化LJMP DISP ;跳到顯示函數(shù)TEST: ;判斷是否處于調(diào)

15、整狀態(tài) JNB 18H,TEST10 ;是否按鍵已經(jīng)按下 JNB P3.5,TEST7 ;按鍵是否已經(jīng)釋放 AJMP TEST11TEST10:JB 16H,TEST8 ;判斷是否有按鍵按下 JB P3.5,TEST7 SETB 16H AJMP TEST7TEST8:JB P3.5,TEST9 SETB 18H AJMP TEST7 TEST11:CLR 18H CPL 17H MOV C,17H MOV P0.0,C CLR 16H CLR 12H ;定時(shí)結(jié)束 CLR TR1 ;關(guān)定時(shí)器1 CLR P3.0 ;關(guān)蜂鳴器 CLR 13H ; MOV 59H,#00H ; MOV 58H,#0

16、1H AJMP TEST7 TEST9:CLR 16H TEST7:JNB 12H,TEST6 JB P3.4,TEST6 CLR 12H ;定時(shí)結(jié)束 CLR TR1 ;關(guān)定時(shí)器1 CLR P3.0 ;關(guān)蜂鳴器 CLR 13H ; MOV 59H,#00H ; MOV 58H,#01H ;TEST6:JNB 01H,TEST5 ;是否處于日期狀態(tài) JB P3.4,TEST4 ;案鍵3是否按下 MOV 20H,#01H ; 返回時(shí)間狀態(tài) MOV 21H,#00H LJMP DISP TEST5:JNB 02H,TEST4 ;是否處于定時(shí)時(shí)間狀態(tài) JB P3.4,TEST4 ;按鍵3是否按下 MO

17、V 20H,#01H ;返回時(shí)間狀態(tài) MOV 21H,#00H LJMP DISP TEST4:JNB 15H,DO ;閃爍標(biāo)志是否有效 LJMP DISP ;無效那么進(jìn)入顯示函數(shù)DO: MOV A,21H ; CJNE A,#00H,TEST2 ;是否在調(diào)整狀態(tài) LJMP DISP ;不處于調(diào)整狀態(tài)那么進(jìn)入顯示函數(shù) TEST2: JB P3.4,TEST3 MOV 20H,#01H MOV 21H,#00H LJMP DISP TEST3:JNB 08H,DONE4 ;是否秒位置處于調(diào)整狀態(tài) MOV 78H,#11 ;不顯示 MOV 79H,#11 ;不顯示 LJMP DISP ;進(jìn)入顯示函

18、數(shù) DONE4:JNB 09H,DONE5 ;是否分位置處于調(diào)整狀態(tài) MOV 7BH,#11 ;不顯示 MOV 7CH,#11 ;不顯示 LJMP DISP ;進(jìn)入顯示函數(shù) DONE5:MOV 7EH,#11 ;時(shí)位置不顯示 MOV 7FH,#11 ;時(shí)位置不顯示 LJMP DISP ;進(jìn)入主函數(shù)CONVERT: ;轉(zhuǎn)化成數(shù)碼管顯示所對(duì)應(yīng)的存儲(chǔ)器MOV A,R0 ;把R0存儲(chǔ)的地址所對(duì)應(yīng)的存儲(chǔ)器的內(nèi)容轉(zhuǎn)化到秒位置的存儲(chǔ)器MOV B,#10 ;DIV AB ;MOV 79H,A ;高位存儲(chǔ)?MOV 78H,B ;地位存儲(chǔ)INC R0 ;地址加一MOV A,R0 ;取數(shù)據(jù)MOV B,#10 ;DI

19、V AB ;MOV 7CH,A ;高位存儲(chǔ)MOV 7BH,B ;低位存儲(chǔ)INC R0 ;地址加一MOV A,R0 ;取數(shù)據(jù)MOV B,#10 ;DIV AB ;MOV 7FH,A ;高位存儲(chǔ)MOV 7EH,B ;低位存儲(chǔ)RETINITIAL: MOV 7FH,#1 ;數(shù)碼管顯示12:00:00 MOV 7EH,#2 MOV 7DH,#10 MOV 7CH,#0 MOV 7BH,#0 MOV 7AH,#10 MOV 79H,#0 MOV 78H,#0 MOV 75H,#12 ;初始化時(shí)間 12:00:00 MOV 74H,#0 MOV 73H,#0 MOV 71H,#3 MOV 70H,#20

20、MOV 65H,#12 ;初始化定時(shí)時(shí)間 12:00:20 MOV 64H,#0 MOV 63H,#20 MOV 61H,#00 MOV 60H,#00 MOV 50H,#100 ;1s定時(shí)100*10ms MOV 51H,#20 ;200ms閃爍計(jì)時(shí) MOV 52H,#10 ;秒表計(jì)數(shù)器 MOV 53H,#5 ;每放一個(gè)音時(shí)延時(shí)5ms MOV 58H,#1 ;存放音樂表的指針 MOV TH0,#0D8H ;T0定義為10ms中斷 MOV TL0,#0F0H MOV TMOD,#11H ;定時(shí)器工作在方式1 MOV IP,#2 ;定時(shí)器0高優(yōu)先級(jí) MOV IE,#8FH ;開中斷 SETB I

21、T0 ;外部中斷為邊緣觸發(fā) SETB IT1 ;外部中斷為邊緣觸發(fā) SETB TR0 ;開定時(shí)器0 MOV 20H,#0 ; SETB 00H ;設(shè)置成處在時(shí)間顯示狀態(tài) 00H為時(shí)間顯示標(biāo)志,01h為日期顯示標(biāo)志,02h為定時(shí)時(shí)間顯示標(biāo)志,03h秒表顯示標(biāo)志 ;08h為秒位置選擇標(biāo)志,09h為分位置選者標(biāo)志,0ah為時(shí)位置選擇標(biāo)志 ;10h為秒表開始或暫停標(biāo)志,11h為,12h為是否正在放音樂標(biāo)志,13h為是否延時(shí)標(biāo)志,15h為閃爍標(biāo)志,16h,17h為判斷定時(shí)按鍵標(biāo)志 MOV 21H,#0 ;位存儲(chǔ)器初始化 MOV 22H,#0 ; SETB 17H ; 開定時(shí)器 SETB P0.0 ;開定

22、時(shí)器指示燈RETDISP: ;顯示函數(shù) MOV R0,#78H ;顯示第一 個(gè)位置 MOV DPTR,#TAB ;MOV R7,#0FEH ;第一位有效NEXT: MOV A,R0 ; MOVC A,A+DPTR ;把十進(jìn)制數(shù)轉(zhuǎn)化成數(shù)碼管對(duì)應(yīng)的數(shù)據(jù) MOV P1,A ;數(shù)據(jù)送出端口 MOV P2,R7 ;地址送出端口 ACALL DEL1MS ;延時(shí)一毫秒 MOV A,R7 ; RL A ;地址位左移到下一位 MOV R7,A ; INC R0 ;數(shù)據(jù)地址加1 CJNE R0,#80H,NEXT ;是否已經(jīng)顯示完LJMP DONETAB:DB 3FH,06H,5BH,4FH,66H,6DH,7

23、DH,07H,7FH,6FH,40H,00H ;0 1 2 3 4 5 6 7 8 9 - 空DEL1MS: ;延時(shí)1毫秒函數(shù) MOV R6,#2 DEL1:MOV R5,#250 DJNZ R5,$ DJNZ R6,DEL1RETT0: ;定時(shí)器0函數(shù) PUSH DPH PUSH DPL PUSH PSW PUSH ACC MOV TH0,#0D8H ;定時(shí)時(shí)間設(shè)置為10毫秒 MOV TL0,#0F0H DJNZ 50H,MIAO1 ;是否已經(jīng)延時(shí)1秒 AJMP NEXT5 ; MIAO1:LJMP MIAOBIAO ;一秒還沒到,進(jìn)入秒表 NEXT5:MOV 50H,#100 ; 重新循環(huán)

24、100次,即一秒 INC 73H ;秒加一 MOV A,73H ; CJNE A,#60,MIAO2 ;是否已經(jīng)加到60 AJMP NEXT6 ; MIAO2:LJMP MIAOBIAO ;沒到60,進(jìn)入秒表 NEXT6:MOV 73H,#0 ;已經(jīng)加到60,秒清0 INC 74H ;分加一 MOV A,74H ; CJNE A,#60,MIAO3 ;分是否已經(jīng)加到60 AJMP NEXT7 ; MIAO3:LJMP MIAOBIAO ;沒到60,進(jìn)入秒表 NEXT7:MOV 74H,#0 ;已經(jīng)到60,分清0 INC 75H ;時(shí)加1 MOV A,75H ; CJNE A,#24,MIAO4

25、 ;是否已加到24 AJMP NEXT8 ; MIAO4:LJMP MIAOBIAO ;沒到24那么進(jìn)入秒表 NEXT8:MOV 75H,#0 ;時(shí)清0 INC 70H ;日加1 MOV A,70H ; CJNE A,#29,MONTH ;是否是29 MOV A,71H ; CJNE A,#2,MIAO5 ;是否是2月 AJMP NEXT9 ;MIAO5:LJMP MIAOBIAO ;不是2月,進(jìn)入秒表NEXT9:MOV 71H,#3 ;月份為3 MOV 70H,#1 ;日為1 LJMP MIAOBIAO ;MONTH: MOV A,70H ; CJNE A,#31,MONTH1 ;是否是日是

26、31 MOV A,71H ; CJNE A,#4,MONTH6 ;是否是4月 MOV 71H,#5 ;月份為5 MOV 70H,#1 ;日為1 AJMP MIAOBIAO ; MONTH6:MOV A,71H ; CJNE A,#6,MONTH9 ;是否是6月 MOV 71H,#7 ;月份為7 MOV 70H,#1 ;日為1 AJMP MIAOBIAO ; MONTH9:MOV A,71H ; CJNE A,#9,MONTH11 ;是否是 9月 MOV 71H,#10 ;月分為10 MOV 70H,#1 ;日為1 AJMP MIAOBIAO ; MONTH11:MOV A,71H ; CJNE

27、 A,#11,MIAOBIAO ;是否是11月 MOV 71H,#12 ;月份為12 MOV 70H,#1 ; 日為1 AJMP MIAOBIAO ;MONTH1: MOV A,70H ; CJNE A,#32,MIAOBIAO ;是否日是32 MOV A,71H ; CJNE A,#12,MONTH0 ;是否是 12月 INC 73H ;年加1 MOV 70H,#1 ;月為1 MOV 71H,#1 ;日為1 AJMP MIAOBIAO ; MONTH0:INC 71H ;不是12月,月加1 MOV 70H,#1 ;日為 AJMP MIAOBIAO ;MIAOBIAO: ;秒表函數(shù) JNB 0

28、3H,DINGSHI ;是否進(jìn)入計(jì)時(shí) JNB 10H,DINGSHI ;是否開始計(jì)時(shí) DJNZ 52H,DINGSHI ;是否100毫秒已到 MOV 52H,#10 ; JNB P3.4,CLEAR ;按鍵按下時(shí)清0 MOV A,60H ; CJNE A,#10,DINGSHI ;是否已加到10 INC 61H ;秒位加1 MOV A,61H ; CJNE A,#60,DINGSHI ;秒是否已經(jīng)加到60 MOV 61H,#0 ;秒位清0 INC 62H ;分加1 MOV A,62H ; CJNE A,#60,DINGSHI ;是否是60分 MOV 62H,#0 ;分為清0 AJMP DING

29、SHI ; CLEAR:MOV 60H,#0 ;清0 MOV 61H,#0 ; MOV 62H,#0 ; CLR 10H ;停止計(jì)數(shù) AJMP DINGSHI ;DINGSHI: ;定時(shí)函數(shù) JB 17H,YSTART ;定時(shí)器有效 LJMP BAOSHI ;定時(shí)器無效 YSTART:JB 12H,START ;是否已經(jīng)在放音樂 MOV A,63H ; CJNE A,73H,BAO1 ;是否時(shí)已到 AJMP NEXT10 ; BAO1:LJMP BAOSHI ; NEXT10:MOV A,64H ; CJNE A,74H,BAO2 ;是否分已到 AJMP NEXT11 ; BAO2:LJMP

30、BAOSHI ; NEXT11:MOV A,65H ; CJNE A,75H,BAO3 ;是否秒已到 AJMP NEXT12 ; BAO3:LJMP BAOSHI ; NEXT12:SETB 12H ;設(shè)置定時(shí)已到 MOV 55H,#10H ;第一個(gè)節(jié)拍 MOV 57H,#0FBH ;第一個(gè)音調(diào)高位 MOV 56H,#8BH ;第一個(gè)音調(diào)低位 SETB TR1 ;啟動(dòng)定時(shí)器1START:DJNZ 55H,BAO4 ;節(jié)拍是否已結(jié)束 AJMP NEXT13 ;BAO4: LJMP BAOSHI ;NEXT13: CPL 13H ; JB 13H,DELAY50MS ;進(jìn)入延時(shí)50毫秒 MOV A

31、,58H ; INC A ;表地址加1 MOV 58H,A ; GETNEXT:MOV DPTR,#DAT ; MOVC A,A+DPTR ;取音調(diào) CJNE A,#00H,DSQ1 ;是否已經(jīng)結(jié)束 CLR 12H ;定時(shí)結(jié)束 CLR TR1 ;關(guān)定時(shí)器1 CLR P3.0 ;關(guān)蜂鳴器 CLR 13H ; MOV 59H,#00H ; MOV 58H,#01H ; AJMP BAOSHI ; DSQ1:CJNE A,#01H,DSQ2 ; MOV A,55H ; INC A ; INC A ; MOV 55H,A ; AJMP GETNEXT ; DSQ2:CJNE A,#0FFH,DSQ3

32、;是否播放空音調(diào) CLR TR1 ;關(guān)定時(shí)器1 CLR P3.0 ;關(guān)蜂鳴器 AJMP DSQ4 ; DSQ3:MOV B,#20 ;把音調(diào)轉(zhuǎn)化成定時(shí)器1所對(duì)應(yīng)定時(shí)存儲(chǔ)器 MUL AB ; MOV 59H,A ; MOV A,#0FFH ; SUBB A,59H ; MOV 56H,A ; MOV 59H,B ; MOV A,#0FFH ; SUBB A,59H ; MOV 57H,A ; SETB TR1 ; DSQ4:MOV A,58H ; INC A ;表地址加1 MOV 58H,A ; MOV DPTR,#DAT ; MOVC A,A+DPTR ;取節(jié)拍進(jìn)行延時(shí) MOV 55H,A ;

33、 JB P3.4,BAOSHI ;是否停止放 CLR 12H ;清標(biāo)志位 CLR TR1 ;關(guān)定時(shí)器1 CLR P3.0 ;關(guān)蜂鳴器 CLR 13H ; MOV 59H,#00H ; MOV 58H,#01H ; AJMP BAOSHI ; DELAY50MS:CLR TR1 ;延時(shí)50毫秒 CLR P3.0 ;關(guān)蜂鳴器 MOV 55H,#5 ;BAOSHI: ;整點(diǎn)報(bào)時(shí)函數(shù) JB 12H,FLASHCTRL ;如果正在定時(shí)放音樂那么不整點(diǎn)報(bào)時(shí) MOV A,74H ; CJNE A,#0,BAO ;是否是0分 MOV A,73H ; CJNE A,#0,FLASHCTRL ;是否是0秒 ;JNB TR1,FLASHCTRL ;是否已經(jīng)關(guān)定時(shí)器1 CLR TR1 ;關(guān)定時(shí)器0 CLR P3.0 ;關(guān)蜂鳴器 AJMP FLASHCTRL ; BAO:MOV A,74H ;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論