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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論