51單片機的,有中斷函數(shù),沒0.5s計數(shù)一次
然后用LED數(shù)碼管顯示的,做的很爛,分享一下原理圖
單片機
QQ瀏覽器截圖20181017210229.jpg (36.84 KB, 下載次數(shù): 35)
下載附件
2018-10-17 21:04 上傳
LED數(shù)碼管
QQ瀏覽器截圖20181017210258.jpg (28.26 KB, 下載次數(shù): 35)
下載附件
2018-10-17 21:04 上傳
LED
QQ瀏覽器截圖20181017210323.jpg (15.84 KB, 下載次數(shù): 39)
下載附件
2018-10-17 21:04 上傳
QQ瀏覽器截圖20181017105941.jpg (58.83 KB, 下載次數(shù): 40)
下載附件
2018-10-17 11:47 上傳
單片機源程序如下:
- #include"STC12C5a60s2.H"
- //------------------------
- //LED接口
- sbit D2 = P3^0;
- sbit D3 = P3^1;
- sbit D4 = P3^2;
- sbit D5 = P3^3;
- //數(shù)碼管接口
- sbit COM1 = P1^3;
- sbit COM2 = P1^4;
- sbit COM3 = P1^5;
- sbit COM4 = P1^6;
- //變量定義
- unsigned char segTab [] = {0XA0,0XBB,0X62,0X2A,0X39,0X2C,0X24,0XBA,0X20,0X28};
- unsigned char segTab2 [] = {0X80,0X9B,0X42,0X0A,0X19,0X0C,0X04,0X9A,0X00,0X08};
- unsigned int to1s=0;
- unsigned int to2ms = 0;
- unsigned int number = 0;
- unsigned int segDisplayBit = 0;
- unsigned int i = 0;
-
- //==================================
- //主函數(shù)
- void main()
- { P1M1 &=~0X78;
- P1M0 |= 0X78;
-
- //定時器初始化 T0約為100uS
- TMOD = 0x02; //定時器T0,方式2(8位計數(shù),自動重載)
- TH0 = 163; //11.0592M晶振,約100uS
- TL0 = TH0; //自動重載計數(shù)值,計數(shù)值存于TH0中,而用TL0計數(shù)
- TR0 = 1; //開定時器T0
- ET0 = 1; //開定時器中斷
- EA = 1; //開總中斷
-
-
-
- while(1) //無限循環(huán)體
- {
-
- }
- }
- //==================
- //定時器中斷函數(shù)
- void Timer0_ISR(void) interrupt 1 using 1
- { to2ms++;
- if(to2ms == 20)
- { to2ms = 0;
-
- segDisplayBit++;
- if(segDisplayBit>4) segDisplayBit = 1;
-
- if(segDisplayBit==1) //千位
- { COM1=0; COM2=0; COM3=0; COM4=0;
- P0 = segTab[number/1000];
- if(number/1000!=0)COM1=1;}
-
- if(segDisplayBit==2) //百位
- { COM1=0; COM2=0; COM3=0; COM4=0;
- P0 = segTab[number%1000/100]&0xDF;
- COM2=1;}
-
- if(segDisplayBit==3) //十位
- { COM1=0; COM2=0; COM3=0; COM4=0;
- P0 = segTab[number%100/10];
- COM3=1;}
-
- if(segDisplayBit==4) //個位
- { COM1=0; COM2=0; COM3=0; COM4=0;
- P0 = segTab[number%10];
- COM4=1;}
- to1s++;
- if(to1s == 50)
- { to1s=0;
- number++;
- if(number==9999)number=0;
- }
- }
- i++;
- if(i==1000)
- {
- D5=0;D4=1;D3=1;D2=1; }
- if(i==2000)
- { D5=1;D4=0;D3=1;D2=1;}
-
- if(i==3000)
- {D5=1;D4=1;D3=0;D2=1;}
- if(i==4000)
- { i=0; D5=1;D4=1;D3=1;D2=0;}
- }
復制代碼
所有資料51hei提供下載:
定時中斷0-9999程序.zip
(26.93 KB, 下載次數(shù): 18)
2018-10-17 11:48 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|