


版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、GuangDongPolytechnicNorrnalUnrversit單片機(jī)原理及應(yīng)用綜合實(shí)訓(xùn)報(bào)告題目:電子時(shí)鐘的設(shè)計(jì)院另U:自動化學(xué)院專業(yè):電氣工程及其自動化1姓名:笑嘻嘻學(xué)號:2009104143036指導(dǎo)教師:祁偉答辯日期:2011年9月19日電子時(shí)鐘制作摘要本實(shí)訓(xùn)借用實(shí)驗(yàn)板的MCS-51單片機(jī)定時(shí)、中斷功能完成電子時(shí)鐘的定時(shí)工作,應(yīng)用8051對單片機(jī)I/O口驅(qū)動發(fā)光二極管、LED進(jìn)行電子時(shí)鐘時(shí)、分、秒顯示。應(yīng)用8051P3口、8255B口完成時(shí)間的設(shè)定工作。利用P1口加入華彩設(shè)計(jì),如發(fā)光二極管按鍵指示、時(shí)鐘報(bào)時(shí)等。再根據(jù)電子時(shí)鐘實(shí)際應(yīng)用完成系統(tǒng)總體設(shè)計(jì)。,根據(jù)系統(tǒng)總體設(shè)計(jì)完成編程設(shè)計(jì)
2、工作,最后通電、軟件調(diào)試、運(yùn)行。關(guān)鍵詞:電子時(shí)鐘;8051;8051P3;8255B目錄1電子時(shí)鐘的概述12電子時(shí)鐘的硬件電路設(shè)計(jì)12.1選用單片機(jī)12.2發(fā)光二極管8字?jǐn)?shù)碼管的顯示22.3單片機(jī)I/O口擴(kuò)展42.4獨(dú)立式按鍵43電子時(shí)鐘軟件設(shè)計(jì)部分53.1程序流程圖63.2定時(shí)中斷服務(wù)程序流程圖73.3擴(kuò)展功能程序流程84電子時(shí)鐘實(shí)用說明84心得體會95附錄10程序代碼101電子時(shí)鐘的概述電子時(shí)鐘功用,能利用MCS-51單片機(jī)定時(shí)、中斷功能完成時(shí)間的定時(shí)工作。整個(gè)系統(tǒng)具有參數(shù)設(shè)定、時(shí)間運(yùn)行、報(bào)時(shí)、查詢當(dāng)前年、月、日等功能。開機(jī)可顯示HELLO-按某個(gè)特定的按鍵后,時(shí)鐘還可以開始計(jì)時(shí),還可以通
3、過另一些鍵功能,完成分,時(shí)、日、月、年參數(shù)設(shè)定。參數(shù)設(shè)定完后,也可以通過一些鍵繼續(xù)計(jì)時(shí)。電子時(shí)鐘常顯示的是當(dāng)前的時(shí)問,年、月、日還可以通過按幾個(gè)特定的鍵切換、查詢,6位LED顯示查詢的內(nèi)容,如現(xiàn)在的年月日。注意事項(xiàng):時(shí)鐘計(jì)時(shí)時(shí)可進(jìn)行時(shí)間查詢,但不能更改參數(shù),若要更改參數(shù),必須先停止時(shí)鐘運(yùn)行。2電子時(shí)鐘的碩件電路設(shè)計(jì)2.1選用單片機(jī)MCS-51系統(tǒng)選用8051單片機(jī),如圖1所示。8051單片機(jī)內(nèi)有4KROM256字節(jié)RAM程序存放在4KROM8051單片機(jī)最小系統(tǒng)組成有:1) 時(shí)鐘電路:工作時(shí)鐘;2) 復(fù)位電路,如圖2所示;3) RAM數(shù)據(jù)存儲4) ROM程序存儲5)I/O接口:與外界交互晶振電
4、路如圖3所示Pl12Pl23Pl34Pl.15Pl.56Plh7Pl78P3.3P以12gP3.515P3.I11EAJIXI19X218RST9RD17口WRPloT10POOP11P01P12P02T13P03P14P04P15P05F16POfiF17POTINT1Pit)LN'IOP21P22TlP23TOP24P25XIX2NESEIHXDTXDALEPWRPSENU1圖1翳PO137PQ.236P0335Pl134PO5J3PQ631P0.721Pi.O22P21P2224P2325P2.126P2.527P26P2.710RXD11TXDJOVLE*PSENPOOJ9圖2
5、2.2發(fā)光二極管8字?jǐn)?shù)碼管的顯示LED顯示有靜態(tài)顯示和動態(tài)顯示兩種方式。動態(tài)顯示接口電路簡圖如圖4所示。將各位數(shù)碼管的段并聯(lián)接在一起,由P1口控制(字型口),每一個(gè)數(shù)碼管的共陰極(共陽極)接到P2.0、P2.1作為位選信號。雖說要顯示的字型碼通過P1口同時(shí)送到了每一個(gè)數(shù)碼管,但它們不會同時(shí)顯示同一個(gè)字符,只有控制共陰極(共陽極)的位選信號有效時(shí),對應(yīng)的數(shù)碼管才會顯示相應(yīng)字符。這種由字型口控制要顯示字符的字形碼,依此循環(huán)選通每位數(shù)碼管的位選信號就得到了動態(tài)顯示效果。它主要是利用人眼的視覺暫留特性及數(shù)碼管得余光特性,看上去似乎是多位數(shù)碼管同時(shí)顯示。是當(dāng)顯示位數(shù)較多時(shí),節(jié)省硬件,接口電路簡單,但顯示
6、占用CPLM問。靜態(tài)顯示占用CPU時(shí)間短,顯示簡單、穩(wěn)定,但當(dāng)顯示位數(shù)較多時(shí),占用接口資源多。動態(tài)顯示接口電路較簡單,但占用CPU時(shí)間,顯小是度較靜態(tài)顯示差,一般說,顯示位數(shù)較多時(shí),采用動態(tài)或申并轉(zhuǎn)換;顯示位數(shù)較少時(shí),采用靜態(tài)顯示方式靜態(tài)顯示接口電路如圖5所示選用共陰極LER將共陰極點(diǎn)連接在一起接地,每一位的段選線與一個(gè)8位并行口相連,只要將要顯示的字符的字型碼送至并行口鎖存,LED顯示器上便立即顯示出該字符,直到CPlg來一個(gè)新的字型碼為止,由于靜態(tài)顯示每位數(shù)碼管均有獨(dú)立的段選碼,耗電量大,硬件多。如要外接6個(gè)數(shù)碼管,則需要6個(gè)8位并行口。2.3單片機(jī)I/O口擴(kuò)展當(dāng)單片機(jī)構(gòu)成系統(tǒng)時(shí),常常I/
7、O口不夠用,此時(shí)可利用MCS51的擴(kuò)展能力,根據(jù)需要擴(kuò)展相應(yīng)接口,如可編程接口芯片8255與MCS51單片機(jī)連接可擴(kuò)展I/O;利用MCS-5仰片機(jī)的申行口擴(kuò)展并行I/O接口。實(shí)驗(yàn)板原理圖的顯示部分就是利用申入/并出技術(shù)實(shí)現(xiàn)2位數(shù)碼管的顯示。2.4獨(dú)立式按鍵鍵盤是一組按鈕式開關(guān)的集合,常采用軟件來識別。鍵盤的操作步驟: 識鍵。判斷是否有鍵按下(鍵入),若有,則需進(jìn)一步譯鍵。 譯鍵。在有鍵入的情況下,進(jìn)一步識別是哪一個(gè)鍵,以便作進(jìn)一步處理。 鍵義分析。根據(jù)識別的結(jié)果,明確相應(yīng)的鍵義。如果是數(shù)字鍵,應(yīng)得出輸出的數(shù)值;如果是功能鍵,則應(yīng)知道具體的操作要求。鍵盤構(gòu)成: 獨(dú)立聯(lián)接式非編碼鍵盤。特點(diǎn):每個(gè)鍵
8、相互獨(dú)立,各自接通一條輸入數(shù)據(jù)線。鍵未按下時(shí),相應(yīng)的數(shù)據(jù)線處于高電平,即為“1”態(tài)。當(dāng)某鍵按下時(shí),該鍵所連之?dāng)?shù)據(jù)線接地,即為“0”態(tài)。 獨(dú)立聯(lián)接式編碼鍵盤。特點(diǎn):在鍵數(shù)較多時(shí),可采用獨(dú)立式編碼鍵盤,由4線-16線編碼電路進(jìn)行編碼。 矩陣聯(lián)接式非編碼。特點(diǎn):先使一行線接地,然后檢查列線。如果某條列線也是低電位,則可判別兩線相交處的某號鍵已按下。假如在掃描時(shí)沒有發(fā)現(xiàn)有列線為地電位,則說明此行中無鍵按下。那么可將下一行線接地,如此逐一掃描列線,直到查完最后一行為止。實(shí)驗(yàn)板中鍵盤電路設(shè)計(jì)可根據(jù)需要組合成獨(dú)立聯(lián)接式非編碼鍵盤及矩陣聯(lián)6碼圖一"編見所I廠11:1:|4O可1t1.11一L產(chǎn)3電子
9、時(shí)鐘軟件設(shè)計(jì)部分3.1程序流程圖編寫程序之前先繪制程序流程圖,理活思路,使之能簡明、直觀指示程序流向,且很容易由此編寫出具體的源程序。將程序以模塊方式分割成具有相應(yīng)功能的子程序。根據(jù)系統(tǒng)功能,合理安排主程序任務(wù),中斷服務(wù)程序任務(wù)。程序設(shè)計(jì)有兩個(gè)分支:參數(shù)設(shè)定及時(shí)鐘運(yùn)行。靜態(tài)參數(shù)設(shè)定時(shí),定時(shí)器關(guān)閉,只完成參數(shù)“加一鍵”的設(shè)定工作。時(shí)鐘運(yùn)行時(shí),啟動定時(shí)器開始計(jì)時(shí)。編寫程序時(shí),首先理活思路,即通過流程圖確定算法。時(shí)鐘運(yùn)行參數(shù)設(shè)定日查詢顯示月查詢顯示年查詢顯示開始各功能的初始顯示HELLO-P3.2鍵嗎?K12鍵嗎?K13鍵嗎?K14鍵嗎?K15鍵嗎?圖樣7主程序框圖主程序框圖如圖7所小在主程序中,分
10、別初始化了定時(shí)器0和外部中斷0。定時(shí)器0的中斷服務(wù)程序用丁實(shí)現(xiàn)時(shí)鐘運(yùn)行時(shí)的秒加1及進(jìn)位功能。外部中斷0的中斷服務(wù)程序使r=1。因此,當(dāng)開始運(yùn)行程序時(shí),r=0,數(shù)碼管顯示HELLO-當(dāng)P3.2按下時(shí),進(jìn)入外部中斷0中斷服務(wù)程序,使r=1,退出中斷服務(wù)程序后,時(shí)鐘開始運(yùn)行;在時(shí)鐘運(yùn)行過程中,如果分別按下K13K14K15可設(shè)置時(shí)間,查詢年、月、日3.2定時(shí)中斷服務(wù)程序流程圖定時(shí)中斷服務(wù)程序流程圖如圖8所示。圖1-7中斷敝芬程序框圖3.3擴(kuò)展功能程序流程擴(kuò)展功能程序流程如圖9所示。圖94電子時(shí)鐘實(shí)用說明1、開機(jī)時(shí),顯示HELLO-2、按下K16鍵,電子時(shí)鐘開始運(yùn)行,數(shù)碼管顯示時(shí)、分、秒。3、按下K1
11、3鍵,進(jìn)入時(shí)間參數(shù)設(shè)置,此時(shí)可再次通過K13鍵進(jìn)行年、月日、時(shí)分的切換,并通過K12、K14可分別對年、月、日、時(shí)、分'加1、減1,由此完成時(shí)間的設(shè)定。4、當(dāng)數(shù)碼管顯示時(shí)分秒,可通過K14K15查詢年、月、日。4心得體會在本次實(shí)驗(yàn)中重新復(fù)習(xí)了單片機(jī)實(shí)驗(yàn)的內(nèi)容,更加深了對程序和項(xiàng)目的訓(xùn)練。雖然開始的時(shí)候感覺比較,后來經(jīng)過多天的努力和溫習(xí),終于可以把以前半懂不懂的知識比較完整的拼湊在一起。這次實(shí)驗(yàn)程序的編寫和調(diào)試所花時(shí)間比較多,寫報(bào)告的用的時(shí)間比較少。對于這次實(shí)驗(yàn)的不足之處還是需要更深刻的檢討,希望以后更加努力。5附錄程序代碼/*/程序名shizhong.C/功能描述:電子時(shí)鐘/硬件電路參
12、看實(shí)驗(yàn)板/*/#include<reg51.h>#include<ABSACC.H>#defineucharunsignedchar#defineuintunsignedint#defineCOM8255XBYTE0xffff#definePA8255XBYTE0Xfffc#definePB8255XBYTE0Xfffd#definePC8255XBYTE0Xfffe#defineOSC_FREQ12000000/12Mhz#defineC1ms(65536-OSC_FREQ/(12000000/980)/1ms定時(shí)sbitP1_4=P1A4;sbitP1_5=P1A5
13、;sbitP1_6=P1A6;sbitP1_7=P1A7;sbitP2_0=P2A0;sbitP2_1=P2A1;sbitP2_2=P2A2;sbitP2_3=P2A3;sbitP2_4=P2A4;sbitP2_5=P2A5;sbitP2_6=P2A6;sbitP2_7=P2A7;/位選控制/數(shù)碼管段碼控制a/數(shù)碼管段碼控制dpsbitP3_2=P3A2;/中斷、返回計(jì)時(shí)sbites=P2A4;/更新靜態(tài)顯示sbitP1_2=P1A2;sbitpi_i=piai;sbitP1_0=P1A0;/8255/8255/8255片選片選片選P12=0P1_1=1P10=0ucharcodehello=
14、(0x89,0x86,0xc7,0xc7,0xfc,0x02;/HELLO-ucharcodenumber1=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/動態(tài)顯示0-9ucharcodenumber2=0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6;/靜態(tài)顯示0-9ucharcodenumber3=0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10;/動態(tài)顯示0-9dp點(diǎn)亮uintyear=2011,month=9,day=3,hour=
15、15,minute=35,second=25;uintx,y,m,n,i=0,j=0,k=0,r=0;voidTimer_1ms(uint_1ms);voidSet_Init_Timer0();voidSet_Init_Xint0();voidSet_Init_8255();voiddis_hello();voiddis_year();voiddis_month();voiddis_day();voiddis_hour();voiddis_minute();voiddis_second();voidundis_second();voidset_timer();voiddis_year2();v
16、oiddis_day2();/延時(shí)1ms/定時(shí)器0初始化函數(shù)/外部中斷0初始化函數(shù)/8255初始化程序/開機(jī)顯示HELLO-/顯示年/不顯示秒/設(shè)置時(shí)間/在查詢狀態(tài)下顯示年/在查詢狀態(tài)下顯示日期voidmain()(Set_Init_Xint0();Set_Init_8255();Set_Init_Timer0();do(if(r=0)(dis_hello();elseEX0=0;/外部中斷0關(guān)中斷dis_hour();dis_minute();dis_second();Set_Init_8255();switch(PB8255)(case0xDF:set_timer();break;/PB=
17、0xDF,K13鍵按下切換到設(shè)置時(shí)間程序case0xBF:dis_day2();break;/PB=0xBF,K14鍵按下切換到顯示日期程序case0x7F:dis_year2();break;/PB=0x7F,K15鍵按下切換到顯示年的程序while(1);voidTimer_1ms(uint_1ms)/延時(shí)函數(shù)(TMOD=0x11;TR1=1;while(_1ms-)(TH1=C1ms/256;TL1=C1ms%256;while(!TF1);TF1=0;TR1=0;voidSet_Init_Timer0()(TMOD=0x11;TH0=0x3C;TL0=0xAF;ET0=1;TR0=1;
18、EA=1;/定時(shí)器0初始化函數(shù)/定時(shí)器0,方式一/裝入初值15535設(shè)成50ms定時(shí)器voidSet_Init_Xint0()(/外部中斷0初始化函數(shù)IT0=1;EX0=1;/外部中斷0,邊沿觸發(fā)方式/外部中斷0開中斷EX1=1;/打開總中斷/顯示HELLO-/位選/數(shù)碼管顯示Hvoiddis_hello()(P1=0x70;P2=hello0;Timer_1ms(5);P1=0xb0;P2=hello1;Timer_1ms(5);P1=0xd0;P2=hello2;Timer_1ms(5);P1=0xe0;P2=hello3;Timer_1ms(5);SCON=0x00;es=0;SBUF=
19、hello4;while(!TI)(TI=0;靜態(tài)顯示更新SBUF=hello5;while(!TI)(TI=0;es=1;/對year變量通過除法、取余運(yùn)算得到各位的數(shù)值,并送到對應(yīng)的數(shù)碼管上voiddis_year()(x=year/100;y=x%10;x=x/10;m=year%100;n=m%10;m=m/10;P1=0x70;P2=number1x;Timer_1ms(5);P1=0xb0;P2=number1y;Timer_1ms(5);P1=0xd0;/百位/千位/個(gè)位/十位P2=number1m;Timer_1ms(5);P1=0xe0;P2=number1n;Timer_1
20、ms(5);undis_second();/對month變量通過除法、取余運(yùn)算得到十位、個(gè)位的數(shù)值,并送到對應(yīng)的數(shù)碼管上voiddis_month()x=month/10;y=month%10;P1=0x70;P2=number1x;Timer_1ms(5);P1=0xb0;P2=number1y;Timer_1ms(5);/對day變量通過除法、取余運(yùn)算得到十位、個(gè)位的數(shù)值,并送到對應(yīng)的數(shù)碼管上voiddis_day()x=day/10;y=day%10;P1=0xd0;P2=number1x;Timer_1ms(5);P1=0xe0;P2=number1y;Timer_1ms(5);und
21、is_second();/對hour變量通過除法、取余運(yùn)算得到十位、個(gè)位的數(shù)值,并送到對應(yīng)的數(shù)碼管上voiddis_hour()x=hour/10;y=hour%10;P1=0x70;P2=number1x;Timer_1ms(5);P1=0xb0;P2=number3y;/Timer_1ms(5);對minute變量通過除法、取余運(yùn)算得到十位、個(gè)位的數(shù)值,并送到對應(yīng)的數(shù)碼管上voiddis_minute()(uintx,y;x=minute/10;y=minute%10;P1=0xd0;P2=number1x;Timer_1ms(5);P1=0xe0;P2=number1y;Timer_1m
22、s(5);/對second變量通過除法、取余運(yùn)算得到十位、個(gè)位的數(shù)值,并送到對應(yīng)的數(shù)碼管上voiddis_second()(x=second/10;y=second%10;SCON=0x00;es=0;SBUF=number2x;while(!TI)TI=0;SBUF=number2y;while(!TI)TI=0;es=1;/將0x00送到顯示秒的數(shù)碼管上,讓這兩個(gè)數(shù)碼管不顯示voidundis_second()SCON=0x00;es=0;SBUF=0x00;while(!TI)TI=0;SBUF=0x00;while(!TI)TI=0;es=1;/時(shí)間設(shè)置函數(shù),K12對變量加1K13實(shí)現(xiàn)
23、變量切換(使用goto語句)K14對變量減1voidset_timer()TR0=0;/關(guān)閉定時(shí)器0dofor(i=0;i<=5;i+)(dis_year();undis_second();Timer_1ms(5);Set_Init_8255();switch(PB8255)(case0xEF:year+;break;/PB=0xEF,K12鍵按下year加1case0xBF:year-;break;/PB=0xEF,K14鍵按下year減1case0xDF:gotomonth;break;/PB=0xDF,K13鍵按下切換到設(shè)置月程序while(1);month:do(if(month
24、=13)/判斷進(jìn)位(month=1;for(i=0;i<=5;i+)(dis_month();dis_day();undis_second();Set_Init_8255();switch(PB8255)(case0xEF:month+;break;/PB=0xEF,K12鍵按下month加1case0xBF:month-;break;/PB=0xEF,K14鍵按下month減1case0xDF:gotoday;break;/PB=0xDF,K13鍵按下切換到設(shè)置日程序while(1);day:do(if(day=31)/判斷進(jìn)位(day=1;for(i=0;i<=5;i+)(di
25、s_month();dis_day();undis_second();Set_Init_8255();switch(PB8255)(case0xEF:day+;break;/PB=0xEF,K12鍵按下day加1case0xBF:day-;break;/PB=0xEF,K14鍵按下day減1case0xDF:gotohour;break;/PB=0xDF,K13鍵按下,切換到設(shè)置時(shí)程序while(1);hour:do(if(hour=24)/判斷進(jìn)位(hour=0;for(i=0;i<=5;i+)(dis_hour();dis_minute();dis_second();Set_Init_8255();switch(PB8255)(case0xEF:hour+;break;/PB=0xEF,K12鍵按下hour加1case0xBF:hour-;break;/PB=0xEF,K14鍵按下hour減1case0xDF:gotominute;break;/PB=0xDF,K13鍵按下切換到設(shè)置分程序while(1);minute:do(minute=0;for(i=0;i<=5;i+)(di
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 板書比賽活動方案
- 月底購車活動方案
- 極速漂移活動方案
- 暑期青少年活動方案
- 曬基因活動方案
- 月子中心夏季活動方案
- 晾曬被褥活動方案
- 杭州公司踏青活動方案
- 李白演唱會活動策劃方案
- 柜臺銷售活動方案
- 跆拳道校本教材
- 自動控制原理(全套課件737P)
- 珊瑚海水鹽標(biāo)準(zhǔn)
- 柴油機(jī)電站操作員(技師)理論考試題庫及答案
- 混凝土地面施工方案
- 天津英華插班生考試卷五年級
- 工程材料與應(yīng)用完整版教學(xué)課件全書電子講義(最新)
- 消防工程擬投入主要施工設(shè)備機(jī)具表
- 橋梁工程支座智能化發(fā)展
- BIM技術(shù)在施工項(xiàng)目管理中的應(yīng)用
- 25公斤級平焊法蘭及螺栓規(guī)格尺寸
評論
0/150
提交評論