版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 單片機課程設計報告 題 目:自動打鈴器 班 級:031341014 姓 名:王 衛(wèi) 一、緒論用單片機控制的自動打鈴器,充分發(fā)揮單片機體積小,價格便宜,功耗低可靠性好等特點??捎糜趯W校作息,方便了廣大師生。同時也可作為電子手表的設計方案,兩者在原理及實現的功能上是一樣的效果,也可作為各種時鐘控制電路的報警裝置使用,具有用途范圍廣,原理簡單便于操作和維護的優(yōu)點總體上單片機設計方案在現實中應用非常廣泛 而且在現實生活中也比較容易實現設計的實施二、總體設計方案設計思路利用單片機及定時器設計的一個時鐘,在每次秒加1的計時過程中,都與規(guī)定的時間作比較,如果相等就進行開關電鈴,不等則返回。同時時時的時間顯
2、示功能為我們提供了方便三、設計原理分析1.校時模式按下K1(模式選擇鍵),將模式選擇為校時模式(模式指示燈黃燈亮),K2,K3,K4分別為時鐘加1鍵,分鐘加1鍵,秒鐘加1鍵,K5無用。2.定時模式按下K1(模式選擇鍵),將模式選擇為定時模式(模式指示燈綠燈亮),K2為定時器組選擇(本裝置有24組定時器)鍵,K3,K4分別為定時器時鐘加1鍵和定時器分鐘加1鍵,K5為定時器狀態(tài)選擇鍵,每按K5一次,此組的定時器狀態(tài)改變一次,并將此組數據存入片內數據存儲器中按下K1(模式選擇鍵),將模式選擇為工作模式(模式指示燈紅燈亮),K2,K3,K4,K5無用。此模式為正常工作模式3 自動打零器電路圖四、程序部
3、分1.程序分為五部分1.初始化程序,2.鍵值處理程序,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控
4、制程序實時傳來的數據進行顯示工作。LED也是動態(tài)的顯示方式。5 校時程序流程圖 首先進入校時顯示模式,此時K1如果有按下,校時程序即可執(zhí)行。此時如果K2手工操作下被按下則計時加一,達到與想要的結果一致即可停止K2的操作,如果計時結果在現在時間之前則可一直按下直到到達24小時一個循環(huán)時候,然后再次按下達到想要的計時結果。而24時也是校時循環(huán)終點。此時指示燈也有所變化??梢宰鳛閳?zhí)行程序效果的參考。而校分流程圖也對整體軟件流程產生影響,最終達到時間的精確。小時和分鐘的實時顯示是定時的基礎。6 校分及顯示流程圖解釋首先進入校分模式時看K1是否按下,如果按鍵則K3是否有按鍵,如果有則分鐘加一,如此便起到
5、修改分鐘的作用,如果分鐘修改到達60分鐘則分鐘全部清零,分鐘計時重新開始。如果K1鍵沒有按下,則小時和分鐘數據進入顯示緩存器,然后進入顯示器顯示,此時看K1鍵是否還在斷開狀態(tài),如果沒有按下則時間還是顯示而不做變化如果K1鍵按下則此時進入定時器進入工作狀態(tài),因此K1鍵是程序運行的關鍵所在,在K1鍵進入工作狀態(tài)的同時修改小時和分鐘及定時器的工作程序才能進行7 程序清單1.初始化程序:READ EQU 0 ;讀RAMWRITE EQU 2 ;寫入RAMEWEN EQU 4 ;RAM寫入使能EWDS EQU 6 ;RAM寫入禁止ADR46 EQU 21H ;RAM地址顯示顯示啟動定時器進入工作狀態(tài)時分
6、值送顯示緩存區(qū)K1 有按鍵嗎?清分單元顯示分值加1置校分標志K3 有按鍵嗎?K1 有按鍵嗎?是60 分嗎?THIGH EQU 0F8HTLOW EQU 5FHTIMENEQU 30 ;打鈴持續(xù)時間(30秒)CS BIT P3.7 ;RAMCSCLK BIT P3.6 ;RAMCLKDI BIT P3.5 ;RAMDIDO BIT P3.4 ;RAMDOORG 0000H ;主程序起始地址AJMP START ;跳至主程序ORG 000BH ;TIMER0中斷起始地址AJMP TIM0 ;跳至TIMER0中斷子程序START:MOV SP,#60H ;設置堆棧在60HMOV 28H,#00 ;顯
7、示寄存器初值為00MOV R6,#12H ; 時寄存器值為12HMOV R5,#00H ;“分”寄存器值為00HMOV R4,#00H ;“秒”寄存器值為00H2.鍵值處理程序:LOOP: SETB P0.5 ;工作模式CLR P0.6CLR P0.7JB P0.0,N1 ;K1(模式選擇鍵)按了?不是則跳至N1ACALL DELAY ;消除抖動JNB P0.0,$ ;K1(模式選擇鍵)放開了?ACALL DELAY ;消除抖動AJMP SET ;轉到定時模式SETN1: MOV 2FH,R6 ;將時鐘數據載入2FH中MOV 2EH,R5 ;將分鐘數據載入2EH中MOV RAM,#00 ;把9
8、3C46地址置0SETB RS0 ;將工作寄存器組選擇1區(qū)LOOP1: MOV A,#READ ;讀RAMACALL RAMMOV A,R3 ;取出定時器的狀態(tài)ANL A,#01HCJNE A,#01H,N2 ;定時器為關閉,則跳轉至N2MOV A,R4 ;取出定時器分鐘數據CJNE A,2FH,N2 ;定時器分鐘數據與時鐘分鐘不同則轉至N2MOV A,R5 ;取出定時器時鐘數據CJNE A,2EH,N2 ;定時器時鐘數據與時鐘時鐘不同則轉至N2MOV TMOD,#01H;MOV TH0,#THIGH;MOV TL0,#TLOWH;SETB TR0SETB P2.1 ;定時器時間到,打鈴MOV
9、 R7,#9678H;中斷查詢7500次讓時間達到30秒SJMP $TISE:DJNE R7CPL P2.1 終止打鈴MOV A,RAM ;將RAM地址載入A中N2: CJNE A,#1EH,N3 ;到定時器數據表表尾?沒到轉至N3MOV ADR46,#00 ;到表尾,置RAM地址為表頭AJMP LOOP1 ;轉至LOOP1N3: INC RAM ;RAM地址加2INC RAMAJMP LOOP1 ;轉至LOOP1SET: CLR P0.5 ;校時模式SETB p0.6 高電平CLR P0.7 低電平LOOPS: JB P0.0,N11 ;K1(模式選擇鍵)按了?不是則跳至N11ACALL D
10、ELAY ;消除抖動JNBP0.0,$ ;K1(模式選擇鍵)放開了?ACALL DELAY ;消除抖動AJMP SETTIME ;轉至SETTIMEN11: JB P0.1,N13 ;K2(時鐘加1鍵)按了?不是則跳至N13ACALL DELAY ;消除抖動MOV A,R6 ;將時寄存器的值載入AADD A,#01H ;A內容加1DA A ;做十進制調整MOV R6,A ;將A的值存入時寄存器CJNE A,#24H,N12 ;是否超過24時?不是則跳至N12MOV R6,#00H ;是則清除時寄存器的值為00N12: JNB P0.1,$ ;K2(時鐘加1鍵)放開了?ACALL DELAY ;
11、消除抖動N13: JB P0.2,N15 ;K3(分鐘加1鍵)按了?不是則跳至N15ACALL DELAY ;消除抖動MOV A,R5 ;將分寄存器的值載入AADD A,#01 ;A內容加1DA A ;做十進制調整MOV R5,A ;將A的值存入分寄存器CJNE A,#60H,N14 ;是否超過60分?不是則跳至N14MOV R5,#00H ;是則清除分寄存器的值為00N14: JNB P0.2,$ ;K3(分鐘加1鍵)放開了?ACALL DELAY ;消除抖動N15: JB P0.3,N17 ;K4(秒鐘加1鍵)按了?不是則跳至N17ACALL DELAY ;消除抖動MOV A,R4 ;將秒
12、寄存器的值載入AADD A,#01 ;A內容加1DA A ;做十進制調整MOV R4,A ;將A的值存入秒寄存器CJNE A,#60H,N16 ;是否超過60秒?不是則跳至N16MOV R4,#00 ;是則清除分寄存器的值為00N16: JNB P0.3,$ ;K4(秒鐘加1鍵)放開了?ACALL DELAY ;消除抖動N17: AJMP LOOPS ;轉至LOOPSSETTIME:CLR P0.5 ;定時模式CLR P0.6SETB P0.7MOV RAM,#00HMOV A,#READ ;將數據存儲器的地址為RAM中的數據ACALL TO RAMLOOPB:ACALL DISP ;調用DI
13、SPJB P0.0,N21 ;K1(模式選擇鍵)按了?不是則跳至N21ACALL DELAY ;消除抖動JNB P0.0,$ ;K1(模式選擇鍵)放開了?ACALL DELAY ;消除抖動AJMP LOOP ;轉至LOOPN21: JB P0.1,N22 ;K2(定時器組加1鍵)按了?不是則跳至N22ACALL DELAY ;消除抖動MOV A,RAM ;將地址載入ACLR C ;清除進位位RRC A ;A右移1位ADD A,#01H ;地址加1MOV R6,A ;將A存入R6CLR C ;清除進位位RLC A ;A左移1位MOV RAM,A ;將A中地址存入RAMMOV A,#READ ;讀
14、RAM地址為ADR46中的數據ACALL TORAMJNB P0.1,$ ;K2(定時器組加1鍵)放開了?ACALLDELAY ;消除抖動N22: JB P0.2,N24 ;K3(定時器分鐘加1鍵)按了?不是則跳至N24ACALLDELAY ;消除抖動MOV A,R4 ;將定時器分寄存器的值載入AADD A,#01 ;A內容加1DA A ;做十進制調整MOV R4,A ;將A的值存入定時器分寄存器CJNE A,#60H,N23 ;是否超過60分?不是則跳至N16MOV R4,#00H ;是則清除分寄存器的值為00N23: JNB P0.2,$ ;K3(定時器分鐘加1鍵)放開了?ACALL DE
15、LAY ;消除抖動N24: JB P0.3,N26 ;K4(定時器時鐘加1鍵)按了?不是則跳至N26ACALL DELAY ;消除抖動MOV A,R5 ;將定時器時寄存器的值載入AADD A,#01H ;A內容加1DA A ;做十進制調整MOV R5,A ;將A的值存入定時器時寄存器CJNE A,#24H,N25 ;是否超過24時?不是則跳至N25MOV R5,#00 ;是則清除分寄存器的值為00N25:JNB P0.3,$ ;K4(定時器時鐘加1鍵)放開了?ACALL DELAY ;消除抖動N26:JB P0.4,N27 ;K5(改變定時器狀態(tài)存儲鍵)按了?不是則跳至N27ACALL DEL
16、AY ;消除抖動INC R3 ;改變R3最低位的值(表示定時器的狀態(tài),1表示開,0表示關)MOV A,#WRITE ;將A的值寫入RAM地址為ADR46中ACALL TORAMJNB P0.4,$ ;K5(改變定時器狀態(tài)存儲鍵)放開了?ACALL DELAY ;消除抖動N27:AJMP LOOPB ;轉至LOOPB3.中斷程序:TIM0:MOV TH0,#THIGH ;重設計時4000微秒MOV TL0,#TLOWPUSH ACC ;將A的值存入堆棧PUSH PSW ;將PSW的值存入堆棧CLR RS0 ;設置工作寄存器為0區(qū)DJNZ R2,X2 ;計時1秒MOV R2,#250ACALL C
17、LOCK ;調用計時子程序CLOCKACALL DISP ;調用顯示子程序X2:ACALL SCAN ;調用掃描子程序POP PSWPOP ACCRETI4.顯示器驅動程序:SCAN:MOV R0,#28H ;(28H)為掃描指針I(yè)NC R0 ;掃描指針加1CJNE R0,#6,X3 ;掃描完6個顯示器?不是跳至X3MOV R0,#00 ;是則掃描指針為0X3:MOV A,R0 ;掃描指針載入AADD A,#20 ;A加常數20H(顯示寄存器地址)=各時間顯示區(qū)地址;存入R1=各時間顯示地址MOV R1,A ;掃描指針存入AMOV A,R0 ;將A高低4位交換(P1高4位為掃描值,SWAP A
18、 ;低4位為顯示數據值)ORL A,R1 ;掃描值+顯示值MOV R1,A ;輸出至P1RET計時程序:CLOCK:MOV A,R4 ;R4為秒寄存器ADD A,#01 ;加1DA A ;做十進制調整MOV R4,A ;存入秒寄存器CJNE A,#TIMEN,X4 ;是否超過打零連續(xù)時間?不是則跳至X4CLR P2.0 ;關鈴X4:CJNE A,#60H,X5 ;是否超過60秒?不是則跳至X5MOV R4,#00 ;是則清除為0MOV A,R5 ;R5為分寄存器ADD A,#01 ;加1DA A ;做十進制調整MOV R5,A ;存入分寄存器CJNE A,#60H,X5 ;是否超過60分?不是
19、則跳至X5MOV R5,#00 ;是則清除為0MOV A,R6 ;R6為時寄存器ADD A,#01 ;加1DA A ;做十進制調整MOV R6,A ;存入時寄存器CJNEA,#60H,X5 ;是否超過24時?不是則跳至X5MOV R6,#00 ;是則清除為0X5:RET5.顯示程序:DISP:MOVR1,#20 ;(20H)為顯示寄存器,R1=20HMOV A,R6 ;將時寄存器的內容存入AMOV B,#01H ;設B累加器的值為10HDIV AB ;A/B,商(十位數)存入A,余數(個位數)存入BMOV R1,B ;將B的內容存入(20H)INC R1 ;R1=21HMOV R1,A ;將A的內容存入(21H)INC R1 ;R1=22HMOV A,R5 ;將分寄存器的內容存入AMOV B,#01H ;設B累加器的值為10HDIV AB ;A/B,商(十位數)存入A,余數
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年企業(yè)合并財務顧問協(xié)議
- 2024年快速國際快遞協(xié)議
- 2024國有林場與個人之間林業(yè)土地承包合同
- 北京版四年級上冊數學第二單元 乘法 測試卷及參考答案【達標題】
- 廣東省深圳市南山外國語學校(集團)2024-2025學年七年級上學期期中考試數學試卷
- 2024學校教學樓物業(yè)管理合同
- 2024年工程權益轉讓合同
- 2024年度企業(yè)視覺識別系統(tǒng)設計合同
- 2024年情景喜劇劇本創(chuàng)作合同
- 2024年度勞動合同解除及賠償協(xié)議書
- 大學美育(同濟大學版)學習通超星期末考試答案章節(jié)答案2024年
- 勞動法律學習試題
- 設計單位考察評價表
- 交通銀行企業(yè)文化理念
- 土壤板結與改良方法.ppt
- 盤縣地域分異匯總
- aspcms后臺操作說明書
- 免疫學發(fā)展簡史及展望PPT課件
- 熱水供暖設計說明
- 個人上學簡歷模板
- 冀教版八年級英語上冊Unit 7 Lesson 37 What’s Your Hobby課件(共16張PPT)
評論
0/150
提交評論