|
用51單片機(jī)的定時(shí)器,按鍵實(shí)現(xiàn)兩位數(shù)碼管加減仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
TIM圖片20171207195411.png (242.83 KB, 下載次數(shù): 100)
下載附件
2017-12-7 19:55 上傳
0.png (14.71 KB, 下載次數(shù): 102)
下載附件
2017-12-7 20:24 上傳
單片機(jī)源程序如下:
- #include<reg52.h>
- #define uchar unsigned char
- sbit S1=P2^0; //第一個(gè)數(shù)碼管
- sbit S2=P2^1; //第二個(gè)數(shù)碼管
- sbit PWM=P2^2;
-
- uchar t,i; //定義周期 占空比
- uchar m; //掃描次數(shù)
- uchar code seg[]={
- 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
- }; //0 1 2 3 4 5 6 7 8 9 */
-
- void InitTimer0() //定時(shí)器0中斷初始化子函數(shù)
- {
- TMOD = 0x01; //設(shè)置T0為工作方式1 16位
- TH0 = (65536-200)/256;
- TL0 = (65536-200)%256;
- EA = 1; //允許總中斷標(biāo)志位
- ET0 = 1; //定時(shí)器0中斷
- TR0 = 1; //啟動(dòng)定時(shí)器0
- EX0=1; //打開外部中斷0
- EX1=1; //打開外部中斷1
- IT0=1; //下降沿觸發(fā)
- IT1=1; //下降沿觸發(fā)
- }
- void display(void) //數(shù)碼管顯示占空比子函數(shù)
- {
- P0 =0;
- S1 =1;
- S2 =1; //Seg全輸出低,Com全輸出高,滅掉顯示
- switch(m)
- {
- case 0:
- m++;
-
- P0=seg[i/10]; //數(shù)碼管顯示第一位數(shù)
- S1=0;
- break;
- case 1:
- m=0;
- P0=seg[i%10]; //數(shù)碼管顯示第二位數(shù)
- S2=0;
- break;
- default:
- break;
- }
- }
- void main() //主函數(shù)入口
- {
- InitTimer0();
- while(1); //無限循環(huán)
- }
- void Timer0Interrupt(void) interrupt 1 //定時(shí)器中斷0
- {
- TH0 = (65536-200)/256; //重裝初值
- TL0 = (65536-200)%256;
-
- if(++t>=99)
- {
- t=0;
- }
- if(t>i)
- {
- PWM =0;
- }
- else
- {
- PWM =1;
- }
- display();
- }
-
- void Timer1Interrupt(void) interrupt 0 //外部中斷0中斷服務(wù)函數(shù)
- {
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
定時(shí)器按鍵控制數(shù)碼管加減.zip
(60.41 KB, 下載次數(shù): 96)
2017-12-7 19:56 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|