實驗和仿真視頻演示:
0.png (234.56 KB, 下載次數: 30)
下載附件
2019-2-28 02:50 上傳
QQ圖片20190227162151.png (39.57 KB, 下載次數: 38)
下載附件
2019-2-27 16:22 上傳
0.png (5.13 KB, 下載次數: 32)
下載附件
2019-2-28 02:50 上傳
0.png (5.64 KB, 下載次數: 40)
下載附件
2019-2-28 02:52 上傳
單片機源程序如下:
- #include <reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- uchar code number[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,0xee,0x3e,0x9c,0x7a,0x9e,0x8e};
- //共陰數碼管編碼表
- uchar code address[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//數碼管選擇編碼表
- uchar i,time;
- uint count=22;
- uint temp1,temp;
- bit flag;
- void delay(uint m)
- {
- while(m--);
- }
- void main(void)
- {
- EA=1;//開總中斷
- ET0=1;//開定時器0中斷
- ET1=1;//開定時器1中斷
- TMOD=0x16;//設置T1為定時器工作方式為;T0為計數器,工作方式為2
- TH0=0xff;
- TL0=0xff;//給計數器0賦初值,計數值為1,即每來次中斷信號,T0中斷一次
- TR0=1;//啟動計數器0
- TH1=(65536-50000)/256;
- TL1=(65536-50000)%256;//給定時器1賦初值,時間為5ms(12MHz)
- TR1=1;//啟動定時器1.
- while(1)//死循環
- {
- temp1=temp;
- for(i=0;i<5;i++)//將計數值各個位取出,并從P1口輸出
- {
- P2=address[i];
- P1=number[temp%10];
- temp=temp/10;
- delay(100);//數碼管動態顯示,注意延時時間
- }
- temp=temp1;
- if(flag==1)//定時達滿標志
- {
- time=0;
- flag=0;
- temp=count;//儲存計數器0的計數值
- count=0;
- EA=1;
- }
- }
- }
- void time0(void) interrupt 1//計數器中斷子程序
- {
- count++;//每中斷一次count加1
- }
- void time1(void) interrupt 3//定時器中斷子程序
- {
- TH1=(65536-50000)/256;
- TL1=(65536-50000)%256;//重新給定時器賦初值
- time++;//總定時時長:20x50ms=1s
- if(time>=20)
- {
- time=0;
- EA=0;//關閉總中斷
- flag=1;//定時達滿標志置1
- }
- }
復制代碼
所有資料51hei提供下載:
單片機實驗工程.zip
(12.44 MB, 下載次數: 30)
2019-2-27 16:20 上傳
點擊文件名下載附件
實驗 下載積分: 黑幣 -5
|