單片機(jī)-電子時(shí)鐘實(shí)驗(yàn)報(bào)告_第1頁(yè)
單片機(jī)-電子時(shí)鐘實(shí)驗(yàn)報(bào)告_第2頁(yè)
單片機(jī)-電子時(shí)鐘實(shí)驗(yàn)報(bào)告_第3頁(yè)
單片機(jī)-電子時(shí)鐘實(shí)驗(yàn)報(bào)告_第4頁(yè)
單片機(jī)-電子時(shí)鐘實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩23頁(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、一、實(shí)驗(yàn)任務(wù)及要求在焊接的電路板中,4個(gè)LED數(shù)碼管,設(shè)計(jì)帶有鬧鈴功能的數(shù)字時(shí)鐘,要求:1、在4位數(shù)碼管上顯示當(dāng)前時(shí)間。顯示格式“時(shí)時(shí)分分”;”2、由LED閃動(dòng)做秒顯示;3、利用按鍵可對(duì)時(shí)間及鬧玲進(jìn)行設(shè)置,并可顯示鬧玲時(shí)間。當(dāng)鬧玲時(shí)間到蜂鳴器發(fā)出聲響,按停止鍵使可使鬧玲聲停止。二、方案論證與比較2.1數(shù)字時(shí)鐘方案數(shù)字時(shí)鐘是本設(shè)計(jì)的最主要的部分。根據(jù)需要,可利用兩種方案實(shí)現(xiàn)。方案一:本方案采用Dallas公司的專用時(shí)鐘芯片DS12887A。該芯片內(nèi)部采用石英晶體振蕩器,其芯片精度不大于10ms/年,且具有完備的時(shí)鐘鬧鐘功能,因此,可直接對(duì)其以用于顯示或設(shè)置,使得軟件編程相對(duì)簡(jiǎn)單。為保證時(shí)鐘在電網(wǎng)

2、電壓不足或突然掉電等突發(fā)情況下仍能正常工作,芯片內(nèi)部包含鋰電池。當(dāng)電網(wǎng)電壓不足或突然掉電時(shí),系統(tǒng)自動(dòng)轉(zhuǎn)換到內(nèi)部鋰電池供電系統(tǒng)。而且即使系統(tǒng)不上電,程序不執(zhí)行時(shí),鋰電池也能保證芯片的正常運(yùn)行,以備隨時(shí)提供正確的時(shí)間。方案二:本方案完全用軟件實(shí)現(xiàn)數(shù)字時(shí)鐘。原理為:在單片機(jī)內(nèi)部存儲(chǔ)器設(shè)三個(gè)字節(jié)分別存放時(shí)鐘的時(shí)、分、秒信息。利用定時(shí)器與軟件結(jié)合實(shí)現(xiàn)5毫秒定時(shí)中斷,每產(chǎn)生一次中斷,存儲(chǔ)器內(nèi)相應(yīng)的計(jì)數(shù)值加1;若計(jì)數(shù)值達(dá)到200,則將其清零,并將方案一:靜態(tài)顯示。所謂靜態(tài)顯示,就是當(dāng)顯示器顯示某一字符時(shí),相應(yīng)的發(fā)光二極管恒定的導(dǎo)通或截止。該方式每一位都需要一個(gè)8 位輸出口控制。靜態(tài)顯示時(shí)較小的電流能獲得較高

3、的亮度,且字符不閃爍。但當(dāng)所顯示的位數(shù)較多時(shí),靜態(tài)顯示所需的I/O口太多,造成了資源的浪費(fèi)。方案二:動(dòng)態(tài)顯示。所謂動(dòng)態(tài)顯示就是一位一位的輪流點(diǎn)亮各個(gè)位,對(duì)于顯示器的每一位來(lái)說(shuō),每隔一段時(shí)間點(diǎn)亮一次。利用人的視覺暫留功能可以看到整個(gè)顯示,但必須保證掃描速度合適,字符才不閃爍。顯示器的亮度既與導(dǎo)通電流有關(guān),也于點(diǎn)亮?xí)r間與間隔時(shí)間的比例有關(guān)。調(diào)整參數(shù)可以實(shí)現(xiàn)較高穩(wěn)定度的顯示。動(dòng)態(tài)顯示節(jié)省了I/O口,降低了能耗。從節(jié)省I/O口和降低能耗出發(fā),本設(shè)計(jì)采用方案二。三、各個(gè)部分的分析1)顯示電路:通過(guò)4個(gè)LED顯示屏顯示分鐘和小時(shí)兩個(gè)兩聯(lián)的LED顯示器,通過(guò)與單片機(jī)P1接口連接實(shí)現(xiàn)顯示功能。而實(shí)現(xiàn)4個(gè)LED

4、燈動(dòng)態(tài)顯示,靠的是位選電路2)位選電路 四位共陽(yáng)LED數(shù)碼管,其標(biāo)號(hào)分別為HourH,HourL,MinL,MinH,低電平選通,且任何時(shí)候僅有一位輸出低電平,顯示時(shí)對(duì)各顯示器進(jìn)行動(dòng)態(tài)掃描,顯示器分時(shí)輪流工作。雖然每次只有一個(gè)顯示器顯示,但是由于人的視覺暫留現(xiàn)象我們?nèi)詴?huì)感覺所有的顯示器都在同時(shí)顯示。P0口作為輸出口控制8個(gè)發(fā)光二極管的亮滅,控制數(shù)碼管的顯示。因此,可以實(shí)現(xiàn)4個(gè)LED在我們看來(lái)同時(shí)亮,顯示時(shí)間。3) 鬧鈴部分:使用蜂鳴器實(shí)現(xiàn)鬧鐘功能其中,buzzer端口接到單片機(jī)的P1.7輸出。(端口連接在最后介紹)4) 開關(guān)部分:使用了5個(gè)開關(guān)控制整個(gè)電路的啟動(dòng),修改時(shí)間,設(shè)置鬧鐘,關(guān)閉電路等

5、功能為查詢方式典型電路。其中Setbutton為復(fù)位開關(guān),swtich為轉(zhuǎn)換模式開關(guān),即工作模式和調(diào)時(shí)間模式,Increase為調(diào)時(shí)間模式中控制時(shí)間變化的按鈕,STRAT和STOP分別為開啟和結(jié)束按鈕,這5個(gè)開關(guān)分別接到P2.0-P2.5端口,以控制其輸入。5) 串轉(zhuǎn)并電路為了進(jìn)一步節(jié)省I/O口,有添加了一個(gè)額外的串轉(zhuǎn)并電路由以上電路,我們將P1.0-P1.2擴(kuò)展到7個(gè)I/O口,我們采用的是74HC595芯片,管腳圖如下:7)復(fù)位電路整體電路圖如下:四、軟件設(shè)計(jì)由于匯編語(yǔ)言繁瑣,我們采用的是C語(yǔ)言編程,源程序及注釋如下:#include #include /時(shí)分#define TYPE uns

6、igned char#define HOUR 0#define MIN 1/顯示狀態(tài)#define NORMAL 0#define BELLTIME 1#define SETTING_N 2#define SETTING_C 3/閃爍顯示#define NoMask 0#define MaskHour 1#define MaskMin 2#define MaskAll 3#define uchar unsigned char#define uint unsigned int/Bit Definition/數(shù)碼管sbit HourH = P13; /低電平,數(shù)碼管使能sbit HourL = P

7、14;sbit MinH = P15;sbit MinL = P16;/蜂鳴器sbit Buzzer = P17; /低電平,蜂鳴器響/鍵盤sbit SetButton = P20;/按鍵定義,設(shè)置(正常,定時(shí)顯示切換)鍵,時(shí)位分位轉(zhuǎn)換鍵,增加鍵sbit Switch =P21;sbit Increase = P22; sbit Start = P23;sbit Stop = P24;/LEDsbit SecLed = P25; /秒顯示,低電平點(diǎn)亮sbit ClockStartLED = P26; /鬧鐘定鬧開始/74HC595 輸入管腳定義sbit SH_CP = P10;sbit DS

8、= P11;sbit ST_CP = P12;/Function Definitionvoid delay5ms(void);void Clock();void Display();void Set();void Ring();void StopRing();void ShowANum(uchar i);void StartRing();void delaykey(void);void MaskShow(uchar Num,TYPE t);/Variable Definition/正常時(shí)間uchar hour=8;uchar min=0;uchar sec=0;uint count=0;/鬧鐘

9、定時(shí)uchar mp=1;uchar st=0;uchar cHour=8;uchar cMin=0;/模式標(biāo)示uchar displayMode=NORMAL;uchar currentSelect=HOUR;/數(shù)碼管數(shù)字顯示編碼uchar H1;uchar H2;uchar M1;uchar M2;uchar temp;uchar code DSY_CODE=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff;/閃爍顯示uchar MaskType=NoMask;uint blinkcount=0;/音樂uchar p=0;ucha

10、r temp=0;uchar jiepai=0;uchar yindiao=0;uchar Pai1_4=20;uchar jpLength=0;/音調(diào)數(shù)組unsigned char code music=0xFF,0xFF,0xF8,0x89,0xf9,0x59,0xfa,0x13,0xfa,0x68,0xfb,0x04,0xfb,0x90,0xfc,0x0c, 0xfc,0x44,0xfc,0xad,0xfd,0x0a,0xfd,0x34,0xfd,0X82,0xfd,0xc8,0xfe,0x06, 0xfe,0x22,0xfe,0x56,0xfe,0x85,0xfe,0x9a,0xfe,

11、0xc1,0xfe,0xe4,0xff,0x03, 0xff,0x11;/音樂編碼unsigned char code Mmusic=/音階測(cè)試/1,4,2,4,3,4,4,4,5,4,6,4,7,4,8,4,/9,4,10,4,11,4,12,4,13,4,14,4,15,4,/16,4,17,4,18,4,19,4,20,4,21,4,22,4,/兩只老虎1,4,2,4,3,4,1,8,1,4,2,4,3,4,1,8,3,2,4,8,5,5,3,2,4,8,5,5,5,5,6,2,5,5,4,4,3,4,1,8,5,5,6,2,5,5,4,4,3,4,1,8,3,4,1,4,2,8,3,4

12、,1,4,2,8,0xff,0x00/結(jié)束標(biāo)記;void main()/設(shè)置T0,T1TMOD = 0x11; TH0 = 0x0EC; TL0 = 0x78; TH1 = 0x0F0; TL1 = 0x60;ET0=1;ET1=1;EA=1;TR0=1;/設(shè)置定時(shí)器的優(yōu)先級(jí)PT0=1; /5ms標(biāo)準(zhǔn)時(shí)鐘設(shè)為高優(yōu)先級(jí),保證計(jì)時(shí)的準(zhǔn)確性PT1=0;/順序執(zhí)行(主循環(huán))while(1)/設(shè)置何時(shí)開啟T1定時(shí)器if(displayMode!=NORMAL|mp=0)TR1=1;elseTR1=0;MaskType=NoMask;/方法并行Display();Display();Set();Start

13、Ring();Ring();StopRing();void Clock() interrupt 1TH0 = 0x0EC; TL0 = 0x78;count+;if(mp=0) /控制音樂節(jié)拍if(jpLength-=100)blinkcount=0;if(displayMode=BELLTIME)if(MaskType=NoMask)MaskType=MaskAll;elseMaskType=NoMask;else if(displayMode=SETTING_C|displayMode=SETTING_N)if(currentSelect=HOUR)if(MaskType=NoMask)M

14、askType=MaskHour;elseMaskType=NoMask;if(currentSelect=MIN)if(MaskType=NoMask)MaskType=MaskMin;elseMaskType=NoMask;void StartRing()if(Start=0)ClockStartLED=0;st=1;Start=1;void Ring()if(st=1&cHour=hour&cMin=min)/Buzzer=0;mp=0;void StopRing()if(Stop=0)Buzzer=1;mp=1;p=0;ClockStartLED=1;st=0;MaskType=NoM

15、ask;void Display()/分析COUNT,合成HOUR,MINif(count=200)count=count-200;sec+;if(sec=60)sec=0;min+;if(min=60)min=0;hour+;if(hour=25)hour=0;/顯示時(shí)間if(displayMode=NORMAL|displayMode=SETTING_N) HourH=1;HourL=1; MinH=1;MinL=1; H1=hour/10;H2=hour%10; M1=min/10;M2=min%10; MaskShow(H1,HOUR);HourH=0;delay5ms();HourH

16、=1; MaskShow(H2,HOUR); HourL=0; delay5ms(); HourL=1;MaskShow(M1,MIN);MinH=0;delay5ms();MinH=1; MaskShow(M2,MIN); MinL=0;delay5ms(); MinL=1; if(displayMode=BELLTIME|displayMode=SETTING_C) H1=cHour/10; H2=cHour%10; M1=cMin/10; M2=cMin%10; MaskShow(H1,HOUR); HourH=0; delay5ms(); HourH=1; MaskShow(H2,HO

17、UR); HourL=0; delay5ms(); HourL=1; MaskShow(M1,MIN); MinH=0; delay5ms(); MinH=1; MaskShow(M2,MIN); MinL=0; delay5ms(); MinL=1;void MaskShow(uchar Num,TYPE t)if(MaskType=MaskHour)if(t=HOUR)ShowANum(10);elseShowANum(Num);else if(MaskType=MaskMin)if(t=MIN)ShowANum(10);elseShowANum(Num);else if(MaskType

18、=MaskAll)ShowANum(10);elseShowANum(Num);void ShowANum(uchar Num)uchar i;temp=DSY_CODENum;/串行輸入74HC595for(i=0;i8;i+)temp=4)displayMode=0;/設(shè)置模式下,時(shí)分轉(zhuǎn)換鍵作用if(Switch=0&(displayMode=SETTING_C|displayMode=SETTING_N)delaykey();if(Switch=0)currentSelect=!currentSelect;/設(shè)置模式下,數(shù)值增加鍵作用if(Increase=0&displayMode=SETTING_C)delaykey();if(Increase=0)if(currentSe

溫馨提示

  • 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ù)覽,若沒有圖紙預(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)論