單片機數(shù)字時鐘_第1頁
單片機數(shù)字時鐘_第2頁
單片機數(shù)字時鐘_第3頁
單片機數(shù)字時鐘_第4頁
單片機數(shù)字時鐘_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上 單片機電子時鐘設(shè)計 淮安信息職業(yè)技術(shù)學(xué)院 電子工程系 李典一. 題目:單片機電子時鐘時鐘二. 內(nèi)容:設(shè)計一個數(shù)字時鐘,顯示范圍為00:00:0023:59:59。通過幾個開關(guān)進行控制,其中開關(guān)K1用于切換時間設(shè)置(調(diào)節(jié)時鐘)和時鐘運行(正常運行)狀態(tài);開關(guān)K2用于切換修改時、分、秒數(shù)值;開關(guān)K3用于使相應(yīng)數(shù)值加1調(diào)節(jié);開關(guān)K4用于減1調(diào)節(jié);開關(guān)K5用于設(shè)定鬧鐘,鬧鐘同樣可以設(shè)定初值,并且設(shè)定好后到時間通過實驗箱音頻放出一段樂曲作為鬧鈴。 選做增加項目:還可增加秒表功能(精確到0.01s)或年月日設(shè)定功能。三 要求: 開關(guān)K3進行加1調(diào)節(jié)時,當(dāng)加至最大值(時為24,分

2、和秒均為60)時要能正常歸零。開關(guān)K4進行減1調(diào)節(jié)時,當(dāng)減至最小值00時,均能再回到從相應(yīng)最大值(時為23,分、秒均為59)。鬧鐘樂曲自定。四 電路及功能說明: 電路圖如圖所示: 圖A 圖B 圖C該數(shù)字鐘是用一片AT89C51A單片機通過編程去驅(qū)動8個數(shù)碼管實現(xiàn)的。通過6個開關(guān)控制,從上到下6個開關(guān)KEY1KEY6的功能分別為:KEY1,切換至秒表;KEY2,調(diào)節(jié)時間,每調(diào)一次時加1;KEY3, 調(diào)節(jié)時間,每調(diào)一次分加1;KEY4,從其它狀態(tài)切換至?xí)r鐘狀態(tài);KEY5,切換至鬧鐘設(shè)置狀態(tài),也可以對秒表清零;KEY6,秒表暫停.控制鍵分別與P1.0P1.5口連接其中:A.通過P2口和P3口去控制數(shù)

3、碼管的顯示如圖所示P2口接數(shù)碼管的ag端,是控制輸出編碼,P3口接數(shù)碼管的18端,是控制動態(tài)掃描輸出B.從P0.0輸出一個信號使二極管發(fā)光,二極管在設(shè)置的鬧鐘時間到了時候發(fā)光,若有樂曲可以去驅(qū)動揚聲器實現(xiàn)。(圖A是時鐘運行狀態(tài),圖B是鬧鐘運行狀態(tài),圖C是秒表運行狀態(tài))功能說明:1 各個控制鍵的功能:可對時間進行校準調(diào)節(jié)(只能加);按下設(shè)置鍵數(shù)字時鐘進入鬧鐘設(shè)置狀態(tài),設(shè)置鬧鐘的時間;時加、分加鍵是在校準時間時或設(shè)置鬧鐘時間對小時數(shù)或分鐘數(shù)調(diào)節(jié)而設(shè)置的;按下秒切換鍵就可以進入秒表模式,同時秒表也開始計時,按下秒表暫停、復(fù)位鍵就暫停、歸零,如果要重新對秒計時則可以按秒表開始、復(fù)位;清零鍵可以對鬧鐘清

4、零。2 AT89C51單片機,通過編寫程序?qū)?shù)碼顯示進行控制。3 八個7段數(shù)碼管顯示時鐘和秒表信號。五 實驗程序流程圖:1. 主程序流程圖: 2. 中斷程序流程圖 2. 秒表中斷程序流程圖: 3. 按鍵程序流程圖:第一圖為時鐘和鬧鐘的調(diào)節(jié). 第二圖為進入中斷和清零六 實驗結(jié)果分析:此時鐘設(shè)計是利用protues仿真軟件進行仿真?;旧蠈崿F(xiàn)了要求的功能,該多功能數(shù)字鐘實現(xiàn)的時鐘顯示、鬧鐘設(shè)置和秒表功能,校準時鐘時只設(shè)計了時加鍵和分加鍵以及清零鍵,沒有設(shè)置減分減時鍵??砂l(fā)通過循環(huán)調(diào)節(jié)得到正確的調(diào)節(jié)數(shù)值。另外,要求有一段樂曲來作為鬧鐘,可這里只是用了一個二級管的發(fā)光來實現(xiàn)這個功能。若用一個揚聲器和一

5、個樂曲能夠?qū)崿F(xiàn)。七 程序清單:#include<reg51.h>#define uchar unsigned char#define uint unsigned int#define delay_time 3uchar k,dat=0,0,0,0,0,0,0,0;uint tcount,t,u;uchar dat1=0,0,0,0,0,0,0,0;uchar dat2=0,0,0,0,0,0,0,0;uchar alarms=0,0,0,0,0,0,0,0;uchar dis_bit=0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01;unsigned

6、char code SEG711=0xC0,/*0*/ 0xF9,/*1*/ 0xA4,/*2*/ 0xB0,/*3*/ 0x99,/*4*/ 0x92,/*5*/ 0x82,/*6*/ 0xF8,/*7*/ 0x80,/*8*/ 0x90,/*9*/ 0xBF,/*-*/ ;sbit miaobiao1=P10;sbit tminute=P11;sbit thour=P12;sbit miaobiao2=P13;sbit alarm=P14;sbit P0_0=P00;sbit P1_5=P15;sbit P1_6=P16;sbit P1_7=P17;uchar ms=0;uchar fla

7、g=0;uchar sec=0;uchar minit=0;struct timeuchar second;uchar minute;uchar hour;time1; uchar n,i;void delay(n) while(n-) for(i=120;i>0;i-); void modify(void) EA=0; if(thour=0) if(flag=0) dat16+;delay(180); if(dat16>9) dat16=0;dat17+;if(dat17>2) dat17=0; if(flag=1) alarms6+;delay(200); if(alar

8、ms6>9) alarms6=0;alarms7+; if(alarms7>2) alarms7=0; dat6=alarms6; dat7=alarms7; if(tminute=0) if(flag=0) dat13+;delay(180); if(dat3>=10) dat14+;dat13=0;if(dat14>5) dat14=0; if(flag=1) alarms3+;delay(200); if(alarms3>9) alarms4+;alarms3=0; if(alarms4>5) alarms4=0; dat3=alarms3; dat4

9、=alarms4; if(miaobiao1=0) TR0=0;ET0=0;TR1=1;ET1=1; if(miaobiao2=0) TR0=1;ET0=1;TR1=0;ET1=0; dat20=0; dat21=0; dat23=0; dat24=0; dat26=0; dat27=0; ms=0; sec=0; minit=0; if(P1_5=0) TR0=0;ET0=0;TR1=0;ET1=0; if(alarm=0) TR0=0;ET0=0;TR1=0;ET1=0;flag=1; dat0=0; dat1=0;dat2=10; dat3=0;dat4=0;dat5=10;dat6=0

10、;dat7=0; EA=1; void init(void)TMOD = 0x11; TH0 = 0xDB;TL0 =0xFF;TH1=0xDB;TL1=0xFF; ET0 = 1; /10msET1=1;/TR1=1; TR0=1; tcount=0;ms=0;sec=0;minit=0;EA = 1; void test(void) for(k=0;k<8;k+) P3=dis_bitk;P2=SEG7datk; delay(1);P3=0X00; void main() init(); delay(10); while(1) modify(); test(); void dipla

11、y() interrupt 1 ET0=0; TR0=0; TH0 = 0xDB; TL0 = 0xff; TR0=1; tcount+; if(tcount=100) time1.second+; tcount=0;dat10=(time1.second)%10;dat11=(time1.second)/10; if(time1.second=60) time1.second=0; time1.minute+; dat13=(time1.minute)%10;dat14=(time1.minute)/10; if(time1.minute=60) time1.minute=0; time1.

12、hour+; dat16=time1.hour%10;dat17=time1.hour/10; if(time1.hour>23) time1.hour=0; dat5=10; dat2=10; dat0=dat10; dat1=dat11; dat3=dat13; dat4=dat14; dat6=dat16; dat7=dat17; flag=0; P0=0x00; if(alarms7=dat17)&&(alarms6=dat16)&&(alarms4=dat14)&&(alarms3=dat13) P0=0x01; ET0=1;void time_2(void)interrupt 3 EA=0; TR0=0; TH1=0xDB; TL1=0xFF; TR1=1; ms+; dat20=ms%10; dat21=ms/10; if(ms>=100) ms=0; sec+

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論