![單片機課程設計實驗報告+基于單片機的數(shù)字時鐘+含完整實驗代碼要點_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/8/a521cae9-ab00-4587-b68b-b7402a1baf89/a521cae9-ab00-4587-b68b-b7402a1baf891.gif)
![單片機課程設計實驗報告+基于單片機的數(shù)字時鐘+含完整實驗代碼要點_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/8/a521cae9-ab00-4587-b68b-b7402a1baf89/a521cae9-ab00-4587-b68b-b7402a1baf892.gif)
![單片機課程設計實驗報告+基于單片機的數(shù)字時鐘+含完整實驗代碼要點_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/8/a521cae9-ab00-4587-b68b-b7402a1baf89/a521cae9-ab00-4587-b68b-b7402a1baf893.gif)
![單片機課程設計實驗報告+基于單片機的數(shù)字時鐘+含完整實驗代碼要點_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/8/a521cae9-ab00-4587-b68b-b7402a1baf89/a521cae9-ab00-4587-b68b-b7402a1baf894.gif)
![單片機課程設計實驗報告+基于單片機的數(shù)字時鐘+含完整實驗代碼要點_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/8/a521cae9-ab00-4587-b68b-b7402a1baf89/a521cae9-ab00-4587-b68b-b7402a1baf895.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、單片機課程設計報告基于單片機的數(shù)字時鐘姓名: 班級: 學號:利用實驗板上的4個LED數(shù)碼管,設計帶有鬧鈴、秒表功能的數(shù)字時鐘。功能要求:a)計時并顯示(LED)。由于實驗板上只有 4位數(shù)碼管,可設計成顯示“時分” 和顯示“分秒”并可切換。b) 時間調(diào)整功能。利用 4個獨立按鈕,實現(xiàn)時鐘調(diào)整功能。這4個按鈕的功能為工作模式切換按鈕(MODE),數(shù)字加(INC),數(shù)字減(DEC)和數(shù)字移 位(SHITF)。c) 定鬧功能。利用4個獨立按鈕設定鬧鐘時間,時間到以蜂鳴器響、繼電器動 作作為鬧鈴。d) 秒表功能。最小時間單位 0.01秒。硬件原理分析1 .電源部分電源通路0電源部份采用兩種輸入接口(如上
2、圖)。a)外電源供電,采用2.1電源座,可接入電源 DC5V,經(jīng)單向保護D1接入開關(guān) S1。b) USB供電,USB供電口輸入電源也經(jīng) D1單向保護,送到開關(guān) S1。注:兩路電源輸入是并連的,因此只選擇一路就可以了,以免出問題。S1為板子工作電源開關(guān),按下后接通電源,提供VCC給板子各功能電路。電路采用兩個濾波電容,給板子一個更加穩(wěn)定的工作電源。LED為電源的指示燈,通電后 LED燈亮。2.蜂鳴器蜂鳴器分為有源和無源兩種,有源即兩引腳有一個直流電源就可以長鳴,無源則需要 一個1K左右的脈沖才可以蜂鳴,因此對于按鍵的提示音及報警蜂鳴使用有源來得方便。 有源也可以當無源使用,而無源則不能當有源使用
3、,當然用有源蜂鳴器作音樂發(fā)聲會失真 厲害。如上圖:單片機P15輸出高低電平經(jīng) R21連接三極管B極,控制三極管的導通與截止,從而控制蜂鳴器的工作。低電平時三極管導通,蜂鳴器得電蜂鳴,高電平時三極管截止, 蜂鳴器失電關(guān)閉蜂鳴。3.數(shù)碼管電路使用一個四位共陽型數(shù)碼管,四個公共陽級由三極管放大電流來驅(qū)動,三極管由P10-P13控制開與關(guān)。數(shù)碼管的陰級由P0 口經(jīng)過電阻限流連接。例如,要十位的數(shù)碼管工作,P12輸出0,使三極管 Q12導通,8腳得電,當P0 口相應位有輸出。時,點亮相應的LED燈組合各種字符數(shù)字。4. 獨立鍵盤如上圖,由六個按鍵組成,每個按鍵的一端連接IO 口,另一端直接連接 GND
4、(0電位)。六個按鍵分別接入 P37-P32,只要按下按鍵,相應位的 IO 口位將被拉為低電平(0), 程序可以判斷相應位是否為 0來確認按鍵己按下。5. 動態(tài)顯示動態(tài)顯示驅(qū)動電路是單片機應用中最常用的顯示方式。動態(tài)顯示接口電路是把所有顯示器的 8 個筆劃段的同名段連在一起,而每一個顯示器的公共極 COM 是各自獨立地受I/O 線控制。 CPU 向字段輸出口送出字形碼時,所有顯示器接收到相同的字形碼,但究竟是哪個顯示器亮,則取決于 COM 端。在輪流點亮掃描過程中, 每位顯示器的點亮時間是極為短暫的 (約 1ms) , 但由于人眼的視覺暫留現(xiàn)象及發(fā)光二極管的余輝效應,盡管實際上各位顯示器并非同
5、時點亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會有閃爍感。動態(tài)掃描顯示必須由 CPU 不斷地調(diào)用顯示程序, 才能保證持續(xù)不斷的顯示。 在實際工作中,當然不可能只顯示,這樣在兩次調(diào)用顯示程序之間的時間間隔就不一定了,如果時間間隔比較長,就會使顯示不連續(xù)。三、軟件設計主程序?qū)存I1設定為功能選擇鍵,每按一次按鍵1,進入相應的功能模式。分秒顯示1按下后,進入下一模式。分秒顯示模式下,數(shù)碼管顯示時鐘時間的分和秒。當按鍵時分顯示1按下后,進入下一模式。時分顯示模式下,數(shù)碼管顯示時鐘時間的時和分。當按鍵時間調(diào)整時間調(diào)整按鍵34時十位減一按鍵4按鍵4時間調(diào)整模式下,僅調(diào)整時鐘的時、分。
6、數(shù)碼管閃爍的為當前調(diào)整的位子,按鍵2為加,按鍵3為減,按鍵4為移位鍵。鬧鐘鬧鐘按鍵4鬧鐘模式下,可設置鬧鐘的時、分。數(shù)碼管閃爍的為當前調(diào)整的位子,按鍵2為加,按鍵3為減,按鍵4為移位鍵。當鬧鐘時間調(diào)整完畢之后,按下按鍵5,確認鬧鐘時間。隨后等待時鐘時間到達鬧鐘時間。時鐘時間到達鬧鐘時間后,蜂鳴器工作。秒表秒表模式下,按下按鍵 4,秒表開始計時;再次按下按鍵4,秒表暫停。按下按鍵2或按鍵3,秒表清零。四、軟件調(diào)試在軟件調(diào)試過程中碰到了很多問題。其中比較重要的幾個問題如下:1、時鐘調(diào)整子程序中,時、分的十位數(shù)、個位數(shù)加減不符合常識。比如在加減時,小時可以達到 27 、 28 等數(shù)值,而這是不符合常
7、識的。在查看代碼后發(fā)現(xiàn), 可以在加、 減過程中設置if 函數(shù)判斷當前所處位置, 調(diào)整當前數(shù)值所能達到的最大值或最小值。修改后代碼如下:按鍵 2 加else if(keyval=0xbf) /if(pos=0)dispbufpos+;if(dispbufpos=3)dispbufpos=0;else if(pos=1)if(dispbuf0=0|dispbuf0=1) dispbufpos+;dispbufpos=dispbufpos%10;if(dispbuf0=2)dispbufpos+;if(dispbufpos>=4)dispbufpos=0;else if(pos=2)dispb
8、ufpos+;if(dispbufpos=6) dispbufpos=0;else if(pos=3)dispbufpos+;dispbufpos=dispbufpos%10;else if(keyval=0xdf) /按鍵 3 減if(pos=0)if(dispbufpos=0)dispbufpos=2;else dispbufpos-;else if(pos=1)if(dispbuf0=0|dispbuf0=1)if(dispbufpos=0)dispbufpos=9;else dispbufpos-;if(dispbuf0=2)if(dispbufpos>=4&&d
9、ispbufpos<=9)dispbufpos=3;else if(dispbufpos=0)dispbufpos=3;elsedispbufpos-;else if(pos=2)if(dispbufpos=0)dispbufpos=5;else dispbufpos-;else if(pos=3)if(dispbufpos=0)dispbufpos=9;else dispbufpos-;2、 秒表模式下, 無法很好地區(qū)分當前計時所達到的具體數(shù)值。 在秒的個位數(shù)位子設置一個小數(shù)點,使秒表的顯示更加直觀。修改后代碼如下:在程序開始處,添加如下代碼:unsigned char code se
10、gtab_dot=0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10;/ 帶小數(shù)點的數(shù)碼管代碼在 void t0int(void) interrupt 1 using 1之中添加如下代碼:if(mode=4&&P1=0xfd)/ 秒表處顯示小數(shù)點的 if 語句P0=segtab_dotdispbufdispindex;elseP0=segtabdispbufdispindex;3、 在秒表運行一遍后, 進入其他模式操作完畢, 再次進入秒表模式下發(fā)現(xiàn)秒表無法清 零。檢查代碼后發(fā)現(xiàn),在鬧鐘模式下,進入秒表模式時,未對秒表清零。修改后代
11、碼如下:if(keyval=0x7f)/1 號按鍵 模式 進入秒表模式 mode=4;old_ss=0;old_ms=0;miaobiao_ss=old_ss;miaobiao_ms=old_ms;dispbuf0=miaobiao_ss/10;dispbuf1=miaobiao_ss%10;dispbuf2=miaobiao_ms/10;dispbuf3=miaobiao_ms%10;clocksing=0;附完整實驗代碼:,*基于單片機的數(shù)字時鐘功能:時鐘、鬧鐘、秒表模式 0 :時鐘顯示模式-分、秒模式 0 下,數(shù)碼管顯示時鐘時間 - 分、秒。按鍵說明:按鍵 1:選擇下一模式。模式 1 :
12、時鐘顯示模式- 時、分模式 1 下,數(shù)碼管顯示時鐘時間 - 時、分。按鍵說明:按鍵 1:選擇下一模式。模式 2 :時鐘調(diào)整模式模式 2 下,調(diào)整時鐘時間,僅調(diào)整時、分時間。按鍵說明:按鍵1:選擇下一模式。按鍵2:增加選中數(shù)碼管的數(shù)值。按鍵3:減少選中數(shù)碼管的數(shù)值。按鍵4:移位鍵,按鍵選擇下一數(shù)碼管。模式 3 :鬧鐘模式模式 3 下,設置鬧鈴時間之后,等時鐘到達相應時間,發(fā)出鈴聲。按鍵說明:按鍵1:選擇下一模式。按鍵2:增加選中數(shù)碼管的數(shù)值。按鍵3:減少選中數(shù)碼管的數(shù)值。按鍵4:移位鍵,按鍵選擇下一數(shù)碼管。按鍵5:設置鬧鈴時間后,按鍵確認,數(shù)碼管顯示當前時鐘時間。模式 4 :秒表模式模式 4 為
13、秒表模式,可記錄0-59 秒。最小時間單位為 0.01 秒。按鍵說明:按鍵1:選擇下一模式。按鍵2:清除秒表當前數(shù)值。按鍵3:清除秒表當前數(shù)值。按鍵4:開始、暫停秒表。*/*#include <reg52.h>unsigned char dispbuf4=0,0,0,0;unsigned char code segtab=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/ 不帶小數(shù)點的數(shù)碼管代碼unsigned char code segtab_dot=0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78
14、,0x00,0x10;/ 帶小數(shù)點的數(shù)碼管代碼unsigned char code bittab=0xfe,0xfd,0xfb,0xf7;unsigned char dispindex;unsigned char mode;unsigned char pos;unsigned char keyval;unsigned char hh,mm,ss;unsigned char miaobiao_ms=0,miaobiao_ss=0; / 秒表unsigned char old_ms,old_ss;/ 保存秒表時間unsigned char clock_hh,clock_mm;unsigned in
15、t clock_shanshuo;閃爍sbit clocksing=P1A5;/ 用于存放所設鬧鐘時間/ 用于控制鬧鐘調(diào)整時間時是否閃爍0 : 閃爍 1 : 不鬧鐘所用蜂鳴器unsigned int cnt;unsigned char cnt1;unsigned char cnt2;/用于10ms轉(zhuǎn)1s計數(shù)用于10ms轉(zhuǎn)0.5s處計數(shù)(用于閃爍)用于秒表處計時unsigned char keyscan(void);void delay(unsigned int t);void keypro(void);bit flash;/*主函數(shù) */void main(void)TMOD=0x11;TH0
16、=(0-2000)/256;TL0=(0-2000)%256;ET0=1;TR0=1;TH1=(0-2000)/256;TL1=(0-2000)%256;ET1=1;TR1=0;/ 秒表 先不開EA=1;mode=0;hh=02;mm=03;ss=15;while(1)if(mode=3)if(hh=clock_hh)if(mm=clock_mm)clocksing=0;elseclocksing=1; else clocksing=1;if(keyscan()=0xff) continue; keypro();/*鍵掃描程序*/unsigned char keyscan(void) P3=0
17、xff;keyval=P3;if(keyval=0xff) return 0xff;delay(10000);if(keyval!=P3)return 0xff;elsewhile(P3!=0xff);return keyval;/*時鐘中斷及顯示程序*/void t0int(void) interrupt 1 using 1 TH0=(0-2000)/256;TL0=(0-2000)%256;/2msP0=0xff;P1=0xff;P1=bittabdispindex;if(mode=4&&P1=0xfd)/秒表處顯示小數(shù)點的if 語句(P0=segtab_dotdispbu
18、fdispindex; else (P0=segtabdispbufdispindex;if(dispindex=pos)&&(flash=1)&&(mode=2|(mode=3&&clock_shanshuo=0) /閃爍控制程序(P0=0xff;P1=0xf0;dispindex+;dispindex=dispindex&0x03;cnt+;cnt1+;if(cnt1>=250)/0.5ms 閃爍( cnt1=0; flash=flash;if(cnt>=500)/2ms*500=1s( cnt=0; ss+; if(ss
19、>=60) ( ss=0; mm+; if(mm>=60) ( mm=0; hh+; if(hh>=24) (hh=0;if(mode=0)dispbuf0=mm/10;dispbuf1=mm%10;dispbuf2=ss/10;dispbuf3=ss%10;else if(mode=1|(mode=3&&clock_shanshuo=1)dispbuf0=hh/10;dispbuf1=hh%10;dispbuf2=mm/10;dispbuf3=mm%10;/*按鍵選擇,進入不同模式*/void keypro(void)switch(mode)case 0:/
20、 顯示分秒if(keyval=0x7f)mode=1;dispbuf0=hh/10;dispbuf1=hh%10;dispbuf2=mm/10; dispbuf3=mm%10; break;case 1:/ 顯示時分if(keyval=0x7f)mode=2;dispbuf0=hh/10;dispbuf1=hh%10;dispbuf2=mm/10;dispbuf3=mm%10;break;case 2:/ 時間調(diào)整 ( 只調(diào)整時分)if(keyval=0x7f) /按鍵 1 調(diào)整模式進入鬧鐘模式mode=3;clock_hh=0;clock_mm=0;clock_shanshuo=0;hh=d
21、ispbuf0*10+dispbuf1; / mm=dispbuf2*10+dispbuf3;dispbuf0=clock_hh/10;dispbuf1=clock_hh%10;dispbuf2=clock_mm/10;dispbuf3=clock_mm%10;TR0=1;保存調(diào)整后的時間/ 顯示鬧鐘的初始時間else if(keyval=0xbf) /if(pos=0)按鍵 2dispbufpos+;if(dispbufpos=3)dispbufpos=0;else if(pos=1)if(dispbuf0=0|dispbuf0=1) dispbufpos+;dispbufpos=dispb
22、ufpos%10;if(dispbuf0=2)dispbufpos+;if(dispbufpos>=4)dispbufpos=0;else if(pos=2)dispbufpos+;if(dispbufpos=6)dispbufpos=0;else if(pos=3)dispbufpos+;dispbufpos=dispbufpos%10;else if(keyval=0xdf) /按鍵 3 減if(pos=0)if(dispbufpos=0)dispbufpos=2;else dispbufpos-;else if(pos=1)if(dispbuf0=0|dispbuf0=1)if(d
23、ispbufpos=0)dispbufpos=9;else dispbufpos-;if(dispbuf0=2)if(dispbufpos>=4&&dispbufpos<=9)dispbufpos=3;else if(dispbufpos=0)dispbufpos=3; else dispbufpos-;else if(pos=2)if(dispbufpos=0)dispbufpos=5;else dispbufpos-;else if(pos=3)if(dispbufpos=0)dispbufpos=9;else dispbufpos-;else if(keyva
24、l=0xef) /按鍵 4 移位pos+;pos=pos&03; break;case 3: / 鬧鐘模式if(keyval=0x7f)/ 按鍵 1 調(diào)整模式進入秒表模式mode=4;old_ss=0;old_ms=0;miaobiao_ss=old_ss;miaobiao_ms=old_ms;dispbuf0=miaobiao_ss/10;dispbuf1=miaobiao_ss%10;dispbuf2=miaobiao_ms/10;dispbuf3=miaobiao_ms%10;else if(keyval=0xbf)/ 按鍵 2 加clock_shanshuo=0;if(pos=
25、0)dispbufpos+;if(dispbufpos=3)dispbufpos=0;else if(pos=1)if(dispbuf0=0|dispbuf0=1)dispbufpos+;dispbufpos=dispbufpos%10;if(dispbuf0=2)dispbufpos+;if(dispbufpos>=4)dispbufpos=0;else if(pos=2)dispbufpos+;if(dispbufpos=6)dispbufpos=0;else if(pos=3)dispbufpos+;dispbufpos=dispbufpos%10;else if(keyval=0
26、xdf)/ 按鍵 3 減clock_shanshuo=0;if(pos=0)if(dispbufpos=0)dispbufpos=2; else dispbufpos-;else if(pos=1)if(dispbuf0=0|dispbuf0=1)if(dispbufpos=0)dispbufpos=9;else dispbufpos-;if(dispbuf0=2)if(dispbufpos>=4&&dispbufpos<=9)dispbufpos=3;else if(dispbufpos=0)dispbufpos=3;elsedispbufpos-;else if
27、(pos=2)if(dispbufpos=0)dispbufpos=5;else dispbufpos-;else if(pos=3)if(dispbufpos=0)dispbufpos=9;else dispbufpos-;else if(keyval=0xef)/ 按鍵 4 移位clock_shanshuo=0;pos+;pos=pos&03;else if(keyval=0xf7) / 按鍵 5 設置鬧鐘時間clock_shanshuo=1;clock_hh=dispbuf0*10+dispbuf1; /保存所設鬧鐘時間clock_mm=dispbuf2*10+dispbuf3;dispbuf0=hh/10;dispbuf1=hh%10;dispbuf2=mm/10;dispbuf3=mm%10;break;case 4: / 秒表模式if(keyval=0x7f)/ 按鍵 1 調(diào)整模式進入時鐘顯示模式mode=0;TR1=0;/ 關(guān)閉秒表dispbuf0=mm
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代家居設計與生活品質(zhì)的提升
- 現(xiàn)代辦公環(huán)境中營銷自動化策略的實施
- Unit2 An Accident(說課稿)-2024-2025學年北師大版(三起)英語六年級上冊
- 3-1《百合花》(說課稿)高一語文同步高效課堂(統(tǒng)編版 必修上冊)
- 2023二年級數(shù)學上冊 七 分一分與除法第5課時 小熊開店說課稿 北師大版
- 3 天窗(說課稿)2023-2024學年部編版語文四年級下冊
- 《8和9的加、減法的應用》(說課稿)-2024-2025學年一年級上冊數(shù)學人教版
- Unit 1 Art Using language 2 說課稿 -2023-2024學年高中英語人教版(2019)選擇性必修第三冊
- Unit 5 Colours Lesson 1(說課稿)-2024-2025學年人教新起點版英語一年級上冊
- 2023四年級數(shù)學上冊 1 大數(shù)的認識第4課時 億以內(nèi)數(shù)的大小比較說課稿 新人教版
- 2024年全國高考新課標卷物理真題(含答案)
- 生鮮超市未來工作計劃
- 勞動合同薪酬與績效約定書
- 消除醫(yī)療歧視管理制度
- 柴油機油-標準
- 足療店營銷策劃方案
- 《初三開學第一課 中考動員會 中考沖刺班會》課件
- 學校安全一崗雙責
- 2024年全國版圖知識競賽(小學組)考試題庫大全(含答案)
- 產(chǎn)后修復學習培訓課件
- 高考志愿咨詢培訓課件
評論
0/150
提交評論