基于51單片機(jī)的可預(yù)置分秒倒計(jì)時(shí)裝置_第1頁
基于51單片機(jī)的可預(yù)置分秒倒計(jì)時(shí)裝置_第2頁
基于51單片機(jī)的可預(yù)置分秒倒計(jì)時(shí)裝置_第3頁
基于51單片機(jī)的可預(yù)置分秒倒計(jì)時(shí)裝置_第4頁
基于51單片機(jī)的可預(yù)置分秒倒計(jì)時(shí)裝置_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、1.設(shè)計(jì)方法本次課程設(shè)計(jì)的題目是設(shè)計(jì)并實(shí)現(xiàn)可編程倒計(jì)時(shí)裝置。具體要求是按秒倒計(jì)時(shí)并鍵盤預(yù)置分、秒各兩位數(shù),鍵控啟動(dòng)計(jì)時(shí),數(shù)碼管顯示倒計(jì)時(shí);計(jì)時(shí)器歸零時(shí)輸出一音頻信號(hào)。根據(jù)實(shí)驗(yàn)要求選用AT89C52單片機(jī)作為最基本的部件,包括數(shù)碼管部分,蜂鳴器部分,矩陣鍵盤部分等幾大模塊,以下依次進(jìn)行介紹。1.1 硬件簡(jiǎn)介(1)AT89C52AT89C52是一個(gè)低電壓,高性能CMOS 8位單片機(jī),片內(nèi)含8k bytes的可反復(fù)擦寫的Flash只讀程序存儲(chǔ)器和256 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理

2、器和Flash存儲(chǔ)單元。 AT89C52為8 位通用微處理器,采用工業(yè)標(biāo)準(zhǔn)的C51內(nèi)核,在內(nèi)部功能及管腳排布上與通用的8xc52 相同,其主要用于會(huì)聚調(diào)整時(shí)的功能控制。引腳圖如下:圖一PDIP封裝的AT89C52引腳圖該單片機(jī)的功能包括對(duì)會(huì)聚主IC 內(nèi)部寄存器、數(shù)據(jù)RAM及外部接口等功能部件的初始化,會(huì)聚調(diào)整控制,會(huì)聚測(cè)試圖控制,紅外遙控信號(hào)IR的接收解碼及與主板CPU通信等。主要管腳有:XTAL1(19腳)和XTAL2(18腳)為振蕩器輸入輸出端口,外接12MHz晶振。RST(9腳)為復(fù)位輸入端口,外接電阻電容組成的復(fù)位電路。VCC(40腳)為供電端口,接+5V電源的一端,GND(20腳)為

3、接地端,接地。P0P3為可編程通用I/O 腳,在本設(shè)計(jì)中,P0端口(3239 腳)被定義為數(shù)碼管數(shù)據(jù)輸入端口,分別與數(shù)碼管的相應(yīng)功能管腳相連接。P2端口外接一個(gè)74LS373對(duì)控制信號(hào)進(jìn)行鎖存,然后從P2口的低四位輸出到數(shù)碼管的片選端,進(jìn)行對(duì)四位數(shù)碼管的選擇。P3口中的P3.0接蜂鳴器的使能端,控制蜂鳴器的選通。(2)時(shí)鐘振蕩器AT89C52中有一個(gè)用于構(gòu)成內(nèi)部振蕩器的高增益反相放大器,引腳XTAL1和XTAL2分別是該放大器的輸入端和輸出端。這個(gè)放大器與作為反饋元件的片外石英晶體或陶瓷諧振器一起構(gòu)成自激振蕩器。外接石英晶體(或陶瓷諧振器)及電容C1、C2接在放大器的反饋回路中構(gòu)成并聯(lián)振蕩電路

4、。對(duì)外接電容C1、C2雖然沒有十分嚴(yán)格的要求,但電容容量的大小會(huì)輕微影響振蕩頻率的高低、振蕩器工作的穩(wěn)定性、起振的難易程序及溫度穩(wěn)定性,如果使用石英晶體,電容使用30pF10pF,而如使用陶瓷諧振器建議選擇40pF10pF。(3) 鍵盤按鍵電路矩陣鍵盤:為了節(jié)省I/O口,通常將按鍵排列成矩陣形式,每條水平線和垂直線在交叉處不直接連通,而是通過一個(gè)按鍵加以連接。本設(shè)計(jì)采用4*4矩陣電路,包括09十個(gè)數(shù)字,設(shè)置,啟動(dòng),暫停,左移,右移和確定這十六個(gè)按鍵。P1.0P1.3為列掃描,P1.4P1.7為行掃描。(4)數(shù)碼管圖二 數(shù)碼管簡(jiǎn)介圖如圖所示,數(shù)碼管主要有兩種形式,共陰極和共陽極。共陰極的數(shù)碼管就

5、是公共端接地,共陽極的數(shù)碼管就是公共端接電源。本次設(shè)計(jì)采用的是共陽極的設(shè)計(jì)方案。1.2 設(shè)計(jì)思路在本設(shè)計(jì)中:(1)4x4矩陣鍵盤,有數(shù)字0-9輸入,可以方便快捷的預(yù)置分秒,拋棄了分秒按鍵,采用左右按鍵,使得預(yù)置數(shù)值時(shí)更加方便,可以隨心所以左右移動(dòng),選擇輸入。另增加一個(gè)暫停鍵,功能是使得再倒計(jì)時(shí)的過程中,隨時(shí)暫停,再按啟動(dòng)鍵時(shí),倒計(jì)時(shí)繼續(xù)開始。(2)數(shù)碼管采用的是4位一體共陽數(shù)碼管,有4個(gè)位選端,來分別選擇4個(gè)數(shù)碼管。(3)蜂鳴器采用的是有源蜂鳴器,無源蜂鳴器和有源蜂鳴器的區(qū)別在于,有源蜂鳴器只需加入一個(gè)高電平就可以發(fā)聲,而無源蜂鳴器需要輸入一定頻率的脈沖才可以發(fā)聲,從而選擇簡(jiǎn)單高效的有源蜂鳴器

6、。1.3 設(shè)計(jì)框圖圖三 設(shè)計(jì)框圖2 系統(tǒng)硬件設(shè)計(jì)圖根據(jù)思路設(shè)計(jì)出的硬件如下圖所示圖四 硬件電路連接圖3 程序設(shè)計(jì)框圖4 資源分配表(1)P0.0-p0.7 上先接一個(gè)排阻,作為上拉電阻。如下圖所示圖五 上拉電阻然后引腳接入共陽數(shù)碼管的段選端,如下圖所示:圖六 數(shù)碼管(2)P1.0-P1.7 接矩陣鍵盤,其中p1.0-p1.3為列掃描,p1.4-p.17為行掃描如下圖所示:圖七 矩陣鍵盤連接圖(3)P2口的p2.0-p2.3先接入一個(gè)74ls373鎖存器,之所以要接這個(gè)鎖存器是因?yàn)槲覀冞x用的是共陽數(shù)碼管,需要大驅(qū)動(dòng),直接用單片機(jī)接的話帶不起來,亮度會(huì)很低。如下圖:圖八 鎖存器之后373的Q輸出端

7、的q0-q3再接入供養(yǎng)數(shù)碼管的位選端,分別選中4個(gè)數(shù)碼管,高電平有效,如圖4.3所示。(4)P3口的p3.0接入蜂鳴器,輸入一個(gè)低電平,蜂鳴器便發(fā)聲。5 源程序#include#include#define uint unsigned int #define uchar unsigned charsbit P3_0=P30;char seg_n4=10,10,10,10; /設(shè)置阿拉伯?dāng)?shù)字表示uchar seg_code10=0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x98; /共陽碼表 uchar seg4=0xff,0xf

8、f,0xff,0xff; /設(shè)置值全局變量段值uchar num4=0,0,0,0; /位是否賦值標(biāo)志位uchar key_num=50;uint rupt;uint buz;/*延時(shí)函數(shù)*/void delay1ms(void) /誤差 0us unsigned char a,b,c; for(c=1;c0;c-) for(b=142;b0;b-) for(a=2;a0;a-);void delay500ms(void) /誤差 0us unsigned char a,b,c; for(c=23;c0;c-) for(b=152;b0;b-) for(a=70;a0;a-);void del

9、ay20ms(void) /誤差 0us unsigned char a,b; for(b=215;b0;b-) for(a=45;a0;a-);/*中斷函數(shù)*/void Timer1Interrupt(void) interrupt 3 /中斷1MS TH1 = 0x0FC; TL1 = 0x18; rupt+;/*動(dòng)態(tài)掃描數(shù)碼管*/void seg_scan(uchar chose) /chose 選擇閃爍顯示或不閃爍,1為閃爍,0為不閃uint i=0 ;uint j=0 ;for(;j125;j+)for(i=0;i4;i+)P2=0x01;P2=_crol_(P2,i); P0=se

10、gi;delay1ms();P0=0xff; /段值清零,防止亂碼if(chose=0) j=125; /如果為0,選擇為不閃模式,跳出循環(huán)if(chose=1) delay500ms();/選擇為閃爍模式,執(zhí)行閃爍延時(shí)500ms/*鍵盤掃描*/void keyboard_scan()uchar x=50;uchar i=0; /i為行,j為列uchar j=0;uchar r4=0xe0,0xd0,0xb0,0x70;uchar l4=0x0e,0x0d,0x0b,0x07;uchar key44=9,8,7,14,6,5,4,24,3,2,1,34,0,42,43,44; /按鍵值,代碼P

11、1=0xf0;for(i=0;i4;i+)if(P1=ri) /確定在第I行P1=0x0f;for(j=0;j4;j+)if(P1=lj) /確定在第J列P1=0xf0; delay20ms(); /延時(shí)20MS 再測(cè)for(i=0;i4;i+)if(P1=ri) /確定在第I行P1=0x0f;for(j=0;j4;j+)if(P1=lj) /確定在第J列x=keyij; key_num=x;/*設(shè)置按鍵鍵盤掃描*/void setup()uchar i=0;seg0=0x88;seg1=0x88;seg2=0x88;seg3=0x88;for(;i!=1;)seg_scan(0);keybo

12、ard_scan();if(key_num=44) i=1;/*賦值函數(shù)*/void seg_value()uchar y4=0,0,0,0;char i=0;seg0=0xff; /數(shù)碼管清零seg1=0xff;seg2=0xff;seg3=0xff;for(i=0;i+)for(numi=0 ; numi!=1;) key_num=50; /key_num需要賦值一個(gè)無關(guān)值,以免出現(xiàn)亂碼segi=0x88; /賦值為A,30為學(xué)林值,88為共陽值 seg_scan(1);keyboard_scan();switch(key_num)/檢測(cè)是否有功能鍵按下case 24 :if(y0&y1&

13、y2&y3)segi=seg_codeseg_ni; /清掉Agoto label_reset;break; /4位都賦值完畢,且按下確定鍵,則進(jìn)入下一階段case 42 :if(seg_ni=10) segi=0xff; /左移鍵按下 elsesegi=seg_codeseg_ni; i-;break;case 43 :if(seg_ni=10) segi=0xff; /右移鍵按下 elsesegi=seg_codeseg_ni; i+;break;case 44 :goto label_reset;break;if(i=-1) i=3; if(i=4) i=0; numi=0; /只允許在

14、賦值0-9的情況下跳出本循環(huán),左移右移不跳出if(key_num10) if(i=0)|(i=2)if(key_num=0;)for(;seg_n1=0;)for(;seg_n2=0;)for(;seg_n3=0;)for(TR1=1;TR1!=0;)for(;rupt=1000;) /中斷1次1MS,1000次為1S;rupt=0;TR1=0;seg3=seg_codeseg_n3;seg2=seg_codeseg_n2;seg1=seg_codeseg_n1;seg0=seg_codeseg_n0;seg_n3=(seg_n3-1); seg_scan(0);keyboard_scan()

15、;if(key_num=14) while(1)seg_scan(0);key_num=50;keyboard_scan();if(key_num=34) goto label;seg_n3=9;seg_n2=(seg_n2-1);seg_n2=5;seg_n1=(seg_n1-1);seg_n1=9;seg_n0=(seg_n0-1);/*蜂鳴器警報(bào)*/void buzzer()P3_0=0;/*主程序*/void main()TMOD = 0x10; TH1 = 0x0FC; /TR1用來倒計(jì)時(shí)1S中斷 TL1 = 0x18; EA = 1; ET1 = 1;begin:setup();

16、/循環(huán)鍵盤掃描_設(shè)置按鍵seg_value(); /賦值階段 if(key_num=44) goto begin; /如果設(shè)置鍵按下,從頭開始運(yùn)行程序seg1=(seg1 & 0x7f) ; /點(diǎn)亮第二位小數(shù)點(diǎn),表明設(shè)置值完成,此后不能再設(shè)置start(); /循環(huán)鍵盤掃描_啟動(dòng)按鍵cutdown(); /倒計(jì)時(shí)程序buzzer(); /蜂鳴器鳴聲程序6 性能分析 本次設(shè)計(jì),主要突出的是友好的用戶體驗(yàn),以及穩(wěn)定的系統(tǒng)。特別是在賦值階段,可以重復(fù)多次覆蓋賦值。(1)在進(jìn)入賦值階段,會(huì)有閃爍顯示,這表示正在賦值,也與我們?nèi)粘I钪杏玫碾娮邮直硗谕?,電子手表在調(diào)整時(shí)間時(shí),也會(huì)閃爍顯示,這使得用戶可以很好的接受本系統(tǒng),有一個(gè)好的用戶體驗(yàn)。(2)在閃爍的時(shí)候,當(dāng)前賦值位都會(huì)閃爍顯示A,從而表明正在賦值的地方。這讓用戶更加直觀的了解程序的運(yùn)行,非常方便的知道所賦值的地方。(3)在賦值階段,可以不斷的覆蓋賦值,方便用戶修改定時(shí)的時(shí)間,還可以直接點(diǎn)擊設(shè)定,把所有的值清空,重新賦值,這都是很人性化的。(4)在賦值完成,點(diǎn)擊確定后,會(huì)點(diǎn)亮在分秒數(shù)碼管中間的小數(shù)點(diǎn),友好的指示出了賦值完成。(5)在點(diǎn)擊啟動(dòng)按鍵后,在小數(shù)點(diǎn)消失的時(shí)刻便是計(jì)時(shí)開始的時(shí)刻,將程序內(nèi)部的運(yùn)行表明的一清二楚。(6)本設(shè)計(jì)在要求的基礎(chǔ)上還增加了暫停按鍵,隨時(shí)點(diǎn)擊暫停鍵,便暫停

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論