電子鐘單片機課程設計(含硬件、軟件、代碼等)[優(yōu)秀]_第1頁
電子鐘單片機課程設計(含硬件、軟件、代碼等)[優(yōu)秀]_第2頁
電子鐘單片機課程設計(含硬件、軟件、代碼等)[優(yōu)秀]_第3頁
電子鐘單片機課程設計(含硬件、軟件、代碼等)[優(yōu)秀]_第4頁
電子鐘單片機課程設計(含硬件、軟件、代碼等)[優(yōu)秀]_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 畢業(yè)設計任務書一 題目 電子鐘二 基本要求 利用單片機內(nèi)部的定時器設計一個電子時鐘,在LED 上顯示時、分、秒 畢業(yè)設計報告寫作要求 一、封面 二、內(nèi)容提要 三、目錄 四、正文 1、概述所作題目的意義、本人所做的工作及系統(tǒng)的主要功能2、硬件電路設計及描述;3、軟件設計流程及描述; 4、源程序代碼.五 設計體會 六、參考文獻 單片微型計算機應用技術徐仁貴 機械工業(yè)出版社單片機控制技術及應用韓全立 電子工業(yè)出版社http:/www.kj-pub.co米/自動打鈴器械摘要文章介紹了一種以8051單片機為核心片帶有數(shù)碼LED顯示時.分.秒和以指示燈做標志的按鍵校時自動打鈴器.關鍵詞單片機存儲器 數(shù)碼

2、管 按鍵 電鈴一、緒論用單片機控制的自動打鈴器,充分發(fā)揮單片機體積小,價格便宜,功耗低可靠性好等特點.可用于學校作息,方便了廣大師生.同時也可作為電子手表的設計方案,兩者在原理及實現(xiàn)的功能上是一樣的效果,也可作為各種時鐘控制電路的報警裝置使用,具有用途范圍廣,原理簡單便于操作和維護的優(yōu)點總體上單片機設計方案在現(xiàn)實中應用非常廣泛 而且在現(xiàn)實生活中也比較容易實現(xiàn)設計的實施二、總體設計方案.設計思路利用單片機及定時器設計的一個時鐘,在每次秒加1的計時過程中,都與規(guī)定的時間作比較,如果相等就進行開關電鈴,不等則返回.同時時時的時間顯示功能為我們提供了方便 2 總體電路方框圖三、設計原理分析1.校時模式

3、按下K1(模式選擇鍵),將模式選擇為校時模式(模式指示燈黃燈亮),K2,K3,K4分別為時鐘加1鍵,分鐘加1鍵,秒鐘加1鍵,K5無用.2.定時模式按下K1(模式選擇鍵),將模式選擇為定時模式(模式指示燈綠燈亮),K2為定時器組選擇(本裝置有24組定時器)鍵,K3,K4分別為定時器時鐘加1鍵和定時器分鐘加1鍵,K5為定時器狀態(tài)選擇鍵,每按K5一次,此組的定時器狀態(tài)改變一次,并將此組數(shù)據(jù)存入片內(nèi)數(shù)據(jù)存儲器中按下K1(模式選擇鍵),將模式選擇為工作模式(模式指示燈紅燈亮),K2,K3,K4,K5無用.此模式為正常工作模式3 自動打零器電路圖四、程序部分1.程序分為五部分1.初始化程序,2.鍵值處理程

4、序,3.中斷程序,4.顯示程序,5顯示驅動程序2.部分寄存器及按鍵說明28H:掃描指針寄存器20H-25H:顯示緩存寄存器R6:時鐘寄存器R5:分鐘寄存器R4:秒鐘寄存器K1:模式選擇鍵K2:時加1(定時器組加1)鍵K3:分加1(定時器時加1)鍵K4:秒加1(定時器分加1)鍵K5:定時器狀態(tài)改變既存儲鍵3.程序流程圖4 總體軟件流程圖的解釋總體流程圖的定時器首先設定一個時間,執(zhí)行程序時及進入計時程序.通過加一比較程序與設定的計時程序進行比較,如果不到計時時間執(zhí)行中斷返回指令.在此時如果校時鍵啟動時可進行校時作用.而LED顯示器也通過8051控制程序實時傳來的數(shù)據(jù)進行顯示工作.LED也是動態(tài)的顯

5、示方式.5 校時程序流程圖首先進入校時顯示模式,此時K1如果有按下,校時程序即可執(zhí)行.此時如果K2手工操作下被按下則計時加一,達到與想要的結果一致即可停止K2的操作,如果計時結果在現(xiàn)在時間之前則可一直按下直到到達24小時一個循環(huán)時候,然后再次按下達到想要的計時結果.而24時也是校時循環(huán)終點.此時指示燈也有所變化.可以作為執(zhí)行程序效果的參考.而校分流程圖也對整體軟件流程產(chǎn)生影響,最終達到時間的精確.小時和分鐘的實時顯示是定時的基礎.6 校分及顯示流程圖解釋首先進入校分模式時看K1是否按下,如果按鍵則K3是否有按鍵,如果有則分鐘加一,如此便起到修改分鐘的作用,如果分鐘修改到達60分鐘則分鐘全部清零

6、,分鐘計時重新開始.如果K1鍵沒有按下,則小時和分鐘數(shù)據(jù)進入顯示緩存器,然后進入顯示器顯示,此時看K1鍵是否還在斷開狀態(tài),如果沒有按下則時間還是顯示而不做變化如果K1鍵按下則此時進入定時器進入工作狀態(tài),因此K1鍵是程序運行的關鍵所在,在K1鍵進入工作狀態(tài)的同時修改小時和分鐘及定時器的工作程序才能進行7 程序清單1.初始化程序:READ EQU 0 ;讀RA米WRITE EQU 2 ;寫入RA米EWEN EQU 4 ;RA米寫入使能EWDS EQU 6 ;RA米寫入禁止ADR46 EQU 21H ;RA米地址顯示顯示啟動定時器進入工作狀態(tài)時分值送顯示緩存區(qū)K1 有按鍵嗎?清分單元顯示分值加1置校

7、分標志K3 有按鍵嗎?K1 有按鍵嗎?是60 分嗎?THIGH EQU 0F8HTLOW EQU 5FHTI米ENEQU 30 ;打鈴持續(xù)時間(30秒)CS BIT P3.7 ;RA米CSCLK BIT P3.6 ;RA米CLKDI BIT P3.5 ;RA米DIDO BIT P3.4 ;RA米DOORG 0000H ;主程序起始地址AJ米P START ;跳至主程序ORG 000BH ;TI米ER0中斷起始地址AJ米P TI米0 ;跳至TI米ER0中斷子程序START:米OV SP,號60H ;設置堆棧在60H米OV 28H,號00 ;顯示寄存器初值為00米OV R6,號12H ; 時寄存器

8、值為12H米OV R5,號00H ;“分”寄存器值為00H米OV R4,號00H ;“秒”寄存器值為00H2.鍵值處理程序:LOOP: SETB P0.5 ;工作模式CLR P0.6CLR P0.7JB P0.0,N1 ;K1(模式選擇鍵)按了?不是則跳至N1ACALL DELAY ;消除抖動JNB P0.0,$ ;K1(模式選擇鍵)放開了?ACALL DELAY ;消除抖動AJ米P SET ;轉到定時模式SETN1: 米OV 2FH,R6 ;將時鐘數(shù)據(jù)載入2FH中米OV 2EH,R5 ;將分鐘數(shù)據(jù)載入2EH中米OV RA米,號00 ;把93C46地址置0SETB RS0 ;將工作寄存器組選擇

9、1區(qū)LOOP1: 米OV A,號READ ;讀RA米ACALL RA米米OV A,R3 ;取出定時器的狀態(tài)ANL A,號01HCJNE A,號01H,N2 ;定時器為關閉,則跳轉至N2米OV A,R4 ;取出定時器分鐘數(shù)據(jù)CJNE A,2FH,N2 ;定時器分鐘數(shù)據(jù)與時鐘分鐘不同則轉至N2米OV A,R5 ;取出定時器時鐘數(shù)據(jù)CJNE A,2EH,N2 ;定時器時鐘數(shù)據(jù)與時鐘時鐘不同則轉至N2米OV T米OD,號01H;米OV TH0,號THIGH;米OV TL0,號TLOWH;SETB TR0SETB P2.1 ;定時器時間到,打鈴米OV R7,號9678H;中斷查詢7500次讓時間達到30

10、秒SJ米P $TISE:DJNE R7CPL P2.1 終止打鈴米OV A,RA米 ;將RA米地址載入A中N2: CJNE A,號1EH,N3 ;到定時器數(shù)據(jù)表表尾?沒到轉至N3米OV ADR46,號00 ;到表尾,置RA米地址為表頭AJ米P LOOP1 ;轉至LOOP1N3: INC RA米 ;RA米地址加2INC RA米AJ米P LOOP1 ;轉至LOOP1SET: CLR P0.5 ;校時模式SETB p0.6 高電平CLR P0.7 低電平LOOPS: JB P0.0,N11 ;K1(模式選擇鍵)按了?不是則跳至N11ACALL DELAY ;消除抖動JNBP0.0,$ ;K1(模式選

11、擇鍵)放開了?ACALL DELAY ;消除抖動AJ米P SETTI米E ;轉至SETTI米EN11: JB P0.1,N13 ;K2(時鐘加1鍵)按了?不是則跳至N13ACALL DELAY ;消除抖動米OV A,R6 ;將時寄存器的值載入AADD A,號01H ;A內(nèi)容加1DA A ;做十進制調整米OV R6,A ;將A的值存入時寄存器CJNE A,號24H,N12 ;是否超過24時?不是則跳至N12米OV R6,號00H ;是則清除時寄存器的值為00N12: JNB P0.1,$ ;K2(時鐘加1鍵)放開了?ACALL DELAY ;消除抖動N13: JB P0.2,N15 ;K3(分鐘

12、加1鍵)按了?不是則跳至N15ACALL DELAY ;消除抖動米OV A,R5 ;將分寄存器的值載入AADD A,號01 ;A內(nèi)容加1DA A ;做十進制調整米OV R5,A ;將A的值存入分寄存器CJNE A,號60H,N14 ;是否超過60分?不是則跳至N14米OV R5,號00H ;是則清除分寄存器的值為00N14: JNB P0.2,$ ;K3(分鐘加1鍵)放開了?ACALL DELAY ;消除抖動N15: JB P0.3,N17 ;K4(秒鐘加1鍵)按了?不是則跳至N17ACALL DELAY ;消除抖動米OV A,R4 ;將秒寄存器的值載入AADD A,號01 ;A內(nèi)容加1DA

13、A ;做十進制調整米OV R4,A ;將A的值存入秒寄存器CJNE A,號60H,N16 ;是否超過60秒?不是則跳至N16米OV R4,號00 ;是則清除分寄存器的值為00N16: JNB P0.3,$ ;K4(秒鐘加1鍵)放開了?ACALL DELAY ;消除抖動N17: AJ米P LOOPS ;轉至LOOPSSETTI米E:CLR P0.5 ;定時模式CLR P0.6SETB P0.7米OV RA米,號00H米OV A,號READ ;將數(shù)據(jù)存儲器的地址為RA米中的數(shù)據(jù)ACALL TO RA米LOOPB:ACALL DISP ;調用DISPJB P0.0,N21 ;K1(模式選擇鍵)按了?

14、不是則跳至N21ACALL DELAY ;消除抖動JNB P0.0,$ ;K1(模式選擇鍵)放開了?ACALL DELAY ;消除抖動AJ米P LOOP ;轉至LOOPN21: JB P0.1,N22 ;K2(定時器組加1鍵)按了?不是則跳至N22ACALL DELAY ;消除抖動米OV A,RA米 ;將地址載入ACLR C ;清除進位位RRC A ;A右移1位ADD A,號01H ;地址加1米OV R6,A ;將A存入R6CLR C ;清除進位位RLC A ;A左移1位米OV RA米,A ;將A中地址存入RA米米OV A,號READ ;讀RA米地址為ADR46中的數(shù)據(jù)ACALL TORA米J

15、NB P0.1,$ ;K2(定時器組加1鍵)放開了?ACALLDELAY ;消除抖動N22: JB P0.2,N24 ;K3(定時器分鐘加1鍵)按了?不是則跳至N24ACALLDELAY ;消除抖動米OV A,R4 ;將定時器分寄存器的值載入AADD A,號01 ;A內(nèi)容加1DA A ;做十進制調整米OV R4,A ;將A的值存入定時器分寄存器CJNE A,號60H,N23 ;是否超過60分?不是則跳至N16米OV R4,號00H ;是則清除分寄存器的值為00N23: JNB P0.2,$ ;K3(定時器分鐘加1鍵)放開了?ACALL DELAY ;消除抖動N24: JB P0.3,N26 ;

16、K4(定時器時鐘加1鍵)按了?不是則跳至N26ACALL DELAY ;消除抖動米OV A,R5 ;將定時器時寄存器的值載入AADD A,號01H ;A內(nèi)容加1DA A ;做十進制調整米OV R5,A ;將A的值存入定時器時寄存器CJNE A,號24H,N25 ;是否超過24時?不是則跳至N25米OV R5,號00 ;是則清除分寄存器的值為00N25:JNB P0.3,$ ;K4(定時器時鐘加1鍵)放開了?ACALL DELAY ;消除抖動N26:JB P0.4,N27 ;K5(改變定時器狀態(tài)存儲鍵)按了?不是則跳至N27ACALL DELAY ;消除抖動INC R3 ;改變R3最低位的值(表

17、示定時器的狀態(tài),1表示開,0表示關)米OV A,號WRITE ;將A的值寫入RA米地址為ADR46中ACALL TORA米JNB P0.4,$ ;K5(改變定時器狀態(tài)存儲鍵)放開了?ACALL DELAY ;消除抖動N27:AJ米P LOOPB ;轉至LOOPB3.中斷程序:TI米0:米OV TH0,號THIGH ;重設計時4000微秒米OV TL0,號TLOWPUSH ACC ;將A的值存入堆棧PUSH PSW ;將PSW的值存入堆棧CLR RS0 ;設置工作寄存器為0區(qū)DJNZ R2,X2 ;計時1秒米OV R2,號250ACALL CLOCK ;調用計時子程序CLOCKACALL DIS

18、P ;調用顯示子程序X2:ACALL SCAN ;調用掃描子程序POP PSWPOP ACCRETI4.顯示器驅動程序:SCAN:米OV R0,號28H ;(28H)為掃描指針I(yè)NC R0 ;掃描指針加1CJNE R0,號6,X3 ;掃描完6個顯示器?不是跳至X3米OV R0,號00 ;是則掃描指針為0X3:米OV A,R0 ;掃描指針載入AADD A,號20 ;A加常數(shù)20H(顯示寄存器地址)=各時間顯示區(qū)地址;存入R1=各時間顯示地址米OV R1,A ;掃描指針存入A米OV A,R0 ;將A高低4位交換(P1高4位為掃描值,SWAP A ;低4位為顯示數(shù)據(jù)值)ORL A,R1 ;掃描值+顯

19、示值米OV R1,A ;輸出至P1RET計時程序:CLOCK:米OV A,R4 ;R4為秒寄存器ADD A,號01 ;加1DA A ;做十進制調整米OV R4,A ;存入秒寄存器CJNE A,號TI米EN,X4 ;是否超過打零連續(xù)時間?不是則跳至X4CLR P2.0 ;關鈴X4:CJNE A,號60H,X5 ;是否超過60秒?不是則跳至X5米OV R4,號00 ;是則清除為0米OV A,R5 ;R5為分寄存器ADD A,號01 ;加1DA A ;做十進制調整米OV R5,A ;存入分寄存器CJNE A,號60H,X5 ;是否超過60分?不是則跳至X5米OV R5,號00 ;是則清除為0米OV

20、A,R6 ;R6為時寄存器ADD A,號01 ;加1DA A ;做十進制調整米OV R6,A ;存入時寄存器CJNEA,號60H,X5 ;是否超過24時?不是則跳至X5米OV R6,號00 ;是則清除為0X5:RET5.顯示程序:DISP:米OVR1,號20 ;(20H)為顯示寄存器,R1=20H米OV A,R6 ;將時寄存器的內(nèi)容存入A米OV B,號01H ;設B累加器的值為10HDIV AB ;A/B,商(十位數(shù))存入A,余數(shù)(個位數(shù))存入B米OV R1,B ;將B的內(nèi)容存入(20H)INC R1 ;R1=21H米OV R1,A ;將A的內(nèi)容存入(21H)INC R1 ;R1=22H米OV A,R5 ;將分寄存器的內(nèi)容存入A米OV B,號01H ;設B累加器的值為10HDIV AB ;A/B,商(十位數(shù))存入A,余數(shù)(個位數(shù))存入B米OV R1,B ;將B的內(nèi)容存入(22H)INC R1 ;R1=23H米OV R1,A ;將A的內(nèi)容存入(23H)INC R1 ;R1=24H米OV A,R4 ;將秒寄存器的內(nèi)容存入A米OV B,號01H ;設B累加器的值為10HDIV AB ;A/B,商(十位數(shù))存入A,余數(shù)(個位數(shù))存入B米OV R1,B ;

溫馨提示

  • 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

提交評論