2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  單片機課程設計</b></p><p><b>  之自動打鈴系統(tǒng)</b></p><p>  院系: 電氣與信息工程系 </p><p>  專業(yè): 應用電子 </p><p>  班

2、級: </p><p>  2010年 11月 05 日</p><p><b>  摘 要</b></p><p>  本次設計中的LED數(shù)碼管電子時鐘電路采用24小時制記時方式,本次設計采用AT89S52單片機的擴展芯片和6個PNP三極管做驅(qū)動,由三塊LED數(shù)碼管構(gòu)成的

3、顯示系統(tǒng),與傳統(tǒng)的基于8/16位普通單片機的LED顯示系統(tǒng)相比較,本系統(tǒng)在不顯著地增加系統(tǒng)成本的情況下,可支持更多的LED數(shù)碼管穩(wěn)定顯示。設計采用AT89S52單片機,使用5V電源供電,并且在按鍵的作用下可以進行調(diào)時,調(diào)分,復位功能。計時數(shù)據(jù)的更新在計算機C語言的驅(qū)動下每秒自動進行一次,但不需程序干預其輸出狀態(tài)。</p><p>  關(guān)鍵詞:AT89S52; 數(shù)碼管 ; LED </p>&

4、lt;p><b>  目 錄</b></p><p>  引 言………………………………………………………………………………………………………………………………………1</p><p>  設計簡介及方案論述……………………………………………………………………………………1</p><p>  1.1 作息時間控制鐘系統(tǒng)概述…………………

5、……………………………………………………………1</p><p>  1.2 本設計任務和主要內(nèi)容……………………………………………………………………………………1</p><p>  第二章 系統(tǒng)硬件電路設計…………………………………………………………………………………………2</p><p>  2.1單片機總體設計思路………………………………………………………

6、…………………………………2</p><p>  2.2 各功能模塊程序?qū)崿F(xiàn)原理分析………………………………………………………………………2</p><p>  2.21 七段式數(shù)碼管驅(qū)動模塊………………………………………………………………………………………2</p><p>  2.22 蜂鳴器驅(qū)動模塊…………………………………………………………………………………

7、…………………2</p><p>  2.23 按鈕控制模塊………………………………………………………………………………………………………3</p><p>  2.3系統(tǒng)主要硬件電路…………………………………………………………………………………………………5</p><p>  2.31 七段式數(shù)碼管驅(qū)動模塊的硬件設計……………………………………………………………

8、……6</p><p>  2.32 蜂鳴器驅(qū)動模塊的硬件設計………………………………………………………………………………7</p><p>  第三章 系統(tǒng)軟件設計……………………………………………………………………………………………………8</p><p>  3.1 系統(tǒng)軟件設計的主要內(nèi)容………………………………………………………………………………83.2

9、 系統(tǒng)軟件設計的流程圖……………………………………………………………………………………8</p><p>  第四章 系統(tǒng)調(diào)試與測試結(jié)果分析……………………………………………………………………………10</p><p>  4.1 系統(tǒng)調(diào)試…………………………………………………………………………………………………………………10</p><p>  4.11 軟件調(diào)

10、試………………………………………………………………………………………………………………10</p><p>  4.12 硬件調(diào)試………………………………………………………………………………………………………………10</p><p>  第五章 附錄及參考文獻………………………………………………………………………………………………12</p><p>  5.1

11、匯編程序清單…………………………………………………………………………………………………………12</p><p>  5.2 器材儀表……………………………………………………………………………………………………………………34</p><p>  5.3參考資料……………………………………………………………………………………………………………………34</p><p&g

12、t;<b>  第六章 設計總結(jié)</b></p><p><b>  引 言</b></p><p>  本設計是根據(jù)我們所學習的單片機課程,按照大綱要求對我們進行的一次課程檢驗,是進行單片機課程訓練的必要任務,也對我們掌握單片機應用有很大的幫助。掌握單片機技術(shù)是一門不可或缺的技術(shù),對我們將來的工作以及生活和學習都有很密切的聯(lián)系。近年來,隨著電

13、子技術(shù)和微機計算機的迅速發(fā)展,單片機的檔次不斷提高,其應用領(lǐng)域也在不斷的擴大,已在工業(yè)控制、尖端科學、智能儀器儀表、日用家電、汽車電子系統(tǒng)、辦公自動化設備、個人信息終端及通信產(chǎn)品中得到了廣泛的應用,成為現(xiàn)代電子系統(tǒng)中最重要的智能化的核心部件。</p><p>  當今時代是一個新技術(shù)層出不窮的時代,在電子領(lǐng)域尤其是自動化智能控制領(lǐng)域,傳統(tǒng)的分立元件或數(shù)字邏輯電路構(gòu)成的控制系統(tǒng),正以前所未有的速度被單片機智能控制系

14、統(tǒng)所取代。單片機具有體積小、功能強、成本低、應用面廣等優(yōu)點,可以說,智能控制與自動控制的核心就是單片機。目前,一個學習與應用單片機的高潮正在工廠、學校及企事業(yè)單位大規(guī)模地興起。學習單片機的最有效的方法就是理論與實踐并重,本文用AT89S52單片機設計的一個自動打鈴系統(tǒng)。</p><p>  第一章 設計簡介及方案論述</p><p>  1.1作息時間控制鐘系統(tǒng)概述: 本設計是一個

15、具有報時功能的作息時間控制鐘。它利用AT89S52單片機的2Hz時基計時,進行年歷計算,并用的蜂鳴器驅(qū)動模塊將它報出來;在進行時間計算,分每加一時,都與規(guī)定的作息時間比較,如果相等則進行相應的控制或動作。由七段顯示驅(qū)動模塊、蜂鳴器驅(qū)動模塊和按鈕控制模塊三部分組成,四個按鍵用于報時及校正時間?,F(xiàn)代機關(guān)企業(yè),特別是學校要求對時間加以控制,要按時打鈴及播放廣播,以保證學習與工作的正常運行。本設計實現(xiàn)了這些功能,給學校及其他機關(guān)企業(yè)帶來方便,整

16、體性好,人性化強、可靠性高,實現(xiàn)了對時間控制的智能化。</p><p>  1.2本設計任務和主要內(nèi)容:</p><p><b>  (1)設計任務</b></p><p>  用可編程器件為主體,設計并制作一臺自動打鈴系統(tǒng)。要求完成的作品必須固化軟件,測試檢查時上電即可工作,不允再用計算機下載。實現(xiàn)能夠顯示當前的時間,同時能夠在規(guī)定的時間點控

17、制打鈴裝置打出預期的鈴聲。另外增設四個按鈕,通過分配以實現(xiàn)對時間的調(diào)整,包括對時鐘、分鐘的增加和減少,秒鐘的清零;以及強制打鈴和關(guān)閉打鈴。</p><p>  (2)主要內(nèi)容1、基本計時和顯示功能(用12小時制顯示)。包括上下午標志,時、分的數(shù)字顯示,秒信號指示。2、能設置當前時間(含上、下午,時,分)3、能實現(xiàn)基本打鈴功能,規(guī)定:上午6:00起床鈴:打鈴5秒、停2秒、再打鈴5秒。</p>

18、<p>  下午10:30熄燈鈴:打鈴5秒、停2秒、再打鈴5秒。鈴聲可用小喇叭播放,凡是用到鈴聲功能的均按此處理。 </p><p>  第二章 系統(tǒng)主要硬件電路設計</p><p>  2.1單片機總體設計思路</p><p>  (1)設計能正常工作的一個單片機最小硬件系統(tǒng),外圍電路包括設置鍵盤,LCD或LED的顯

19、示屏; (2)進行軟件設計,利用單片機系統(tǒng)時鐘先設計一個高精度的內(nèi)部時鐘系統(tǒng),最小精確時間為期1秒; (3)在秒計數(shù)器的基礎(chǔ)上設計一個24小時時鐘,并設計若干定時功能;</p><p>  (4)設計打鈴執(zhí)行機構(gòu),完成自動打鈴功能。</p><p>  2.2各功能模塊程序?qū)崿F(xiàn)原理分析</p><p><b>  2-1圖 </b><

20、/p><p>  模塊組成框圖如圖2-1所示,該模塊由蜂鳴器驅(qū)動模塊、蜂鳴器驅(qū)動模塊和按鈕控制模塊三部分組成。且三部分都通過AT89S52來實現(xiàn)。</p><p>  2.21七段式數(shù)碼管驅(qū)動模塊</p><p>  采用動態(tài)掃描方式,通過一組單片機端口驅(qū)動并聯(lián)在一起的LED發(fā)光管的一端(共陰或共陽端),LED發(fā)光管的另一腳接通用I/O口,控制其亮滅。該方法能驅(qū)動較多的

21、LED,控制方式較靈活,而且節(jié)省單片機的資源。</p><p>  2.22蜂鳴器驅(qū)動模塊</p><p>  采用壓電式蜂鳴器,壓電式蜂鳴器主要由多諧振蕩器、壓電蜂鳴片、阻抗匹配器及共鳴箱、外殼等組成。多諧振蕩器由晶體管或集成電路構(gòu)成,當接通電源后(1.5-15V直流工作電壓),多諧振蕩器起振,輸出1.5~2.5kHZ的音頻信號,阻抗匹配器推動壓電蜂鳴片發(fā)聲。</p>&l

22、t;p>  2.23按鈕控制模塊</p><p>  四個按鈕的一端分別接地,另一端接單片機一個端口的四個引腳,當某一個按鈕按下的時候,其對應的引腳就由高電平變成低電平,然后通過單片機掃描讀取引腳的電平來判斷按鈕是否按下。</p><p>  2.3AT89S52單片機性能介紹</p><p>  AT89S52是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器的低電

23、壓,高性能CMOS8位微處理器,俗稱單片機。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標準的MCS-52指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89S52是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。引腳說明: VCC:供電電壓。 P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當P1口的管腳第一次寫1

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

25、口作為第八位地址接收。 P2口:P2口為一個內(nèi)部</p><p>  P1.0 1 40 Vcc</p><p>  P1.1 2 39 P0.0 P1.2 3 38 P0.1 P1.3

26、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

27、 33 P0.6 </p><p>  RST/Vpd 9 32 P0.7 RXD P3.0 10 31 EA/Vpp TXD P3.1 11 30 ALE/-P INT0 P3.2 12

28、 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

29、 25 P2.4 RD P3.7 17 24 P2.3 X2 18</p><p>  圖2-2 AT89S52引腳圖</p><p>  RST:復位輸入。當振蕩器復位器件時,要保持RST腳兩個機器周期的高電平時間。

30、 </p><p>  ALE/PROG:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有在執(zhí)行M

31、OVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。為使該模塊化自動打鈴系統(tǒng)具有更加方便和靈活性,我們對系統(tǒng)的硬件做了精心設計。硬件電路包括七段式數(shù)碼管驅(qū)動模塊、蜂鳴器驅(qū)動模塊、按鈕控制模塊等三大模塊。</p><p>  2.3系統(tǒng)主要硬件電路</p><p>  系統(tǒng)主要硬件電路作為驅(qū)動整個打鈴系統(tǒng)的電路又分為七段數(shù)碼顯示電路和

32、蜂鳴器驅(qū)動電路。</p><p>  由顯示七段數(shù)碼顯示電路和蜂鳴器驅(qū)動電路組成的系統(tǒng)硬件主要電路及PCB布線圖如下:</p><p>  圖2-3:系統(tǒng)主要硬件電路</p><p>  該系統(tǒng)通過按鈕控制(系統(tǒng)使用4只按鍵,3只按鍵用來調(diào)整時間,另一只為強制打鈴按鈕;調(diào)整選擇鍵SET_KEY:P1.0通過選擇鍵選擇調(diào)整位,選中位閃爍;增加鍵ADD_KEY:P1.1

33、按一次使選中位加1;減少鍵DEC_KEY:P1.2按一次使選中位減1;如果長按ADD_KEY或DEC_KEY,識別后則進行調(diào)時快進,此時停止閃爍)AT89S52的計時和定時,在七段數(shù)碼管上顯示出來(實現(xiàn)24小時制電子鐘,8位數(shù)碼管顯示,顯示時分秒),再通過蜂鳴器 (BEEP:P3.7)來實現(xiàn)打鈴。 2.31七段式數(shù)碼管驅(qū)動模塊的硬件設計</p><p>  LED數(shù)碼管顯示器內(nèi)部有七個條形發(fā)光二極管和一個小圓點

34、發(fā)光二極管組成,其結(jié)果圖如下所示:</p><p>  圖2-4:七段數(shù)碼顯示管</p><p>  因而它的控制原理和發(fā)光二極管的控制原理是相同的。根據(jù)各管接線的形式,可分成共陰極型和共陽極型。其八個接口對應的字形如下表:</p><p>  表一:數(shù)碼管字型碼表</p><p>  3.2.3蜂鳴器驅(qū)動模塊的硬件設計</p>

35、<p>  本設計中的蜂鳴器驅(qū)動模塊用到了蜂鳴器(BELL)、NPN三極管9013、1K歐姆的電阻。將蜂鳴器的一段接地,另一端接三極管的發(fā)射極,三極管的基極通過1K歐姆的電阻接在三極管的P3.7引腳,三極管的集電極接+5V的電源。其電路圖如下圖所示:</p><p>  圖2-5:蜂鳴器驅(qū)動電路圖</p><p>  第三章 系統(tǒng)軟件設計</p><p>

36、;  軟件是該LED顯示屏控制系統(tǒng)的重要組成部分,在系統(tǒng)的軟件設計中我們也才用了模塊化設計,將系統(tǒng)的各部分功能編寫成子模塊的形式,這樣增強了系統(tǒng)軟件的可讀性和可移植性。</p><p>  3.1系統(tǒng)軟件設計的主要內(nèi)容</p><p>  系統(tǒng)軟件設計由三個模塊編程組成:蜂鳴器打鈴編程,七段顯示管顯示編程,按鍵編程。</p><p>  3.2主程序流程設計<

37、/p><p>  主程序初始化,并打開中斷,然后執(zhí)行中斷服務程序。實現(xiàn)24小時制電子鐘,8位數(shù)碼管顯示,顯示時分秒顯示格式:23-59-59(小時十位如果為0則不顯示) 到預定時間啟動蜂鳴器模擬打鈴,蜂鳴器BEEP:P3.7打鈴方式分起床、熄燈鈴和上、下課鈴兩種系統(tǒng)使用4只按鍵,3只按鍵用來調(diào)整時間,另一只為強制打鈴按鈕 調(diào)整選擇鍵SET_KEY:P1.0;通過選擇鍵選擇調(diào)整位,選中位閃爍增加鍵A

38、DD_KEY:P1.1;按一次使選中位加1減少鍵DEC_KEY;P1.2;按一次使選中位減1,如果長按ADD_KEY或DEC_KEY,識別后則進行調(diào)時快進,此時停止閃爍。</p><p><b>  主程序流程設計圖:</b></p><p><b>  圖3.1</b></p><p>  如圖所示主程序開始初始化后,就

39、跳轉(zhuǎn)到中斷服務程序,如正常走時,則往下進行打鈴時間的比較,繼續(xù)向下執(zhí)行對打鈴的判斷程序;如不正常走時,則直接轉(zhuǎn)到顯示程序。這以后,繼續(xù)執(zhí)行按鍵的檢測,若有鍵按下,則取值打鈴;反之,則返回到中斷服務程序的開始繼續(xù)執(zhí)行。</p><p><b>  主程序清單見附錄。</b></p><p>  第四節(jié) 系統(tǒng)軟件調(diào)試與故障分析</p><p>&

40、lt;b>  4.1系統(tǒng)調(diào)試</b></p><p>  根據(jù)系統(tǒng)設計方案,本系統(tǒng)的調(diào)試共分為兩大部分:軟件調(diào)試,故障分析。由于在系統(tǒng)設計中采用模塊設計法,所以方便對各電路模塊功能進行逐級測試:LED驅(qū)動模塊的調(diào)試,數(shù)據(jù)存儲模塊的調(diào)試,PC機通信模塊的調(diào)試等,最后將各模塊組合后進行整體測試。</p><p><b>  4.11軟件調(diào)試</b><

41、;/p><p>  軟件調(diào)試采用單片機仿Keil uVision2軟件,將編好的程序進行調(diào)試,主要是檢查語法錯誤。</p><p>  4.12故障分析調(diào)試</p><p>  利用萬用表對各個模塊的功能進行調(diào)試,主要調(diào)試各模塊能否實現(xiàn)指定的功能。</p><p>  檢測萬用板個原件是否有接反的現(xiàn)象,出現(xiàn)故障時用萬用表不同的檔位進行測試,并直到

42、能實現(xiàn)各個原件功能為準。</p><p><b>  附錄:</b></p><p>  5.1匯編程序清單:</p><p>  BEEP EQU P3.7 ;定義蜂鳴器(電鈴)控制信號輸出口</p><p>  ORG 0000H ;程序入口地址 </p><p>  LJMP STAR

43、T </p><p>  ORG 000BH ;定時器0中斷入口地址 </p><p>  LJMP TIMER_0</p><p><b>  ORG 0100H</b></p><p>  ;/*****程序開始,初始化*****/ </p><p><b>  START:

44、 </b></p><p>  SETB BEEP ;關(guān)閉蜂鳴器(電鈴)</p><p>  SETB 48H ;使用一個bit位用于調(diào)時閃爍標志</p><p>  SETB 47H ;使用一個bit位用于產(chǎn)生脈沖用于調(diào)時快進時基</p><p>  CLR 45H ;關(guān)閉響鈴方式1標志</p>

45、<p>  CLR 44H ;關(guān)閉響鈴方式2標志</p><p>  MOV R1,#0 ;調(diào)整選擇鍵功能標志:0正常走時、1調(diào)時、2調(diào)分、3調(diào)秒</p><p>  MOV 20H,#00H ;用于控制秒基準時鐘源的產(chǎn)生 </p><p>  MOV 21H,#00H ;清零秒寄存器</p><p>  MOV 22

46、H,#00H ;清零分寄存器</p><p>  MOV 23H,#00H ;清零時寄存器</p><p>  MOV 24H,#00H ;用于控制調(diào)時閃爍的基準時鐘的產(chǎn)生</p><p>  MOV R2,#00H ;強制打鈴標志</p><p>  MOV R3,#00H ;強制打鈴時長標志</p><p&g

47、t;  MOV IP,#02H ;IP,IE初始化 </p><p>  MOV IE,#82H </p><p>  MOV TMOD,#01H ;設定定時器0工作方式1</p><p>  MOV TH0,#3CH </p><p>  MOV TL0,#0B0H ;賦定時初值,定時50ms </p><p

48、>  SETB TR0 ;啟動定時器0 </p><p>  MOV SP,#40H ;重設堆棧指針</p><p>  ;/*****主程序*****/ </p><p><b>  MAIN:</b></p><p>  CJNE R1,#00H,MAIN1 ;是否為正常走時狀態(tài)</p>

49、<p>  LCALL BIJIAO1 ;調(diào)用起床、熄燈打鈴比較子程序</p><p>  LCALL BIJIAO2 ;調(diào)用上、下課打鈴比較子程序</p><p>  LCALL DALING1 ;調(diào)用響鈴方式1執(zhí)行子程序</p><p>  LCALL DALING2 ;調(diào)用響鈴方式2執(zhí)行子程序</p><p>  

50、LCALL DALING3</p><p><b>  MAIN1: </b></p><p>  LCALL DISPLAY ;調(diào)用顯示子程序</p><p>  LCALL KEY_SCAN ;調(diào)用按鍵檢測子程序 </p><p>  JZ MAIN ;無鍵按下則返回重新循環(huán)</p>&l

51、t;p>  LCALL SET_KEY ;調(diào)用選擇鍵處理子程序</p><p>  JB 46H,MAIN ;如果已進行長按調(diào)整(調(diào)時快進),則不再執(zhí)行下面的單步調(diào)整</p><p>  LCALL ADD_KEY ;調(diào)用增加鍵處理子程序</p><p>  LCALL DEC_KEY ;調(diào)用減少鍵處理子程序</p><p>

52、;  LCALL DALING_KEY ;處理強制打鈴/強制關(guān)閉鈴聲鍵</p><p>  LJMP MAIN ;重新循環(huán) </p><p>  ;/*****定時中斷服務程序*****/ </p><p><b>  TIMER_0: </b></p><p>  PUSH ACC </p>

53、<p>  PUSH PSW ;保護現(xiàn)場</p><p>  MOV TH0,#3CH</p><p>  MOV TL0,#0B0H ;重新賦定時初值 </p><p>  CPL 47H ;產(chǎn)生脈沖用于調(diào)時快進時基</p><p><b>  INC 24H</b></p>

54、<p>  MOV A,24H </p><p>  CJNE A,#10,ADD_TIME ;產(chǎn)生0.5秒基準時鐘,用于調(diào)時閃爍</p><p>  CPL 48H ;取反調(diào)時閃爍標志位</p><p>  MOV 24H,#00H</p><p><b>  ADD_TIME:</b>&

55、lt;/p><p>  INC 20H </p><p>  MOV A,20H </p><p>  CJNE A,#20,RETI1 ;產(chǎn)生1秒基準時鐘 </p><p>  MOV 20H,#00H ;一秒鐘時間到,清零20H</p><p>  CJNE R2,#01H,ADD_M</p>

56、<p><b>  INC R3 </b></p><p><b>  ADD_M:</b></p><p><b>  MOV A,21H</b></p><p>  ADD A,#01H</p><p>  DA A ;作十進制調(diào)整 </p>

57、;<p>  MOV 21H,A </p><p>  CJNE A,#60H,RETI1 </p><p>  MOV 21H,#00H ;一分鐘到 </p><p>  MOV A,22H </p><p>  ADD A,#01H </p><p><b>  DA A </b&

58、gt;</p><p>  MOV 22H,A </p><p>  CJNE A,#60H,RETI1 </p><p>  MOV 22H,#00H ;一小時到 </p><p>  MOV A,23H </p><p>  ADD A,#01H </p><p><b>  

59、DA A </b></p><p>  MOV 23H,A </p><p>  CJNE A,#24H,RETI1 </p><p>  MOV 23H,#00H ;到24點,清零小時</p><p><b>  RETI1: </b></p><p>  POP PSW

60、 </p><p>  POP ACC ;恢復現(xiàn)場</p><p>  RETI ;中斷返回</p><p>  ;/*****顯示處理*****/ </p><p><b>  DISPLAY:</b></p><p>  MOV A,21H ;秒</p>&l

61、t;p>  ANL A,#0FH </p><p>  MOV 2FH,A ;轉(zhuǎn)換出秒個位,存入2FH </p><p>  MOV A,21H </p><p>  ANL A,#0F0H </p><p><b>  SWAP A </b></p><p>  MOV 2EH,A

62、 ;轉(zhuǎn)換出秒十位,存入2EH</p><p>  JB 46H,MIN ;如果長按按鍵(調(diào)時快進),則跳過閃爍處理</p><p>  CJNE R1,#3,MIN ;如果R1為3,閃爍秒位待調(diào)整</p><p>  JB 48H,MIN</p><p>  MOV 2FH,#0AH ;使該位為10,查表得到使該位不顯示的輸出<

63、/p><p>  MOV 2EH,#0AH</p><p><b>  MIN:</b></p><p>  MOV A,22H ;分 </p><p>  ANL A,#0FH </p><p>  MOV 2DH,A ;轉(zhuǎn)換出分個位,存入2DH </p><p>

64、  MOV A,22H </p><p>  ANL A,#0F0H </p><p><b>  SWAP A </b></p><p>  MOV 2CH,A ;轉(zhuǎn)換出分十位,存入2CH</p><p>  JB 46H,HOUR ;如果長按按鍵(調(diào)時快進),則跳過閃爍處理</p><p&

65、gt;  CJNE R1,#2,HOUR ;如果R1為2,閃爍分位待調(diào)整 </p><p>  JB 48H,HOUR</p><p>  MOV 2DH,#0AH ;使該位為10,查表得到使該位不顯示的輸出</p><p>  MOV 2CH,#0AH</p><p><b>  HOUR:</b></p&g

66、t;<p>  MOV A,23H ;時 </p><p>  ANL A,#0FH </p><p>  MOV 2BH,A ;轉(zhuǎn)換出時個位,存入2BH </p><p>  MOV A,23H </p><p>  ANL A,#0F0H </p><p><b>  SWAP

67、A </b></p><p>  MOV 2AH,A ;轉(zhuǎn)換出時十位,存入2AH</p><p>  JB 46H,DISP ;如果長按按鍵(調(diào)時快進),則跳過閃爍處理</p><p>  CJNE R1,#1,DISP ;如果R1為1,閃爍時位待調(diào)整</p><p>  JB 48H,DISP</p>&

68、lt;p>  MOV 2BH,#0AH ;使該位為10,查表得到使該位不顯示的輸出</p><p>  MOV 2AH,#0AH</p><p>  ;/*****數(shù)碼管動態(tài)掃描顯示*****/</p><p><b>  DISP:</b></p><p>  MOV DPTR,#TABLE</p>

69、<p><b>  MOV A,2FH</b></p><p>  MOVC A,@A+DPTR</p><p><b>  MOV P0,A</b></p><p><b>  CLR P2.7</b></p><p>  LCALL DELAY</p&g

70、t;<p>  SETB P2.7 ;顯示秒個位</p><p><b>  MOV A,2EH</b></p><p>  MOVC A,@A+DPTR</p><p><b>  MOV P0,A</b></p><p><b>  CLR P2.6</b>

71、;</p><p>  LCALL DELAY</p><p>  SETB P2.6 ;顯示秒十位</p><p>  MOV A,#40H</p><p><b>  MOV P0,A</b></p><p><b>  CLR P2.5</b></p>

72、<p>  LCALL DELAY</p><p>  SETB P2.5 ;顯示“-”</p><p><b>  MOV A,2DH</b></p><p>  MOVC A,@A+DPTR</p><p><b>  MOV P0,A</b></p><p&

73、gt;<b>  CLR P2.4</b></p><p>  LCALL DELAY</p><p>  SETB P2.4 ;顯示分個位</p><p><b>  MOV A,2CH</b></p><p>  MOVC A,@A+DPTR</p><p><

74、b>  MOV P0,A</b></p><p><b>  CLR P2.3</b></p><p>  LCALL DELAY</p><p>  SETB P2.3 ;顯示分十位</p><p>  MOV A,#40H</p><p><b>  MOV P

75、0,A</b></p><p><b>  CLR P2.2</b></p><p>  LCALL DELAY</p><p>  SETB P2.2 ;顯示“-”</p><p><b>  MOV A,2BH</b></p><p>  MOVC A,@

76、A+DPTR</p><p><b>  MOV P0,A</b></p><p><b>  CLR P2.1</b></p><p>  LCALL DELAY</p><p>  SETB P2.1 ;顯示時個位</p><p>  MOV DPTR,#TABLE1

77、 ;該位使用TABLE1以消除前置0</p><p><b>  MOV A,2AH</b></p><p>  MOVC A,@A+DPTR</p><p><b>  MOV P0,A</b></p><p><b>  CLR P2.0</b></p>&l

78、t;p>  LCALL DELAY</p><p>  SETB P2.0 ;顯示時十位</p><p><b>  RET</b></p><p>  ;/*****按鍵檢測子程序*****/ </p><p>  KEY_SCAN: </p><p>  CLR 46H ;關(guān)閉

79、長按調(diào)整(調(diào)時快進)標志</p><p>  MOV P1,#0FFH ;將P1口設置成輸入狀態(tài) </p><p><b>  MOV A,P1 </b></p><p><b>  CPL A </b></p><p>  ANL A,#0FH ;P1口低4位連接4個按鍵,只判斷該4位&

80、lt;/p><p>  JZ EXIT_KEY ;無鍵按下則返回 </p><p>  LCALL DELAY ;延時去抖動</p><p>  MOV A,P1 ;重新判斷 </p><p><b>  CPL A </b></p><p>  ANL A,#0FH </p>

81、<p>  JZ EXIT_KEY ;鍵盤去抖動 </p><p>  MOV R5,A ;臨時將鍵值存入R5</p><p>  MOV R4,#00H ;用于控制調(diào)時快進速度</p><p>  ;設置為00H是為了在進入長按處理前加長延時區(qū)分用戶的長按與短按,防止誤快進</p><p>  LOOP:

82、 ;進入長按處理</p><p>  LCALL DISPLAY ;使長按時顯示正常 </p><p><b>  MOV A,P1 </b></p><p><b>  CPL A </b></p><p>  ANL A,#0FH</p><p>  JB 47H,

83、LOOP1</p><p>  INC R4 ;調(diào)時快進間隔時間基準加1</p><p><b>  LOOP1:</b></p><p>  CJNE R1,#03H,LOOP2 ;如果調(diào)秒時長按,則不處理</p><p>  LJMP LOOP3</p><p><b>  L

84、OOP2:</b></p><p>  CJNE R4,#99H,LOOP3 </p><p>  MOV R4,#70H ;確認用戶長按后,重新設定起始值,加快調(diào)時快進速度</p><p>  SETB 46H ;長按調(diào)整(調(diào)時快進)標志 </p><p>  LCALL ADD_KEY</p><

85、;p>  LCALL DEC_KEY</p><p><b>  LOOP3:</b></p><p>  JNZ LOOP ;等待鍵釋放</p><p>  MOV A,R5 ;輸出鍵值</p><p><b>  RET </b></p><p>&l

86、t;b>  EXIT_KEY:</b></p><p><b>  RET</b></p><p>  ;/*****延時子程序*****/</p><p><b>  DELAY: </b></p><p>  MOV R7,#150 </p><p>

87、<b>  DJNZ R7,$</b></p><p><b>  RET</b></p><p>  ;/*****選擇鍵處理子程序*****/ </p><p><b>  SET_KEY: </b></p><p>  CJNE R5,#01H,EXIT ;選擇鍵鍵值&l

88、t;/p><p>  INC R1 ;調(diào)整選擇功能標志加一</p><p><b>  SETB BEEP</b></p><p>  CJNE R1,#4,EXIT</p><p><b>  MOV R1,#0</b></p><p>  MOV 24H,#00H ;

89、調(diào)時閃爍基準清零 </p><p><b>  RET</b></p><p>  ;/*****增加鍵處理子程序*****/ </p><p><b>  ADD_KEY: </b></p><p>  CJNE R5,#02H,EXIT ;增加鍵鍵值</p><p>  

90、CJNE R1,#01H,NEXT1 ;選擇鍵功能標志為1,調(diào)時,否則跳出</p><p><b>  MOV A,23H</b></p><p>  ADD A,#01H</p><p><b>  DA A</b></p><p><b>  MOV 23H,A</b>&l

91、t;/p><p>  CJNE A,#24H,EXIT</p><p>  MOV 23H,#00H</p><p><b>  NEXT1:</b></p><p>  CJNE R1,#02H,NEXT2 ;選擇鍵功能標志為2,調(diào)分,否則跳出</p><p><b>  MOV A,22

92、H</b></p><p>  ADD A,#01H</p><p><b>  DA A</b></p><p><b>  MOV 22H,A</b></p><p>  CJNE A,#60H,EXIT</p><p>  MOV 22H,#00H</

93、p><p><b>  NEXT2:</b></p><p>  CJNE R1,#03H,EXIT ;選擇鍵功能標志為3,調(diào)秒,否則跳出</p><p>  MOV 21H,#00H ;如增加鍵按下直接清零秒</p><p><b>  RET</b></p><p>  ;

94、/*****減少鍵處理子程序*****/ </p><p><b>  DEC_KEY: </b></p><p>  CJNE R5,#04H,EXIT ;減少鍵鍵值</p><p>  CJNE R1,#01H,NEXT3 ;選擇鍵功能標志為1,調(diào)時,否則跳出</p><p><b>  MOV A,23H

95、</b></p><p>  ADD A,#99H</p><p><b>  DA A</b></p><p><b>  MOV 23H,A</b></p><p>  CJNE A,#99H,EXIT</p><p>  MOV 23H,#23H</p

96、><p><b>  NEXT3:</b></p><p>  CJNE R1,#02H,NEXT4 ;選擇鍵功能標志為2,調(diào)分,否則跳出</p><p><b>  MOV A,22H</b></p><p>  ADD A,#99H</p><p><b>  DA

97、 A</b></p><p><b>  MOV 22H,A</b></p><p>  CJNE A,#99H,EXIT</p><p>  MOV 22H,#59H</p><p><b>  NEXT4:</b></p><p>  CJNE R1,#03H

98、,EXIT ;選擇鍵功能標志為3,調(diào)秒,否則跳出</p><p>  MOV 21H,#00H ;如較少鍵按下直接清零秒</p><p><b>  RET</b></p><p>  ;/*****強制響鈴鍵處理子程序*****/ </p><p>  DALING_KEY: </p><p>

99、;  CJNE R5,#08H,EXIT ;選擇鍵鍵值</p><p>  JNB 45H,LP1 ;判斷是否正在響鈴</p><p><b>  CLR 45H </b></p><p><b>  RET</b></p><p><b>  LP1:</b></p

100、><p>  JNB 44H,LP2</p><p><b>  CLR 44H</b></p><p><b>  RET</b></p><p><b>  LP2:</b></p><p>  MOV R2,#01H </p>&l

101、t;p><b>  RET</b></p><p>  ;/*****萬用返回程序*****/ </p><p><b>  EXIT: </b></p><p><b>  RET</b></p><p>  ;/*****數(shù)碼管字形編碼表*****/</p&g

102、t;<p><b>  TABLE: </b></p><p>  DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H ;字形顯示編碼</p><p><b>  TABLE1:</b></p><p>  DB 00H,06H,5BH,4FH,66H,6DH,7DH

103、,07H,7FH,6FH,00H ;小時位的十位數(shù)編碼,該位如果為0則不顯示</p><p>  ;/*****打鈴時間對比程序(起床、熄燈)*****/</p><p><b>  BIJIAO1:</b></p><p><b>  MOV A,23H</b></p><p>  CJNE A,

104、#00H,B0</p><p><b>  MOV A,22H</b></p><p>  CJNE A,#01H,B0 ;6:00到</p><p>  SETB 45H ;開啟響鈴方式1</p><p><b>  RET</b></p><p>  B0: MO

105、V A,23H</p><p>  CJNE A,#22H,EXIT_1</p><p><b>  MOV A,22H</b></p><p>  CJNE A,#30H,EXIT_1 ;22:30到</p><p>  SETB 45H ;開啟響鈴方式1</p><p><b>

106、  RET</b></p><p><b>  EXIT_1:</b></p><p><b>  CLR 45H</b></p><p><b>  RET</b></p><p>  ;/*****打鈴時間對比程序(上、下課)*****/</p>

107、<p><b>  BIJIAO2:</b></p><p><b>  MOV A,23H</b></p><p>  CJNE A,#07H,B1</p><p><b>  MOV A,22H</b></p><p>  CJNE A,#30H,B1 ;7:3

108、0</p><p>  SETB 44H ;開啟響鈴方式2</p><p><b>  RET</b></p><p>  B1: MOV A,23H</p><p>  CJNE A,#08H,B2</p><p><b>  MOV A,22H</b></p&

109、gt;<p>  CJNE A,#20H,B2 ;8:20</p><p><b>  SETB 44H</b></p><p><b>  RET</b></p><p>  B2: MOV A,23H</p><p>  CJNE A,#08H,B3</p>&l

110、t;p><b>  MOV A,22H</b></p><p>  CJNE A,#30H,B3 ;8:30</p><p><b>  SETB 44H</b></p><p><b>  RET</b></p><p>  B3: MOV A,23H</p&

111、gt;<p>  CJNE A,#09H,B4</p><p><b>  MOV A,22H</b></p><p>  CJNE A,#20H,B4 ;9:20</p><p><b>  SETB 44H</b></p><p><b>  RET</b>

112、</p><p>  B4: MOV A,23H</p><p>  CJNE A,#09H,B5</p><p><b>  MOV A,22H</b></p><p>  CJNE A,#40H,B5 ;9:40</p><p><b>  SETB 44H</b>&

113、lt;/p><p><b>  RET</b></p><p>  B5: MOV A,23H</p><p>  CJNE A,#10H,B6</p><p><b>  MOV A,22H</b></p><p>  CJNE A,#30H,B6 ;10:30</p

114、><p><b>  SETB 44H</b></p><p><b>  RET</b></p><p>  B6: MOV A,23H</p><p>  CJNE A,#10H,B7</p><p><b>  MOV A,22H</b></p

115、><p>  CJNE A,#40H,B7 ;10:40</p><p><b>  SETB 44H</b></p><p><b>  RET</b></p><p>  B7: MOV A,23H</p><p>  CJNE A,#11H,EXIT_2</p&g

116、t;<p><b>  MOV A,22H</b></p><p>  CJNE A,#30H,EXIT_2 ;11:30</p><p><b>  SETB 44H</b></p><p><b>  RET</b></p><p><b>  EX

117、IT_2:</b></p><p><b>  CLR 44H</b></p><p><b>  RET</b></p><p>  ;/*****響鈴方式1程序(響5秒停2秒再響5秒)*****/</p><p><b>  DALING1:</b></p

118、><p>  JNB 45H,EXIT_DALING</p><p>  MOV A,21H ;響鈴起始時間由秒實時控制</p><p>  CJNE A,#05H,L1</p><p><b>  RET</b></p><p><b>  L1:</b></p>

119、;<p><b>  JNC L2</b></p><p><b>  CPL BEEP</b></p><p>  LCALL DELAY1</p><p><b>  RET</b></p><p><b>  L2:</b></p

120、><p><b>  MOV A,21H</b></p><p>  CJNE A,#07H,L3</p><p><b>  CPL BEEP</b></p><p>  LCALL DELAY1</p><p><b>  RET</b></p&g

121、t;<p><b>  L3:</b></p><p><b>  JNC L4</b></p><p><b>  SETB BEEP</b></p><p>  LCALL DELAY1</p><p><b>  RET</b><

122、/p><p><b>  L4:</b></p><p><b>  MOV A,21H</b></p><p>  CJNE A,#12H,L5</p><p><b>  SETB BEEP</b></p><p>  LCALL DELAY1</

123、p><p><b>  RET</b></p><p><b>  L5:</b></p><p>  JNC EXIT_DALING</p><p><b>  CPL BEEP</b></p><p>  LCALL DELAY1 </p>

124、<p><b>  RET</b></p><p>  ;/*****響鈴方式2程序(響5秒)*****/</p><p><b>  DALING2:</b></p><p>  JNB 44H,EXIT_DALING</p><p>  MOV A,21H ;響鈴起始時間由秒實時

125、控制</p><p>  CJNE A,#05H,L6</p><p><b>  SETB BEEP</b></p><p><b>  RET</b></p><p><b>  L6:</b></p><p>  JNC EXIT_DALING&l

126、t;/p><p><b>  CPL BEEP</b></p><p>  LCALL DELAY1</p><p><b>  RET</b></p><p>  ;/*****響鈴方式3程序*****/</p><p><b>  DALING3:</b>

127、;</p><p>  CJNE R2,#01H,EXIT_DALING</p><p>  CJNE R3,#05H,DL3</p><p>  MOV R2,#00H</p><p>  MOV R3,#00H</p><p><b>  SETB BEEP</b></p>&l

128、t;p><b>  RET</b></p><p><b>  DL3:</b></p><p><b>  CPL BEEP</b></p><p>  LCALL DELAY1</p><p><b>  RET</b></p>&

129、lt;p>  EXIT_DALING:</p><p><b>  RET</b></p><p>  DELAY1:MOV R6,#10 ;短延時子程序</p><p>  X1:MOV R7,#80</p><p>  X2:DJNZ R7,X2</p><p>  DJNZ R6,

130、X1</p><p><b>  RET</b></p><p>  END ;程序結(jié)束</p><p>  5.2器材儀表:儀器:單片機仿真器或程序固化設置 一臺;PC機一臺;萬用表一塊;主要元器件:</p><p><b>  5.3參考資料:</b></p><

131、p>  《單片機原理及應用》 (第2版) 張迎新 電子工業(yè)出版社 2011年第二版《模擬電子技術(shù)基礎(chǔ)》 周良權(quán)、傅恩錫、李世馨 高等教育出版社 2009年第四版</p><p>  《數(shù)字電子技術(shù)》 付子義 哈爾濱工程大學出版社 2010年第一版</p><p>  《單片機課程設計指導試驗訓練標準.PDF文檔》</p><p>

132、;  《單片機實驗80C51實驗指導書.pdf》</p><p>  《單片機實驗指導書.pdf》</p><p><b>  第六章 設計總結(jié)</b></p><p>  完成自動打鈴系統(tǒng)設計的設計我能綜合運用電子技術(shù)課程中的所學到的理論知識來完成自動打鈴機的設計和分析電路,學會了在虛擬的環(huán)境下創(chuàng)建電路,計算和調(diào)整參數(shù),我能靈活的應用pr

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論