資源描述:
《單片機實訓(xùn)報告模板》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、單片機實訓(xùn)設(shè)計報告《單片機實訓(xùn)》設(shè)計報告題目:可調(diào)電子時鐘的設(shè)計學(xué)院:交通信息學(xué)院專業(yè):電氣自動化技術(shù)班級:電氣091姓名:學(xué)號:(長號)指導(dǎo)老師:-10-單片機實訓(xùn)設(shè)計報告一、實驗內(nèi)容利用CPU的定時器和實驗儀上提供的數(shù)碼顯示電路,設(shè)計一個可調(diào)電子時鐘。顯示格式如下:XXXXXX,由左向右分別為:時、分、秒。同時還可以通過鍵盤(開關(guān))對電子時鐘的時間進行加減,達到可調(diào)。二、實驗內(nèi)目的1、掌握定時器的使用和編程方法;2、掌握中斷處理程序的編程方法;3、掌握數(shù)碼顯示電路的驅(qū)動程序編程方法;4、掌握鍵盤電路的程序編程方法;5、掌握模塊子程
2、序的編程方法;6、掌握硬件的線路的設(shè)計及連線方法。三、實驗說明設(shè)計定時器每50ms中斷一次,在中斷服務(wù)程序中,對中斷次數(shù)進行計數(shù),50ms計數(shù)20次,就是1秒,然后再對秒計數(shù)得到分的值,對分計數(shù)得到小時的值,分別將各值送到相應(yīng)的段地址端口和位地址端口,通過數(shù)碼管顯示結(jié)果,達到電子時鐘的效果。在電子時鐘的基礎(chǔ)上,程序增加了鍵盤程序,對電子時鐘進行可調(diào)(對秒/分/時進行加/減,此功能的增加使電子時鐘功能更強、更實用。四、硬件電路設(shè)計原理圖圖1總電路圖-10-單片機實訓(xùn)設(shè)計報告圖2鍵盤控制電路五、軟件設(shè)計(一)程序設(shè)計框圖開始置定時器模式及
3、常數(shù)開始設(shè)置初始常數(shù)啟動定時器設(shè)置秒、分、時初值鍵盤掃描調(diào)用顯示子程序設(shè)置定時器初值啟動定時器初始化顯示參數(shù)查表修正A值段碼輸出位選通置定時器模式及常數(shù)下一位選通延遲10MS關(guān)閉位選通-10-單片機實訓(xùn)設(shè)計報告開始關(guān)中斷、保護現(xiàn)場秒單元內(nèi)容加1到1分鐘否?秒單元內(nèi)容清零分單元內(nèi)容加1分單元內(nèi)容清零時單元內(nèi)容加1時單元內(nèi)容清零恢復(fù)現(xiàn)場開中斷到1小時否?到24小時否?中斷返回-10-單片機實訓(xùn)設(shè)計報告開始按鍵掃描P1.0P1.1P1.2P1.3P1.4P1.5秒加1分加1時加1秒減1分減1時減1顯示(二)實驗程序設(shè)計步驟1、用定時器編寫延
4、遲子程序;2、編寫學(xué)號顯示子程序;3、編寫從0~9秒用數(shù)碼管顯示子程序;4、據(jù)時分秒的要求,編寫定時器0中斷服務(wù)子程序;5、結(jié)合以上子程序,與主程序相組合成電子時鐘程序;6、編寫鍵盤控制加子程序;7、組合以上子程序,與主程序相組合成可調(diào)電子時鐘程序;#include//程序定義typedefunsignedcharuchar;unsignedintnumber;voiddelay(unsignedchar);voiddisplay();voidkey();voidinit();ucharledsbuf[8];ucha
5、rledsbuf1[8];sbitp10=P1^0;sbitp11=P1^1;sbitp12=P1^2;sbitp13=P1^3;sbitp14=P1^4;-10-單片機實訓(xùn)設(shè)計報告sbitp15=P1^5;uchara[4];ucharb[4];voidchbcd();//計時器voidinit();//開始unsignedintnumber;voidtime()interrupt1{if(--number==0)//number=01秒鐘到{number=4000;if((++a[3])==60){a[3]=0;if((++a[2
6、])==60){a[2]=0;if((++a[1])==24){a[1]=0;if((++b[3])==32){b[3]=01;if((++b[2])==12){b[2]=01;if(b[1]++==99){b[1]=0;b[0]++;}}}}}}}}//控制顯示數(shù)字codeunsignedcharledtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40};voidmain(){-10-單片機實訓(xùn)設(shè)計報告
7、uchari;a[0]=00,a[1]=23,a[2]=59,a[3]=50;b[0]=20,b[1]=11,b[2]=03,b[3]=30;number=4000;init();chbcd();while(1){chbcd();display();key();}}//控制顯示位voidchbcd(){uchari;for(i=0;i<4;i++){ledsbuf[i*2]=ledtab[a[i]/10];ledsbuf[i/2]=ledtab[a[0]=16];ledsbuf[i*2+1]=ledtab[a[i]%10];ledsb
8、uf1[i*2]=ledtab[b[i]/10];ledsbuf1[i*2+1]=ledtab[b[i]%10];}}voiddelay(charn){uchari;for(i=0;i