單片機(jī)電子時(shí)鐘設(shè)計(jì)畢業(yè)論文
《單片機(jī)電子時(shí)鐘設(shè)計(jì)畢業(yè)論文》由會員分享,可在線閱讀,更多相關(guān)《單片機(jī)電子時(shí)鐘設(shè)計(jì)畢業(yè)論文(15頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、 單片機(jī)電子時(shí)鐘設(shè)計(jì)畢業(yè)論文 一. 題目:單片機(jī)電子時(shí)鐘 二. 內(nèi)容: 設(shè)計(jì)一個(gè)數(shù)字時(shí)鐘,顯示范圍為00:00:00~23:59:59。通過幾個(gè)開關(guān)進(jìn)行控制,其中開關(guān)K1用于切換時(shí)間設(shè)置(調(diào)節(jié)時(shí)鐘)和時(shí)鐘運(yùn)行(正常運(yùn)行)狀態(tài);開關(guān)K2用于切換修改時(shí)、分、秒數(shù)值;開關(guān)K3用于使相應(yīng)數(shù)值加1調(diào)節(jié);開關(guān)K4用于減1調(diào)節(jié);開關(guān)K5用于設(shè)定鬧鐘,鬧鐘同樣可以設(shè)定初值,并且設(shè)定好后到時(shí)間通過實(shí)驗(yàn)箱音頻放出一段樂曲作為鬧鈴。 選做增加項(xiàng)目:還可增加秒表功能(精確到0.01s)或年月日設(shè)定功能。 一、設(shè)計(jì)要求 1、準(zhǔn)確計(jì)時(shí),
2、以數(shù)字形式顯示時(shí)、分、秒的時(shí)間。 2、小時(shí)以24小時(shí)計(jì)時(shí)形式,分秒計(jì)時(shí)為60進(jìn)位。 3、校正時(shí)間功能,即能隨意設(shè)定走時(shí)時(shí)間。 4、鬧鐘功能,一旦走時(shí)到該時(shí)間,能以聲或光的形式告警提示。 5、設(shè)計(jì)5V直流電源,系統(tǒng)時(shí)鐘電路、復(fù)位電路。 二、設(shè)計(jì)方案和論證 本次設(shè)計(jì)時(shí)鐘電路,使用了ATC89C51單片機(jī)芯片控制電路,單片機(jī)控制電路簡單且省去了很多復(fù)雜的線路,使得電路簡明易懂,使用鍵盤鍵上的按鍵來調(diào)整時(shí)鐘的時(shí)、分、秒,用一揚(yáng)聲器來進(jìn)行定時(shí)提醒,同時(shí)使用匯編語言程序來控制整個(gè)時(shí)鐘顯示,使得編程變得更容易,這樣通過四個(gè)模塊:鍵盤、芯片、揚(yáng)聲器、LED顯示即可滿足設(shè)計(jì)要求。 四. 電路及
3、功能說明: 電路圖如圖所示: 圖A 圖B 圖C 該數(shù)字鐘是用一片AT89C51A單片機(jī)通過編程去驅(qū)動(dòng)8個(gè)數(shù)碼管實(shí)現(xiàn)的。通過6個(gè)開關(guān)控制,從上到下6個(gè)開關(guān)KEY1~KEY6的功能分別為:KEY1,切換至秒表;KEY2,調(diào)節(jié)時(shí)間,每調(diào)一次時(shí)加1;KEY3, 調(diào)節(jié)時(shí)間,每調(diào)一次分加
4、1;KEY4,從其它狀態(tài)切換至?xí)r鐘狀態(tài);KEY5,切換至鬧鐘設(shè)置狀態(tài),也可以對秒表清零;KEY6,秒表暫停.控制鍵分別與P1.0~P1.5口連接.其中: A.通過P2口和P3口去控制數(shù)碼管的顯示如圖所示P2口接數(shù)碼管的a——g端,是控制輸出編碼,P3口接數(shù)碼管的1——8端,是控制動(dòng)態(tài)掃描輸出. B.從P0.0輸出一個(gè)信號使二極管發(fā)光,二極管在設(shè)置的鬧鐘時(shí)間到了時(shí)候發(fā)光,若有樂曲可以去驅(qū)動(dòng)揚(yáng)聲器實(shí)現(xiàn)。 (圖A是時(shí)鐘運(yùn)行狀態(tài),圖B是鬧鐘運(yùn)行狀態(tài),圖C是秒表運(yùn)行狀態(tài)) 功能說明: 1. 各個(gè)控制鍵的功能:可對時(shí)間進(jìn)行校準(zhǔn)調(diào)節(jié)(只能加1);按下設(shè)置鍵數(shù)字時(shí)鐘進(jìn)入鬧鐘設(shè)置狀態(tài),設(shè)置鬧鐘的時(shí)間;
5、時(shí)加1、分加1鍵是在校準(zhǔn)時(shí)間時(shí)或設(shè)置鬧鐘時(shí)間對小時(shí)數(shù)或分鐘數(shù)調(diào)節(jié)而設(shè)置的;按下秒切換鍵就可以進(jìn)入秒表模式,同時(shí)秒表也開始計(jì)時(shí),按下秒表暫停、復(fù)位鍵就暫停、歸零,如果要重新對秒計(jì)時(shí)則可以按秒表開始、復(fù)位;清零鍵可以對鬧鐘清零。 2. AT89C51單片機(jī),通過編寫程序?qū)?shù)碼顯示進(jìn)行控制。 3. 八個(gè)7段數(shù)碼管顯示時(shí)鐘和秒表信號。 三)硬件部分 1、STC89C51單片機(jī)介紹 STC89C51單片機(jī)是由深圳宏晶公司代理銷售的一款MCU,是由美國設(shè)計(jì)生產(chǎn)的一種低電壓、高性能CMOS 8位單片機(jī),片內(nèi)含8kbytes的可反復(fù)寫的FlashROM和128bytes的RAM,2個(gè)16位定時(shí)計(jì)數(shù)
6、器[5]。 STC89C51單片機(jī)內(nèi)部主要包括累加器ACC(有時(shí)也簡稱為A)、程序狀態(tài)字PSW、地址指示器DPTR、只讀存儲器ROM、隨機(jī)存取存儲器RAM、寄存器、并行I/O接口P0~P3、定時(shí)器/計(jì)數(shù)器、串行I/O接口以及定時(shí)控制邏輯電路等。這些部件通過內(nèi)部總線聯(lián)接起來,構(gòu)成一個(gè)完整的微型計(jì)算機(jī)。其管腳圖如圖所示。 STC89C51單片機(jī)管腳結(jié)構(gòu)圖 VCC:電源。 GND:接地。 P0口:P0口為一個(gè)8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程 序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH
7、編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。 P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作 輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。 P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻 拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上
8、拉的緣故。P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存 儲器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進(jìn)行讀寫時(shí),P2口輸出其特殊功能寄存器 的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號和控制信號。 P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。 P3口也可作為AT89C51的一些特殊功能口,如下表所示: 口管腳 備選功能 P3.0 RX
9、D(串行輸入口) P3.1 TXD(串行輸出口) P3.2 /INT0(外部中斷0) P3.3 /INT1(外部中斷1) P3.4 T0(記時(shí)器0外部輸入) P3.5 T1(記時(shí)器1外部輸入) P3.6 /WR(外部數(shù)據(jù)存儲器寫選通) P3.7 /RD(外部數(shù)據(jù)存儲器讀選通) P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號。 RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。 ALE/PROG:當(dāng)訪問外部存儲器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE 端以不變的頻率周期輸出正脈
10、沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器 時(shí),將跳過一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí), ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。 PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時(shí),這兩次有效的/PSEN信號將不出現(xiàn)。 EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(0000H-FFFFH),不管是否有內(nèi)部
11、程序存儲器。注意加密方式1時(shí), /EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。 2、上電按鈕復(fù)位電路 本設(shè)計(jì)采用上電按鈕復(fù)位電路:首先經(jīng)過上電復(fù)位,當(dāng)按下按鍵時(shí),RST直接與VCC相連,為高電平形成復(fù)位,同時(shí)電解電容被電路放電;按鍵松開時(shí),VCC對電容充電,充電電流在電阻上,RST依然為高電平,仍然是復(fù)位,充電完成后,電容相當(dāng)于開路,RST為低電平,單片機(jī)芯片正常工作。其中電阻R2決定了電容充電的時(shí)間,R2越大則充電時(shí)間長,復(fù)位信號從VCC回落到0V的時(shí)間也長。 3、晶振電路 本設(shè)計(jì)晶
12、振電路采用12M的晶振。晶振的作用是給單片機(jī)正常工作提供穩(wěn)定的時(shí)鐘信號。單片機(jī)的晶振并不是只能用12M,只要不超過20M就行,在準(zhǔn)許的范圍內(nèi),晶振越大,單片機(jī)運(yùn)行越快,還有用12M的就是好算時(shí)間,因?yàn)橐粋€(gè)機(jī)器周期為1/12時(shí)鐘周期,所以這樣用12M的話,一個(gè)時(shí)鐘周期為12us,那么定時(shí)器計(jì)一次數(shù)就是1us了,電容范圍在20-40pF之間,這里連接的是30pF的電容。 機(jī)器周期=10*晶振周期=12*系統(tǒng)時(shí)鐘周期 4.下載端口 設(shè)計(jì)用到的STC89C52單片機(jī)芯片的ISP下載線是通過單片機(jī)的TXD,RXD引腳把程序燒進(jìn)去的。管腳TXD和RXD用于異步串行通信。其實(shí)STC89C52單片機(jī)
13、的ISP下載線就是一個(gè)max232芯片連接STC和計(jì)算機(jī)的串行通信口。計(jì)算機(jī)把程序從九針串口送到max232芯片,電平轉(zhuǎn)換后送進(jìn)單片機(jī)的串行口,也就是TXD和RXD。然后單片機(jī)的串行模塊把數(shù)據(jù)送到程序區(qū)。2. 中斷程序流程圖
1. 秒表中斷程序流程圖:
2. 按鍵程序流程圖:
第一圖為時(shí)鐘和鬧鐘的調(diào)節(jié).
第二圖為進(jìn)入中斷和清零
七. 程序清單:
#include
14、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,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 char code SEG7[11]={0xC0,/*0*/
15、 0xF9,/*1*/ 0xA4,/*2*/ 0xB0,/*3*/ 0x99,/*4*/ 0x92,/*5*/ 0x82,/*6*/ 0xF8,/*7*/
16、 0x80,/*8*/ 0x90,/*9*/ 0xBF,/*-*/ }; sbit miaobiao1=P1^0; sbit tminute=P1^1; sbit thour=P1^2; sbit miaobiao2=P1^3; sbit alarm=P1^4; sbit P0_0=P0^0; sbit P1_5=P1^5; sbit P1_6=P1^6; sbit P1_7=P1^7; uchar ms=0; uch
17、ar flag=0; uchar sec=0; uchar minit=0; struct time{uchar 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) { dat1[6]++;d
18、elay(180); if(dat1[6]>9) { dat1[6]=0;dat1[7]++; if(dat1[7]>2) { dat1[7]=0; } } } if(flag==1) { alarms[6]++;delay(200); if(alarms[6]>9) { alarms[6]=0;alarms[7]++; if(alarms[7]>2) { alarms[7]=0; } } dat[
19、6]=alarms[6]; dat[7]=alarms[7]; } } if(tminute==0) { if(flag==0) { dat1[3]++;delay(180); if(dat[3]>=10) { dat1[4]++;dat1[3]=0; if(dat1[4]>5) { dat1[4]=0; } } } if(flag==1) { alarms[3]++; delay(200); if(alarms[3]>
20、9) { alarms[4]++;alarms[3]=0; if(alarms[4]>5) { alarms[4]=0; } } dat[3]=alarms[3]; dat[4]=alarms[4]; } } if(miaobiao1==0) { TR0=0;ET0=0;TR1=1;ET1=1; } if(miaobiao2==0) { TR0=1;ET0=1;TR1=0;ET1=0; dat2[0]=0;
21、 dat2[1]=0; dat2[3]=0; dat2[4]=0; dat2[6]=0; dat2[7]=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; dat[0]=0; dat[1]=0; dat[2]=10; dat[3]=0; dat[4
22、]=0; dat[5]=10; dat[6]=0; dat[7]=0; } EA=1; } void init(void) { TMOD = 0x11; TH0 = 0xDB; TL0 =0xFF; TH1=0xDB; TL1=0xFF; ET0 = 1; //10ms ET1=1; // TR1=1; TR0=1; tcount=0; ms=0; sec=0; minit=0; EA = 1; } void test(void)
23、 { for(k=0;k<8;k++) { P3=dis_bit[k];P2=SEG7[dat[k]]; delay(1);P3=0X00; } } void main() { init(); delay(10); while(1) { modify(); test(); } } void diplay() interrupt 1 { ET0=0; TR0=0; TH
24、0 = 0xDB; TL0 = 0xff; TR0=1; tcount++; if(tcount==100) { time1.second++; tcount=0; dat1[0]=(time1.second)%10; dat1[1]=(time1.second)/10; } if(time1.second==60) { time1.second=0; time1.minute++; dat1[3]=(time1.minute)%10; dat1[4]=(time
25、1.minute)/10; } if(time1.minute==60) { time1.minute=0; time1.hour++; dat1[6]=time1.hour%10; dat1[7]=time1.hour/10; } if(time1.hour>23) { time1.hour=0; } dat[5]=10; dat[2]=10; dat[0]=dat1[0]; dat[1]=dat1[1]; dat[3]=dat1[3];
26、 dat[4]=dat1[4]; dat[6]=dat1[6]; dat[7]=dat1[7]; flag=0; P0=0x00; if((alarms[7]==dat1[7])&&(alarms[6]==dat1[6])&&(alarms[4]==dat1[4])&&(alarms[3]==dat1[3])) { P0=0x01; } ET0=1; } void time_2(void)interrupt 3 { EA=0; TR0=0; TH1=0xDB; TL
27、1=0xFF; TR1=1; ms++; dat2[0]=ms%10; dat2[1]=ms/10; if(ms>=100) { ms=0; sec++; dat2[3]=sec%10; dat2[4]=sec/10; if(sec>=60) { sec=0; minit++; dat2[6]=minit%10; dat2[7]=minit/10; } } dat[5
28、]=10; dat[2]=10; dat[0]=dat2[0]; dat[1]=dat2[1]; dat[3]=dat2[3]; dat[4]=dat2[4]; dat[6]=dat2[6]; dat[7]=dat2[7]; EA=1; 八,設(shè)計(jì)總結(jié) 做了兩周的課程設(shè)計(jì),有很多的心得體會,有關(guān)于單片機(jī)的,也有關(guān)于模電數(shù)電等基礎(chǔ)科目的。 單片機(jī)理論的學(xué)習(xí)是為課程的設(shè)計(jì)作準(zhǔn)備的,但有時(shí)學(xué)習(xí)的理論也解決不了實(shí)踐中的問題。實(shí)踐中獲得的知識能讓我對單片機(jī)的知識有更好的認(rèn)識和理解。雖然這次的課程設(shè)計(jì)我參考了一些文獻(xiàn)資料,沒有做到創(chuàng)新,但在對程序的讀寫過程中我明白了許多。這次課程設(shè)計(jì)的最大收獲是只有把理論用到實(shí)踐中我們才能真正掌握好所學(xué)知識。 九、參考文獻(xiàn) [1] 謝自美.電子線路設(shè)計(jì)實(shí)驗(yàn)測試[M].武漢:華中理工大學(xué)出版社,1992. [2] 何立民.單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,1993. [3] 樓然笛.單片機(jī)開發(fā)[M].北京:人民郵電出版社,1994. [4] 付家才.單片機(jī)控制工程實(shí)踐技術(shù)[M].北京:化學(xué)工業(yè)出版社 2004.3. [5] 李光才.單片機(jī)課程設(shè)計(jì)實(shí)例指導(dǎo)[M].北京:北京航空航天大學(xué)出版社 2004.
- 溫馨提示:
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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025《增值稅法》高質(zhì)量發(fā)展的增值稅制度規(guī)范增值稅的征收和繳納
- 深入學(xué)習(xí)《中華人民共和國科學(xué)技術(shù)普及法》推進(jìn)實(shí)現(xiàn)高水平科技自立自強(qiáng)推動(dòng)經(jīng)濟(jì)發(fā)展和社會進(jìn)步
- 激揚(yáng)正氣淬煉本色踐行使命廉潔從政黨課
- 加強(qiáng)廉潔文化建設(shè)夯實(shí)廉政思想根基培育風(fēng)清氣正的政治生態(tài)
- 深入學(xué)習(xí)2024《突發(fā)事件應(yīng)對法》全文提高突發(fā)事件預(yù)防和應(yīng)對能力規(guī)范突發(fā)事件應(yīng)對活動(dòng)保護(hù)人民生命財(cái)產(chǎn)安全
- 2023年四年級數(shù)學(xué)上冊第一輪單元滾動(dòng)復(fù)習(xí)第10天平行四邊形和梯形作業(yè)課件新人教版
- 2023年四年級數(shù)學(xué)上冊第14單元階段性綜合復(fù)習(xí)作業(yè)課件新人教版
- 2023年四年級數(shù)學(xué)上冊易錯(cuò)清單十五課件新人教版
- 2023年四年級數(shù)學(xué)上冊易錯(cuò)清單七課件西師大版
- 2023年五年級數(shù)學(xué)下冊易錯(cuò)清單六作業(yè)課件北師大版
- 2023年五年級數(shù)學(xué)下冊易錯(cuò)清單二作業(yè)課件北師大版
- 2023年五年級數(shù)學(xué)下冊四分?jǐn)?shù)的意義和性質(zhì)第10課時(shí)異分母分?jǐn)?shù)的大小比較作業(yè)課件蘇教版
- 2023年五年級數(shù)學(xué)下冊周周練四作業(yè)課件北師大版
- 2023年五年級數(shù)學(xué)下冊六折線統(tǒng)計(jì)圖單元復(fù)習(xí)卡作業(yè)課件西師大版
- 2023年四年級數(shù)學(xué)上冊6除數(shù)是兩位數(shù)的除法單元易錯(cuò)集錦一作業(yè)課件新人教版