本科畢業(yè)論文基于51單片機(jī)的智能電子時(shí)鐘設(shè)計(jì)完稿_第1頁
本科畢業(yè)論文基于51單片機(jī)的智能電子時(shí)鐘設(shè)計(jì)完稿_第2頁
本科畢業(yè)論文基于51單片機(jī)的智能電子時(shí)鐘設(shè)計(jì)完稿_第3頁
本科畢業(yè)論文基于51單片機(jī)的智能電子時(shí)鐘設(shè)計(jì)完稿_第4頁
本科畢業(yè)論文基于51單片機(jī)的智能電子時(shí)鐘設(shè)計(jì)完稿_第5頁
已閱讀5頁,還剩88頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 課題名稱: 單片機(jī)應(yīng)用 指導(dǎo)教師: 系 別: 電子信息系 專 業(yè): 應(yīng)用電子技術(shù) 班 級(jí): 姓 名: 目 錄封面1任務(wù)書2目錄3第一章 智能電子時(shí)鐘的設(shè)計(jì)內(nèi)容4(1.1)電子時(shí)鐘設(shè)計(jì)思路4(1.2)電子時(shí)鐘的程序流程圖5(1.3)電子時(shí)鐘原理圖6(1.4)電子時(shí)鐘的功能說明7第二章 電子時(shí)鐘的硬件內(nèi)容8(2.1)時(shí)鐘插件指引圖8(2.2)時(shí)鐘零件清單9(2.3)焊接完畢的電子時(shí)鐘10第三章 電子時(shí)鐘的軟件設(shè)計(jì)11(3.1)倒計(jì)時(shí)版本11(3.2)鬧鐘版本12畢業(yè)設(shè)計(jì)小節(jié)13致謝14主要參考文獻(xiàn)15第一章 智能電子時(shí)鐘設(shè)計(jì)內(nèi)容1.1 電子時(shí)鐘的設(shè)計(jì)思路1.要達(dá)到的目的 利用51單片機(jī)及數(shù)碼管實(shí)

2、現(xiàn)時(shí)鐘的基本功能。 在6個(gè)數(shù)碼管上顯示年月日、并可切到時(shí)分秒。 利用4個(gè)按鍵,實(shí)現(xiàn)年月日及時(shí)分秒的調(diào)整。 能設(shè)置一組鬧鐘。 能實(shí)現(xiàn)秒表功能。2.關(guān)鍵問題的解決 6個(gè)數(shù)碼管的動(dòng)態(tài)掃描。 走時(shí)需要使用定時(shí)中斷,以確保精度。 四個(gè)功能模塊需要重復(fù)利用6個(gè)數(shù)碼管來顯示,需要組織好復(fù)雜的邏輯。1.2 電子時(shí)鐘的程序流程圖1.3電子時(shí)鐘的原理圖1.4 電子時(shí)鐘的功能說明操作說明:4個(gè)按鍵依次為:Mode Set Up Down模式選擇:按Mode鍵,選擇不同的功能,依次為:時(shí)間秒表倒計(jì)時(shí)日期時(shí)間調(diào)整:按Mode鍵進(jìn)入時(shí)間模式按Set 切換要設(shè)置的時(shí)分秒,按Up或Down對(duì)閃爍位置的時(shí)間進(jìn)行設(shè)置。秒表功能:

3、按Mode鍵進(jìn)入秒表模式 按Up鍵啟動(dòng)秒表在秒表計(jì)時(shí)過程中按Up鍵,暫停跑時(shí)。再按Up將繼續(xù)跑時(shí)。在暫停跑時(shí)狀態(tài)下按Set鍵,重置秒表時(shí)間。倒計(jì)時(shí)功能:按Mode鍵進(jìn)入倒計(jì)時(shí)功能。按Set鍵切換時(shí)分秒準(zhǔn)備。在時(shí)分秒用Up或Down鍵設(shè)置倒計(jì)時(shí)的時(shí)間長(zhǎng)度。在準(zhǔn)備狀態(tài)下按Down或Up鍵啟動(dòng)日期功能:按Mode鍵進(jìn)入日期功能。按Set鍵切換年月日,按Up或Down進(jìn)行調(diào)整。第二章 電子時(shí)鐘的硬件內(nèi)容2.1時(shí)鐘插件指引圖2.2時(shí)鐘零件清單CLK01 BOMNODescriptionCommentDesignatorQuantity1電池盒BATTERYBT112蜂鳴器BUZZBZ113電容0.1C1

4、, C424電容22pC2, C325電解電容100uFCx116數(shù)碼管seg-2-10pDeg1, Deg2, Deg337LEDDot1LED1, LED228LEDDot2LED3, LED429LEDTimeLED5110LEDAlarmLED6111LEDStopWatchLED7112LEDDateLED8113三極管8550Q1, Q2, Q3, Q4, Q5, Q6, Q7, Q8814三極管8050Q9, Q10, Q11, Q12, Q13, Q14, Q15715電阻10kR1, R2, R3, R4, R5, R6, R7, R8, R17, R18, R19, R20

5、, R21, R22, R23, R24, R25, R26, R27, R282016電阻220R9, R10, R11, R12, R13, R14, R15R16817輕觸按鍵MODES1118輕觸按鍵SETS2119輕觸按鍵UPS3120輕觸按鍵DOWNS4121單刀雙擲開關(guān)SW-SPDTS5122單片機(jī)P89C51RD2HBPU11IC座123晶振12MXT112.3 焊接完畢的時(shí)鐘第三章 電子時(shí)鐘的軟件設(shè)計(jì)3.1 倒計(jì)時(shí)版本/*項(xiàng)目編號(hào): CLK01名稱:多功能時(shí)鐘tonkeys & 輕風(fēng)工作室提供專業(yè)VB編程,畢業(yè)設(shè)計(jì)VB代編程,單片機(jī)程序設(shè)計(jì)。QQ:58507961 (技術(shù)支持

6、)10+年編程經(jīng)驗(yàn)日期:2013-8-25*/#includeat89x51.h/-/縮寫宏定義/-#defineuchar unsigned char#define uint unsigned int/數(shù)碼管位置宏#define DEG14#define DEG25#define DEG32#define DEG43#define DEG50#define DEG61/-/函數(shù)聲明/-uchar GetMDays(uchar cyear, uchar cmonth);/返回當(dāng)前日期的月份天數(shù)void T0_init();void LedSet(uchar pos, uchar num);uc

7、har GetKey(void);/讀取按鍵voidTaskSecond();/秒表模式voidTaskSetTime();/時(shí)間設(shè)置模式voidTaskStopWatch();/倒計(jì)時(shí)voidTaskDate();/日期ucharInKey();/等待一個(gè)按鍵void Beep();/200ms按鍵音/-/全局變量/-uchar tm_year=13,tm_month=8,tm_day=1;/年月日uchar tm_hour=10,tm_minute=15,tm_second=0;/時(shí)分秒uchar tm_x10ms=0;/x10mSuint gms;uchar mode=0;uchar b

8、eep_delay=0;uchar Light_Set=7;/7-最亮 20-暗uchar Light_Delay=60;/延時(shí)變暗/-/主函數(shù)/-void main()T0_init();while (1)/顯示時(shí)間LedSet(DEG1,tm_hour / 10);LedSet(DEG2,tm_hour % 10);LedSet(DEG3,tm_minute / 10);LedSet(DEG4,tm_minute % 10);LedSet(DEG5,tm_second / 10);LedSet(DEG6,tm_second % 10);LedSet(6,0xE0);switch (GetK

9、ey()case 0x01:/modeBeep();TaskSecond();/秒表模式TaskStopWatch();/倒計(jì)時(shí)模式TaskDate();/日期模式break;case 0x02:/SetBeep();TaskSetTime();/進(jìn)入時(shí)間設(shè)置模式break;case 0x04:/upbreak;case 0x08:/downbreak;default:;/-/LED動(dòng)態(tài)掃描/-uchar code led_code=3,207,42,74,198,82,18,203,2,66,0,0,0,0,0,0,0,0,0,0,255;uchar led_buf8;uchar led_s

10、can_step=0;void LedScan()P1=0; /offif (led_scan_step7)P0=led_bufled_scan_step;P1=1Light_Set ) led_scan_step=0;/-/定時(shí)器初始化 125uS for 12Mhz Osc/-void T0_init()TMOD=0X02;TH0=(256-125);TL0=(256-125);EA=1;ET0=1;TR0=1;/-/定時(shí)中斷/-uchar xcou=0;uchar ms=0;bit bz_flag;bit beep_en=0;void time0 (void) interrupt 1if

11、 (beep_en)bz_flag=!bz_flag;P2_7=bz_flag;xcou+;if (xcou=2)LedScan();/LED掃描else if (xcou=8 )xcou=0;ms+;gms+;/臨時(shí)計(jì)數(shù)用的if (ms=10)tm_x10ms+;ms=0;if (beep_delay!=0)beep_delay-;if (beep_delay !=0)beep_en=1;elsebeep_en=0;if (tm_x10ms=100)/秒tm_second+;if (Light_Delay !=0)Light_Delay-;if (Light_Delay =0)Light_S

12、et=20;/變暗elseLight_Set=7;/亮度高tm_x10ms=0;if (tm_second=60) /分tm_minute+;tm_second=0;if (tm_minute=60) /時(shí)tm_hour+;tm_minute=0;if (tm_hour=24) /日tm_day+;tm_hour=0;if (tm_dayGetMDays(tm_year,tm_month) /月tm_month+;tm_day=1;if (tm_month12) /年tm_year+;tm_month=1;/-/返回當(dāng)前日期的月份天數(shù)/-uchar code daylist=31,28,31,

13、30,31,30,31,31,30,31,30,32; /平年各月天數(shù)uchar GetMDays(uchar cyear, uchar cmonth)uchar rtn;rtn=daylistcmonth-1;if (cyear % 4=0 & cmonth=2)/閏年2月rtn=29;return (rtn);/-/設(shè)置指定位置數(shù)碼管的字符/-void LedSet(uchar pos, uchar num)if (pos=6)led_bufpos=num;elseled_bufpos=led_codenum;/-/GetKey 讀取按鍵/-uchar GetKey(void)uchar

14、rtn=0;bit flag;flag=1;if (P3_4=0)rtn =0x01;/modeelse if (P3_5=0) rtn|=0x02;/setelse if (P3_6=0)rtn|=0x04; /upelse if (P3_7=0)rtn|=0x08;/downelse flag=0;/pressedif (flag)gms=0;while (P3_4=0 | P3_5=0 |P3_6=0 | P3_7=0)if (gms1000) gms=1000;if (gms=24) tmp=0;tm_hour=tmp;else if (pos=1)/mmtmp=tm_minute;t

15、mp+;if (tmp=60) tmp=0;tm_second=0;tm_minute=tmp;else if(pos=2)tm_second=0;cms=0;else if (tmp=0x08)/downif (pos=0)/hhtmp=tm_hour;if (tmp=0) tmp=23;else tmp-;tm_hour=tmp;else if (pos=1)/mmtmp=tm_minute;if (tmp=0) tmp=59;else tmp-;tm_second=0;tm_minute=tmp;else if(pos=2)tm_second=0;cms=0;if (cms=1)LedS

16、et(DEG1,tm_hour / 10);LedSet(DEG2,tm_hour % 10);LedSet(DEG3,tm_minute / 10);LedSet(DEG4,tm_minute % 10);LedSet(DEG5,tm_second / 10);LedSet(DEG6,tm_second % 10);LedSet(6,0xE0);else if (cms=500)if (pos=0)LedSet(DEG1,20);LedSet(DEG2,20);else if (pos=1)LedSet(DEG3,20);LedSet(DEG4,20);else if (pos=2)LedS

17、et(DEG5,20);LedSet(DEG6,20);else if (cms=1000)cms=0;/-/等待一個(gè)按鍵/-uchar InKey(void)uchar rtn=0;while (rtn =0)rtn=GetKey();return (rtn);/-/倒計(jì)時(shí)/-voidTaskStopWatch()uchar tmp,pos=0;uchar hh=0,mm=0,ss=30,mms=0,m10ms=0;uint cms=0;while (1)LedSet(DEG1,hh / 10);LedSet(DEG2,hh % 10);LedSet(DEG3,mm / 10);LedSet

18、(DEG4,mm % 10);LedSet(DEG5,ss / 10);LedSet(DEG6,ss % 10);LedSet(6,0xB0);/hh=0,mm=0,ss=30,mms=0,m10ms=0;tmp=InKey();if (tmp=0x01)return;else if (tmp=0x02)/stop time setgms=0;cms=0;pos=1;while (1)if (gms!=0)cms+;gms-;tmp=GetKey();if (tmp=0x01)/exitreturn;else if (tmp=0x02)/next pospos+;if (pos=4) pos=

19、0;break;else if (tmp=0x04)/upif ( pos=1)/hhif (hh99)hh+;else hh=0;else if (pos=2)/mmif (mm59)mm+;elsemm=0;else if (pos=3)/sif (ss0)hh-;else hh=99;else if (pos=2)/mmif (mm0)mm-;elsemm=59;else if (pos=3)/sif (ss0)ss-;elsess=59;if (cms=1)LedSet(DEG1,hh / 10);LedSet(DEG2,hh % 10);LedSet(DEG3,mm / 10);Le

20、dSet(DEG4,mm % 10);LedSet(DEG5,ss / 10);LedSet(DEG6,ss % 10);LedSet(6,0xB0);else if (cms=500)if (pos=1)LedSet(DEG1,20);LedSet(DEG2,20);else if (pos=2)LedSet(DEG3,20);LedSet(DEG4,20);else if (pos=3)LedSet(DEG5,20);LedSet(DEG6,20);else if (cms=1000)cms=0;else if (tmp=0x04 | tmp=0x08)/startcms=0;gms=0;

21、while (1)if (gms!=0)cms+;gms-;if (cms % 10=1)if (m10ms=0)if (ss=0)if (mm=0)if (hh=0)/stopbreak;elsehh-;mm=59;elsemm-;ss=59;else ss-;m10ms=99;elsem10ms-; else if (hh!=0)LedSet(DEG1,hh / 10);LedSet(DEG2,hh % 10);LedSet(DEG3,mm / 10);LedSet(DEG4,mm % 10);LedSet(DEG5,ss / 10);LedSet(DEG6,ss % 10);LedSet

22、(6,0xB0); elseLedSet(DEG1,mm / 10);LedSet(DEG2,mm % 10);LedSet(DEG3,ss / 10);LedSet(DEG4,ss % 10);LedSet(DEG5,m10ms / 10);LedSet(DEG6,m10ms % 10);LedSet(6,0xB4);if (cms=1000)cms=0;if (GetKey()!=0)return;/時(shí)間到gms=0;cms=0;while (1)if (gms!=0)cms+;gms-;if (cms=1)LedSet(DEG1,0);LedSet(DEG2,0);LedSet(DEG3

23、,0);LedSet(DEG4,0);LedSet(DEG5,0);LedSet(DEG6,0);LedSet(6,0xB0);else if (cms=500)LedSet(DEG1,20);LedSet(DEG2,20);LedSet(DEG3,20);LedSet(DEG4,20);LedSet(DEG5,20);LedSet(DEG6,20);LedSet(6,0xFF);else if (cms=1000)cms=0;if (cms=1)beep_en=1;else if (cms=200)beep_en=0;else if (cms=300)beep_en=1;else if (c

24、ms=500)beep_en=0;if (GetKey()!=0 )beep_en=0 ;return;/-/日期/-voidTaskDate()uchar tmp,pos=0;uint cms=0;while (1)LedSet(DEG1,tm_year / 10);LedSet(DEG2,tm_year % 10);LedSet(DEG3,tm_month / 10);LedSet(DEG4,tm_month % 10);LedSet(DEG5,tm_day / 10);LedSet(DEG6,tm_day % 10);LedSet(6,0x7A);tmp=GetKey();if (tmp

25、=0x01)return;else if (tmp=0x02)/date setpos=1;/yearcms=0;gms=0;while (1)if (gms!=0)gms-;cms+;if (cms=1)LedSet(DEG1,tm_year / 10);LedSet(DEG2,tm_year % 10);LedSet(DEG3,tm_month / 10);LedSet(DEG4,tm_month % 10);LedSet(DEG5,tm_day / 10);LedSet(DEG6,tm_day % 10);LedSet(6,0x7A);else if (cms=500)if (pos=1)LedSet(DEG1,20);LedSet(

溫馨提示

  • 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. 人人文庫網(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)論