單片機課程設計數(shù)字電子鐘正文_第1頁
單片機課程設計數(shù)字電子鐘正文_第2頁
單片機課程設計數(shù)字電子鐘正文_第3頁
單片機課程設計數(shù)字電子鐘正文_第4頁
單片機課程設計數(shù)字電子鐘正文_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1 設計概述1.1 設計課題任務設計一個具有特定功能的電子鐘。具有時間顯示功能。并有時間設定,時間調(diào)整功能。1.2 功能要求說明設計一個具有特定功能的電子鐘。該電子鐘上電或按鍵復位后能自動顯示系統(tǒng)提示符“P.”, 進入時鐘準備狀態(tài);第一次按電子鐘啟動/調(diào)整鍵,電子鐘從0時0分0秒開始運行,進入時鐘運行狀態(tài);再次按電子鐘啟動/調(diào)整鍵,則電子鐘進入時鐘調(diào)整狀態(tài),此時可利用各調(diào)整鍵調(diào)整時間,調(diào)整結束后可按啟動/調(diào)整鍵再次進入時鐘運行狀態(tài)。2 系統(tǒng)的組成及工作原理2.1 系統(tǒng)的組成 數(shù)字鐘實際上是一個對標準頻率(1Hz)進行計數(shù)的計數(shù)電路。由于計數(shù)的起始時間不可能與標準時間一致,故需要在電路上加一個校

2、時電路,同時標準的1Hz時間信號必須做到準確穩(wěn)定。通常使用石英晶體振蕩器電路構成數(shù)字電子鐘。(1)晶體振蕩器晶體振蕩器給數(shù)字提供一個頻率穩(wěn)定準確的12MHz的方波信號,可保證數(shù)字電子鐘的走時準確及穩(wěn)定。不管是指針式的電子鐘還是數(shù)字數(shù)字顯示的電子鐘都使用了晶體振蕩器。(2)復位電路時間計數(shù)電路由秒個位和秒十位計數(shù)器,分個位和分十位計數(shù)器,時個位和時十位計數(shù)器構成。秒個位和秒十位計數(shù)器,分個位和分十位計數(shù)器為60進制計數(shù)器,時個位和時十位計數(shù)器為24進制計數(shù)器。(3)數(shù)碼管數(shù)碼管通常有發(fā)光二極管(LED)數(shù)碼管和液晶(LCD)數(shù)碼管,本設計提供的為LED數(shù)碼管。(4)鍵盤鍵盤是控制和修改時鐘的重要

3、輸入模塊,通過鍵盤可以修改時間。(5)控制部分AT89S52提供以下標準功能:8K字節(jié)Flash閃速存儲器,256字節(jié)內(nèi)部RAM,32I/0口線,看門狗(WDT),兩個數(shù)據(jù)指針,三個16位定時/計數(shù)器,一個5向量兩級中斷結構,一個全雙工串行通信口,片內(nèi)振蕩器及時鐘電路。2.2 系統(tǒng)的工作原理(1):輸入/輸出口線 P0.0-P0.7 P0口8位雙向口線 P1.0-P1.7 P1口8位雙向口線 P2.0-P2.7 P2口8位雙向口線 P3.0-P3.7 P3口8位雙向口線(2):地址鎖存控制信號ALE在系統(tǒng)擴展時,ALE用于控制把P0口輸出地低8位地址送入鎖存器鎖存起來,以實現(xiàn)低位地址和數(shù)據(jù)的分

4、時傳送。此外由于ALE是以1/6晶振頻率的固定頻率輸出的正脈沖,因此,可作為外部時鐘或外部定時脈沖使用。(3):外部程序存儲器讀選通信號PSEN在外部ROM時PSEN有效(低電平),以實現(xiàn)外部ROM單元的讀操作。(4):訪問程序存儲器控制信號EA當EA信號為低電平時,對ROM的讀操作是針對尾部程序存儲器的;而當EA信號為高電平時,對ROM的讀操作時從內(nèi)部程序存儲器開始,并可延續(xù)至外部程序存儲器。(5):復位信號RST當輸入的復位信號延續(xù)2個機器周期以上高電平時即為有效,用于完成單片機的復位操作。(6):外接晶體引線端XTAL1和XTAL2當使用芯片內(nèi)部時鐘時,XTAL1和XTAL2用于外接石英

5、晶體諧振器和微調(diào)電容;當使用外部時鐘時,用于接入外部時鐘脈沖信號。(7):地線Vss(8):+5V電源Vcc3 系統(tǒng)硬件電路設計3.1 硬件系統(tǒng)各模塊功能介紹本設計的硬件系統(tǒng)主要采用以下基本模塊來實現(xiàn),單片機最小系統(tǒng)模塊,輸入模塊、輸出模塊、電源模塊。(1)單片機最小系統(tǒng)模塊:包括低功耗、高性能CMOS8位微控制AT89S52;復位電路;晶振電路。本本模塊AT89S52系統(tǒng)控制核心,單片機系統(tǒng)復位由復位電路完成,單片機內(nèi)部有一個高增益、反相放大器,其輸入端為芯片引腳XTAL1,其輸出端位位引腳XTAL2。通過這兩個引腳在芯片外并接石英晶體振蕩器和兩只電容。這樣就構成一個穩(wěn)定的自激振蕩器。 (2

6、)輸入模塊:本模塊共用到了5個按鍵,1個電源開關,一個復位鍵,單片機運行期間,利用按鍵完成復位操作。3個按鍵獨立式鍵盤,S1鍵控制電子鐘的啟動調(diào)整狀態(tài),S2鍵為加1鍵,S3鍵為減1鍵。且S1、S2、S3任一鍵都獨自連一個I/O(P1.0、P1.1、P1.2)口線,說明它們可以獨立實現(xiàn)相應的電子鐘功能。(3)輸出模塊:本次設計顯示為8位,采用兩個四位一體數(shù)碼管(共陽極)作為顯示窗口,既可以節(jié)約成本又能簡化電路。數(shù)碼管用8個PNP三極管驅動。(4)電源模塊:用市場上的USB供電。3.2 數(shù)碼管顯示方案 數(shù)碼管顯示方案分靜態(tài)顯示和動態(tài)顯示兩種。所謂靜態(tài)顯示,就是當顯示器顯示某一字符時,相應的發(fā)光二極

7、管恒定的導通或截止。所謂動態(tài)顯示,就是一位一位的輪流點亮各個位,對于顯示器的每一位來說,每隔一段時間點亮一次。靜態(tài)顯示每一位都需要一個8位輸出口控制,靜態(tài)顯示時較小的電流能獲得較高的亮度,且字符不閃爍,但當所顯示的位數(shù)較多時,靜態(tài)顯示所需的I/O口太多,造成了資源的浪費。動態(tài)顯示是利用人的視覺暫留功能來看到整個顯示,但必須保證掃描速度足夠快,字符才不閃爍。顯示器的亮度既與導通電流有關,也與點亮時間與間隔時間的比例有關。調(diào)整參數(shù)可以實現(xiàn)較高穩(wěn)定度的顯示。動態(tài)顯示節(jié)省了I/0口,降低了能耗,因此本設計采用動態(tài)顯示。3.3 總電路圖的設計圖1 數(shù)字電子鐘總電路原理圖4 系統(tǒng)軟件設計4.1 使用單片機

8、資源的說明P0口輸出數(shù)碼管段選信號,P3口輸出數(shù)碼管位選信號;晶振12MHz;調(diào)整選擇鍵SET_KEY:P1.0;通過選擇鍵選擇調(diào)整位,選中位閃爍;增加鍵ADD_KEY:P1.1;按一次使選中位加1;減少鍵DEC_KEY:P1.2;按一次使選中位減1;50H-5FH;16個寄存器單元作為顯示單元。 50H 用于控制秒基準時鐘源的產(chǎn)生;51H 清零秒寄存器;52H 清零分寄存器;53H 清零時寄存器;5FH 用于秒個位;5EH 用于秒十位;5DH 用于分個位;5CH 用于分十位;5BH 用于時個位;5AH 用于時十位;54H 用于控制調(diào)時閃爍;堆棧棧底:70H。4.2 程序設計構想流程框圖 圖2

9、 主程序流程框圖圖3 加1子程序流程框圖圖4 中斷子程序圖5 鍵盤掃描子程序 圖6 顯示子程序4.3 程序清單;- ;程序入口;- ORG 0000H LJMP START ORG 000BH ;定時器0中斷入口地址 LJMP TIMET0ORG 1000H;-;顯P.程序;功能:可以在8個數(shù)碼閃爍移位進行屏保;-START: MOV R6, #2 ;閃爍次數(shù)MOV A, #0FEH ;位選TT: MOV P2, AMOV P0, #0CH ;段碼"P."LCALL DELAYMOV P2, #0FFHDJNZ R6, TTLCALL DELAYLCALL DELAY1RR

10、 AJB P1.0, TT ;鍵是否按下,沒按下則轉移LCALL DELAY ;延時去抖JNB P1.0, KAI ;再次判斷鍵是否按下KAI: SETB P1.0CLR A ;狀態(tài)恢復MOV P0, #0FFHLCALL DELAY1SETB 48H ;用于調(diào)時閃爍標志SETB 47H ;用于產(chǎn)生脈沖用于調(diào)時快進的脈沖MOV R1, #0 ;鍵功能標志:0計時、1調(diào)時、2調(diào)分、3調(diào)秒MOV R0, #50H ;初始化MOV R6, #10HCLEARJCQ:MOV R0, #00H ;清寄存器INC R0DJNZ R6, CLEARJCQMOV IP, #02HSETB EASETB ET0

11、MOV TMOD, #01H ;設定定時器0工作方式1MOV TH0, #3CHMOV TL0, #0B0H ;賦定時初值,定時50msSETB TR0 ;啟動定時器0MOV SP, #70H ;堆棧;-;主程序 ;- MAIN: LCALL DISPLAYLCALL KEY_SCANJZ MAINLCALL SET_KEYJB 46H, MAIN ;如果已進行調(diào)時快進,則不再執(zhí)行下面的調(diào)整LCALL ADD_KEY ;調(diào)用增加鍵處理子程序,加一LCALL DEC_KEY ;調(diào)用減少鍵處理子程序,減一LJMP MAIN ;重新循環(huán);-; 顯示處理程序;-DISPLAY:MOV A, 51HAN

12、L A, #0FHMOV 5FH, A ;轉換出秒個位,存入5FHMOV A, 51HANL A, #0F0HSWAP AMOV 5EH, A ;轉換出秒十位,存入5EHJB 46H, MIN ;如果調(diào)時快進,則跳過閃爍處理程序CJNE R1, #3,MIN ;如果R1為3,閃爍秒位待調(diào)整JB 48H, MINMOV 5FH, #0AH ;使該位為10,查表得到使該位不顯示MOV 5EH, #0AHMIN: MOV A, 52HANL A, #0FHMOV 5DH, A ;轉換出分個位,存入5DHMOV A, 52HANL A, #0F0HSWAP AMOV 5CH, A ;轉換出分十位,存入

13、5CHJB 46H, HOURCJNE R1, #2, HOUR ;如果R1為2,閃爍分位待調(diào)整JB 48H, HOURMOV 5DH, #0AHMOV 5CH, #0AHHOUR: MOV A, 53HANL A, #0FHMOV 5BH, A ;轉換出時個位,存入5BHMOV A, 53HANL A, #0F0HSWAP AMOV 5AH, A ;轉換出時十位,存入5AHJB 46H, DISPCJNE R1, #1, DISP ;如果R1為1,閃爍時位待調(diào)整JB 48H, DISPMOV 5BH, #0AH ;使該位為10,查表得到使該位不顯示MOV 5AH, #0AH;-;數(shù)碼管動態(tài)掃

14、描顯示;-DISP: MOV DPTR, #TABLE MOV A, 5FH MOVC A, A+DPTR MOV P0, A CLR P2.0 LCALL DELAY SETB P2.0 MOV A, 5EH MOVC A, A+DPTR MOV P0, A CLR P2.1 LCALL DELAY SETB P2.1 ;顯示秒十位 MOV A, #0BFH MOV P0, A CLR P2.5 LCALL DELAY SETB P2.5 ;顯示“-” MOV A, 5DH MOVC A, A+DPTR MOV P0, A CLR P2.3 LCALL DELAY SETB P2.3 ;顯示

15、分個位 MOV A, 5CH MOVC A, A+DPTR MOV P0, A CLR P2.4 LCALL DELAYSETB P2.4 ;顯示分十位MOV A, #0BFHMOV P0, ACLR P2.2LCALL DELAYSETB P2.2 ;顯示“-”MOV A, 5BHMOVC A, A+DPTRMOV P0, ACLR P2.6LCALL DELAYSETB P2.6 ;顯示時個位MOV DPTR, #TABLE1 ;消除時的十位置0MOV A, 5AHMOVC A, A+DPTRMOV P0, ACLR P2.7LCALL DELAYSETB P2.7 ;顯示時十位RET;-

16、;定時器中斷1s程序;-TIMET0: PUSH ACC ;保護現(xiàn)場PUSH PSWMOV TH0, #3CHMOV TL0, #0B0HCPL 47H ;產(chǎn)生脈沖用于調(diào)時快進INC 54HMOV A, 54HCJNE A, #10,ADD_TIME;產(chǎn)生0.5秒,用于調(diào)時閃爍CPL 48H ;取反調(diào)時閃爍標志位MOV 54H, #00HADD_TIME: INC 50HMOV A, 50HCJNE A, #10,ZDBACD;整點報時時蜂鳴器響延遲時間SETB P3.1 ZDBACD: CJNE A, #20,RETI1 ;產(chǎn)生1秒時鐘MOV 50H, #00H ;一秒鐘時間到,清零50HM

17、OV A, 51HADD A, #01HDA A ;十進制調(diào)整MOV 51H, ACJNE A, #60H,RETI1MOV 51H, #00H ;一分鐘到MOV A, 52HADD A, #01HDA AMOV 52H, ACJNE A, #60H,RETI1CLR P3.1MOV 52H, #00H MOV A, 53HADD A, #01HDA AMOV 53H, ACJNE A, #24H,RETI1MOV 53H, #00H ;到24點,清零小時RETI1: POP PSWPOP ACC ;恢復現(xiàn)場RETI ;中斷返回;-;鍵盤掃描程序;R4設置為00H是為了在進入長按處理前加長延時

18、,以區(qū)分長按與短按鍵;-KEY_SCAN: CLR 46H ;關閉調(diào)時快進標志MOV P1, #0FFH ;將P1口設置成輸入狀態(tài)MOV A, P1CPL AANL A, #07H JZ EXIT_KEYLCALL DELAY ;延時去抖動MOV A, P1 ;重新判斷CPL AANL A, #07HJZ EXIT_KEYMOV R5, AMOV R4, #00H ;用于控制調(diào)時快進速度LOOP: LCALL DISPLAY ;進入長按處理MOV A, P1CPL AANL A, #07HJB 47H, LOOP1INC R4 LOOP1: CJNE R1, #03H,LOOP2 LJMP L

19、OOP3LOOP2: CJNE R4, #99H,LOOP3MOV R4, #70H SETB 46HLCALL ADD_KEYLCALL DEC_KEYLOOP3: JNZ LOOP ;等待鍵釋放MOV A, R5 ;輸出鍵值RETEXIT_KEY: RET;-;延時子程序;- DELAY: MOV R7, #200 DJNZ R7, $RETDELAY1: MOV R3, #50MOV TMOD, #00HMOV TH1, #63HMOV TL1, #18H SETB TR1LP1:JBC TF1, LP2SJMP LP1LP2: MOV TH1, #63HMOV TL1, #18H DJ

20、NZ R3, LP1 RET ;-;選擇鍵處理子程序;-SET_KEY: CJNE R5, #01H,EXIT ;選擇鍵鍵值INC R1 ;調(diào)整選擇功能標志加一CJNE R1, #4,EXITMOV R1, #0MOV 54H, #00H ;調(diào)時閃爍清零 RET;-;加1子程序;-ADD_KEY: CJNE R5, #02H,EXIT ;加1鍵值CJNE R1,#01H,NEXT1 MOV A,53HADD A,#01HDA AMOV 53H, ACJNE A,#24H,EXITMOV 53H, #00HNEXT1: CJNE R1,#02H,NEXT2 MOV A,52HADD A,#01H

21、DA AMOV 52H, ACJNE A,#60H,EXITMOV 52H, #00HNEXT2: CJNE R1,#03H,EXIT MOV A,51HADD A,#01HDAAMOV 51H, ACJNE A,#60H,EXITMOV 51H, #00H RET;-;減1子程序;-DEC_KEY: CJNE R5,#04H,EXIT ;減1鍵鍵值CJNE R1,#01H,NEXT3 MOV A,53HADD A,#99HDA AMOV 53H, ACJNEA,#99H,EXITMOV 53H, #23HNEXT3: CJNE R1,#02H,NEXT4 MOV A,52HADD A,#99

22、HDA AMOV 52H, ACJNE A,#99H,EXITMOV 52H, #59HNEXT4:CJNE R1,#03H, EXIT ;選擇鍵功能標志為3調(diào)秒,否則跳出MOV A,51HADD A,#99HDA AMOV 51H, ACJNE A,#99H,EXITMOV 51H, #59HRET;-;返回子程序;- EXIT: RET;-;數(shù)碼管字形編碼表;-TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH ;"0","1","2","3",

23、"4","5","6","7","8"",9","不顯示"TABLE1:DB 0FFH,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH ;小時編碼;"不顯示","1","2","3","4","5","6","7","8","9

24、","不顯示"END 5 調(diào)試與功能說明5.1 硬件調(diào)試 檢查加工質量,并確保沒有任何方面的錯誤,如短路和斷路,尤其要避免電源短路;元器件在安裝前要逐一檢查,用萬用表測棋數(shù)值,看是否與所用相同;完成焊接后,應先空載上電,比檢查各引腳的點位是否正確。若一切正常,方可在斷電的情況下將芯片插入,再次檢查各引腳的電位及其邏輯關系。將萬用表的探針放到單片機接電源的引腳上檢測一下,看是否符合要求。5.2 系統(tǒng)性能測試與功能說明走時:默認為走時狀態(tài),按24小時制分別顯示“時時-分分-秒秒”,有2個“-”動態(tài)顯示,時間會按實際時間以秒為最少單位變化。 走時調(diào)整:按對秒進行調(diào)整,按一下加一秒;按對分進行調(diào)整,按一下加一分;按對時進行調(diào)整,按一下加一小時,從而達到快速設定時間的目的。結束語本次課程設計,讓我受益匪淺,認識到了自己的許多缺點和不足,使我深深的感受到了理論聯(lián)系實際的必要性及其重要性。在我們以往的學習過程中,我們刻意地去加強理論的基礎,對于一個程序我們只求它在運行時沒有出錯,我們便以

溫馨提示

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

評論

0/150

提交評論