單片機(jī)課程設(shè)計(jì)打鈴_第1頁
單片機(jī)課程設(shè)計(jì)打鈴_第2頁
單片機(jī)課程設(shè)計(jì)打鈴_第3頁
單片機(jī)課程設(shè)計(jì)打鈴_第4頁
單片機(jī)課程設(shè)計(jì)打鈴_第5頁
已閱讀5頁,還剩26頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、單片機(jī)課程設(shè)計(jì)之自動打鈴系統(tǒng)院系: 電氣與信息工程系 專業(yè): 應(yīng)用電子 班級: 電子092班 指導(dǎo)教師 : 曾紅兵 設(shè)計(jì)小組人員姓名: jaw920設(shè)計(jì)時(shí)間: 2011.10.192011.11.05 2010年 11月 05 日 摘 要 本次設(shè)計(jì)中的LED數(shù)碼管電子時(shí)鐘電路采用24小時(shí)制記時(shí)方式,本次設(shè)計(jì)采用AT89S52單片機(jī)的擴(kuò)展芯片和6個(gè)PNP三極管做驅(qū)動,由三塊LED數(shù)碼管構(gòu)成的顯示系統(tǒng),與傳統(tǒng)的基于8/16位普通單片機(jī)的LED顯示系統(tǒng)相比較,本系統(tǒng)在不顯著地增加系統(tǒng)成本的情況下,可支持更多的LED數(shù)碼管穩(wěn)定顯示。設(shè)計(jì)采用AT89S52單片機(jī),使用5V電源供電,并且在按鍵的作用下可以

2、進(jìn)行調(diào)時(shí),調(diào)分,復(fù)位功能。計(jì)時(shí)數(shù)據(jù)的更新在計(jì)算機(jī)C語言的驅(qū)動下每秒自動進(jìn)行一次,但不需程序干預(yù)其輸出狀態(tài)。關(guān)鍵詞:AT89S52; 數(shù)碼管 ; LED 目 錄引 言1第1章 設(shè)計(jì)簡介及方案論述1 1.1 作息時(shí)間控制鐘系統(tǒng)概述1 1.2 本設(shè)計(jì)任務(wù)和主要內(nèi)容1第二章 系統(tǒng)硬件電路設(shè)計(jì)2 2.1單片機(jī)總體設(shè)計(jì)思路2 2.2 各功能模塊程序?qū)崿F(xiàn)原理分析2 2.21 七段式數(shù)碼管驅(qū)動模塊2 2.22 蜂鳴器驅(qū)動模塊2 2.23 按鈕控制模塊3 2.3系統(tǒng)主要硬件電路5 2.31 七段式數(shù)碼管驅(qū)動模塊的硬件設(shè)計(jì)6 2.32 蜂鳴器驅(qū)動模塊的硬件設(shè)計(jì)7第三章 系統(tǒng)軟件設(shè)計(jì)8 3.1 系統(tǒng)軟件設(shè)計(jì)的主要內(nèi)

3、容83.2 系統(tǒng)軟件設(shè)計(jì)的流程圖8第四章 系統(tǒng)調(diào)試與測試結(jié)果分析10 4.1 系統(tǒng)調(diào)試10 4.11 軟件調(diào)試10 4.12 硬件調(diào)試10第五章 附錄及參考文獻(xiàn)12 5.1 匯編程序清單12 5.2 器材儀表34 5.3參考資料34第六章 設(shè)計(jì)總結(jié) 引 言本設(shè)計(jì)是根據(jù)我們所學(xué)習(xí)的單片機(jī)課程,按照大綱要求對我們進(jìn)行的一次課程檢驗(yàn),是進(jìn)行單片機(jī)課程訓(xùn)練的必要任務(wù),也對我們掌握單片機(jī)應(yīng)用有很大的幫助。掌握單片機(jī)技術(shù)是一門不可或缺的技術(shù),對我們將來的工作以及生活和學(xué)習(xí)都有很密切的聯(lián)系。近年來,隨著電子技術(shù)和微機(jī)計(jì)算機(jī)的迅速發(fā)展,單片機(jī)的檔次不斷提高,其應(yīng)用領(lǐng)域也在不斷的擴(kuò)大,已在工業(yè)控制、尖端科學(xué)、智

4、能儀器儀表、日用家電、汽車電子系統(tǒng)、辦公自動化設(shè)備、個(gè)人信息終端及通信產(chǎn)品中得到了廣泛的應(yīng)用,成為現(xiàn)代電子系統(tǒng)中最重要的智能化的核心部件。當(dāng)今時(shí)代是一個(gè)新技術(shù)層出不窮的時(shí)代,在電子領(lǐng)域尤其是自動化智能控制領(lǐng)域,傳統(tǒng)的分立元件或數(shù)字邏輯電路構(gòu)成的控制系統(tǒng),正以前所未有的速度被單片機(jī)智能控制系統(tǒng)所取代。單片機(jī)具有體積小、功能強(qiáng)、成本低、應(yīng)用面廣等優(yōu)點(diǎn),可以說,智能控制與自動控制的核心就是單片機(jī)。目前,一個(gè)學(xué)習(xí)與應(yīng)用單片機(jī)的高潮正在工廠、學(xué)校及企事業(yè)單位大規(guī)模地興起。學(xué)習(xí)單片機(jī)的最有效的方法就是理論與實(shí)踐并重,本文用AT89S52單片機(jī)設(shè)計(jì)的一個(gè)自動打鈴系統(tǒng)。 第一章 設(shè)計(jì)簡介及方案論述1.1作息時(shí)

5、間控制鐘系統(tǒng)概述: 本設(shè)計(jì)是一個(gè)具有報(bào)時(shí)功能的作息時(shí)間控制鐘。它利用AT89S52單片機(jī)的2Hz時(shí)基計(jì)時(shí),進(jìn)行年歷計(jì)算,并用的蜂鳴器驅(qū)動模塊將它報(bào)出來;在進(jìn)行時(shí)間計(jì)算,分每加一時(shí),都與規(guī)定的作息時(shí)間比較,如果相等則進(jìn)行相應(yīng)的控制或動作。由七段顯示驅(qū)動模塊、蜂鳴器驅(qū)動模塊和按鈕控制模塊三部分組成,四個(gè)按鍵用于報(bào)時(shí)及校正時(shí)間?,F(xiàn)代機(jī)關(guān)企業(yè),特別是學(xué)校要求對時(shí)間加以控制,要按時(shí)打鈴及播放廣播,以保證學(xué)習(xí)與工作的正常運(yùn)行。本設(shè)計(jì)實(shí)現(xiàn)了這些功能,給學(xué)校及其他機(jī)關(guān)企業(yè)帶來方便,整體性好,人性化強(qiáng)、可靠性高,實(shí)現(xiàn)了對時(shí)間控制的智能化。1.2本設(shè)計(jì)任務(wù)和主要內(nèi)容: (1)設(shè)計(jì)任務(wù)用可編程器件為主體,設(shè)計(jì)并制作

6、一臺自動打鈴系統(tǒng)。要求完成的作品必須固化軟件,測試檢查時(shí)上電即可工作,不允再用計(jì)算機(jī)下載。實(shí)現(xiàn)能夠顯示當(dāng)前的時(shí)間,同時(shí)能夠在規(guī)定的時(shí)間點(diǎn)控制打鈴裝置打出預(yù)期的鈴聲。另外增設(shè)四個(gè)按鈕,通過分配以實(shí)現(xiàn)對時(shí)間的調(diào)整,包括對時(shí)鐘、分鐘的增加和減少,秒鐘的清零;以及強(qiáng)制打鈴和關(guān)閉打鈴。 (2)主要內(nèi)容1、基本計(jì)時(shí)和顯示功能(用12小時(shí)制顯示)。包括上下午標(biāo)志,時(shí)、分的數(shù)字顯示,秒信號指示。2、能設(shè)置當(dāng)前時(shí)間(含上、下午,時(shí),分)3、能實(shí)現(xiàn)基本打鈴功能,規(guī)定:上午6:00起床鈴:打鈴5秒、停2秒、再打鈴5秒。下午10:30熄燈鈴:打鈴5秒、停2秒、再打鈴5秒。鈴聲可用小喇叭播放,凡是用到鈴聲功能的均按此處

7、理。 第二章 系統(tǒng)主要硬件電路設(shè)計(jì)2.1單片機(jī)總體設(shè)計(jì)思路 (1)設(shè)計(jì)能正常工作的一個(gè)單片機(jī)最小硬件系統(tǒng),外圍電路包括設(shè)置鍵盤,LCD或LED的顯示屏; (2)進(jìn)行軟件設(shè)計(jì),利用單片機(jī)系統(tǒng)時(shí)鐘先設(shè)計(jì)一個(gè)高精度的內(nèi)部時(shí)鐘系統(tǒng),最小精確時(shí)間為期1秒; (3)在秒計(jì)數(shù)器的基礎(chǔ)上設(shè)計(jì)一個(gè)24小時(shí)時(shí)鐘,并設(shè)計(jì)若干定時(shí)功能; (4)設(shè)計(jì)打鈴執(zhí)行機(jī)構(gòu),完成自動打鈴功能。2.2各功能模塊程序?qū)崿F(xiàn)原理分析 2-1圖 模塊組成框圖如圖2-1所示,該模塊由蜂鳴器驅(qū)動模塊、蜂鳴器驅(qū)動模塊和按鈕控制模塊三部分組成。且三部分都通過AT89S52來實(shí)現(xiàn)。2.21七段式數(shù)碼管驅(qū)動模塊 采用動態(tài)掃描方式,通過一組單片機(jī)端口驅(qū)動

8、并聯(lián)在一起的LED發(fā)光管的一端(共陰或共陽端),LED發(fā)光管的另一腳接通用I/O口,控制其亮滅。該方法能驅(qū)動較多的LED,控制方式較靈活,而且節(jié)省單片機(jī)的資源。 2.22蜂鳴器驅(qū)動模塊 采用壓電式蜂鳴器,壓電式蜂鳴器主要由多諧振蕩器、壓電蜂鳴片、阻抗匹配器及共鳴箱、外殼等組成。多諧振蕩器由晶體管或集成電路構(gòu)成,當(dāng)接通電源后(1.5-15V直流工作電壓),多諧振蕩器起振,輸出1.52.5kHZ的音頻信號,阻抗匹配器推動壓電蜂鳴片發(fā)聲。 2.23按鈕控制模塊四個(gè)按鈕的一端分別接地,另一端接單片機(jī)一個(gè)端口的四個(gè)引腳,當(dāng)某一個(gè)按鈕按下的時(shí)候,其對應(yīng)的引腳就由高電平變成低電平,然后通過單片機(jī)掃描讀取引腳

9、的電平來判斷按鈕是否按下。2.3AT89S52單片機(jī)性能介紹AT89S52是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器的低電壓,高性能CMOS8位微處理器,俗稱單片機(jī)。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-52指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個(gè)芯片中,ATMEL的AT89S52是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。引腳說明: VCC:供電電壓。 P0口:P0口為一個(gè)8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它

10、可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。 P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。 P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸

11、出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進(jìn)行讀寫時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號和控制信號。 P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口也可作為AT89S52的一些特殊功能口,如下表所示: 口管腳 備選功能P3.0 R

12、XD(串行輸入口)P3.1 TXD(串行輸出口)P3.2 /INT0(外部中斷0)P3.3 /INT1(外部中斷1)P3.4 T0(記時(shí)器0外部輸入)P3.5 T1(記時(shí)器1外部輸入)P3.6 /WR(外部數(shù)據(jù)存儲器寫選通)P3.7 /RD(外部數(shù)據(jù)存儲器讀選通)P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號。AT89S52各部分引腳圖如下: P1.0 1 40 Vcc P1.1 2 39 P0.0 P1.2 3 38 P0.1 P1.3 4 37 P0.2 P1.4 5 36 P0.3 P1.5 6 35 P0.4 P1.6 7 34 P0.5 P1.7 8 33 P0.6 RST/Vpd

13、9 32 P0.7 RXD P3.0 10 31 EA/Vpp TXD P3.1 11 30 ALE/-P INT0 P3.2 12 29 PSEN INT1 P3.3 13 28 P2.7 T0 P3.4 14 27 P2.6 T1 P3.5 15 26 P2.5 WR P3.6 16 25 P2.4 RD P3.7 17 24 P2.3 X2 18 23 P2.2 X1 19 22 P2.1 GND 20 21 P2.0 圖2-2 AT89S52引腳圖 RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。 ALE/PROG:當(dāng)訪問外部存儲器時(shí),地址鎖存允許的輸出電

14、平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器時(shí),將跳過一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí), ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。為使該模塊化自動打鈴系統(tǒng)具有更加方便和靈活性,我們對系統(tǒng)的硬件做了精心設(shè)計(jì)。硬件電路包括七段式數(shù)碼管驅(qū)動模塊、蜂鳴器驅(qū)動模塊、按鈕控制模塊等三大模塊。2.3系統(tǒng)

15、主要硬件電路系統(tǒng)主要硬件電路作為驅(qū)動整個(gè)打鈴系統(tǒng)的電路又分為七段數(shù)碼顯示電路和蜂鳴器驅(qū)動電路。由顯示七段數(shù)碼顯示電路和蜂鳴器驅(qū)動電路組成的系統(tǒng)硬件主要電路及PCB布線圖如下:圖2-3:系統(tǒng)主要硬件電路該系統(tǒng)通過按鈕控制(系統(tǒng)使用4只按鍵,3只按鍵用來調(diào)整時(shí)間,另一只為強(qiáng)制打鈴按鈕;調(diào)整選擇鍵SET_KEY:P1.0通過選擇鍵選擇調(diào)整位,選中位閃爍;增加鍵ADD_KEY:P1.1按一次使選中位加1;減少鍵DEC_KEY:P1.2按一次使選中位減1;如果長按ADD_KEY或DEC_KEY,識別后則進(jìn)行調(diào)時(shí)快進(jìn),此時(shí)停止閃爍)AT89S52的計(jì)時(shí)和定時(shí),在七段數(shù)碼管上顯示出來(實(shí)現(xiàn)24小時(shí)制電子鐘,

16、8位數(shù)碼管顯示,顯示時(shí)分秒),再通過蜂鳴器 (BEEP:P3.7)來實(shí)現(xiàn)打鈴。 2.31七段式數(shù)碼管驅(qū)動模塊的硬件設(shè)計(jì)LED數(shù)碼管顯示器內(nèi)部有七個(gè)條形發(fā)光二極管和一個(gè)小圓點(diǎn)發(fā)光二極管組成,其結(jié)果圖如下所示:comABCDEFG圖2-4:七段數(shù)碼顯示管因而它的控制原理和發(fā)光二極管的控制原理是相同的。根據(jù)各管接線的形式,可分成共陰極型和共陽極型。其八個(gè)接口對應(yīng)的字形如下表:表一:數(shù)碼管字型碼表顯示字形dpgfedcba共陰極字型碼共陽極字型碼0001111110x3F0xC01000001100x060xF92010110110x5B0xA43010011110x4F0xB04011001100x

17、660x995011011010x6D0x926011111010x7D0x827000001110x070xF88011111110x7F0x809011011110x6F0x90A011101110x770x88B011111000x7C0x83C001110010x390xC6D010111100x5E0xA1E011110010x790x86F011100010x710x8E蜂鳴器驅(qū)動模塊的硬件設(shè)計(jì)本設(shè)計(jì)中的蜂鳴器驅(qū)動模塊用到了蜂鳴器(BELL)、NPN三極管9013、1K歐姆的電阻。將蜂鳴器的一段接地,另一端接三極管的發(fā)射極,三極管的基極通過1K歐姆的電阻接在三極管的P3.7引腳,三

18、極管的集電極接+5V的電源。其電路圖如下圖所示:圖2-5:蜂鳴器驅(qū)動電路圖 第三章 系統(tǒng)軟件設(shè)計(jì)軟件是該LED顯示屏控制系統(tǒng)的重要組成部分,在系統(tǒng)的軟件設(shè)計(jì)中我們也才用了模塊化設(shè)計(jì),將系統(tǒng)的各部分功能編寫成子模塊的形式,這樣增強(qiáng)了系統(tǒng)軟件的可讀性和可移植性。3.1系統(tǒng)軟件設(shè)計(jì)的主要內(nèi)容系統(tǒng)軟件設(shè)計(jì)由三個(gè)模塊編程組成:蜂鳴器打鈴編程,七段顯示管顯示編程,按鍵編程。3.2主程序流程設(shè)計(jì) 主程序初始化,并打開中斷,然后執(zhí)行中斷服務(wù)程序。實(shí)現(xiàn)24小時(shí)制電子鐘,8位數(shù)碼管顯示,顯示時(shí)分秒顯示格式:23-59-59(小時(shí)十位如果為0則不顯示)到預(yù)定時(shí)間啟動蜂鳴器模擬打鈴,蜂鳴器BEEP:P3.7打鈴方式分

19、起床、熄燈鈴和上、下課鈴兩種系統(tǒng)使用4只按鍵,3只按鍵用來調(diào)整時(shí)間,另一只為強(qiáng)制打鈴按鈕調(diào)整選擇鍵SET_KEY:P1.0;通過選擇鍵選擇調(diào)整位,選中位閃爍增加鍵ADD_KEY:P1.1;按一次使選中位加1減少鍵DEC_KEY;P1.2;按一次使選中位減1,如果長按ADD_KEY或DEC_KEY,識別后則進(jìn)行調(diào)時(shí)快進(jìn),此時(shí)停止閃爍。主程序流程設(shè)計(jì)圖: 圖3.1如圖所示主程序開始初始化后,就跳轉(zhuǎn)到中斷服務(wù)程序,如正常走時(shí),則往下進(jìn)行打鈴時(shí)間的比較,繼續(xù)向下執(zhí)行對打鈴的判斷程序;如不正常走時(shí),則直接轉(zhuǎn)到顯示程序。這以后,繼續(xù)執(zhí)行按鍵的檢測,若有鍵按下,則取值打鈴;反之,則返回到中斷服務(wù)程序的開始繼

20、續(xù)執(zhí)行。主程序清單見附錄。第四節(jié) 系統(tǒng)軟件調(diào)試與故障分析4.1系統(tǒng)調(diào)試 根據(jù)系統(tǒng)設(shè)計(jì)方案,本系統(tǒng)的調(diào)試共分為兩大部分:軟件調(diào)試,故障分析。由于在系統(tǒng)設(shè)計(jì)中采用模塊設(shè)計(jì)法,所以方便對各電路模塊功能進(jìn)行逐級測試:LED驅(qū)動模塊的調(diào)試,數(shù)據(jù)存儲模塊的調(diào)試,PC機(jī)通信模塊的調(diào)試等,最后將各模塊組合后進(jìn)行整體測試。 4.11軟件調(diào)試軟件調(diào)試采用單片機(jī)仿Keil uVision2軟件,將編好的程序進(jìn)行調(diào)試,主要是檢查語法錯(cuò)誤。 4.12故障分析調(diào)試?yán)萌f用表對各個(gè)模塊的功能進(jìn)行調(diào)試,主要調(diào)試各模塊能否實(shí)現(xiàn)指定的功能。檢測萬用板個(gè)原件是否有接反的現(xiàn)象,出現(xiàn)故障時(shí)用萬用表不同的檔位進(jìn)行測試,并直到能實(shí)現(xiàn)各個(gè)原

21、件功能為準(zhǔn)。附錄:5.1匯編程序清單:BEEP EQU P3.7 ;定義蜂鳴器(電鈴)控制信號輸出口 ORG 0000H ;程序入口地址 LJMP START ORG 000BH ;定時(shí)器0中斷入口地址 LJMP TIMER_0 ORG 0100H;/*程序開始,初始化*/ START: SETB BEEP ;關(guān)閉蜂鳴器(電鈴) SETB 48H ;使用一個(gè)bit位用于調(diào)時(shí)閃爍標(biāo)志 SETB 47H ;使用一個(gè)bit位用于產(chǎn)生脈沖用于調(diào)時(shí)快進(jìn)時(shí)基 CLR 45H ;關(guān)閉響鈴方式1標(biāo)志 CLR 44H ;關(guān)閉響鈴方式2標(biāo)志 MOV R1,#0 ;調(diào)整選擇鍵功能標(biāo)志:0正常走時(shí)、1調(diào)時(shí)、2調(diào)分、3

22、調(diào)秒 MOV 20H,#00H ;用于控制秒基準(zhǔn)時(shí)鐘源的產(chǎn)生 MOV 21H,#00H ;清零秒寄存器 MOV 22H,#00H ;清零分寄存器 MOV 23H,#00H ;清零時(shí)寄存器 MOV 24H,#00H ;用于控制調(diào)時(shí)閃爍的基準(zhǔn)時(shí)鐘的產(chǎn)生 MOV R2,#00H ;強(qiáng)制打鈴標(biāo)志 MOV R3,#00H ;強(qiáng)制打鈴時(shí)長標(biāo)志 MOV IP,#02H ;IP,IE初始化 MOV IE,#82H MOV TMOD,#01H ;設(shè)定定時(shí)器0工作方式1 MOV TH0,#3CH MOV TL0,#0B0H ;賦定時(shí)初值,定時(shí)50ms SETB TR0 ;啟動定時(shí)器0 MOV SP,#40H ;重

23、設(shè)堆棧指針;/*主程序*/ MAIN: CJNE R1,#00H,MAIN1 ;是否為正常走時(shí)狀態(tài) LCALL BIJIAO1 ;調(diào)用起床、熄燈打鈴比較子程序 LCALL BIJIAO2 ;調(diào)用上、下課打鈴比較子程序 LCALL DALING1 ;調(diào)用響鈴方式1執(zhí)行子程序 LCALL DALING2 ;調(diào)用響鈴方式2執(zhí)行子程序 LCALL DALING3 MAIN1: LCALL DISPLAY ;調(diào)用顯示子程序 LCALL KEY_SCAN ;調(diào)用按鍵檢測子程序 JZ MAIN ;無鍵按下則返回重新循環(huán) LCALL SET_KEY ;調(diào)用選擇鍵處理子程序 JB 46H,MAIN ;如果已進(jìn)行

24、長按調(diào)整(調(diào)時(shí)快進(jìn)),則不再執(zhí)行下面的單步調(diào)整 LCALL ADD_KEY ;調(diào)用增加鍵處理子程序 LCALL DEC_KEY ;調(diào)用減少鍵處理子程序 LCALL DALING_KEY ;處理強(qiáng)制打鈴/強(qiáng)制關(guān)閉鈴聲鍵 LJMP MAIN ;重新循環(huán) ;/*定時(shí)中斷服務(wù)程序*/ TIMER_0: PUSH ACC PUSH PSW ;保護(hù)現(xiàn)場 MOV TH0,#3CH MOV TL0,#0B0H ;重新賦定時(shí)初值 CPL 47H ;產(chǎn)生脈沖用于調(diào)時(shí)快進(jìn)時(shí)基 INC 24H MOV A,24H CJNE A,#10,ADD_TIME ;產(chǎn)生0.5秒基準(zhǔn)時(shí)鐘,用于調(diào)時(shí)閃爍 CPL 48H ;取反調(diào)時(shí)

25、閃爍標(biāo)志位 MOV 24H,#00HADD_TIME: INC 20H MOV A,20H CJNE A,#20,RETI1 ;產(chǎn)生1秒基準(zhǔn)時(shí)鐘 MOV 20H,#00H ;一秒鐘時(shí)間到,清零20H CJNE R2,#01H,ADD_M INC R3 ADD_M: MOV A,21H ADD A,#01H DA A ;作十進(jìn)制調(diào)整 MOV 21H,A CJNE A,#60H,RETI1 MOV 21H,#00H ;一分鐘到 MOV A,22H ADD A,#01H DA A MOV 22H,A CJNE A,#60H,RETI1 MOV 22H,#00H ;一小時(shí)到 MOV A,23H ADD

26、 A,#01H DA A MOV 23H,A CJNE A,#24H,RETI1 MOV 23H,#00H ;到24點(diǎn),清零小時(shí) RETI1: POP PSW POP ACC ;恢復(fù)現(xiàn)場 RETI ;中斷返回;/*顯示處理*/ DISPLAY: MOV A,21H ;秒 ANL A,#0FH MOV 2FH,A ;轉(zhuǎn)換出秒個(gè)位,存入2FH MOV A,21H ANL A,#0F0H SWAP A MOV 2EH,A ;轉(zhuǎn)換出秒十位,存入2EH JB 46H,MIN ;如果長按按鍵(調(diào)時(shí)快進(jìn)),則跳過閃爍處理 CJNE R1,#3,MIN ;如果R1為3,閃爍秒位待調(diào)整 JB 48H,MIN M

27、OV 2FH,#0AH ;使該位為10,查表得到使該位不顯示的輸出 MOV 2EH,#0AHMIN: MOV A,22H ;分 ANL A,#0FH MOV 2DH,A ;轉(zhuǎn)換出分個(gè)位,存入2DH MOV A,22H ANL A,#0F0H SWAP A MOV 2CH,A ;轉(zhuǎn)換出分十位,存入2CH JB 46H,HOUR ;如果長按按鍵(調(diào)時(shí)快進(jìn)),則跳過閃爍處理 CJNE R1,#2,HOUR ;如果R1為2,閃爍分位待調(diào)整 JB 48H,HOUR MOV 2DH,#0AH ;使該位為10,查表得到使該位不顯示的輸出 MOV 2CH,#0AHHOUR: MOV A,23H ;時(shí) ANL

28、A,#0FH MOV 2BH,A ;轉(zhuǎn)換出時(shí)個(gè)位,存入2BH MOV A,23H ANL A,#0F0H SWAP A MOV 2AH,A ;轉(zhuǎn)換出時(shí)十位,存入2AH JB 46H,DISP ;如果長按按鍵(調(diào)時(shí)快進(jìn)),則跳過閃爍處理 CJNE R1,#1,DISP ;如果R1為1,閃爍時(shí)位待調(diào)整 JB 48H,DISP MOV 2BH,#0AH ;使該位為10,查表得到使該位不顯示的輸出 MOV 2AH,#0AH;/*數(shù)碼管動態(tài)掃描顯示*/DISP: MOV DPTR,#TABLE MOV A,2FH MOVC A,A+DPTR MOV P0,A CLR P2.7 LCALL DELAY S

29、ETB P2.7 ;顯示秒個(gè)位 MOV A,2EH MOVC A,A+DPTR MOV P0,A CLR P2.6 LCALL DELAY SETB P2.6 ;顯示秒十位 MOV A,#40H MOV P0,A CLR P2.5 LCALL DELAY SETB P2.5 ;顯示“-” MOV A,2DH MOVC A,A+DPTR MOV P0,A CLR P2.4 LCALL DELAY SETB P2.4 ;顯示分個(gè)位 MOV A,2CH MOVC A,A+DPTR MOV P0,A CLR P2.3 LCALL DELAY SETB P2.3 ;顯示分十位 MOV A,#40H MO

30、V P0,A CLR P2.2 LCALL DELAY SETB P2.2 ;顯示“-” MOV A,2BH MOVC A,A+DPTR MOV P0,A CLR P2.1 LCALL DELAY SETB P2.1 ;顯示時(shí)個(gè)位 MOV DPTR,#TABLE1 ;該位使用TABLE1以消除前置0 MOV A,2AH MOVC A,A+DPTR MOV P0,A CLR P2.0 LCALL DELAY SETB P2.0 ;顯示時(shí)十位 RET ;/*按鍵檢測子程序*/ KEY_SCAN: CLR 46H ;關(guān)閉長按調(diào)整(調(diào)時(shí)快進(jìn))標(biāo)志 MOV P1,#0FFH ;將P1口設(shè)置成輸入狀態(tài) M

31、OV A,P1 CPL A ANL A,#0FH ;P1口低4位連接4個(gè)按鍵,只判斷該4位 JZ EXIT_KEY ;無鍵按下則返回 LCALL DELAY ;延時(shí)去抖動 MOV A,P1 ;重新判斷 CPL A ANL A,#0FH JZ EXIT_KEY ;鍵盤去抖動 MOV R5,A ;臨時(shí)將鍵值存入R5 MOV R4,#00H ;用于控制調(diào)時(shí)快進(jìn)速度 ;設(shè)置為00H是為了在進(jìn)入長按處理前加長延時(shí)區(qū)分用戶的長按與短按,防止誤快進(jìn) LOOP: ;進(jìn)入長按處理 LCALL DISPLAY ;使長按時(shí)顯示正常 MOV A,P1 CPL A ANL A,#0FH JB 47H,LOOP1 INC

32、 R4 ;調(diào)時(shí)快進(jìn)間隔時(shí)間基準(zhǔn)加1LOOP1: CJNE R1,#03H,LOOP2 ;如果調(diào)秒時(shí)長按,則不處理 LJMP LOOP3LOOP2: CJNE R4,#99H,LOOP3 MOV R4,#70H ;確認(rèn)用戶長按后,重新設(shè)定起始值,加快調(diào)時(shí)快進(jìn)速度 SETB 46H ;長按調(diào)整(調(diào)時(shí)快進(jìn))標(biāo)志 LCALL ADD_KEY LCALL DEC_KEYLOOP3: JNZ LOOP ;等待鍵釋放 MOV A,R5 ;輸出鍵值 RET EXIT_KEY: RET;/*延時(shí)子程序*/DELAY: MOV R7,#150 DJNZ R7,$ RET ;/*選擇鍵處理子程序*/ SET_KEY

33、: CJNE R5,#01H,EXIT ;選擇鍵鍵值 INC R1 ;調(diào)整選擇功能標(biāo)志加一 SETB BEEP CJNE R1,#4,EXIT MOV R1,#0 MOV 24H,#00H ;調(diào)時(shí)閃爍基準(zhǔn)清零 RET;/*增加鍵處理子程序*/ ADD_KEY: CJNE R5,#02H,EXIT ;增加鍵鍵值 CJNE R1,#01H,NEXT1 ;選擇鍵功能標(biāo)志為1,調(diào)時(shí),否則跳出 MOV A,23H ADD A,#01H DA A MOV 23H,A CJNE A,#24H,EXIT MOV 23H,#00HNEXT1: CJNE R1,#02H,NEXT2 ;選擇鍵功能標(biāo)志為2,調(diào)分,否

34、則跳出 MOV A,22H ADD A,#01H DA A MOV 22H,A CJNE A,#60H,EXIT MOV 22H,#00HNEXT2: CJNE R1,#03H,EXIT ;選擇鍵功能標(biāo)志為3,調(diào)秒,否則跳出 MOV 21H,#00H ;如增加鍵按下直接清零秒 RET;/*減少鍵處理子程序*/ DEC_KEY: CJNE R5,#04H,EXIT ;減少鍵鍵值 CJNE R1,#01H,NEXT3 ;選擇鍵功能標(biāo)志為1,調(diào)時(shí),否則跳出 MOV A,23H ADD A,#99H DA A MOV 23H,A CJNE A,#99H,EXIT MOV 23H,#23H NEXT3:

35、 CJNE R1,#02H,NEXT4 ;選擇鍵功能標(biāo)志為2,調(diào)分,否則跳出 MOV A,22H ADD A,#99H DA A MOV 22H,A CJNE A,#99H,EXIT MOV 22H,#59HNEXT4: CJNE R1,#03H,EXIT ;選擇鍵功能標(biāo)志為3,調(diào)秒,否則跳出 MOV 21H,#00H ;如較少鍵按下直接清零秒 RET;/*強(qiáng)制響鈴鍵處理子程序*/ DALING_KEY: CJNE R5,#08H,EXIT ;選擇鍵鍵值 JNB 45H,LP1 ;判斷是否正在響鈴 CLR 45H RETLP1: JNB 44H,LP2 CLR 44H RETLP2: MOV

36、R2,#01H RET;/*萬用返回程序*/ EXIT: RET;/*數(shù)碼管字形編碼表*/TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H ;字形顯示編碼TABLE1: DB 00H,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H ;小時(shí)位的十位數(shù)編碼,該位如果為0則不顯示;/*打鈴時(shí)間對比程序(起床、熄燈)*/BIJIAO1: MOV A,23H CJNE A,#00H,B0 MOV A,22H CJNE A,#01H,B0 ;6:00到 SETB 45H ;開啟響鈴方式1 RETB0: MOV A,2

37、3H CJNE A,#22H,EXIT_1 MOV A,22H CJNE A,#30H,EXIT_1 ;22:30到 SETB 45H ;開啟響鈴方式1 RETEXIT_1: CLR 45H RET;/*打鈴時(shí)間對比程序(上、下課)*/BIJIAO2: MOV A,23H CJNE A,#07H,B1 MOV A,22H CJNE A,#30H,B1 ;7:30 SETB 44H ;開啟響鈴方式2 RETB1: MOV A,23H CJNE A,#08H,B2 MOV A,22H CJNE A,#20H,B2 ;8:20 SETB 44H RETB2: MOV A,23H CJNE A,#08

38、H,B3 MOV A,22H CJNE A,#30H,B3 ;8:30 SETB 44H RETB3: MOV A,23H CJNE A,#09H,B4 MOV A,22H CJNE A,#20H,B4 ;9:20 SETB 44H RETB4: MOV A,23H CJNE A,#09H,B5 MOV A,22H CJNE A,#40H,B5 ;9:40 SETB 44H RETB5: MOV A,23H CJNE A,#10H,B6 MOV A,22H CJNE A,#30H,B6 ;10:30 SETB 44H RETB6: MOV A,23H CJNE A,#10H,B7 MOV A,

39、22H CJNE A,#40H,B7 ;10:40 SETB 44H RETB7: MOV A,23H CJNE A,#11H,EXIT_2 MOV A,22H CJNE A,#30H,EXIT_2 ;11:30 SETB 44H RETEXIT_2: CLR 44H RET;/*響鈴方式1程序(響5秒停2秒再響5秒)*/DALING1: JNB 45H,EXIT_DALING MOV A,21H ;響鈴起始時(shí)間由秒實(shí)時(shí)控制 CJNE A,#05H,L1 RETL1: JNC L2 CPL BEEP LCALL DELAY1 RETL2: MOV A,21H CJNE A,#07H,L3 CPL BEEP LCALL DELAY1 RETL3: JNC L4 SETB BEEP LCALL DELAY1 RETL4: MOV A,21H CJNE A,#12H,L5 SETB BEEP LCALL DELAY1 RETL5: JNC EXIT_DALING CPL BEEP LCALL DELAY1 RET;/*響鈴方式2程序(響5秒)*/DALING2: JNB 44H

溫馨提示

  • 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

提交評論