60秒倒計時器-單片機課程設計報告_第1頁
已閱讀1頁,還剩20頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  倒 計 時 器</p><p><b>  設計要求:</b></p><p>  由單片機接收小鍵盤陣列設定倒計時時間,倒計時的范圍最大為60分鐘,由LED 顯示模塊顯示剩余時間,顯示格式為 XX(分):XX(秒).X,精確到0.1s的整數(shù)倍。倒計時到,由蜂鳴器發(fā)出報警。繪制系統(tǒng)硬件接線圖,并進行系統(tǒng)仿真和實驗。畫出程序流程圖并編寫程序

2、實現(xiàn)系統(tǒng)功能。</p><p><b>  設計的作用目的:</b></p><p>  此次設計是我們更進一步了解基本電路的設計流程,提高自己的設計理念,豐富自己的理論知識,鞏固所學知識,使自己的動手動腦能力有更進一步提高,為自己今后的學習和工作打好基礎(chǔ),為自己的專業(yè)技能打好基礎(chǔ)。通過解決實際問題,鞏固和加深“單片機原理與應用”課程中所學的理論知識和實驗能力,基本掌

3、握單片機應用電路的一般設計方法,提高電子電路的設計和實驗能力,加深對單片機軟硬知識的理解,獲得初步的應用經(jīng)驗,為以后從事生產(chǎn)和科研工作打下一定的基礎(chǔ)。本次設計注重對單片機工作原理以及鍵盤控制及顯示原理的理解,以便今后自己在單片機領(lǐng)域的學習和開發(fā)打下基礎(chǔ),提高自己的動手能力和設計能力,培養(yǎng)創(chuàng)新能力,豐富自己的理論知識,做到理論和實踐相結(jié)合。本次設計的重要意義還在于對單片機的內(nèi)部結(jié)構(gòu)和工作狀態(tài)做更進一步的了解,同時還對單片機的接口技術(shù),中斷

4、技術(shù),存儲方式和控制方式作更深層次的了解。</p><p><b>  具體設計:</b></p><p><b>  問題分析:</b></p><p>  在電子技術(shù)飛速發(fā)展的今天,電子產(chǎn)品的人性化和智能化已經(jīng)非常成熟,其發(fā)展前景仍然不可估量。如今的人們需求的是一種能給自己帶來方便的電子產(chǎn)品,當然最好是人性化和智能化的

5、,如何能做到智能化呢?單片機的引入就是一個很好的例子。單片機又稱單片微型計算機,也稱為微控制器,是微型計算機的一個重要分支,單片機是20世紀70年代中期發(fā)展起來的一種大規(guī)模集成電路芯片,是集CPU,RAM,ROM,I/O接口和中斷系統(tǒng)于同一硅片上的器件。單片機的誕生標志著計算機正式形成了通過計算機系統(tǒng)和嵌入式計算機系統(tǒng)兩個分支。目前單片機已滲透到我們生活的各個領(lǐng)域,幾乎很難找到哪個領(lǐng)域沒有單片機的蹤跡。單片機已在廣闊的計算機應用領(lǐng)域中表

6、現(xiàn)得淋漓盡致電器因此,單片機已成為電子類工作者必須掌握的專業(yè)技術(shù)之一。單片機就是一個微型中央處理器,通過編程即能完成很多智能化的工作 ,因此它的出現(xiàn)給電子技術(shù)智能化和微型化起到了很大的推動作用。</p><p>  本設計將采用89C51單片機,89C51單片機是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器(FPEROM—Falsh Programmable and Erasable Read Only Memory

7、)的低電壓,高性能CMOS8位微處理器,俗稱單片機。單片機自帶5個中斷,兩個16位定時器32個I/O口,可擦除只讀存儲器可以反復擦除多次,功能相當強大。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的89C51是一種高效微控制器。89C單片機為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。</p><

8、;p>  面對如此功能強大的單片機,結(jié)合本次設計要求,應該要用到單片機的內(nèi)部時鐘電路以及外圍的顯示接口電路和報警電路。</p><p>  對與時鐘,它有兩方面的含義:一是指為保障系統(tǒng)正常工作的基準振蕩定時信號,主要由晶振和外圍電路組成,晶振頻率的大小決定了單片機系統(tǒng)工作的快慢;二是指系統(tǒng)的標準定時時鐘,即定時時間,它通常有兩種實現(xiàn)方法:一是用軟件實現(xiàn),即用單片機內(nèi)部的可編程定時/計數(shù)器來實現(xiàn),但誤差很大,

9、主要用在對時間精度要求不高的場合;二是用專門的時鐘芯片實現(xiàn),在對時間精度要求很高的情況下,通常采用這種方法。</p><p>  在顯示方面,有著多種選擇,但是8段LED數(shù)碼管足以滿足此次設計的要求了。LED數(shù)碼顯示器是一種有LED發(fā)光二極管組合顯示字符的顯示器件。它使用了8個LED發(fā)光二極管,其中7個用于顯示字符,一個用于顯示小數(shù)點,故通常稱之為8段發(fā)光二極管數(shù)碼器。</p><p> 

10、 其內(nèi)部結(jié)構(gòu)如下圖(a)所示:</p><p>  LED數(shù)碼顯示器有如下兩種連接方法:</p><p>  共陽極接法:把發(fā)光二極管的陽極連在一起構(gòu)成公共陽極,使用時公共陽極接+5V,每個發(fā)光二極管的陰極通過電阻與輸入端相連。 </p><p>  共陰極接法:把發(fā)光二極管的陰極連在一起構(gòu)成公共陰極,使用時公共陰極接地。每個發(fā)光二極管的陽極通過電阻與輸入端相連。&

11、lt;/p><p>  蜂鳴器是一種一體化結(jié)構(gòu)的電子訊響器,采用直流電壓供電,廣泛應用于計算機、打印機、復印機、報警器、電子玩具、汽車電子設備、電話機、定時器等電子產(chǎn)品中作發(fā)聲器件。在單片機應用的設計上,很多方案都會用到蜂鳴器,大部分都是使用蜂鳴器來做提示或報警,比如按鍵按下、開始工作、工作結(jié)束或是故障等等。由于蜂鳴器的工作電流一般比較大,以致于單片機的I/O 口無法直接驅(qū)動,所以要利用放大電路來驅(qū)動,一般使用三極管

12、來放大電流。本設計采用p3.0口和三極管組成的電路來驅(qū)動蜂鳴器。</p><p><b>  總體設計思想:</b></p><p>  本設計是基于AT89C51單片機的鍵盤控制及顯示電路設計,從系統(tǒng)的設計功能上看,系統(tǒng)可分為兩大部分,即鍵盤輸入控制部分和顯示部分,對于每一個部分都有不同的設計方案,起初我對鍵盤和顯示每個都擬訂了下面兩種方案:</p>

13、<p><b>  鍵盤部分:</b></p><p>  第一種方案:采用掃描鍵盤,可以用普通按鍵構(gòu)成4×4矩陣鍵盤,直接接到AT89C51單片機的P1口,高四位作為行,低四位作為列,通過軟件完成鍵盤的掃描和定位。這種方式相對下面的獨立式鍵盤節(jié)省了很多的I/O口。</p><p>  第二種方案:鍵盤控制采用獨立式按鍵,每個按鍵的一端均接地,另一

14、端直接和P1口相連,在按鍵和P1口之間通過10K電阻與+5V電源相連。鍵盤通過檢測輸入線的電平狀態(tài)就可以很容易地判斷哪個鍵被按下了,這種方法操作速度高而且軟件結(jié)構(gòu)很簡單,比較適合按鍵較少或操作速度較高的場合,這種獨立式接口的應用很普遍。</p><p><b>  顯示部分:</b></p><p>  第一種方案:顯示部分采用靜態(tài)顯示方法,所謂靜態(tài)顯示,就是每一個顯

15、示器都要占用一個獨立的具有鎖存功能的接口用于存儲字形碼。這樣單片機只要把要顯示的字形代碼發(fā)送到接口電路,從而輸送至各數(shù)碼管顯示。被顯示的數(shù)據(jù)只要輸出一次,直到要顯示新的數(shù)據(jù)時,再發(fā)送新的字形碼。靜態(tài)驅(qū)動的優(yōu)點是編程簡單,顯示亮度高,缺點是占用I/O端口多,如驅(qū)動5個數(shù)碼管靜態(tài)顯示則需要5×8=40根I/O端口來驅(qū)動,要知道一個89S51單片機可用的I/O端口才32個),實際應用時必須增加譯碼驅(qū)動器進行驅(qū)動,增加了硬件電路的復雜

16、性。</p><p>  第二種方案:顯示部分采用動態(tài)顯示。數(shù)碼管動態(tài)顯示接口是單片機中應用最為廣泛的一種顯示方式之一,動態(tài)驅(qū)動是將所有數(shù)碼管的8個顯示筆劃"a,b,c,d,e,f,g,dp"的同名端連在一起,另外為每個數(shù)碼管的公共極COM增加位選通控制電路,位選通由各自獨立的I/O線控制,當單片機輸出字形碼時,所有數(shù)碼管都接收到相同的字形碼,但究竟是那個數(shù)碼管會顯示出字形,取決于單片機對位選

17、通COM端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開,該位就顯示出字形,沒有選通的數(shù)碼管就不會亮。通過分時輪流控制各個數(shù)碼管的的COM端,就使各個數(shù)碼管輪流受控顯示,這就是動態(tài)驅(qū)動。動態(tài)顯示是利用人眼視覺暫留特性來實現(xiàn)顯示的。事實上,顯示器上任何時刻只有一個數(shù)碼管有顯示。由于各數(shù)碼管輪流顯示的時間間隔短、節(jié)奏快,人的眼睛反應不過來,因此看到的是連續(xù)顯示的現(xiàn)象。為防止閃爍延時的時間在1ms左右,不能太長,也不能太短。本設計可

18、采用P0口直接驅(qū)動七段數(shù)碼管顯示。此方案成本低,而且單片機的I/O口占用較少,可以節(jié)約單片機接口資源,而且功耗更低。</p><p>  由于本設計要求按鍵較少,且本次設計只是對所學知識的一次實踐,設計要求簡單,容易實現(xiàn),成本低廉。比較以上各種設計方案,采用獨立式鍵盤和動態(tài)顯示兩種方案配合,成本低,占用單片機資源少,且容易實現(xiàn),這樣的設計比較適合本次設計,故最終決定選用這樣的一種搭配設計方案。對于蜂鳴器,將采用p

19、3.0口和三極管組成的外圍電路驅(qū)動,根據(jù)定時時間報警。</p><p><b>  3.具體實現(xiàn)方法:</b></p><p>  根據(jù)設計任務與要求,可初步將系統(tǒng)分為五大功能模塊:主電路、按鍵電路、顯示電路、報警電路。進一步細說,主電路選用AT89C51作為中央處理器,系統(tǒng)采用12MHZ的晶振;按鍵停控制電路由四個按鍵(復位鍵、啟動/暫停鍵、設置鍵、+1調(diào)時鍵)組成

20、,鍵盤采用軟件掃描的方式設計,低電平有效;顯示電路由六位七段共陰極數(shù)碼管和一個9位200歐姆上拉電阻組成,顯示內(nèi)容有倒計時器的0.1秒位以及分秒的個、十位,數(shù)碼管通過P0口直接輸出數(shù)據(jù);報警電路主要由蜂鳴器組成,通過電路與P3.0口相連。當P3.0口輸出高電平時,蜂鳴器響。</p><p>  對于本次單片機課程設計,根據(jù)設計要求可以將功能分成如下4部分:</p><p>  由于單片機內(nèi)

21、部振蕩方式電路簡單,時鐘信號比較穩(wěn)定,是獨立的單片機應用系統(tǒng)的首選,故本設計采用內(nèi)部振蕩方式,采用12MHZ的晶振。</p><p><b>  圖(1)晶振電路圖</b></p><p>  本設計電路采用定時器T0產(chǎn)生定時中斷,由于本設計需要0.1s的基本時間,故選擇其工作在定時方式1下。這時定時器T0是一個16位的計時器,由它產(chǎn)生50ms的基本定時中斷,兩次中斷

22、后將得到0.1s的時間。</p><p>  鍵盤電路有獨立式鍵盤和矩陣式兩種。獨立式鍵盤占用I/O口線較多,適用于按鍵較少的情況。矩陣式鍵盤占用的I/O口相對較少,適用于按鍵很多的情況。</p><p><b>  圖(2)鍵盤電路圖</b></p><p>  報警電路將采用p3.0口驅(qū)動,當數(shù)碼管顯示00.00.0時p3.0口輸出高電平,

23、驅(qū)動蜂鳴器達到報警的目的,只有當復位鍵按下后,蜂鳴器才會停止報警。</p><p>  圖(3)蜂鳴器報警電路圖</p><p>  對于顯示電路,本設計采用6位8段共陰極LED數(shù)碼管顯示。上電顯示最大倒計時時間60.00.00-。其中“-”位為系統(tǒng)狀態(tài)標志位,當顯示“-”時,表示系統(tǒng)處于等待狀態(tài),按下開始鍵后將開始計數(shù),開始計數(shù)后此數(shù)碼管將關(guān)閉顯示,以達到省電的目的 ,當顯示“E”時,表

24、示系統(tǒng)正處于調(diào)時狀態(tài),此時只用兩個調(diào)時鍵有用,按下開始鍵或復位鍵將沒有用。</p><p><b>  圖(4)顯示電路圖</b></p><p>  系統(tǒng)的原理框圖如下圖:</p><p>  圖(5)系統(tǒng)原理框圖</p><p><b>  圖(6)硬件連線圖</b></p>&l

25、t;p>  硬件連接說明:本系統(tǒng)以AT89C51單片機為核心。單片機采用內(nèi)部振蕩的方式。通過200歐姆電阻與一個6位8段LED數(shù)碼顯示管相連。從P0口輸出LED數(shù)碼管的字形碼,從P2口輸出LED數(shù)碼管的位選碼,高電平有效。4個功能按鍵和P1口相連,中間通過10K的電阻與+5V電源相連,按鍵另一端接地,P1口低電平時表示按鍵被按下。報警電路則與P3.0口相連,當P3.0口輸出高電平時,蜂鳴器響。</p><p&g

26、t;  在程序設計方面:將鍵盤掃描程序置于主程序中,采用掃描方式檢測鍵盤的按鍵情況,主程序流程圖見圖(7)。顯示部分做成一個子程序,方便調(diào)用。各個調(diào)時子程序由設置鍵引倒進入,調(diào)時子程序流程圖見圖(8)。計時方面,利用定時器T0產(chǎn)生的0.5ms基準時間形成0.1s的最小倒計時時間單位并產(chǎn)生“-1”動作,T0中斷子程序流程圖見圖(9)。</p><p>  四、Proteus調(diào)試過程及現(xiàn)象:</p>&

27、lt;p>  上電后LED數(shù)碼管顯示最大倒計時值60.00.0-,程序處于等待狀態(tài)。</p><p>  圖(10)上電或者復位鍵被按下時</p><p>  此時,主程序不斷調(diào)用顯示子程序以及掃描鍵盤按鍵情況,當檢測到有鍵按下后,轉(zhuǎn)到相應的程序執(zhí)行。</p><p>  開始/暫停鍵按下后程序開始減1計數(shù)直到0,同時狀態(tài)顯示管熄滅,計數(shù)值到0后報警器響。若中

28、途遇到開始/暫停鍵按下則,暫停倒計時。若中途遇到復位鍵按下則將倒計時器的倒計時值設置為最大值,并處于等待狀態(tài)。</p><p>  圖(11)計數(shù)值到0時</p><p>  圖(12)開始/暫停鍵按下后</p><p>  復位鍵按下后,程序復位,系統(tǒng)處于等待狀態(tài),狀態(tài)顯示管顯示“-”。 </p><p>  當設置鍵被按下后,程序進入調(diào)時

29、設置狀態(tài),同時狀態(tài)顯示管顯示“E”。設置狀態(tài)的初始值位00.00.0E,按下+1調(diào)整鍵,可以將當前的計數(shù)單位值加1,再次按下設置鍵后,即進入了下個計數(shù)單位的調(diào)時狀態(tài),當按下5次設置鍵后將退出調(diào)時狀態(tài),若分鐘十位被設置為6并再次按下設置鍵后程序直接退出調(diào)時狀態(tài)。設置狀態(tài)時開始/暫停鍵和復位鍵無效,等退出調(diào)時狀態(tài)后,設置狀態(tài)時開始/暫停鍵和復位鍵恢復功能。</p><p>  圖(13)調(diào)時狀態(tài)時</p>

30、<p>  五、調(diào)試問題及解決方法:</p><p>  開始在主程序的循環(huán)中沒有添加調(diào)用顯示子程序的語句,導致在沒有按鍵按下的情況下LED數(shù)碼管沒有顯示。當在主程序循環(huán)檢測按鍵的過程中添加了調(diào)用顯示子程序的語句后就解決了這一問題。由于鍵盤需要消抖延時和等待按鍵釋放,所以相似的情況又出現(xiàn)了——按下按鍵后有一段時間LED數(shù)碼管斷續(xù)顯示或者按下按鍵后不釋放按鍵時LED數(shù)碼管沒有顯示。仔細分析后發(fā)現(xiàn),問題

31、出現(xiàn)的原因還是一樣的,由于本設計的LED數(shù)碼管采用了動態(tài)顯示,故需要不斷調(diào)用顯示子程序,否則會導致LED數(shù)碼管沒有顯示。所以最終做了以下改進:1.按鍵的消抖延時選擇調(diào)用兩次顯示子程序(每次顯示子程序大約用時5ms,兩次即為10ms左右)來取代原來的10ms軟件延時。2.在等待按鍵釋放時,使用循環(huán)調(diào)用顯示子程序來替代原來的循環(huán)等待。經(jīng)過上述兩點的改進后,LED數(shù)碼管無顯示或者斷續(xù)顯示的問題就得到了徹底的解決。</p><

32、;p>  六、設計的優(yōu)缺點分析:</p><p>  本設計是一個采用了由內(nèi)部振蕩的時鐘方式、程控掃描方式的獨立式鍵盤、動態(tài)顯示LED數(shù)碼管和蜂鳴器式報警器組成的系統(tǒng)。因此該系統(tǒng)使用的電子器件少、外圍電路簡單,定時精準,使用的I/O少,系統(tǒng)消耗的功耗小,剩余的I/O口多便于擴展其他功能。但是另一方面,本系統(tǒng)由于使用了程控式的鍵盤和動態(tài)顯示的LED數(shù)碼管,所以對CPU的使用率相對較高。</p>

33、<p><b>  七、心得體會:</b></p><p>  初次看到本次的課程設計的題目時,感覺設計的難度不大,但是由于是第一次運用單片機設計,在設計過程中又遇到了種種困難,又感覺到要完成此次設計還需要花費很大的時間和精力。但是經(jīng)過本組同學的共同努力,運用科學的分析方法,最終順利完成了本次單片機課程設計。</p><p>  經(jīng)過兩個星期的實習,過程曲折

34、可謂一語難盡。在此期間我也失落過,也曾一度熱情高漲。從開始時滿富盛激情到最后汗水背后的復雜心情,點點滴滴無不令我回味無長。</p><p>  生活也是這樣,汗水預示著結(jié)果也見證著收獲。勞動是人類生存生活永恒不變的話題。通過實習,我才真正領(lǐng)略到“艱苦奮斗”這一詞的真正含義,我才意識到老一輩設計員為我們的社會付出。我想說,設計確實有些辛苦,但苦中也有樂,在如今物欲很流的世界,很少有機會能與大自然親密接觸,但我們可以

35、,而且設計也是一個團隊的任務,一起的工作可以讓我們有說有笑,相互幫助,配合默契,多少人間歡樂在這里灑下,大學里一年的相處還趕不上這十來天的實習,我感覺我和同學們之間的距離更加近了;我想說,設計確實很累,但當我們的設計出現(xiàn)成果時,心中也不免產(chǎn)生興奮,正所謂“三百六十行,行行出狀元”我認為無論干什么,只要人生活的有意義就可以。</p><p>  同時我認為我們的工作是一個團隊的工作,團隊需要個人,個人也離不開團隊,

36、必須發(fā)揚團結(jié)協(xié)作的精神。某個人的離群都可能導致導致整項工作的失敗。實習中只有一個人知道原理是遠遠不夠的,必須讓每個人都知道,否則一個人的錯誤,就有可能導致整個工作失敗。團結(jié)協(xié)作是我們實習成功的一項非常重要的保證。而這次實習也正好鍛煉我們這一點,這也是非常寶貴的。</p><p>  另外,課堂上也有部分知識不太清楚,于是我又不得不邊學邊用,時刻鞏固所學知識,這也是我作本次課程設計的第二大收獲。整個設計我基本上還滿

37、意,由于水平有限,難免會有錯誤,還望老師批評指正。</p><p><b>  八、參考文獻:</b></p><p>  [1] 曾屹.單片機原理與應用.湖南:中南大學出版社,2009</p><p>  [2] 丁元杰.單片微機原理及應用.3版.北京:機械工業(yè)出版社,2006</p><p>  [3] 嚴天峰.單片

38、機應用系統(tǒng)設計與仿真調(diào)試.北京:北京航空航天大學出版社,2005</p><p>  [4] 楊振江.流行單片實用子程序及應用實例.西安:電子科技大學出版社,2002</p><p><b>  附:實驗源程序</b></p><p>  ;倒計時器設計源程序</p><p><b>  ORG 0000H&l

39、t;/b></p><p><b>  AJMP MAIN</b></p><p>  ORG 000BH ;T0中斷程序入口地址</p><p><b>  AJMP T0ZD</b></p><p>  ORG 00100H</p><p>  M

40、AIN:CLR TR0 ;主程序開始</p><p>  CLR P3.0 ;關(guān)閉蜂鳴器</p><p>  SETB 20H.1 ;使顯示管狀態(tài)標志位有效</p><p>  CLR 20H.0 ;開始/暫停標志位,使程序處于等待開始|暫停鍵按下</p><p> 

41、 MOV 40H,#00H ;0.1S位查表碼</p><p>  MOV 41H,#00H ;秒鐘個位位查表碼</p><p>  MOV 42H,#00H ;秒鐘十位位查表碼</p><p>  MOV 43H,#00H ;分鐘個位位查表碼</p><p>  MOV 44H,#06H

42、 ;分鐘十位位查表碼</p><p>  MOV 45H,#00H ;狀態(tài)顯示管查表碼</p><p>  MOV 46H,#02H ;定時器定時次數(shù)</p><p>  SETB EA ;開總中斷</p><p>  SETB ET0 ;開定時器T0中斷</p&g

43、t;<p>  MOV TMOD,#01H ;定時器工作方式0</p><p>  MOV TL0,#0B0H ;定時初值,采用50MS定時</p><p>  MOV TH0,#3CH</p><p>  JPJC:LCALL XSCX ;顯示倒計時初值60.00.0(XSCX),進入鍵盤檢測程序</p>

44、;<p>  MOV P1,#0FFH ;判斷復位鍵是否按下</p><p>  JB P1.0,JC12</p><p>  LCALL XDYS ;調(diào)用消抖延時程序(XDYS)</p><p>  JB P1.0,JC12</p><p>  PP10:JNB P1.0,DP10 ;等待

45、按鍵按下</p><p>  AJMP MAIN ;復位鍵按下后轉(zhuǎn)到主程序(MAIN)重新開始</p><p>  JC12:MOV P1,#0FFH ;判斷設置鍵是否按下</p><p>  JB P1.2,JC11</p><p>  LCALL XDYS</p><p>  JB P

46、1.2,JC11</p><p>  PP12:JNB P1.2,DP12 ;調(diào)整設置鍵按下后轉(zhuǎn)到調(diào)時子程序(TSCX)</p><p>  ACALL TSCX</p><p>  JC11:MOV P1,#0FFH ;判斷開始/暫停鍵是否按下</p><p>  JB P1.1,JPJC</p><

47、;p>  LCALL XDYS</p><p>  JB P1.1,JPJC</p><p>  PP11:JNB P1.1,DP11</p><p>  CPL 20H.0 ;將標志位取反</p><p>  JB 20H.0,KSJS ;開始/暫停標志為1則開始計數(shù)(KSJS)</p>&l

48、t;p><b>  CLR TR0</b></p><p>  SETB 20H.1</p><p>  AJMP JPJC ;繼續(xù)檢測鍵盤按鍵情況(JPJC)</p><p>  DP10:LCALL XSCX ;等待按鍵按下時,調(diào)用顯示程序,防止顯示管沒顯示</p><p>&

49、lt;b>  AJMP PP10</b></p><p>  DP11:LCALL XSCX</p><p><b>  AJMP PP11</b></p><p>  DP12:LCALL XSCX</p><p><b>  AJMP PP12</b></p>&

50、lt;p>  KSJS:CLR 20H.1 ;清除狀態(tài)顯示管</p><p><b>  SETB P2.5</b></p><p>  JB P3.0,JPJC ;若蜂鳴器響,則不啟動計時器</p><p>  SETB TR0 ;啟動計時器TO (KSJS)</p><p

51、><b>  AJMP JPJC</b></p><p>  ; 顯示子程序</p><p>  XSCX:MOV DPTR,#TAB ;顯示子程序(XSCX)</p><p><b>  MOV A,40H</b></p><p>  MOVC A,@A+DPTR</p

52、><p>  MOV P2, #0FFH ;關(guān)閉顯示.</p><p>  MOV P0, A ;輸出0.1S位的顯示段碼.</p><p>  CLR P2.0 ;P2.0=0</p><p>  ACALL XSYS</p><p>  MOV DPTR,#TAB1

53、 ;</p><p><b>  MOV A,41H</b></p><p>  MOVC A,@A+DPTR</p><p>  MOV P2, #0FFH ;關(guān)閉顯示.</p><p>  MOV P0, A ;輸出秒鐘個位的顯示碼.</p><p>  CL

54、R P2.1 ;P2.1=0</p><p>  ACALL XSYS</p><p>  MOV DPTR,#TAB</p><p><b>  MOV A,42H</b></p><p>  MOVC A,@A+DPTR</p><p>  MOV P2, #0FFH

55、 ;關(guān)閉顯示.</p><p>  MOV P0, A ;輸出秒鐘十位位的顯示段碼.</p><p>  CLR P2.2 ;P2.2=0</p><p>  ACALL XSYS</p><p>  MOV DPTR,#TAB1</p><p><b>  

56、MOV A,43H</b></p><p>  MOVC A,@A+DPTR</p><p>  MOV P2, #0FFH ;關(guān)閉顯示.</p><p>  MOV P0, A ;輸出分鐘個位的顯示段碼.</p><p>  CLR P2.3 ;P2.3=0</p>

57、;<p>  ACALL XSYS</p><p>  MOV DPTR,#TAB</p><p><b>  MOV A,44H</b></p><p>  MOVC A,@A+DPTR</p><p>  MOV P2, #0FFH ;關(guān)閉顯示.</p><p>  

58、MOV P0, A ;輸出分鐘十位的顯示段碼.</p><p>  CLR P2.4 ;P2.4=0</p><p>  ACALL XSYS</p><p>  JNB 20H.1,ZBTC ;20H.1為1則顯示計時器狀態(tài)</p><p>  MOV DPTR,#TAB2</p&g

59、t;<p><b>  MOV A,45H</b></p><p>  MOVC A,@A+DPTR</p><p>  MOV P2, #0FFH ;關(guān)閉顯示.</p><p>  MOV P0, A ;輸出段碼.</p><p>  CLR P2.5

60、 ;P2.5=0</p><p>  ACALL XSYS</p><p><b>  ZBTC:RET</b></p><p>  ; 調(diào)時子程序</p><p>  TSCX:CLR TR0 ;調(diào)時子程序(TSCX)</p><p>  CLR 20H.0

61、 ;使時間調(diào)整時處于暫停狀態(tài)</p><p>  MOV 40H,#00H</p><p>  MOV 41H,#00H</p><p>  MOV 42H,#00H</p><p>  MOV 43H,#00H</p><p>  MOV 44H,#00H</p><p>  SE

62、TB 20H.1 ;使狀態(tài)顯示管的位選碼有效</p><p>  MOV 45H,#01H ;將狀態(tài)顯示碼更改為E(調(diào)時狀態(tài))</p><p>  MOV R0,#44H</p><p>  JCTZ:ACALL XSCX ;先調(diào)用顯示程序,掃描時間調(diào)整鍵</p><p>  MOV P1,

63、#0FFH</p><p>  JB P1.3,NEXT ;+1鍵盤沒有按下</p><p>  ACALL XDYS ;鍵盤按下,消抖延時</p><p>  JB P1.3,NEXT</p><p>  DEN0:JNB P1.3,DEN1 ;等待按鍵釋放</p><p>

64、;  AJMP JYCX ;+1鍵按下后,跳轉(zhuǎn)到+1程序</p><p>  NEXT:MOV P1,#0FFH</p><p>  JB P1.2,JCTZ</p><p>  ACALL XDYS ;鍵盤按下,消抖延時</p><p>  JB P1.2,JCTZ</p><p&g

65、t;  DEN2:JNB P1.2,DEN3 ;等待按鍵釋放</p><p><b>  MOV A,44H</b></p><p>  CJNE A,#06H,DEC4 ;設置鍵再次按下,將調(diào)整指針指向下一位</p><p><b>  AJMP TCTS</b></p><p&g

66、t;  DEC4:DEC R0</p><p>  CJNE R0,#3FH,JCTZ ;若R0為3FH則退出調(diào)時程序</p><p>  AJMP TCTS ;若@R0不為#06H,但R0為#3FH,則跳出調(diào)時程序</p><p>  JYCX:CJNE R0,#44H,XIA1 ;加1調(diào)時部分</p><

67、;p>  CJNE @R0,#06H,INCR ;調(diào)整分鐘十位</p><p><b>  AJMP SET0</b></p><p>  XIA1:CJNE R0,#43H,XIA2</p><p>  AJMP TZ09 ;調(diào)整分鐘個位</p><p>  XIA2:CJNE R0

68、,#42H,XIA3</p><p>  CJNE @R0,#05H,INCR ;調(diào)整秒鐘十位</p><p><b>  AJMP SET0</b></p><p>  XIA3:CJNE R0,#41H,XIA4</p><p>  AJMP TZ09 ;調(diào)整秒鐘個位</p>

69、<p>  XIA4:CJNE R0,#40H,TCTS</p><p>  TZ09:CJNE @R0,#09H,INCR ;調(diào)整0.1秒位</p><p>  SET0:MOV @R0,#00H</p><p><b>  AJMP JCTZ</b></p><p>  INCR:INC @R

70、0</p><p><b>  AJMP JCTZ</b></p><p>  DEN1:ACALL XSCX</p><p><b>  AJMP DEN0</b></p><p>  DEN3:ACALL XSCX</p><p><b>  AJMP DEN2

71、</b></p><p>  TCTS:MOV TH0,#3CH ;退出調(diào)時程序</p><p>  MOV TL0,#0B0H</p><p>  MOV 45H,#00H ;將狀態(tài)顯示碼更改為D(等待狀態(tài))</p><p><b>  RET</b></p

72、><p>  ; T0中斷子程序</p><p>  T0ZD:CLR EA ;T0中斷子程序,關(guān)中斷 (T0ZD)</p><p><b>  CLR ET0</b></p><p><b>  CLR TR0</b></p><p>  

73、DJNZ 46H,TCZD</p><p>  MOV 46H,#02H ;當定時兩次后重新給計時次數(shù)賦值為2</p><p>  MOV R0,#40H ;減1計數(shù),R0為40H</p><p>  CJNE @R0,#01H,R040</p><p>  INC R0

74、 ;R0為41H</p><p>  CJNE @R0,#00H,DEC1</p><p>  INC R0 ;R0為42H</p><p>  CJNE @R0,#00H,DEC1</p><p>  INC R0 ;R0為43H</p><p>  

75、CJNE @R0,#00H,DEC1</p><p>  INC R0 ;R0為44H</p><p>  CJNE @R0,#00H,DEC1</p><p><b>  AJMP JYFH</b></p><p>  R040:CJNE @R0,#00H,DEC1 ;R0為40

76、H</p><p>  INC R0 ;R0為41H</p><p>  CJNE @R0,#00H,R041</p><p>  INC R0 ;R0為42H</p><p>  CJNE @R0,#00H,R042</p><p>  INC R0

77、 ;R0為43H</p><p>  CJNE @R0,#00H,R043</p><p>  INC R0 ;R0為44H</p><p>  CJNE @R0,#00H,R044</p><p><b>  AJMP ZJFH</b></p>

78、<p>  R041:MOV 40H,#09H</p><p><b>  DEC 41H</b></p><p><b>  AJMP TCZD</b></p><p>  R042:MOV 40H,#09H</p><p>  MOV 41H,#09H</p><p

79、><b>  DEC 42H</b></p><p><b>  AJMP TCZD</b></p><p>  R043:MOV 40H,#09H</p><p>  MOV 41H,#09H</p><p>  MOV 42H,#05H</p><p><b&

80、gt;  DEC 43H</b></p><p><b>  AJMP TCZD</b></p><p>  R044:MOV 40H,#09H</p><p>  MOV 41H,#09H</p><p>  MOV 42H,#05H</p><p>  MOV 43H,#09H&l

81、t;/p><p><b>  DEC 44H</b></p><p><b>  AJMP TCZD</b></p><p>  DEC1:DEC 40H</p><p>  TCZD:MOV TH0,#3CH ;退出中斷子程序</p><p>  MOV

82、TL0,#0B0H</p><p><b>  SETB EA</b></p><p><b>  SETB ET0</b></p><p><b>  SETB TR0</b></p><p><b>  AJMP ZZFH</b></p>

83、<p>  JYFH:DEC 40H</p><p>  ZJFH:SETB P3.0 ;啟動蜂鳴器</p><p><b>  ZZFH:RETI</b></p><p>  XDYS:ACALL XSCX ;消抖延時程序,延時10ms(2*5ms)</p><p>  ACAL

84、L XSCX ;采用調(diào)用顯示子程序延時以改善LED顯示效果</p><p><b>  RET</b></p><p>  XSYS:MOV 55H,#20 ;顯示延時程序,延時1ms</p><p>  DEL2:MOV 56H,#25</p><p>  DEL1:DJNZ 56H,DEL1</p&g

85、t;<p>  DJNZ 55H,DEL2</p><p><b>  RET</b></p><p>  TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH</p><p>  TAB1:DB 0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH

溫馨提示

  • 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

提交評論