版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
PAGE1-徐州工業(yè)職業(yè)技術(shù)學(xué)院單片機綜合實驗報告題目:多功能數(shù)字時鐘指導(dǎo)老師:張江偉班級:電子與電氣081學(xué)號:830702043姓名:王雯立時間:2009-11-摘要:隨著科學(xué)技術(shù)的發(fā)展,人類的計時工具也隨之發(fā)展,從日晷到水滴,從水滴到沙漏,從沙漏到機械鐘,從機械鐘再到電子鐘……通過前一階段的學(xué)習(xí),我們已經(jīng)學(xué)習(xí)了有關(guān)數(shù)碼管顯示的知識,為了鞏固并提升,本次設(shè)計一個數(shù)字時鐘。顯示范圍為00:00:00~23:59:59。并可以通過適當(dāng)?shù)姆椒@示年、月、日。顯示范圍為00—00—00~99—12—31。有方便的校時功能。對于8051單片機的I/O口僅有32個,本實驗采用若使單片機直接控制數(shù)碼管,僅能實現(xiàn)4位顯示。為了充分利用單片機的I/O口,我們可以使用動態(tài)顯示8位數(shù)碼管,通過較高頻率的動態(tài)掃描使數(shù)碼管依次點亮,利用人類的視覺暫留效應(yīng)實現(xiàn)8位顯示。也可以使用移位寄存器74HC595的級聯(lián)來實現(xiàn)串行輸入并行輸出,即實現(xiàn)數(shù)碼管的靜態(tài)顯示。從而為單片機節(jié)省引腳。為確保時間的準(zhǔn)確性,在程序中用定時器控制時間。關(guān)鍵字:數(shù)字鐘、切換開關(guān)、動態(tài)顯示、數(shù)碼管閃爍、定時器、靜態(tài)顯示內(nèi)容:一、用動態(tài)顯示數(shù)碼管實現(xiàn)時間顯示1、實驗電路設(shè)計根據(jù)設(shè)計要求,用Protues繪出如下電路圖:如圖所示:四個按鈕由上至下分別表示K1,K2,K3,K4。2、根據(jù)電路功能畫出主函數(shù)流程圖開始開始定義變量、定義數(shù)組,編寫子函數(shù),設(shè)置定時器工作方式標(biāo)志位置1按鍵K1按下且標(biāo)志位為一按鈕松開且標(biāo)志位為0按鈕仍處按下標(biāo)志位置0,閃爍位變量fun加1,且在0~3內(nèi)循環(huán)延時消抖標(biāo)志位置0,顯示類別class取反NNNNYYY按鍵K1按下且標(biāo)志位為一按鈕仍處按下延時消抖YY標(biāo)志位置1按鈕松開且標(biāo)志位為0NY按鍵K3按下且標(biāo)志位為一按鈕仍處按下延時消抖標(biāo)志位置0,NYYN閃爍位變量fun為1若顯示類別class為0則秒變量加1,否則天變量加1閃爍位變量fun為2閃爍位變量fun為3若顯示類別class為0則分變量加1,否則月變量加1若顯示類別class為0則時變量加1,否則年變量加1標(biāo)志位置1按鈕松開且標(biāo)志位為0Y語句基本同K3,僅變量減1按鍵K3按下且標(biāo)志位為一Y標(biāo)志位置1按鈕松開且標(biāo)志位為0Y控制信號flash為0且閃爍變量fun不為0若顯示類別class為0顯示緩存賦時、分、秒值,類別指示口P2_0低電平,否則顯示緩存賦年、月、日值,類別指示口P2_0高電平Y(jié)若閃爍位變量fun為1若閃爍位變量fun為2若閃爍位變量fun為3左邊兩位閃爍左邊兩位閃爍中間兩位閃爍NNYYYNYYYYYNNNNNNN開關(guān)K1用于切換時分秒顯示/年月日顯示;開關(guān)K2用于切換時間設(shè)置(調(diào)節(jié)時鐘)狀態(tài);開關(guān)K3用于在調(diào)節(jié)時鐘狀態(tài)下增加時、分、秒/年、月、日數(shù)值;開關(guān)K4用于在調(diào)節(jié)時鐘狀態(tài)下減小時、分、秒/年、月、日數(shù)值;D1點亮表示時分秒顯示輸出,D2點亮表示年月日顯示輸出。單片機P0口用于對7段數(shù)碼管的顯示,P3口用于數(shù)碼管的動態(tài)掃描。三極管用于對P3口輸出電流進行放大,以驅(qū)動數(shù)碼管。3、根據(jù)流程圖在keil中編寫并調(diào)試代碼#include<AT89X51.H>unsignedcharcodea[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};unsignedcharcodex[11]={0xc0,0xf9,0xa4,0xB0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};unsignedchardatadis[8];unsignedchardatamon[12]={31,28,31,30,31,30,31,31,30,31,30,31};unsignedcharsec=0,disp1,disp2;unsignedchars=0,m=0,h=12,year=10,month=1,day=1,d,fun=0;//閃爍循環(huán)變量sbitk1=P1^0;sbitk2=P1^3;sbitk3=P1^6;sbitk4=P1^7;bite1=1,e2=1,e3=1,e4=1,class=1;//顯示方式bitflash=0;//閃爍////////////////////////////////////////////////////////////////////////////子程序voiddelay(unsignedintx)/////////延時程序{unsignedchari;while(x--)for(i=0;i<125;i++){;}}///////////////////////////////////unsignedcharleap(unsignedcharyear)//判斷是否閏年并返回二月份的天數(shù){//閏年返回29,平年返回28if((year%4!=0)||(year%100==0&&year%400!=0))return28;elsereturn29;}//////////////////////////////////////////////////////////////////////////////主程序main(){TMOD=0x11;//工作方式TH0=(65536-50000)/256;TL0=(65536-50000)%256;TH1=(65536-5000)/256;TL1=(65536-5000)%256;IE=0x8a;//中斷允許PT0=1;//定時器0高優(yōu)先級 TR0=1;TR1=1; TF0=0;TF1=0;while(1){///////////////////////////////////////////////////按鈕響應(yīng)程序if(k1==0&&e1==1)////////////////////顯示時間、日期{delay(10);if(k1==0){class=~class;e1=0;}}if(k1==1&&e1==0){e1=1;}if(k2==0&&e2==1)///////////////////校時閃爍{delay(10);if(k2==0){e2=0;fun++;}}if(k2==1&&e2==0){e2=1;}if(fun>3)fun=0;if(k3==0&&e3==1)///////////////////加1{delay(10);if(k3==0){e3=0;if(fun==1){if(class==1)s++;elseday++;} if(fun==2){if(class==1)m++;elsemonth++;} if(fun==3){if(class==1)h++;elseyear++;}}}if(k3==1&&e3==0){e3=1;}if(k4==0&&e4==1)///////////////////減1{delay(10);if(k4==0){e4=0;if(fun==1){if(class==1)s--;elseday--;} if(fun==2){if(class==1)m--;elsemonth--;} if(fun==3){if(class==1)h--;elseyear--;}}}if(k4==1&&e4==0){e4=1;}//////////////////////////////////////////////////顯示數(shù)組賦值if(class==1)////顯示類別選擇{dis[0]=s%10;dis[1]=s/10;dis[2]=10;dis[3]=m%10;dis[4]=m/10;dis[5]=10;dis[6]=h%10;dis[7]=h/10;P2_0=0;}///////顯示類別指示燈else{dis[0]=day%10;dis[1]=day/10;dis[2]=10;dis[3]=month%10;dis[4]=month/10;dis[5]=10;dis[6]=year%10;dis[7]=year/10;P2_0=1;}if(flash==1&&fun!=0)///////////////////閃爍{if(fun==1){P3_7=0;P3_6=0;}elseif(fun==2){P3_4=0;P3_3=0;}elseif(fun==3){P3_1=0;P3_0=0;}}}}//////////////////////////////////////////////////////////////////////////主程序結(jié)束//////////////////////////////////定時器1服務(wù)程序(控制時間)voidtimer0(void)interrupt1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;sec++;//定時50ms,計20次為1秒if(sec>20){sec=0;s++;};/////////////////////時分秒計算if(s>59){s=0;m++;}if(m>59){m=0;h++;}if(h>23){h=0;day++;}/////////////////////年月日計算if(year>99){year=0;}if(month>12){month=1;year++;}if(month==2)d=leap(year);elsed=mon[month];if(day>d){day=1;month++;}}//////////////////////////////////定時器2服務(wù)程序(控制動態(tài)掃描)voidtimer1(void)interrupt3{staticcharxx=0,i=0;TH1=(65536-5000)/256;TL1=(65536-5000)%256;P3=a[i];///////////////////////動態(tài)掃描P0=x[dis[i]];i++;xx++;if(xx>60){xx=0;flash=~flash;}if(i>7){i=0;}}二、用移位寄存器74HC595實現(xiàn)靜態(tài)時間顯示1、實驗電路設(shè)計根據(jù)設(shè)計要求,用Protues繪出如下電路圖2、因?qū)崿F(xiàn)相同的功能,主程序流程圖相同。3、根據(jù)流程圖在keil中編寫并調(diào)試代碼#include<AT89X51.H>sbitsh595=P2^0;//74HC595引腳控制sbitds595=P2^1;sbitst595=P2^2;sbitclr595=P2^3;sbitoe1=P2^4;sbitoe2=P2^5;sbitoe3=P2^6;sbitk1=P1^0;//按鈕定義sbitk2=P1^1;sbitk3=P1^4;sbitk4=P1^7;bite1=1,e2=1,e3=1,e4=1,class=0;//顯示類別bitflash=0;//閃爍變量bitshuaxin=1;//顯示刷新允許chardis[6],x[10]={0xc0,0xf9,0xa4,0xB0,0x99,0x92,0x82,0xf8,0x80,0x90};unsignedchardatamon[12]={31,28,31,30,31,30,31,31,30,31,30,31};unsignedcharsec=0,j,tt;signedchars=0,m=0,h=12,year=9,month=11,day=1,d,fun=0;//閃爍循環(huán)變量///////////////////////////////////////////////////////////////////////////////////////////////////////////////子程序voiddisplay(unsignedchartemp)/////////////顯示子程序{unsignedchari,t;for(i=0;i<8;i++){t=temp&0x80;if(t==0)ds595=0;elseds595=1;sh595=0;//上升沿sh595=1;temp=temp<<1;}st595=0;//數(shù)據(jù)輸出st595=1;}voiddelay(unsignedintx)//////////////////延時程序{unsignedchari;while(x--)for(i=0;i<125;i++){;}}unsignedcharleap(unsignedcharyear)///////判斷是否閏年并返回二月份的天數(shù){//閏年返回29,平年返回28if((year%4!=0)||(year%100==0&&year%400!=0))return28;elsereturn29;}//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////主程序main(){TMOD=0x01;//工作方式TH0=(65536-50000)/256;TL0=(65536-50000)%256; ET0=1; EA=1; TR0=1; TF0=0;while(1){oe1=0;oe2=0;oe3=0;//輸出使能端置0,使輸出if(class==0)////顯示類別選擇{dis[0]=s%10;dis[1]=s/10;dis[2]=m%10;dis[3]=m/10;dis[4]=h%10;dis[5]=h/10;P2_7=0;}///////顯示類別指示燈else{dis[0]=day%10;dis[1]=day/10;dis[2]=month%10;dis[3]=month/10;dis[4]=year%10;dis[5]=year/10;P2_7=1;}///////////////////////////////////////////刷新顯示內(nèi)容if(shuaxin==1){shuaxin=0;for(j=0;j<6;j++){tt=dis[j];display(x[tt]);}}//////////////////////////////////////////////按鈕校時if(k1==0&&e1==1)/////顯示時間、日期{delay(10);if(k1==0){e1=0;class=~class;}}if(k1==1&&e1==0){e1=1;}if(k2==0&&e2==1)/////校時閃爍{delay(10);if(k2==0){e2=0;fun++;if(fun>3)fun=0;}}if(k2==1&&e2==0){e2=1;}if(k3==0&&e3==1)/////加1{delay(10);if(k3==0){e3=0;if(fun==1){if(class==0)s++;elseday++;} if(fun==2){if(class==0)m++;elsemonth++;} if(fun==3){if(class==0)h++;elseyear++;}}}if(k3==1&&e3==0){e3=1;}if(k4==0&&e4==1)/////減1{delay(10);if(k4==0){e4=0;if(fun==1){if(class==0)s--;elseday--;}elseif(fun==2){if(class==0)m--;elsemonth--;}elseif(fun==3){if(class==0)h--;elseyear--;}}}if(k4==1&&e4==0){e4=1;}if(flash==1&&fun!=0)///////////////////閃爍{if(fun==1){oe3=1;}elseif(fun==2){oe2=1;}elseif(fun==3){oe1=1;}}}}//////////////////////////////////定時器1服務(wù)程序(控制時間)voidtimer0(void)interrupt1{staticcharxx;TH0=(65536-50000)/256;TL0=(65536-50000)%256;shuaxin=1;//顯示刷新sec++;//定時50ms,計20次為1秒if(sec>20){
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025四川雅安市交通建設(shè)(集團)有限責(zé)任公司招聘集團本部及子公司領(lǐng)導(dǎo)人員16人筆試歷年參考題庫附帶答案詳解
- 2025四川成都九洲迪飛科技有限責(zé)任公司招聘射頻工程師測試筆試歷年參考題庫附帶答案詳解
- 2025四川宜賓鉦興智造科技有限公司第一批項目制員工招聘4人筆試參考題庫附帶答案詳解
- 2025四川創(chuàng)錦發(fā)展控股集團有限公司招聘簡歷篩選情況筆試歷年參考題庫附帶答案詳解
- 2025四川三州圓科技開發(fā)有限公司招聘技術(shù)經(jīng)理人6人筆試參考題庫附帶答案詳解
- 2025-2030中國無酒精起泡酒市場產(chǎn)量預(yù)測及未來趨勢前景分析研究報告
- 2025至2030零售業(yè)價格策略優(yōu)化與動態(tài)定價模型研究報告
- 中國金融科技監(jiān)管政策演變及創(chuàng)新產(chǎn)品與風(fēng)險管理研究報告
- 中國金融科技產(chǎn)業(yè)政策環(huán)境及市場機會研究報告
- 中國酒店業(yè)存量改造中衛(wèi)浴產(chǎn)品更新需求研究報告
- 新疆環(huán)保行業(yè)前景分析報告
- 2025~2026學(xué)年福建省泉州五中七年級上學(xué)期期中測試英語試卷
- 聯(lián)合辦公合同范本
- 2025年生物多樣性保護與生態(tài)修復(fù)項目可行性研究報告
- 2025年黑龍江省檢察院公益訴訟業(yè)務(wù)競賽測試題及答案解析
- 一氧化碳中毒救治課件
- 《會計信息化工作規(guī)范》解讀(楊楊)
- 高海拔地區(qū)GNSS大壩監(jiān)測技術(shù)研究
- 實施指南(2025)《DL-T 1630-2016氣體絕緣金屬封閉開關(guān)設(shè)備局部放電特高頻檢測技術(shù)規(guī)范》
- 慢性胃炎的護理業(yè)務(wù)查房
- 2025至2030中國生物識別和身份行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
評論
0/150
提交評論