51單片機時鐘程序,定時中斷,初始時間為23時59分55秒,24時自動歸零
實驗三 定時/計數器實驗
一、實驗目的
(1)掌握定時器/計數器的工作原理;
(2)掌握用C 語言程序實現 LED動態顯示的方法;
(3)掌握C 程序下定時中斷程序設計調試方法。
二、實驗內容
(1)熟悉Proteus 軟件,了解軟件的結構組成與功能;
(2)熟悉uVision3 編譯軟件,了解軟件的結構組成與功能;
(3)學習C51 語言的程序設計方法;
(4)用定時器/計數器 T0 實現 200ms 定時,控制 LED 閃爍;定時器/計數器 T1 實現
1 秒定時,在數碼管上顯示 2位數字,每秒加 1。
三、實驗步驟
(1)按照下圖,在 ISIS 中繪制電路原理圖;
(2)在uVision3 中編寫 C51 程序;
(3)利用uVision3 的編譯調試功能檢查程序的語法和邏輯錯誤;
(4)下載可執行文件,在 Proteus 中觀察仿真結果,檢驗程序的正確性。
0.png (49.42 KB, 下載次數: 75)
下載附件
2018-5-24 04:55 上傳
0.png (56.73 KB, 下載次數: 61)
下載附件
2018-5-24 04:55 上傳
單片機源程序如下:
- #include<reg51.h>
- unsigned char code LED[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
- unsigned char hour=23,min=59,sec=59;
- unsigned char num1=0,num2=0;
- sbit led1=P1^0;
- void display(unsigned char,unsigned char,unsigned char);
- void delay(unsigned int time)
- {
- unsigned int j = 0;
- for(;time>0;time--)
- for(j=0;j<125;j++);
- }
- void main(void)
- {
- TMOD=0x11;
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- TH1=(65536-50000)/256;
- TL1=(65536-50000)%256;
- EA=1;
- ET0=1;
- ET1=1;
- TR0=1;
- TR1=1;
- while(1)
- {
- display(hour,min,sec);
- }
- }
- void display(unsigned char hour,unsigned char min,unsigned sec)
- {
-
- P0=LED[hour/10];
- P2=0xfe;
- delay(1);
- P2=0xff;
-
- P0=LED[hour%10];
- P2=0xfd;
- delay(1);
- P2=0xff;
-
- P0=LED[min/10];
- P2=0xfb;
- delay(1);
- P2=0xff;
-
- P0=LED[min%10];
- P2=0xf7;
- delay(1);
- P2=0xff;
-
- P0=LED[sec/10];
- P2=0xef;
- delay(1);
- P2=0xff;
-
- P0=LED[sec%10];
- P2=0xdf;
- delay(1);
- P2=0xff;
- }
- void T0_time() interrupt 1
- {
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- num1++;
- if(num1==4)
- {
- num1=0;
- led1=!led1;
- }
- }
- void T1_time() interrupt 3
- {
- TH1=(65536-50000)/256;
- TL1=(65536-50000)%256;
- num2++;
- if(num2==20)
- {
- num2=0;
- sec++;
- if(sec==60)
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
實驗三 定時器.zip
(203.16 KB, 下載次數: 171)
2018-5-23 13:20 上傳
點擊文件名下載附件
時鐘程序 下載積分: 黑幣 -5
|