時、分、秒計時器實驗報告_第1頁
時、分、秒計時器實驗報告_第2頁
時、分、秒計時器實驗報告_第3頁
時、分、秒計時器實驗報告_第4頁
時、分、秒計時器實驗報告_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

PAGEPAGE1實驗六時、分、秒計時器的設(shè)計班級物聯(lián)0901姓名李王張學號200908888888指導老師袁文澹一、實驗?zāi)康恼莆諗?shù)碼管動態(tài)顯示的基本方法;掌握鍵盤按鍵控制的實現(xiàn)方法; 根據(jù)已知電路和設(shè)計要求在實驗板上實現(xiàn)時、分、秒計時器。二、實驗內(nèi)容 1、在STC89C52實驗平臺上實現(xiàn)時、分、秒時鐘,4位數(shù)碼管上顯示分、秒或者時、分。 2、應(yīng)用鍵盤控制時間的顯示。鍵盤按鍵控制“切換時分、分秒顯示”、“啟動停止”、“加秒顯示內(nèi)容”、“加分顯示內(nèi)容”、“加時顯示內(nèi)容”。3、根據(jù)已知電路和設(shè)計要求在PROTEUS平臺仿真實現(xiàn)時鐘系統(tǒng)。三、實驗原理三、程序代碼匯集:/*時鐘及顯示程序,適用于尋跡小車實驗板*/#include<reg51.h>//頭文件#defineucharunsignedchar#defineuintunsignedintucharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//共陽七段編碼uchartemp=0;//定義定時器溢出計數(shù)變量,每隔50ms產(chǎn)生1次溢出,temp加1ucharmiao=00;//定義時鐘變量,當temp計數(shù)加20(20x50ms=1s)時,miao加1 ucharfen=00;//定義時鐘變量,當miao計數(shù)加60(60x20x50ms=60s)時,fen加1 ucharshi=00;//定義時鐘變量,當fen計數(shù)加60時,shi加1 sbitP0_6=P0^6 ;//定義P0端口/*--定時計數(shù)器T0及其中斷初始化函數(shù)--*/ voidtimer0init(void) {TMOD=0x01;//設(shè)置定時器0為工作方式1TH0=(65536-50000)/256;//16位計數(shù)初值除以256得到高8位初值TL0=(65536-50000)%256;//16位計數(shù)初值除以256的余數(shù)得到低8位初值EA=1;//開總中斷ET0=1;//開定時器0中斷TR0=1;//啟動定時器0}/*延時函數(shù)*/voiddelay(uintn){uinti,j;for(i=n;i>0;i--)for(j=124;j>0;j--);}/*定時計數(shù)器中斷程序,每當定時計數(shù)器溢出時觸發(fā)中斷,執(zhí)行該程序*/voidtime0()interrupt1{ TH0=(65536-50000)/256;//重裝初值 TL0=(65536-50000)%256;if(temp==20){temp=0;if(miao==59) {miao=0; if(fen==59) {fen=0; if(shi==23)shi=0; elseshi++;} elsefen++; }elsemiao++;}elsetemp++;}/*顯示函數(shù)*/voiddisplay(void){/*P1=0xfe;*/P1=0x7f;//輸出秒的個位的位碼P0=table[miao%10];//輸出秒的個位的段碼delay(5);//亮5ms/*P1=0xfd;*/P1=0xbf;//輸出秒的十位的位碼P0=table[miao/10];//輸出秒的十位的段碼delay(5);//亮5ms /*P1=0xfb;*/P1=0xdf; P0=0xbf; delay(5); /*P1=0xf7;*/P1=0xef;//輸出分的個位的位碼 P0=table[fen%10];//輸出分的個位的段碼 delay(5); /*P1=0xef;*/P1=0xf7;//輸出分的十位的位碼 P0=table[fen/10];//輸出分的十位的段碼 delay(5); /*P1=0xdf;*/P1=0xfb; P0=0xbf; delay(5); /*P1=0xbf;*/P1=0xfd;//輸出時的個位的位碼 P0=table[shi%10];//輸出時的個位的段碼 delay(5); /*P1=0x7f;*/P1=0xfe;//輸出時的十位的位碼 P0=table[shi/10];//輸出時的十位的段碼 delay(5);}/*主函數(shù)*/voidmain(void){timer0init();//調(diào)用初始化函數(shù)對定時計數(shù)器進行初始化while(1){display();//調(diào)用顯示函數(shù)顯示時間}四、仿真調(diào)試:在完成程序仿真調(diào)試過程中,出現(xiàn)了很多小問題,這些問題雖然簡單,但真正解決起來還是比較棘手的。例如,數(shù)碼管顯示時、分、秒的位置錯亂,或者是某一位數(shù)碼管不亮,這樣的問題對于高手來說就是小菜一碟,一看就知道是哪出了問題,可我卻找了半天才查到,原來是顯示函數(shù)模塊中送入位碼時位碼的編碼出錯,為了解決這個下問題,我將每一個數(shù)碼管的位碼都重新編寫一次。這個問題解決后,再次仿真時鐘并沒有按要求顯示出來,而是出現(xiàn)下圖一樣的錯誤顯示,通過仔細觀察發(fā)現(xiàn),只是小時與分、分與秒之間的那兩位數(shù)碼管顯示錯誤,于是直接檢查那兩個標志位數(shù)碼管的段碼,發(fā)現(xiàn)原來是輸送段碼時只是將g段送了個0,以致顯示時標志位總是跟隨前一位數(shù)碼管顯示。五、總結(jié):我們從不懂到懂的慢慢轉(zhuǎn)變的一個過程,記得在剛開始做這個實驗報告的時候,我們遇到了很多的問題,首先的時候我們感覺連程序都讀不懂,更不用去說寫這些程序并分析它的邏輯了。但是困難總是伴隨著我們的努力慢慢的解決。我們開始學會參照老師的原始的99秒計數(shù)的程序,根據(jù)其逆向的思維進行我們分秒時的程序編寫。當我們慢慢的了解每個語句的意思所在時,我們再根據(jù)其邏輯思想,慢慢的我們了解到了這個程序我們應(yīng)該怎么去寫!怎么去分析它了。通過這次也讓我對數(shù)字鐘的設(shè)計與制作,了解了設(shè)計電路的程序,也讓我了解了關(guān)于數(shù)字鐘的原理與設(shè)計理念,要設(shè)計一個電路總要先用仿真仿真成功之后才實際

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論