定時鬧鐘C51單片機課程設(shè)計_第1頁
定時鬧鐘C51單片機課程設(shè)計_第2頁
定時鬧鐘C51單片機課程設(shè)計_第3頁
定時鬧鐘C51單片機課程設(shè)計_第4頁
定時鬧鐘C51單片機課程設(shè)計_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、題目: 定時鬧鐘目錄一、 概述111設(shè)計目的及意義112設(shè)計任務(wù)113設(shè)計系統(tǒng)的主要功能1二、 系統(tǒng)總體方案及硬件設(shè)計221系統(tǒng)總體方案222系統(tǒng)設(shè)計總框圖223硬件設(shè)計2231單片機最小系統(tǒng)設(shè)計2232報警模塊設(shè)計6233顯示模塊設(shè)計7234調(diào)時模塊設(shè)計9三、 軟件設(shè)計1031主程序流程圖1032定時中斷子程序流程圖1133程序設(shè)計11四、 系統(tǒng)的仿真與調(diào)試1241 proteus軟件仿真1242系統(tǒng)的調(diào)試11五、設(shè)計總結(jié)與體會13參考文獻13附錄1:源程序代碼14附錄2:系統(tǒng)原理圖24一、 概述11設(shè)計目的及意義學(xué)習(xí)和鞏固單片機技術(shù)、電子技術(shù)、傳感器技術(shù)及智能儀器等知識,使對已學(xué)過的基礎(chǔ)知

2、識能有更深入的理解,并融會貫通。學(xué)會獨立思考、獨立工作,培養(yǎng)一定的自學(xué)能力和獨立分析問題能力,以及增強系統(tǒng)地運用已學(xué)理論知識去解決實際問題的能力,同時培養(yǎng)成良好的科學(xué)態(tài)度和嚴謹?shù)脑O(shè)計習(xí)慣。12設(shè)計任務(wù)完成所選題目的分析與設(shè)計,達到技術(shù)性能要求。提交正式課程設(shè)計總結(jié)報告一份。本文設(shè)計的定時鬧鐘的核心模塊采用AT89C51芯片,時、分、秒用6位LED數(shù)碼管顯示。在電路中通過四個按鍵S1、S2、S3和S4來進行定時、調(diào)時和復(fù)位,定時時間到通過蜂鳴器發(fā)出報警聲。13設(shè)計系統(tǒng)的主要功能(1) 能顯示 時時分分秒秒。(2) 能夠設(shè)置定時時間、 修改定時時間。(3) 定時時間到能發(fā)出報警聲。二、 系統(tǒng)總體方

3、案及硬件設(shè)計21系統(tǒng)總體方案(1) 由于LED顯示器相對于其它顯示器(如LCD顯示器)來說其價格要便宜許多,而且亮度更高,耐溫范圍較廣,所以采用6位數(shù)碼管來顯示“時時分分秒秒”。(2) 時間的定時用單片機內(nèi)部時鐘電路,在一定的時間內(nèi)能使其誤差較小,如經(jīng)過一年其誤差才僅有數(shù)秒。修改時間和定時用手動按鍵控制,報警聲通過蜂鳴器發(fā)出。這樣可以使得硬件電路設(shè)計較為簡單,且軟件設(shè)計也易于實現(xiàn),并能夠降低成本。(3) 核心模塊采用AT89C51單片機,功能強、通用性好、價格便宜,且易于控制。加上外圍器件(數(shù)碼管、排阻、按鍵和蜂鳴器)和應(yīng)用程序,便構(gòu)成了相應(yīng)的應(yīng)用系統(tǒng)。22系統(tǒng)設(shè)計總框圖數(shù)碼管顯示(如圖1所示

4、)時鐘電路和復(fù)位電路單片機 AT89 C51鍵盤(按鈕)蜂鳴器 圖1定時鬧鐘系統(tǒng)設(shè)計總框圖23硬件設(shè)計231單片機最小系統(tǒng)設(shè)計(1) 芯片:AT89C51 因為51單片機是各單片機中最為典型和最有代表性的一種,在20世紀70年代問世以來,以其極高的性能價格比,受到人們的重視和關(guān)注,應(yīng)用廣泛,發(fā)展很快,推廣率和市場利潤率較高,且適合于本設(shè)計系統(tǒng)中CPU內(nèi)存和I/O等資源的要求,所以本設(shè)計采用AT89C51作為核心控制芯片。AT89C51是一種帶4KB閃爍可編程可擦除只讀存儲器(FPEROMFalsh Programmable and Erasable Read Only Memory)的單片機,

5、可穩(wěn)定地工作于5V的電源下。其集成度高、功能強、能耗低、通用性好、價格便宜。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器。其組合而成的配件產(chǎn)品在日常生活的使用過程中非常方便、簡單且實用,深受著廣大消費者的喜愛。AT89C51管腳說明如下:  :供電電壓端。     :接地端。     P0口:P0口為三態(tài)雙向口,能帶8個TTL電路。有兩種功能:第一功能是一

6、個8位漏極開路型的雙向I/O口,這時P0口可看做數(shù)據(jù)總線;第二功能是在訪問外部存儲器時,分時提供低8位地址和8位雙向數(shù)據(jù)總線,這時先用做地址總線再用做數(shù)據(jù)總線。在FIASH編程時,P0 口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。P0口內(nèi)部無上拉電阻,作為I/O口使用時,必須外接上拉電阻。     P1口:P1口是一個內(nèi)部帶上拉電阻的8位準雙向I/O口(使用前有一個準備動作),負載能力為4個TTL電路。在FLASH編程和校驗時,P1口作為第八位地址接收。     P2口:P2口為

7、一個內(nèi)部帶上拉電阻的8位準雙向I/O口,P2口緩沖器可接收、輸出4個TTL門電流。P2口當用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。     P3口:P3口是一個內(nèi)部帶上拉電阻的準雙向I/O口,可接收輸出4個TTL門電流。同時為閃爍編程和編程校驗接收一些控制信號。P3口的8個引腳都有各自的第二功能,可作為AT89C51的一些特殊功能口,如表1所示。 表1 P3口第二功能P3口引腳第二功能注釋P3.0串行輸入口P3.1串行輸出口P3.2外部中斷0輸入P3.3外

8、部中斷1輸入P3.4定時/計時器0外部輸入P3.5定時/計時器1外部輸入P3.6外部數(shù)據(jù)存儲器寫信號P3.7外部數(shù)據(jù)存儲器讀信號   :為復(fù)位信號輸入端。當振蕩器復(fù)位器件時,要保持RST腳兩個機器周期(24個時鐘周期)以上的高電平時間。為內(nèi)部的備用電源輸入端。當主電源一旦發(fā)生斷電或電壓降到一定值時,可通過為單片機內(nèi)部提供電源,以保護片內(nèi)中的信息不丟失,使上電后能繼續(xù)正常運行。 :為地址鎖存允許信號,當訪問外部存儲器時,用來鎖存口送出的低8位地址信號。在編程期間,用于輸入編程脈沖。在平時,端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈

9、沖或用于定時目的。然而要注意的是:每當用作外部數(shù)據(jù)存儲器時,將跳過一個脈沖。如想禁止的輸出可在的8EH地址上置0。此時,只有在執(zhí)行MOVX,MOVC指令時才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)禁止,置位無效。    :外部程序存儲器的讀選通信號。在由外部程序存儲器取指期間,產(chǎn)生負脈沖做為外部的選通信號,每個機器周期兩次有效。但在訪問外部數(shù)據(jù)存儲器時,不會產(chǎn)生有效的信號。可驅(qū)動8個門輸入端。     :訪問外部程序存儲器控制信號。當保持低電平時,則在此期間只訪問外部程序存儲器(0000H-FFFFH),不

10、管是否有內(nèi)部程序存儲器。注意加密方式1時,將內(nèi)部鎖定為。當端保持高電平時,訪問程序存儲器有兩種情況:一是訪問的地址空間在0到4KB范圍內(nèi),訪問片內(nèi)程序存儲器;二是訪問的地址超出4KB時,將自動執(zhí)行外部程序存儲器的程序。在編程期間,此引腳也用于施加12V編程電源()。:晶體振蕩電路的反向器輸入端。 :晶體振蕩電路的反向器輸出端。 (2) 時鐘電路單片機的時鐘產(chǎn)生方法有兩種: 內(nèi)部時鐘方式和外部時鐘方式。 本系統(tǒng)中AT89C51單片機采用內(nèi)部時鐘方式。最常用的內(nèi)部時鐘方式是采用外接晶體和電容組成的并聯(lián)諧振回路。振蕩晶體可在1.2MHz12MHz之間。電容值無嚴格要求,但電容取值對振蕩頻率輸出的穩(wěn)定

11、性、大小和振蕩電路起振速度有少許影響,一般可在20pF100pF之間取值。AT98C51單片機的時鐘電路如圖3所示。圖3 AT98C51單片機的時鐘電路(3) 復(fù)位電路復(fù)位是單片機的初始化操作。單片機系統(tǒng)在上電啟動運行時,都需要先復(fù)位。其作用是使CPU和系統(tǒng)中其他部件都處于一個確定的初始狀態(tài),并從這個狀態(tài)開始工作。單片機的外部復(fù)位電路有上電自動復(fù)位和按鍵手動復(fù)位兩種。本系統(tǒng)中AT89C51單片機采用上電加按鍵手動復(fù)位電路,如圖4所示。圖4 AT89C51單片機的復(fù)位電路232報警模塊設(shè)計為實現(xiàn)設(shè)計的定時鬧鐘系統(tǒng)在定時時間到時發(fā)出報警聲,采用蜂鳴器作為報警發(fā)聲裝置。在本設(shè)計中有多種報警聲可供選擇

12、,可選擇報警時播放音樂。報警電路設(shè)計如圖5所示。圖5 定時鬧鐘系統(tǒng)的報警電路233顯示模塊設(shè)計本系統(tǒng)中采用6位LED數(shù)碼管顯示時、分、秒,用兩片74HC573分別對段碼和位碼進行鎖存,實現(xiàn)動態(tài)掃描方式顯示,節(jié)省單片機I/O口資源,簡化硬件電路。(1) LED顯示器單片機中通常使用8段LED,LED是發(fā)光二極管顯示器的縮寫。LED顯示器由于結(jié)構(gòu)簡單,價格便宜,體積小,亮度高,電壓低,耐溫范圍廣,可靠性高,壽命長,響應(yīng)速度快,顏色鮮艷,配置靈活,與單片機接口方便而得到廣泛應(yīng)用。LED顯示器是由若干個發(fā)光二極管組成顯示字段的顯示部件,當發(fā)光二極管導(dǎo)通時,相應(yīng)的一個點或一個筆劃發(fā)光,控制不同組合的二極

13、管導(dǎo)通,就能顯示出各種字符。LED顯示器有多種形式,如:“米”字型顯示器,點陣顯示器和七段數(shù)碼顯示器等。在本系統(tǒng)中采用八段數(shù)碼顯示器。因為共陰極的LED數(shù)碼管它的驅(qū)動電流是分開的,在單片機進行動態(tài)掃描的時候不會影響彼此的電流,故本系統(tǒng)中的6位LED數(shù)碼管均用共陰極的數(shù)碼管。(2) 74HC573芯片特點:三態(tài)總線驅(qū)動輸出,置數(shù)全并行存取,緩沖控制輸入,使能輸入有改善抗擾度的滯后作用。  原理說明:74HC573的八個鎖存器都是透明的D型鎖存器,當使能(G)為高時,Q輸出將隨數(shù)據(jù)(D)輸入而變。當使能為低時,輸出將鎖存在已建立的數(shù)據(jù)電平上。輸出控制不影響鎖存器的內(nèi)部工作,即老數(shù)據(jù)可以保

14、持,甚至當輸出被關(guān)閉時,新的數(shù)據(jù)也可以置入。這種電路可以驅(qū)動大電容或低阻抗負載,可以直接與系統(tǒng)總線接口并驅(qū)動總線,而不需要外接口。特別適用于緩沖寄存器,I/O 通道,雙向總線驅(qū)動器和工作寄存器。74HC573引腳說明:OE:3態(tài)輸出使能輸入(低電平有效)。D0 - D7:數(shù)據(jù)輸入端。Q0 - Q7:3態(tài)鎖存輸出。LE:鎖存使能輸入。GND:接地。VCC:電源電壓。74HC573的引腳圖、邏輯圖及真值表如下:圖6    74HC573引腳圖圖7 74HC573邏輯圖表2 74HC573真值表OELEDQ HXXZLLXNO CHANGE LHLLLHHH(

15、3) 顯示電路將兩片74HC573的數(shù)據(jù)輸入端D0 - D7都分別與AT89C51單片機的P0.0 - P0.7和RESPACK-8排阻的 2 - 9 引腳連接,兩片74HC573的鎖存使能端L分別接至P2.6和P2.7,74HC573的輸出端接至數(shù)碼管234調(diào)時模塊設(shè)計本系統(tǒng)要進行時間的調(diào)整和定時,因此用4個手動按鍵對其進行控制。鍵盤電路設(shè)計如圖9所示。當按下時間調(diào)整鍵S1時,系統(tǒng)可進行時間調(diào)整的小時設(shè)置;當再按下S1時,可進行時間調(diào)整的分鐘設(shè)置;再按下S1時,可進行時間調(diào)整的秒鐘設(shè)置;再次按下S1時,系統(tǒng)恢復(fù)正常時間顯示。當按下設(shè)置定時鍵S2時,系統(tǒng)可進行鬧鐘定時時間的小時設(shè)置,此時S1作

16、為報警聲選擇鍵,可通過S1選擇報警聲;再按下S2時,可進行定時時間的分鐘設(shè)置,此時也可通過S1選擇報警聲;第三次按下S2時,系統(tǒng)恢復(fù)正常時間顯示,此時S1恢復(fù)為時間調(diào)整按鍵。設(shè)置時間時都通過加時按鍵S3和減時按鍵S4進行控制。圖9 定時鬧鐘系統(tǒng)的鍵盤電路三、 軟件設(shè)計31主程序流程圖開始初始化顯示時間NS1按下?YNS2按下?調(diào)整時間NNYS1按下?S3按下?YY選擇報警聲加時調(diào)整NNS3按下?S4按下?YY定時加時減時調(diào)整NS4按下?Y定時減時圖10主程序流程圖32定時中斷子程序流程圖開始N1秒到?Y秒變量加1N60秒到?Y分變量加1,秒變量清零N60分到?Y時變量加1,分變量清零N24時到

17、?Y時變量清零蜂鳴器響Y定時到?N結(jié) 束圖11定時中斷子程序流程圖33程序設(shè)計 根據(jù)程序流程圖采用匯編語言進行程序設(shè)計,其中主程序可根據(jù)系統(tǒng)實現(xiàn)的功能劃分為以下幾個子程序模塊。(程序源代碼見附錄1)(1) 時間調(diào)整子程序模塊;(2) 鬧鐘時間設(shè)置子程序模塊;(3) 蜂鳴器報警子程序模塊;(4) 數(shù)碼管顯示子程序模塊。四、 系統(tǒng)的仿真與調(diào)試41 proteus軟件仿真使用WAVE軟件編輯程序,在仿真設(shè)置中選擇E6000/T仿真器,選擇POD-51仿真頭。為方便系統(tǒng)在proteus中進行仿真,選擇了7SEG-MPX6-CC-BLUE數(shù)字顯示器,并改變了一些I/O連接,然后選擇80C51CPU進行匯

18、編程序編輯。經(jīng)過仿真得知,通過S1、S2、S3和S4四個按鍵,可以對時間進行修改和鬧鐘的設(shè)置,定時時間到能發(fā)出報警聲,系統(tǒng)非常完善地實現(xiàn)了所有要求的功能。42 系統(tǒng)的調(diào)試將所編程序在KEIL軟件里進行編譯,編譯正確后生成HEX文件。 在AT89C51芯片中加載此文件后,對完成的實物作品進行調(diào)試。系統(tǒng)運行后,能準確的顯示時間,并能通過S1、S2、S3和S4四個按鍵對時間進行修改和鬧鐘定時時間的設(shè)置,定時時間到能發(fā)出報警聲。五、設(shè)計總結(jié)與體會設(shè)計是培養(yǎng)學(xué)生綜合運用所學(xué)知識,發(fā)現(xiàn)、提出、分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對學(xué)生實際工作能力的具體訓(xùn)練和考察過程。隨著科學(xué)技術(shù)發(fā)展的日新日異,

19、單片機已經(jīng)成為當今計算機應(yīng)用中空前活躍的領(lǐng)域,在生活中可以說得是無處不在,作為二十一世紀的大學(xué)生來說掌握單片機的開發(fā)技術(shù)是十分重要的。通過本次單片機原理及應(yīng)用設(shè)計使我充分認識到了設(shè)計的重要性和必要性,本次設(shè)計使我對已學(xué)過的基礎(chǔ)知識有了更深入的理解,學(xué)會了獨立思考、獨立工作以及對應(yīng)用所學(xué)基本理論分析和解決實際問題的能力有了很大的提高。另外,本次設(shè)計使我的實際操作技能得到了訓(xùn)練, 同時也進一步培養(yǎng)了我嚴謹?shù)目茖W(xué)作風(fēng)?;仡櫰鸫舜螁纹瑱C課程設(shè)計,從選題到定稿,從理論到實踐,可以說得是有苦有甜,但是從中卻學(xué)到很多很多的的東西,不但鞏固了以前所學(xué)過的知識,而且對單片機原理課外知識也得到了拓展。做的過程中,

20、開始的確遇到了不少困難的問題,比如說芯片管腳不熟悉怎么放置等,同時在這過程中也發(fā)現(xiàn)了自己的許多不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固。 通過單片機設(shè)計之后,我不僅加深了對單片機理論的理解,將理論很好地應(yīng)用到實際當中去,而且我們還學(xué)會了如何去培養(yǎng)創(chuàng)新精神和嚴謹?shù)目茖W(xué)作風(fēng),從而不斷地戰(zhàn)勝自己,超越自己。更重要的是,我在這一設(shè)計過程中,學(xué)會了堅持不懈,絕不放棄。參考文獻1張毅剛.單片機原理及應(yīng)用.北京:高等教育出版社,20032王幸之.單片機應(yīng)用系統(tǒng)電磁干擾與抗干擾技術(shù).北京:北京航空航天大學(xué)出版社,20063何立民.單片機應(yīng)用技術(shù)大全.北京:北京航空航天大學(xué)出版社,19944張

21、毅剛.單片機原理及接口技術(shù).哈爾濱:哈爾濱工業(yè)大學(xué)出版社,19905譚浩強.單片機課程設(shè)計.北京:清華大學(xué)出版社,19896余錫純.單片機原理與接口技術(shù).西安:電子科技大學(xué)出版社,20037Mak.S, Radford. D.Design considerations for implementation of large scale automatic meter reading systems.Power Delivery, IEEE Tra

22、nsactions on,Volume 10,  Issue 1,  Jan. 1995 附錄1:源程序代碼1、 匯編語言程序:;* 引腳及變量定義 * S1 BIT P3.2 ;按鍵1 S2 BIT P3.3 ;按鍵2 S3 BIT P3.4 ;按鍵3 S4 BIT P3.5 ;按鍵4SPEAKER BIT P2.0 ;蜂鳴器 DULA BIT P2.6 ;段選鎖存器鎖存端 WELA BIT P2.7 ;位選鎖存器鎖存端 HOUR1 EQU 20H ;小時 MIN1 EQU 21H ;分鐘 SEC1 E

23、QU 22H ;秒鐘 HOUR2 EQU 23H ;小時定時變量 MIN2 EQU 24H ;分鐘定時變量 A1 EQU 25H ;顯示變量 B1 EQU 26H C1 EQU 27H D1 EQU 28H E1 EQU 29H F1 EQU 30H A2 EQU 31H B2 EQU 32H C2 EQU 33H D2 EQU 34H NUM1 EQU 35H ;按鍵計數(shù)變量1 NUM2 EQU 36H ;按鍵計數(shù)變量2 COUNT EQU 37H ;計時變量 ORG 0000H LJMP MAIN ORG 000BH LJMP TIME;* MAIN PROGRAM * ORG 1000H

24、MAIN: MOV SP,#50HSTART: MOV HOUR1,#00H ;初始化時間變量 MOV MIN1,#00H MOV SEC1,#00H MOV HOUR2,#01H ;初始化定時變量 MOV MIN2,#01H MOV COUNT,#00H ;初始化計時變量 MOV NUM1,#00H ;初始化按鍵計數(shù)變量 MOV NUM2,#00H MOV TMOD,#01H ;16位計數(shù)器 MOV TH0,#0D8H ;賦初值 MOV TL0,#0EFH SETB ET0 ;中斷允許 SETB EA SETB TR0 ;啟動T0LOOP: MOV A,NUM2 JNZ LOOP1 ;A不為

25、0時轉(zhuǎn)移 LCALL DISPLAY1 ;顯示當前時間 LCALL KEYTIME ;調(diào)用時間調(diào)整子程序 LCALL SETTIME ;調(diào)用定時設(shè)置子程序 LJMP LOOPLOOP1: LCALL DISPLAY2 ;顯示定時時間 LCALL KEYTIME ;調(diào)用時間調(diào)整子程序 LCALL SETTIME ;調(diào)用定時設(shè)置子程序 LJMP LOOP ;* SETTIME PROGRAM *SETTIME: ;定時設(shè)置子程序LL1: JB S2,LL3 ;P3.3=1時轉(zhuǎn)移 LCALL DELAY5 ;延時5MSMSTOP1: JB S2,LL3 ;P3.3=1時轉(zhuǎn)移 MOV C,S2JNC

26、MSTOP1 ;P3.3=0時轉(zhuǎn)移 INC NUM2 ;按鍵計數(shù)變量加1 MOV A,NUM2 CJNE A,#1,LL2 ;判斷按鍵計數(shù)是否為1 CLR TR0 ;定時器中斷關(guān)閉LL2: CJNE A,#3,LL ;判斷按鍵計數(shù)是否為3 MOV NUM2,#0 ;按鍵計數(shù)變量清0 SETB TR0 ;定時器中斷打開LL: LCALL DISPLAY2 ;顯示定時時間LL3: MOV A,NUM2 JZ LL5 ;A為0時轉(zhuǎn)移 JB S3,KK2 ;P3.4=1時轉(zhuǎn)移 LCALL DELAY5 ;延時5MSKK1:JB S3,KK2 ;P3.4=1時轉(zhuǎn)移 MOV C,S3 JNC KK1 ;P

27、3.4=0時轉(zhuǎn)移 MOV A,NUM2 CJNE A,#1,MM1 ;判斷按鍵計數(shù)是否為1INC HOUR2 ;小時定時變量加1 MOV A,HOUR2 CJNE A,#24,MM1 ;判斷小時定時變量是否為24 MOV HOUR2,#0 ;小時定時變量為24則復(fù)位0 LCALL DISPLAY2 ;顯示定時時間MM1:LCALL DISPLAY2 ;顯示定時時間 MOV A,NUM2 CJNE A,#2,KK2 ;判斷按鍵計數(shù)是否為2 INC MIN2 ;分鐘定時變量加1MOV A,MIN2 CJNE A,#60,KK2 ;分鐘定時變量是否為60 MOV MIN2,#0 ;分鐘定時變量為60

28、則復(fù)位0 LCALL DISPLAY2 ;顯示定時時間KK2:LCALL DISPLAY2 ;顯示定時時間JB S4,LL5 ;P3.5=1時轉(zhuǎn)移 LCALL DELAY5 ;延時5MSKK3:JB S4,LL5 ;P3.5=1時轉(zhuǎn)移 MOV C,S4 JNC KK3 ;P3.5=0時轉(zhuǎn)移 MOV A,NUM2 CJNE A,#1,MM2 ;判斷按鍵計數(shù)是否為1 DEC HOUR2 ;小時定時變量減1 MOV A,HOUR2 CJNE A,#0,MM2 MOV HOUR2,#24 LCALL DISPLAY2 ;顯示定時時間MM2:LCALL DISPLAY2 ;顯示定時時間 MOV A,NU

29、M2 CJNE A,#2,LL5 ;判斷按鍵計數(shù)是否為2DEC MIN2MOV A,MIN2 ;分鐘定時變量減1CJNE A,#0,LL5MOV MIN2,#60LL5: LCALL DISPLAY2 ;顯示定時時間RET ;* KEYTIME PROGRAM *KEYTIME: ;時間調(diào)整子程序L1: JB S2,L3 ;P3.2=1時轉(zhuǎn)移 LCALL DELAY5 ;延時5MSMSTOP2: JB S2,L3 ;P3.2=1時轉(zhuǎn)移 MOV C,S2 JNC MSTOP2 ;P3.2=0時轉(zhuǎn)移 INC NUM1 MOV A,NUM1 CJNE A,#1,L2 ;判斷按鍵計數(shù)是否為1 CLR

30、TR0 ;定時器中斷關(guān)閉L2: CJNE A,#4,L3 ;判斷按鍵計數(shù)是否為4MOV NUM1,#0 SETB TR0 ;定時器中斷打開L3: MOV A,NUM1 JNZ FF ;A不為0時轉(zhuǎn)移 LJMP L5FF: JB S3,K2 ;P3.4=1時轉(zhuǎn)移 LCALL DELAY5 ;延時5MSK1: JB S3,K2 ;P3.4=1時轉(zhuǎn)移 MOV C,S3 JNC K1 ;P3.4=0時轉(zhuǎn)移 MOV A,NUM1 CJNE A,#1,M1 ;判斷按鍵計數(shù)是否為1 INC HOUR1 ;小時設(shè)置加1 MOV A,HOUR1 CJNE A,#24,M1 MOV HOUR1,#0 LCALL

31、DISPLAY1 ;顯示調(diào)整時間M1: LCALL DISPLAY1 ;顯示調(diào)整時間 MOV A,NUM1CJNE A,#2,M2 ;判斷按鍵計數(shù)是否為2INC MIN1 ;分鐘設(shè)置加1MOV A,MIN1CJNE A,#60,M2MOV MIN1,#0LCALL DISPLAY1 ;顯示調(diào)整時間M2:LCALL DISPLAY1 ;顯示調(diào)整時間MOV A,NUM1CJNE A,#3,K2 ;判斷按鍵計數(shù)是否為3INC SEC1MOV A,SEC1CJNE A,#60,K2MOV SEC1,#0LCALL DISPLAY1 ;顯示調(diào)整時間K2:LCALL DISPLAY1 ;顯示調(diào)整時間JB

32、S4,L5 ;P3.5=1時轉(zhuǎn)移 LCALL DELAY5 ;延時5MSK3:JB S4,L5 ;P3.5=1時轉(zhuǎn)移 MOV C,S4JNC K3 ;P3.5=0時轉(zhuǎn)移MOV A,NUM1CJNE A,#1,M3 ;判斷按鍵計數(shù)是否為1DEC HOUR1MOV A,HOUR1CJNE A,#0,M3MOV HOUR1,#24LCALL DISPLAY1 ;顯示調(diào)整時間M3:LCALL DISPLAY1 ;顯示調(diào)整時間MOV A,NUM1CJNE A,#2,M4 ;判斷按鍵計數(shù)是否為2DEC MIN1MOV A,MIN1CJNE A,#0,M4MOV MIN1,#60LCALL DISPLAY1

33、 ;顯示調(diào)整時間M4:LCALL DISPLAY1 ;顯示調(diào)整時間MOV A,NUM1CJNE A,#3,L5 ;判斷按鍵計數(shù)是否為3INC SEC1MOV A,SEC1CJNE A,#0,L5MOV SEC1,#60L5: LCALL DISPLAY1 ;顯示調(diào)整時間RET ;* TIMEPRO PROGRAM *TIMEPRO: MOV R7,#50 ;蜂鳴器報警子程序 CLR SPEAKER ;啟動蜂鳴器報警 LCALL DELAYN ;延時50MS SETB SPEAKER LCALL DELAYN CLR SPEAKER LCALL DELAYN SETB SPEAKER;* DIS

34、PLAY1 PROGRAM *DISPLAY1: ;顯示子程序1 PUSH ACC ;保護現(xiàn)場 MOV A,HOUR1 ;將時間的十位和個位分別賦給顯示變量 MOV B,#10 DIV AB MOV A1,A MOV B1,B MOV A,MIN1 MOV B,#10 DIV AB MOV C1,A MOV D1,B MOV A,SEC1 MOV B,#10 DIV AB MOV E1,A MOV F1,BMOV DPTR,#TABLE;指向7段編碼表首地址 CLR DULA;關(guān)閉段選鎖存器鎖存端MOV A,A1 MOVC A,A+DPTR MOV P0,A;顯示小時十位SETB DULA;打

35、開段選鎖存器鎖存端 CLR DULACLR WELA;關(guān)閉位選鎖存器鎖存端 MOV P0,#0FEH;選擇第1位數(shù)碼管 SETB WELA;打開位選鎖存器鎖存端 CLR WELA LCALL DELAY5 CLR DULA;關(guān)閉段選鎖存器鎖存端MOV A,B1 MOVC A,A+DPTR MOV P0,A;顯示小時個位SETB DULA;打開段選鎖存器鎖存端 CLR DULACLR WELA;關(guān)閉位選鎖存器鎖存端 MOV P0,#0FDH;選擇第2位數(shù)碼管 SETB WELA;打開位選鎖存器鎖存端 CLR WELA LCALL DELAY5 CLR DULA;關(guān)閉段選鎖存器鎖存端MOV A,C

36、1 MOVC A,A+DPTR MOV P0,A;顯示分鐘十位SETB DULA;打開段選鎖存器鎖存端 CLR DULACLR WELA;關(guān)閉位選鎖存器鎖存端 MOV P0,#0FBH;選擇第3位數(shù)碼管 SETB WELA;打開位選鎖存器鎖存端 CLR WELA LCALL DELAY5 CLR DULA;關(guān)閉段選鎖存器鎖存端MOV A,D1 MOVC A,A+DPTR MOV P0,A;顯示分鐘個位SETB DULA;打開段選鎖存器鎖存端 CLR DULACLR WELA;關(guān)閉位選鎖存器鎖存端 MOV P0,#0F7H;選擇第4位數(shù)碼管 SETB WELA;打開位選鎖存器鎖存端 CLR WE

37、LA LCALL DELAY5 CLR DULA;關(guān)閉段選鎖存器鎖存端MOV A,E1 MOVC A,A+DPTR MOV P0,A;顯示秒鐘十位SETB DULA;打開段選鎖存器鎖存端 CLR DULACLR WELA;關(guān)閉位選鎖存器鎖存端 MOV P0,#0EFH;選擇第5位數(shù)碼管 SETB WELA;打開位選鎖存器鎖存端 CLR WELA LCALL DELAY5 CLR DULA;關(guān)閉段選鎖存器鎖存端MOV A,F1 MOVC A,A+DPTR MOV P0,A;顯示秒鐘個位SETB DULA;打開段選鎖存器鎖存端 CLR DULACLR WELA;關(guān)閉位選鎖存器鎖存端 MOV P0,

38、#0DFH;選擇第6位數(shù)碼管 SETB WELA;打開位選鎖存器鎖存端 CLR WELA LCALL DELAY5POP ACC ;恢復(fù)現(xiàn)場 RET;* DISPLAY2 PROGRAM *DISPLAY2: ;顯示子程序2 PUSH ACC ;保護現(xiàn)場 MOV A,HOUR2 ;將時間的十位和個位分別賦給顯示變量 MOV B,#10 DIV AB MOV A2,A MOV B2,B MOV A,MIN2 MOV B,#10 DIV AB MOV C2,A MOV D2,B MOV DPTR,#TABLE;指向7段編碼表首地址 CLR DULA;關(guān)閉段選鎖存器鎖存端MOV A,A2 MOVC

39、A,A+DPTR MOV P0,A;顯示定時時間的小時十位SETB DULA;打開段選鎖存器鎖存端 CLR DULACLR WELA;關(guān)閉位選鎖存器鎖存端 MOV P0,#0FEH;選擇第1位數(shù)碼管 SETB WELA;打開位選鎖存器鎖存端 CLR WELA LCALL DELAY5 CLR DULA;關(guān)閉段選鎖存器鎖存端MOV A,B2 MOVC A,A+DPTR MOV P0,A;顯示定時時間的小時個位SETB DULA;打開段選鎖存器鎖存端 CLR DULACLR WELA;關(guān)閉位選鎖存器鎖存端 MOV P0,#0FDH;選擇第2位數(shù)碼管 SETB WELA;打開位選鎖存器鎖存端 CLR

40、 WELA LCALL DELAY5 CLR DULA;關(guān)閉段選鎖存器鎖存端MOV A,C2 MOVC A,A+DPTR MOV P0,A;顯示定時時間的分鐘十位SETB DULA;打開段選鎖存器鎖存端 CLR DULACLR WELA;關(guān)閉位選鎖存器鎖存端 MOV P0,#0FBH;選擇第3位數(shù)碼管 SETB WELA;打開位選鎖存器鎖存端 CLR WELA LCALL DELAY5 CLR DULA;關(guān)閉段選鎖存器鎖存端MOV A,D2 MOVC A,A+DPTR MOV P0,A;顯示定時時間的分鐘個位SETB DULA;打開段選鎖存器鎖存端 CLR DULACLR WELA;關(guān)閉位選鎖

41、存器鎖存端 MOV P0,#0F7H;選擇第4位數(shù)碼管 SETB WELA;打開位選鎖存器鎖存端 CLR WELA LCALL DELAY5POP ACC ;恢復(fù)現(xiàn)場RET;* DELAY PROGRAM *DELAYN: ;N ms延時子程序,R7為參數(shù)NDL00: MOV R5,#05H DL11: MOV R6,#0DFHDL22: DJNZ R6,DL22 DJNZ R5,DL11 DJNZ R7,DL00 RETDELAY5: MOV R4,#14H ;5ms延時子程序DL001: MOV R5,#0FFHDL111: DJNZ R5,DL111 DJNZ R4,DL001 RET;

42、* TIME PROCESS *TIME: PUSH ACC ;定時中斷子程序 PUSH PSW ;保護現(xiàn)場 MOV TH0,#0D8H ;初值 MOV TL0,#0EFHINC COUNT ;計時變量加1MOV A,COUNTCJNE A,#18,RET0 ;1秒到否MOV COUNT,#0INC SEC1MOV A,HOUR1 ;判斷定時時間到否MOV B,HOUR2CJNE A,B,HTHTMOV A,MIN1MOV B,MIN2CJNE A,B,HTHTLCALL TIMEPRO ;調(diào)用蜂鳴器報警子程序HTHT:MOV A,SEC1CJNE A,#60,RET0 ;1分到否MOV SE

43、C1,#0INC MIN1MOV A,MIN1CJNE A,#60,RET0 ;1小時到否MOV MIN1,#0INC HOUR1MOV A,HOUR1CJNE A,#24,RET0MOV HOUR1,#0RET0: POP PSW ;恢復(fù)現(xiàn)場 POP ACC RETITABLE: DB 3FH,06H,5BH,4FH,66H ;七段碼表 DB 6DH,7DH,07H,7FH,6FHEND附錄2:系統(tǒng)原理圖附錄三 液晶顯示一、 實驗?zāi)康? 了解液晶工作原理2 熟悉12232F液晶的引腳功能、工作時序及工作方式3 掌握如何根據(jù)時序圖編寫程序的方法。二、 實驗內(nèi)容用實驗箱上提供的12232F液晶模塊,編寫程序,靜態(tài)顯示“······

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論