基于單片機(jī)的電子時(shí)鐘設(shè)計(jì)和實(shí)現(xiàn)_第1頁(yè)
基于單片機(jī)的電子時(shí)鐘設(shè)計(jì)和實(shí)現(xiàn)_第2頁(yè)
基于單片機(jī)的電子時(shí)鐘設(shè)計(jì)和實(shí)現(xiàn)_第3頁(yè)
基于單片機(jī)的電子時(shí)鐘設(shè)計(jì)和實(shí)現(xiàn)_第4頁(yè)
基于單片機(jī)的電子時(shí)鐘設(shè)計(jì)和實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、陜西電子科技職業(yè)技術(shù)學(xué)院Shaanxi electronic science and technology vocational college課程設(shè)計(jì)報(bào)告題 目 基于單片機(jī)的電子時(shí)鐘設(shè)計(jì)和實(shí)現(xiàn) 班 級(jí) 電子信息1507 姓 名 張聰 指導(dǎo)教師 聶弘穎 時(shí) 間 2017年10月30日 第一章 系統(tǒng)設(shè)計(jì)要求1.1 基本功能(1)能夠顯示時(shí)分秒(2)能夠調(diào)整時(shí)分秒1.2 擴(kuò)展功能(1)能夠任意設(shè)置定時(shí)時(shí)間(2)定時(shí)時(shí)間到鬧鈴能夠報(bào)警(3)實(shí)現(xiàn)了秒表功能第二章 硬件總體設(shè)計(jì)方案本次設(shè)計(jì)時(shí)鐘電路,使用了AT89C51單片機(jī)芯片控制電路,單片機(jī)控制電路簡(jiǎn)單且省去了很多復(fù)雜的線路,使得電路簡(jiǎn)明易懂,使用鍵

2、盤(pán)鍵上的按鍵來(lái)調(diào)整時(shí)鐘的時(shí)、分、秒,用一揚(yáng)聲器來(lái)進(jìn)行定時(shí)提醒,同時(shí)使用C語(yǔ)言程序來(lái)控制整個(gè)時(shí)鐘顯示,使得編程變得更容易,這樣通過(guò)四個(gè)模塊:鍵盤(pán)、芯片、揚(yáng)聲器、顯示屏即可滿足設(shè)計(jì)要求。2.1系統(tǒng)功能實(shí)現(xiàn)總體設(shè)計(jì)思路此設(shè)計(jì)原理框圖如圖2-1所示,此電路包括以下四個(gè)部分:?jiǎn)纹瑱C(jī),鍵盤(pán),鬧鈴電路及顯示電路。鬧鈴電路51單片機(jī)獨(dú)立鍵盤(pán)數(shù)碼管顯示 圖2-1 設(shè)計(jì)原理框圖 經(jīng)多方論證硬件我個(gè)人采用AT89C51單片機(jī)和7SED八位共陽(yáng)極數(shù)碼管等來(lái)實(shí)現(xiàn)單片機(jī)電子時(shí)鐘的功能。詳細(xì)元器件列表如表2.1所示:表2.1 詳細(xì)元器件列表AT89c511片7SED八位共陽(yáng)極數(shù)碼管1片NPN三極管1個(gè)104p電容6個(gè)30p

3、電容2個(gè)10K電阻6個(gè)560歐姆電阻8個(gè)200歐姆電阻1個(gè)100歐姆電阻6個(gè)2.2各部分功能實(shí)現(xiàn)(1) 單片機(jī)發(fā)送的信號(hào)通過(guò)程序控制最終在數(shù)碼管上顯示出來(lái)。(2) 單片機(jī)通過(guò)輸出各種電脈沖信號(hào)來(lái)驅(qū)動(dòng)控制各部分正常工作。(3) 為使時(shí)鐘走時(shí)與標(biāo)準(zhǔn)時(shí)間一致,校時(shí)電路是必不可少的,鍵盤(pán)用來(lái)校正數(shù)碼管上顯示的時(shí)間。(4) 單片機(jī)通過(guò)控制鬧鈴電路來(lái)完成 定時(shí)鬧鐘的功能。2.3系統(tǒng)工作原理設(shè)計(jì)的電路主要由四模塊構(gòu)成:?jiǎn)纹瑱C(jī)控制電路,顯示電路、鬧鈴電路以及校正電路。詳細(xì)電路功能圖如圖2-2: 圖2-2 詳細(xì)電路功能圖本設(shè)計(jì)采用C語(yǔ)言程序設(shè)計(jì),使單片機(jī)控制數(shù)碼管顯示時(shí)、分、秒,當(dāng)秒計(jì)數(shù)計(jì)滿60時(shí)就向分進(jìn)位,分

4、計(jì)數(shù)器計(jì)滿60后向時(shí)計(jì)數(shù)器進(jìn)位,小時(shí)計(jì)數(shù)器按“23翻0”規(guī)律計(jì)數(shù)。時(shí)、分、秒的計(jì)數(shù)結(jié)果經(jīng)過(guò)數(shù)據(jù)處理可直接送顯示器顯示。當(dāng)計(jì)時(shí)發(fā)生誤差的時(shí)候可以用校時(shí)電路進(jìn)行校正。設(shè)計(jì)采用的是時(shí)、分、秒顯示,單片機(jī)對(duì)數(shù)據(jù)進(jìn)行處理同時(shí)在數(shù)碼管上顯示。2.4時(shí)鐘各功能分析及圖解電路各功能圖解分析 (1) 時(shí)鐘運(yùn)行圖仿真開(kāi)始運(yùn)行時(shí),或按下key4鍵時(shí),時(shí)鐘從12:00:00開(kāi)始運(yùn)行,其中key2鍵對(duì)分進(jìn)行調(diào)整,key3對(duì)小時(shí)進(jìn)行調(diào)整,key6可以讓時(shí)鐘暫停。時(shí)鐘運(yùn)行圖如圖 2-3 所示: 圖2-3 時(shí)鐘運(yùn)行圖(2)秒表計(jì)時(shí)圖當(dāng)按下key1鍵進(jìn)入秒表計(jì)時(shí)狀態(tài),key6是秒表暫停鍵,可按key4鍵跳出秒表計(jì)時(shí)狀態(tài)。如圖2

5、-4: 圖2-4 秒表計(jì)時(shí)圖(3)鬧鈴設(shè)置圖及運(yùn)行圖當(dāng)按下key5,開(kāi)始定時(shí),分別按key2調(diào)分,key3調(diào)時(shí)設(shè)置鬧鈴時(shí)間,然后按下key4鍵恢復(fù)時(shí)鐘運(yùn)行狀態(tài)(圖2-5)當(dāng)鬧鈴設(shè)置時(shí)間到時(shí),蜂鳴器將發(fā)出10秒中蜂鳴聲(圖2-6)。 圖2-5 鬧鈴時(shí)間設(shè)置圖 圖2-6 鬧鈴運(yùn)行圖 該數(shù)字鐘是用一片AT89C51單片機(jī)通過(guò)編程去驅(qū)動(dòng)8個(gè)數(shù)碼管實(shí)現(xiàn)的。通過(guò)6個(gè)開(kāi)關(guān)控制,從上到下6個(gè)開(kāi)關(guān)KEY1-KEY6的功能分別為:KEY1,切換至秒表;KEY2,調(diào)節(jié)時(shí)間,每調(diào)一次時(shí)加1;KEY3, 調(diào)節(jié)時(shí)間,每調(diào)一次分加1;KEY4,從其它狀態(tài)切換至?xí)r鐘狀態(tài);KEY5,切換至鬧鐘設(shè)置狀態(tài),也可以對(duì)秒表清零;KEY

6、6,秒表暫停.控制鍵分別與P1.0P1.5口連接其中:A通過(guò)P2口和P3口去控制數(shù)碼管的顯示如圖所示P2口接數(shù)碼管的ag端,是控制輸出編碼,P3口接數(shù)碼管的18端,是控制動(dòng)態(tài)掃描輸出B從P0.0輸出一個(gè)信號(hào)使二極管發(fā)光,二極管在設(shè)置的鬧鐘時(shí)間到了時(shí)候發(fā)光,若有樂(lè)曲可以去驅(qū)動(dòng)揚(yáng)聲器實(shí)現(xiàn)。電路功能使用說(shuō)明(1) 各個(gè)控制鍵的功能:可對(duì)時(shí)間進(jìn)行校準(zhǔn)調(diào)節(jié)(只能加);按下設(shè)置鍵數(shù)字時(shí)鐘進(jìn)入鬧鐘設(shè)置狀態(tài),設(shè)置鬧鐘的時(shí)間;時(shí)加、分加鍵是在校準(zhǔn)時(shí)間時(shí)或設(shè)置鬧鐘時(shí)間對(duì)小時(shí)數(shù)或分鐘數(shù)調(diào)節(jié)而設(shè)置的;按下秒切換鍵就可以進(jìn)入秒表模式,同時(shí)秒表也開(kāi)始計(jì)時(shí),按下秒表暫停、復(fù)位鍵就暫停、歸零,如果要重新對(duì)秒計(jì)時(shí)則可以按秒表開(kāi)

7、始、復(fù)位;清零鍵可以對(duì)鬧鐘清零。(2) AT89C51單片機(jī),通過(guò)編寫(xiě)程序?qū)?shù)碼顯示進(jìn)行控制。(3) 八個(gè)7段數(shù)碼管顯示時(shí)鐘和秒表信號(hào)。第三章軟件總體設(shè)計(jì)方案3.1 主程序流程圖:開(kāi)始定時(shí)器及中斷定時(shí)器初始化執(zhí)行時(shí)鐘秒表鬧鈴設(shè)定程序是否設(shè)定參數(shù)執(zhí)行顯示程序NY軟件程序從開(kāi)始執(zhí)行,先通過(guò)初始化各個(gè)寄存器,經(jīng)過(guò)掃描按鍵來(lái)決定是否設(shè)定參數(shù)來(lái)執(zhí)行相應(yīng)功能的程序,進(jìn)而在數(shù)碼管上顯示。如圖3-1: 圖3-1 主程序流程圖分?jǐn)?shù)值time.minute加1time.second歸零Tcount加1返回主程序?qū)崝?shù)值time1.boun加1time1.mintet歸零Time1.bour>23時(shí)數(shù)值time

8、1.hour歸零Tount1=100?秒數(shù)值time1.second加1second歸零執(zhí)行鬧鐘程序p0.0=1判斷時(shí)間與鬧鐘時(shí)間是否一致鬧鐘程序是否行完全Time1.second=60?Time.minute=60?恢復(fù)初值保護(hù)3.2 總中斷程序流程 圖3-2 中斷流程圖時(shí)間的顯示通過(guò)此中斷程序來(lái)控制,并且通過(guò)與設(shè)定的時(shí)間進(jìn)行比較來(lái)判斷是否讓鬧鈴工作。程序中包含時(shí)間的設(shè)定,如設(shè)定tcount來(lái)使秒等工作,進(jìn)而來(lái)控制分和時(shí)。如上圖圖3-2。A. 秒表中斷程序流程 秒表功能通過(guò)另一個(gè)程序來(lái)實(shí)現(xiàn)。通過(guò)保護(hù)主程序的數(shù)據(jù)來(lái)進(jìn)行秒表功能。程序中需要設(shè)置秒表的具體顯示方法。如圖3-3:恢復(fù)初值保護(hù)10ms

9、計(jì)數(shù)器加1恢復(fù)初值保護(hù)秒計(jì)數(shù)器加1,10ms計(jì)數(shù)器歸零,即sec+,ms=0Sec>60?Ms>100?輸出字碼,中斷結(jié)束,返回上級(jí)主程序分計(jì)數(shù)器加1,秒計(jì)數(shù)器歸零,即minit+,sec=0 N Y N Y圖3-3秒表中斷程序流程圖B.按鍵程序流程程序初始化時(shí)十位歸零alarms【7】=0分時(shí)位歸零alarms4=0分十位歸零輸出時(shí)鐘時(shí)十位加一輸出鬧鐘時(shí)個(gè)位加一,延時(shí)輸出時(shí)鐘十位加一輸出時(shí)鐘十個(gè)位加一輸出時(shí)鐘分個(gè)位加一,延時(shí)輸出鬧鐘時(shí)分位加一輸出鬧鐘時(shí)十位加一輸出鬧鐘分個(gè)位加一,延時(shí)時(shí)十位歸零判斷標(biāo)志位是否為零Alarms4>2Alarms7>2Alarms【3】&g

10、t;0Dat16>9Dat17Alarms6>9Dat13>9Dat14>2判斷標(biāo)志是否為零判斷時(shí)i加鍵是否按下判斷分加鍵是否按下圖3-4為時(shí)鐘和鬧鐘的調(diào)節(jié),程序中通過(guò)掃描來(lái)判斷按鍵是否按下進(jìn)行時(shí)間和鬧鐘的調(diào)節(jié)。圖3-4按鍵程序流程圖圖3-5為進(jìn)入中斷和清零圖,程序中通過(guò)掃描來(lái)判斷按鍵是否按下進(jìn)行執(zhí)行相應(yīng)的中斷來(lái)事實(shí)現(xiàn)相應(yīng)的功能。判斷分加鍵tminute是否按下,P1.1=0判斷秒表miaobiao1是否按下按下,P1.0=0,tgsdhPP1.0=0判斷清零鍵miaobiao2是否按下,P1.3=0進(jìn)入秒表中斷,執(zhí)行秒表中斷程序返回上級(jí)主程序清零所有的計(jì)數(shù)器,各個(gè)顯示

11、的字碼。圖3-5 中斷和清零程序流程圖3.3控制電路的C語(yǔ)言源程序根據(jù)流程圖,經(jīng)過(guò)認(rèn)真分析得出控制電路的源程序如下:#include<reg51.h>#define uchar unsigned char#define uint unsigned int#define delay_time 3/*宏定義*/uchar k,dat=0,0,0,0,0,0,0,0;uint tcount,t,u;uchar dat1=0,0,0,0,0,0,2,1;uchar dat2=0,0,0,0,0,0,0,0;uchar alarms=0,0,0,0,0,0,0,0;uchar dis_bit

12、=0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01;unsigned char code SEG711=0xC0,/*0*/ 0xF9,/*1*/ 0xA4,/*2*/ 0xB0,/*3*/ 0x99,/*4*/ 0x92,/*5*/ 0x82,/*6*/ 0xF8,/*7*/ 0x80,/*8*/ 0x90,/*9*/ 0xBF,/*-*/ ;/*數(shù)字顯示數(shù)組*/sbit miaobiao1=P10;sbit tminute=P11;sbit thour=P12;sbit miaobiao2=P13;sbit alarm=P14;sbit P0_0=P00;sb

13、it P1_5=P15;sbit P1_6=P16;sbit P1_7=P17;/*端口定義*/uchar ms=0;uchar flag=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-); /*延時(shí)子程序*/ void modify(void) EA=0; if(thour=0) if(flag=0) dat16+;delay(280); if(dat16>9) d

14、at16=0;dat17+;else if(dat17>1)&&(dat16>3) dat17=0; dat16=0; if(flag=1) alarms6+;delay(300); if(alarms6>9) alarms6=0;alarms7+; if(alarms7>2) alarms7=0; dat6=alarms6; dat7=alarms7; if(tminute=0) if(flag=0) dat13+;delay(280); if(dat3>=9) dat14+;dat13=0;if(dat14>5) dat14=0; if(

15、flag=1) alarms3+;delay(300); if(alarms3>9) alarms4+;alarms3=0; if(alarms4>5) alarms4=0; dat3=alarms3;dat4=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

16、;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;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

17、<8;k+)P3=dis_bitk;P2=SEG7datk; delay(1);P3=0X00; /*數(shù)字顯示*/void main() init(); delay(10); while(1) modify(); test(); /*主函數(shù)*/void diplay() 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(time

18、1.second=60) dat10=0;dat11=0; time1.second=0; time1.minute+; dat13=(time1.minute)%10;dat14=(time1.minute)/10; if(time1.minute=60) time1.minute=0; time1.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;

19、 dat6=dat16; dat7=dat17; flag=0; P0=0x01;if(alarms7=dat17)&&(alarms6=dat16)&&(alarms4=dat14)&&(alarms3=dat13)&&(dat11<1) P0=0x00; 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+; dat23=sec%10; dat24=sec/10; if(sec>=60) sec=0; minit+; dat26=minit%10; dat27=minit/10; dat5=10; dat2=10;

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論