


版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、GuangDongPolytechnicNorrnalUnrversit單片機原理及應(yīng)用綜合實訓(xùn)報告題目:電子時鐘的設(shè)計院另U:自動化學(xué)院專業(yè):電氣工程及其自動化1姓名:笑嘻嘻學(xué)號:2009104143036指導(dǎo)教師:祁偉答辯日期:2011年9月19日電子時鐘制作摘要本實訓(xùn)借用實驗板的MCS-51單片機定時、中斷功能完成電子時鐘的定時工作,應(yīng)用8051對單片機I/O口驅(qū)動發(fā)光二極管、LED進行電子時鐘時、分、秒顯示。應(yīng)用8051P3口、8255B口完成時間的設(shè)定工作。利用P1口加入華彩設(shè)計,如發(fā)光二極管按鍵指示、時鐘報時等。再根據(jù)電子時鐘實際應(yīng)用完成系統(tǒng)總體設(shè)計。,根據(jù)系統(tǒng)總體設(shè)計完成編程設(shè)計
2、工作,最后通電、軟件調(diào)試、運行。關(guān)鍵詞:電子時鐘;8051;8051P3;8255B目錄1電子時鐘的概述12電子時鐘的硬件電路設(shè)計12.1選用單片機12.2發(fā)光二極管8字數(shù)碼管的顯示22.3單片機I/O口擴展42.4獨立式按鍵43電子時鐘軟件設(shè)計部分53.1程序流程圖63.2定時中斷服務(wù)程序流程圖73.3擴展功能程序流程84電子時鐘實用說明84心得體會95附錄10程序代碼101電子時鐘的概述電子時鐘功用,能利用MCS-51單片機定時、中斷功能完成時間的定時工作。整個系統(tǒng)具有參數(shù)設(shè)定、時間運行、報時、查詢當前年、月、日等功能。開機可顯示HELLO-按某個特定的按鍵后,時鐘還可以開始計時,還可以通
3、過另一些鍵功能,完成分,時、日、月、年參數(shù)設(shè)定。參數(shù)設(shè)定完后,也可以通過一些鍵繼續(xù)計時。電子時鐘常顯示的是當前的時問,年、月、日還可以通過按幾個特定的鍵切換、查詢,6位LED顯示查詢的內(nèi)容,如現(xiàn)在的年月日。注意事項:時鐘計時時可進行時間查詢,但不能更改參數(shù),若要更改參數(shù),必須先停止時鐘運行。2電子時鐘的碩件電路設(shè)計2.1選用單片機MCS-51系統(tǒng)選用8051單片機,如圖1所示。8051單片機內(nèi)有4KROM256字節(jié)RAM程序存放在4KROM8051單片機最小系統(tǒng)組成有:1) 時鐘電路:工作時鐘;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字數(shù)碼管的顯示LED顯示有靜態(tài)顯示和動態(tài)顯示兩種方式。動態(tài)顯示接口電路簡圖如圖4所示。將各位數(shù)碼管的段并聯(lián)接在一起,由P1口控制(字型口),每一個數(shù)碼管的共陰極(共陽極)接到P2.0、P2.1作為位選信號。雖說要顯示的字型碼通過P1口同時送到了每一個數(shù)碼管,但它們不會同時顯示同一個字符,只有控制共陰極(共陽極)的位選信號有效時,對應(yīng)的數(shù)碼管才會顯示相應(yīng)字符。這種由字型口控制要顯示字符的字形碼,依此循環(huán)選通每位數(shù)碼管的位選信號就得到了動態(tài)顯示效果。它主要是利用人眼的視覺暫留特性及數(shù)碼管得余光特性,看上去似乎是多位數(shù)碼管同時顯示。是當顯示位數(shù)較多時,節(jié)省硬件,接口電路簡單,但顯示
6、占用CPLM問。靜態(tài)顯示占用CPU時間短,顯示簡單、穩(wěn)定,但當顯示位數(shù)較多時,占用接口資源多。動態(tài)顯示接口電路較簡單,但占用CPU時間,顯小是度較靜態(tài)顯示差,一般說,顯示位數(shù)較多時,采用動態(tài)或申并轉(zhuǎn)換;顯示位數(shù)較少時,采用靜態(tài)顯示方式靜態(tài)顯示接口電路如圖5所示選用共陰極LER將共陰極點連接在一起接地,每一位的段選線與一個8位并行口相連,只要將要顯示的字符的字型碼送至并行口鎖存,LED顯示器上便立即顯示出該字符,直到CPlg來一個新的字型碼為止,由于靜態(tài)顯示每位數(shù)碼管均有獨立的段選碼,耗電量大,硬件多。如要外接6個數(shù)碼管,則需要6個8位并行口。2.3單片機I/O口擴展當單片機構(gòu)成系統(tǒng)時,常常I/
7、O口不夠用,此時可利用MCS51的擴展能力,根據(jù)需要擴展相應(yīng)接口,如可編程接口芯片8255與MCS51單片機連接可擴展I/O;利用MCS-5仰片機的申行口擴展并行I/O接口。實驗板原理圖的顯示部分就是利用申入/并出技術(shù)實現(xiàn)2位數(shù)碼管的顯示。2.4獨立式按鍵鍵盤是一組按鈕式開關(guān)的集合,常采用軟件來識別。鍵盤的操作步驟: 識鍵。判斷是否有鍵按下(鍵入),若有,則需進一步譯鍵。 譯鍵。在有鍵入的情況下,進一步識別是哪一個鍵,以便作進一步處理。 鍵義分析。根據(jù)識別的結(jié)果,明確相應(yīng)的鍵義。如果是數(shù)字鍵,應(yīng)得出輸出的數(shù)值;如果是功能鍵,則應(yīng)知道具體的操作要求。鍵盤構(gòu)成: 獨立聯(lián)接式非編碼鍵盤。特點:每個鍵
8、相互獨立,各自接通一條輸入數(shù)據(jù)線。鍵未按下時,相應(yīng)的數(shù)據(jù)線處于高電平,即為“1”態(tài)。當某鍵按下時,該鍵所連之數(shù)據(jù)線接地,即為“0”態(tài)。 獨立聯(lián)接式編碼鍵盤。特點:在鍵數(shù)較多時,可采用獨立式編碼鍵盤,由4線-16線編碼電路進行編碼。 矩陣聯(lián)接式非編碼。特點:先使一行線接地,然后檢查列線。如果某條列線也是低電位,則可判別兩線相交處的某號鍵已按下。假如在掃描時沒有發(fā)現(xiàn)有列線為地電位,則說明此行中無鍵按下。那么可將下一行線接地,如此逐一掃描列線,直到查完最后一行為止。實驗板中鍵盤電路設(shè)計可根據(jù)需要組合成獨立聯(lián)接式非編碼鍵盤及矩陣聯(lián)6碼圖一"編見所I廠11:1:|4O可1t1.11一L產(chǎn)3電子
9、時鐘軟件設(shè)計部分3.1程序流程圖編寫程序之前先繪制程序流程圖,理活思路,使之能簡明、直觀指示程序流向,且很容易由此編寫出具體的源程序。將程序以模塊方式分割成具有相應(yīng)功能的子程序。根據(jù)系統(tǒng)功能,合理安排主程序任務(wù),中斷服務(wù)程序任務(wù)。程序設(shè)計有兩個分支:參數(shù)設(shè)定及時鐘運行。靜態(tài)參數(shù)設(shè)定時,定時器關(guān)閉,只完成參數(shù)“加一鍵”的設(shè)定工作。時鐘運行時,啟動定時器開始計時。編寫程序時,首先理活思路,即通過流程圖確定算法。時鐘運行參數(shù)設(shè)定日查詢顯示月查詢顯示年查詢顯示開始各功能的初始顯示HELLO-P3.2鍵嗎?K12鍵嗎?K13鍵嗎?K14鍵嗎?K15鍵嗎?圖樣7主程序框圖主程序框圖如圖7所小在主程序中,分
10、別初始化了定時器0和外部中斷0。定時器0的中斷服務(wù)程序用丁實現(xiàn)時鐘運行時的秒加1及進位功能。外部中斷0的中斷服務(wù)程序使r=1。因此,當開始運行程序時,r=0,數(shù)碼管顯示HELLO-當P3.2按下時,進入外部中斷0中斷服務(wù)程序,使r=1,退出中斷服務(wù)程序后,時鐘開始運行;在時鐘運行過程中,如果分別按下K13K14K15可設(shè)置時間,查詢年、月、日3.2定時中斷服務(wù)程序流程圖定時中斷服務(wù)程序流程圖如圖8所示。圖1-7中斷敝芬程序框圖3.3擴展功能程序流程擴展功能程序流程如圖9所示。圖94電子時鐘實用說明1、開機時,顯示HELLO-2、按下K16鍵,電子時鐘開始運行,數(shù)碼管顯示時、分、秒。3、按下K1
11、3鍵,進入時間參數(shù)設(shè)置,此時可再次通過K13鍵進行年、月日、時分的切換,并通過K12、K14可分別對年、月、日、時、分'加1、減1,由此完成時間的設(shè)定。4、當數(shù)碼管顯示時分秒,可通過K14K15查詢年、月、日。4心得體會在本次實驗中重新復(fù)習(xí)了單片機實驗的內(nèi)容,更加深了對程序和項目的訓(xùn)練。雖然開始的時候感覺比較,后來經(jīng)過多天的努力和溫習(xí),終于可以把以前半懂不懂的知識比較完整的拼湊在一起。這次實驗程序的編寫和調(diào)試所花時間比較多,寫報告的用的時間比較少。對于這次實驗的不足之處還是需要更深刻的檢討,希望以后更加努力。5附錄程序代碼/*/程序名shizhong.C/功能描述:電子時鐘/硬件電路參
12、看實驗板/*/#include<reg51.h>#include<ABSACC.H>#defineucharunsignedchar#defineuintunsignedint#defineCOM8255XBYTE0xffff#definePA8255XBYTE0Xfffc#definePB8255XBYTE0Xfffd#definePC8255XBYTE0Xfffe#defineOSC_FREQ12000000/12Mhz#defineC1ms(65536-OSC_FREQ/(12000000/980)/1ms定時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;/中斷、返回計時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點亮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();/延時1ms/定時器0初始化函數(shù)/外部中斷0初始化函數(shù)/8255初始化程序/開機顯示HELLO-/顯示年/不顯示秒/設(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è)置時間程序case0xBF:dis_day2();break;/PB=0xBF,K14鍵按下切換到顯示日期程序case0x7F:dis_year2();break;/PB=0x7F,K15鍵按下切換到顯示年的程序while(1);voidTimer_1ms(uint_1ms)/延時函數(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;/定時器0初始化函數(shù)/定時器0,方式一/裝入初值15535設(shè)成50ms定時器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變量通過除法、取余運算得到各位的數(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;/百位/千位/個位/十位P2=number1m;Timer_1ms(5);P1=0xe0;P2=number1n;Timer_1
20、ms(5);undis_second();/對month變量通過除法、取余運算得到十位、個位的數(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變量通過除法、取余運算得到十位、個位的數(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變量通過除法、取余運算得到十位、個位的數(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變量通過除法、取余運算得到十位、個位的數(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變量通過除法、取余運算得到十位、個位的數(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ù)碼管上,讓這兩個數(shù)碼管不顯示voidundis_second()SCON=0x00;es=0;SBUF=0x00;while(!TI)TI=0;SBUF=0x00;while(!TI)TI=0;es=1;/時間設(shè)置函數(shù),K12對變量加1K13實現(xiàn)
23、變量切換(使用goto語句)K14對變量減1voidset_timer()TR0=0;/關(guān)閉定時器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)/判斷進位(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)/判斷進位(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è)置時程序while(1);hour:do(if(hour=24)/判斷進位(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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年德語TestDaF口語模擬試卷:歷年真題與模擬測試
- 驕傲的玫瑰花400字作文8篇
- 個人信用狀況證明書及信用評級展示(5篇)
- 深海礦產(chǎn)資源勘探2025年技術(shù)專利布局與產(chǎn)業(yè)升級報告
- 2025年金融科技企業(yè)估值方法與投資策略研究報告:行業(yè)競爭與投資機遇
- 工業(yè)互聯(lián)網(wǎng)平臺漏洞掃描技術(shù)在工業(yè)互聯(lián)網(wǎng)平臺安全防護中的應(yīng)用效果評估報告
- 新能源汽車在城市綠化養(yǎng)護中的應(yīng)用實踐與效果評估報告
- 醫(yī)療行業(yè)人才培養(yǎng)體系現(xiàn)狀調(diào)研:2025年改革與創(chuàng)新方向研究報告
- 電商平臺內(nèi)容營銷與種草經(jīng)濟融合的市場前景洞察報告
- 2025-2030中國食用級深海魚油行業(yè)消費狀況與營銷前景預(yù)測報告
- 候診廳衛(wèi)生管理制度
- 超市導(dǎo)購人員管理制度
- 柱上斷路器培訓(xùn)
- 2024年4月自考00228環(huán)境與資源保護法學(xué)試題及答案
- 設(shè)備物資管理培訓(xùn)
- 汽車漆面保護膜維護考核試卷
- 2025年算力電力協(xié)同:思考與探索白皮書
- 公司事故隱患內(nèi)部報告獎勵制度
- 2025年醫(yī)聯(lián)體合作協(xié)議標準范本
- 2025年中考英語作文預(yù)測及滿分范文11篇
- 員工接觸勞務(wù)合同范例
評論
0/150
提交評論