版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 設(shè)計一臺自動打鈴系統(tǒng)</p><p><b> 一、設(shè)計任務(wù)</b></p><p> 用單片機器件為主體,設(shè)計一臺自動打鈴系統(tǒng)。</p><p> ?。?)按照設(shè)計標(biāo)準(zhǔn),畫出系統(tǒng)框圖和系統(tǒng)硬件電路圖。</p><p> ?。?)完成該課題的程序設(shè)計,提交程序設(shè)計框圖及程序設(shè)計清單。</p
2、><p> ?。?)提交課程設(shè)計報告</p><p><b> 二、設(shè)計要求</b></p><p><b> ?。ㄒ唬┗疽?lt;/b></p><p> ?。?)基本計時和顯示功能(用12小時制顯示)。包括上下午標(biāo)志,時、分的數(shù)字顯示,秒信號指示。</p><p> ?。?)
3、能設(shè)置當(dāng)前時間(含上、下午,時,分)</p><p> (3)能實現(xiàn)基本打鈴功能,規(guī)定:</p><p> 上午6:00起床鈴:打鈴5秒、停2秒、再打鈴5秒。</p><p> 下午10:30熄燈鈴:打鈴5秒、停2秒、再打鈴5秒。</p><p> 鈴聲可用小喇叭播放,凡是用到鈴聲功能的均按此處理</p><p&g
4、t;<b> (二)發(fā)揮部分</b></p><p> ?。?)增加整點報時功能,整點時響鈴5秒,要求有控制啟動和關(guān)閉功能。</p><p> ?。?)增加調(diào)整起床鈴、熄燈鈴時間的功能。</p><p> ?。?)增設(shè)上午4節(jié)課的上下課打鈴功能,規(guī)定如下:</p><p> 7.30 上課,8.20下課:8.30上課
5、,9.20下課;9.40 上課,10.30下課;10.40上課,11.30下課;每次鈴聲5秒。</p><p> ?。?)特色和創(chuàng)新自選。</p><p><b> 三、設(shè)計步驟</b></p><p> (1)設(shè)計能正常工作的一個單片機最小硬件系統(tǒng),外圍電路包括設(shè)置鍵盤,LCD或LED的顯示屏;</p><p>
6、 (2)進行軟件設(shè)計,利用單片機系統(tǒng)時鐘先設(shè)計一個高精度的內(nèi)部時鐘系統(tǒng),最小精確時間為期1秒;</p><p> ?。?)在秒計數(shù)器的基礎(chǔ)上設(shè)計一個24小時時鐘,并設(shè)計若干定時功能;</p><p> (4)設(shè)計打鈴執(zhí)行機構(gòu),完成自動打鈴功能。</p><p> 四、課程設(shè)計說明書要求</p><p><b> 后面略....
7、..</b></p><p> 公開我的主要設(shè)計資料:</p><p><b> 主程序流程圖:</b></p><p><b> 匯編程序清單:</b></p><p> /****************************************************
8、***********程序名稱:51單片機自動打鈴系統(tǒng)簡要說明:實現(xiàn)24小時制電子鐘,8位數(shù)碼管顯示,顯示時分秒 顯示格式:23-59-59(小時十位如果為0則不顯示) 到預(yù)定時間啟動蜂鳴器模擬打鈴,蜂鳴器BEEP:P3.7 打鈴方式分起床、熄燈鈴和上、下課鈴兩種 系統(tǒng)使用4只按鍵,
9、3只按鍵用來調(diào)整時間,另一只為強制打鈴按鈕 調(diào)整選擇鍵SET_KEY:P1.0;通過選擇鍵選擇調(diào)整位,選中位閃爍 增加鍵ADD_KEY:P1.1;按一次使選中位加1 減少鍵DEC_KEY;P1.2;按一次使選中位減1 如果長按ADD_KEY或DEC_KEY,識別后則進行調(diào)時快進,此時停止
10、閃爍 如果選中位是秒,則按增加鍵或減少鍵都是將秒清零 強制打鈴鍵DALING_KEY:P1.3;用來強制打鈴或強制關(guān)閉鈴聲 P0口輸出數(shù)碼管段選信號,P2口輸出數(shù)碼管位選信號。晶振12M編 寫:JiangX.net最后更</p><p><b> O
11、RG 0300H</b></p><p> /*****程序開始,初始化*****/ START: SETB BEEP ;關(guān)閉蜂鳴器(電鈴) SETB 48H ;使用一個bit位用于調(diào)時閃爍標(biāo)志 SETB 47H
12、; ;使用一個bit位用于產(chǎn)生脈沖用于調(diào)時快進時基 CLR 45H ;關(guān)閉響鈴方式1標(biāo)志 CLR 44H ;關(guān)閉響鈴方式2標(biāo)志 MOV R1,#0 ;調(diào)整選擇鍵功能標(biāo)志:0正常走時、1調(diào)時、2調(diào)分、3調(diào)秒</p>&l
13、t;p> MOV 20H,#00H ;用于控制秒基準(zhǔn)時鐘源的產(chǎn)生 MOV 21H,#00H ;清零秒寄存器 MOV 22H,#00H ;清零分寄存器 MOV 23H,#00H ;清零時寄存器 MOV 24H,#00H ;用于
14、控制調(diào)時閃爍的基準(zhǔn)時鐘的產(chǎn)生 MOV IP,#02H ;IP,IE初始化 MOV IE,#82H MOV TMOD,#01H ;設(shè)定定時器0工作方式1 MOV TH0,#3CH MOV TL0,#0B0H ;賦定時初值,定
15、時50ms SETB TR0 ;啟動定時器0 MOV SP,#40H ;重設(shè)堆棧指針</p><p> /*****主程序*****/ MAIN: CJNE R1,#00H,MAIN1 ;是否為正常走時狀態(tài)&
16、#160; LCALL BIJIAO1 ;調(diào)用起床、熄燈打鈴比較子程序 LCALL BIJIAO2 ;調(diào)用上、下課打鈴比較子程序 LCALL DALING1 ;調(diào)用響鈴方式1執(zhí)行子程序 LCALL DALING2 ;調(diào)用響鈴方式2執(zhí)行子程序MAIN1:
17、 LCALL DISPLAY ;調(diào)用顯示子程序 LCALL KEY_SCAN ;調(diào)用按鍵檢測子程序 JZ MAIN ;無鍵按下則返回重新循環(huán) LCALL SET_KEY ;調(diào)用選擇鍵處理子程序 JB 46H,MAI
18、N ;如果已進行長按調(diào)整(調(diào)時快進),則不再執(zhí)行下面的單步調(diào)整 LCALL ADD_KEY ;調(diào)用增加鍵處理子程序 LCALL DEC_KEY ;調(diào)用減少鍵處理子程序 LCALL DALING_KEY ;處理強制打鈴/強制關(guān)閉鈴聲鍵 LJMP MAIN
19、 ;重新循環(huán) /*****定時中斷服務(wù)程序*****/ TIMER_0:</p><p> ADD_TIME: INC 20H MOV A,20H CJNE A,#20,RETI1 ;產(chǎn)生1秒基準(zhǔn)時鐘 MOV 20
20、H,#00H ;一秒鐘時間到,清零20H MOV A,21H ADD A,#01H DA A ;作十進制調(diào)整 MOV 21H,A CJNE A,#60H,RETI1 MOV 21H,#00H
21、 ;一分鐘到 MOV A,22H ADD A,#01H DA A MOV 22H,A CJNE A,#60H,RETI1 MOV 22H,#00H ;一小時到 MOV A,23H ADD
22、 A,#01H DA A MOV 23H,A CJNE A,#24H,RETI1 MOV 23H,#00H ;到24點,清零小時 RETI1: POP PSW POP ACC
23、0;;恢復(fù)現(xiàn)場 RETI ;中斷返回</p><p> /*****顯示處理*****/ DISPLAY: MOV A,21H ;秒 ANL A,#0FH MOV 2FH,A ;轉(zhuǎn)換出秒個位,存入
24、2FH MOV A,21H ANL A,#0F0H SWAP A MOV 2EH,A ;轉(zhuǎn)換出秒十位,存入2EH JB 46H,MIN ;如果長按按鍵(調(diào)時快進),則跳過閃爍處理 CJNE R1,#3,MIN
25、 ;如果R1為3,閃爍秒位待調(diào)整 JB 48H,MIN MOV 2FH,#0AH ;使該位為10,查表得到使該位不顯示的輸出 MOV 2EH,#0AH</p><p> MIN: MOV A,22H ;分 ANL A,#0F
26、H MOV 2DH,A ;轉(zhuǎn)換出分個位,存入2DH MOV A,22H ANL A,#0F0H SWAP A MOV 2CH,A ;轉(zhuǎn)換出分十位,存入2CH JB 46H,HOUR ;
27、如果長按按鍵(調(diào)時快進),則跳過閃爍處理 CJNE R1,#2,HOUR ;如果R1為2,閃爍分位待調(diào)整 JB 48H,HOUR MOV 2DH,#0AH ;使該位為10,查表得到使該位不顯示的輸出 MOV 2CH,#0AH</p><p> HOUR:
28、160;MOV A,23H ;時 ANL A,#0FH MOV 2BH,A ;轉(zhuǎn)換出時個位,存入2BH MOV A,23H ANL A,#0F0H SWAP A MOV 2AH,A
29、; ;轉(zhuǎn)換出時十位,存入2AH JB 46H,DISP ;如果長按按鍵(調(diào)時快進),則跳過閃爍處理 CJNE R1,#1,DISP ;如果R1為1,閃爍時位待調(diào)整 JB 48H,DISP MOV 2BH,#0AH ;使該位為10,查表得到使該
30、位不顯示的輸出 MOV 2AH,#0AH</p><p> /*****數(shù)碼管動態(tài)掃描顯示*****/DISP: MOV DPTR,#TABLE MOV A,2FH MOVC A,@A+DPTR MOV P0,A CLR P2.7 LCALL
31、DELAY SETB P2.7 ;顯示秒個位</p><p> MOV A,2EH MOVC A,@A+DPTR MOV P0,A CLR P2.6 LCALL DELAY SETB P2.6 ;顯示秒
32、十位</p><p> MOV A,#0BFH MOV P0,A CLR P2.5 LCALL DELAY SETB P2.5 ;顯示“-”</p><p> MOV A,2DH MOVC A,@A+DPTR
33、MOV P0,A CLR P2.4 LCALL DELAY SETB P2.4 ;顯示分個位</p><p> MOV A,2CH MOVC A,@A+DPTR MOV P0,A CLR P2.3 LCALL D
34、ELAY SETB P2.3 ;顯示分十位</p><p> MOV A,#0BFH MOV P0,A CLR P2.2 LCALL DELAY SETB P2.2 ;顯示“-”</p><p> M
35、OV A,2BH MOVC A,@A+DPTR MOV P0,A CLR P2.1 LCALL DELAY SETB P2.1 ;顯示時個位</p><p> MOV DPTR,#TABLE1 ;該位使用TABLE1以消除前置0
36、0;MOV A,2AH MOVC A,@A+DPTR MOV P0,A CLR P2.0 LCALL DELAY SETB P2.0 ;顯示時十位 RET /*****按鍵檢測子程序*****/ KEY_SCAN: &
37、#160;CLR 46H ;關(guān)閉長按調(diào)整(調(diào)時快進)標(biāo)志 MOV P1,#0FFH ;將P1口設(shè)置成輸入狀態(tài) MOV A,P1 CPL A ANL A,#0FH ;P1口低4位連接4個按鍵,只判斷該4位 JZ
38、 EXIT_KEY ;無鍵按下則返回 LCALL DELAY ;延時去抖動 MOV A,P1 ;重新判斷 CPL A ANL A,#0FH JZ EXIT_KEY ;鍵盤去抖動
39、160;MOV R5,A ;臨時將鍵值存入R5 MOV R4,#00H ;用于控制調(diào)時快進速度 ;設(shè)置為00H是為了在進入長按處理前加長延時區(qū)分用戶的長按與短按,防止誤快進 LOOP:</p><p> LOOP1: CJNE R1,#03H,
40、LOOP2 ;如果調(diào)秒時長按,則不處理 LJMP LOOP3</p><p> LOOP2: CJNE R4,#99H,LOOP3 MOV R4,#70H ;確認(rèn)用戶長按后,重新設(shè)定起始值,加快調(diào)時快進速度 SETB 46H ;
41、長按調(diào)整(調(diào)時快進)標(biāo)志 LCALL ADD_KEY LCALL DEC_KEY</p><p> LOOP3: JNZ LOOP ;等待鍵釋放 MOV A,R5 ;輸出鍵值 RET
42、60; </p><p> EXIT_KEY: RET</p><p> /*****延時子程序*****/DELAY: MOV R7,#150 DJNZ R7,$ RET /*****選擇鍵處理子程序*****/
43、 SET_KEY: CJNE R5,#01H,EXIT ;選擇鍵鍵值 INC R1 ;調(diào)整選擇功能標(biāo)志加一 SETB BEEP CJNE R1,#4,EXIT MOV R1,#0 MOV 24H,#00H ;調(diào)時閃
44、爍基準(zhǔn)清零 RET</p><p> /*****增加鍵處理子程序*****/ ADD_KEY: CJNE R5,#02H,EXIT ;增加鍵鍵值 CJNE R1,#01H,NEXT1 ;選擇鍵功能標(biāo)志為1,調(diào)時,否則跳出 MOV A,23H ADD A,#01H&
45、#160; DA A MOV 23H,A CJNE A,#24H,EXIT MOV 23H,#00H</p><p> NEXT1: CJNE R1,#02H,NEXT2 ;選擇鍵功能標(biāo)志為2,調(diào)分,否則跳出 MOV A,22H ADD A,#01H
46、 DA A MOV 22H,A CJNE A,#60H,EXIT MOV 22H,#00H</p><p> NEXT2: CJNE R1,#03H,EXIT ;選擇鍵功能標(biāo)志為3,調(diào)秒,否則跳出 MOV 21H,#00H ;如增加鍵按下
47、直接清零秒 RET</p><p> /*****減少鍵處理子程序*****/ DEC_KEY: CJNE R5,#04H,EXIT ;減少鍵鍵值 CJNE R1,#01H,NEXT3 ;選擇鍵功能標(biāo)志為1,調(diào)時,否則跳出 MOV A,23H ADD A,#99H
48、160; DA A MOV 23H,A CJNE A,#99H,EXIT MOV 23H,#23H NEXT3: CJNE R1,#02H,NEXT4 ;選擇鍵功能標(biāo)志為2,調(diào)分,否則跳出 MOV A,22H ADD A,#99H DA
49、A MOV 22H,A CJNE A,#99H,EXIT MOV 22H,#59H</p><p> NEXT4: CJNE R1,#03H,EXIT ;選擇鍵功能標(biāo)志為3,調(diào)秒,否則跳出 MOV 21H,#00H ;如較少鍵按下直接清零秒
50、0;RET</p><p> /*****強制響鈴鍵處理子程序*****/ DALING_KEY: CJNE R5,#08H,EXIT ;選擇鍵鍵值 CPL BEEP RET</p><p> /*****萬用返回程序*****/ EXIT: RET&
51、lt;/p><p> /*****數(shù)碼管字形編碼表*****/TABLE: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH ;字形顯示編碼</p><p> TABLE1: DB 0FFH,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH ;
52、小時位的十位數(shù)編碼,該位如果為0則不顯示</p><p> /*****打鈴時間對比程序(起床、熄燈)*****/BIJIAO1: MOV A,23H CJNE A,#06H,B0 MOV A,22H CJNE A,#00H,B0 ;6:00到 SETB 45H
53、0; ;開啟響鈴方式1 RETB0: MOV A,23H CJNE A,#22H,EXIT_1 MOV A,22H CJNE A,#30H,EXIT_1 ;22:30到 SETB 45H ;開啟響鈴方式1
54、RET</p><p> EXIT_1: CLR 45H RET</p><p> /*****打鈴時間對比程序(上、下課)*****/BIJIAO2: MOV A,23H CJNE A,#07H,B1 MOV A,22H CJNE A,#3
55、0H,B1 ;7:30 SETB 44H ;開啟響鈴方式2 RETB1: MOV A,23H CJNE A,#08H,B2 MOV A,22H CJNE A,#20H,B2 ;8:20 SETB
56、 44H RETB2: MOV A,23H CJNE A,#08H,B3 MOV A,22H CJNE A,#30H,B3 ;8:30 SETB 44H RETB3: MOV A,23H CJNE A,
57、#09H,B4 MOV A,22H CJNE A,#20H,B4 ;9:20 SETB 44H RET</p><p> B4: MOV A,23H CJNE A,#09H,B5 MOV A,22H C
58、JNE A,#40H,B5 ;9:40 SETB 44H RETB5: MOV A,23H CJNE A,#10H,B6 MOV A,22H CJNE A,#30H,B6 ;10:30 SETB 44H
59、RETB6: MOV A,23H CJNE A,#10H,B7 MOV A,22H CJNE A,#40H,B7 ;10:40 SETB 44H RETB7: MOV A,23H CJNE A,#11H,EXIT_2
60、0; MOV A,22H CJNE A,#30H,EXIT_2 ;11:30 SETB 44H RET</p><p> EXIT_2: CLR 44H RET</p><p> /*****響鈴方式1程序(響5秒停2秒再響5秒)*****/DA
61、LING1: JNB 45H,EXIT_DALING MOV A,21H ;響鈴起始時間由秒實時控制 CJNE A,#00H,L1 CLR BEEPL1: MOV A,21H CJNE A,#05H,L2 SETB BEEP
62、L2: CJNE A,#07H,L3 CLR BEEPL3: CJNE A,#12H,EXIT_DALING SETB BEEP RET</p><p> /*****響鈴方式2程序(響5秒)*****/DALING2: JNB 44H,EXIT_DALING&
63、#160; MOV A,21H ;響鈴起始時間由秒實時控制 CJNE A,#00H,L4 CLR BEEPL4: MOV A,21H CJNE A,#05H,EXIT_DALING SETB BEEP RET</p><p>
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課程設(shè)計單片機(時鐘打鈴系統(tǒng))
- 單片機自動打鈴課程設(shè)計
- 單片機課程設(shè)計之自動打鈴系統(tǒng)
- 課程設(shè)計-基于單片機的自動打鈴系統(tǒng)設(shè)計
- 課程設(shè)計-基于單片機的自動打鈴系統(tǒng)設(shè)計
- 單片機課程設(shè)計報告---單片機秒表系統(tǒng)設(shè)計
- 單片機課程設(shè)計---單片機病房呼叫系統(tǒng)
- 單片機課程設(shè)計--單片機轉(zhuǎn)速測量系統(tǒng)
- 單片機課程設(shè)計-單片機課程設(shè)計---電子時鐘
- 單片機課程設(shè)計報告---單片機控制秒表系統(tǒng)
- 單片機課程設(shè)計---基于單片機溫度測量系統(tǒng)設(shè)計
- 單片機課程設(shè)計--基于單片機的秒表系統(tǒng)設(shè)計
- 單片機系統(tǒng)課程設(shè)計論文
- 單片機秒表系統(tǒng)課程設(shè)計
- 單片機課程設(shè)計
- 單片機課程設(shè)計
- 單片機課程設(shè)計
- 單片機課程設(shè)計
- 單片機課程設(shè)計---時鐘系統(tǒng)設(shè)計
- 單片機課程設(shè)計--單片機串行通訊
評論
0/150
提交評論