单片机源程序如下:
- #include "reg51.h"
- #include "intrins.h"
- #define uchar unsigned char
- #define uint unsigned int
- #define out P0
- uchar code seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x01};
- int i=0;
- //int TH00;
-
- void main(void)
- {
- int j;
- TMOD=0x15; // T0方式1计数,T1方式1定时
- TH0=0; // T0计数器清零
- TL0=0;
- TH1=0x3C; // 12MHz晶振,T1定时50ms
- TL1=0xB0;
- TR0=1; // 启动T0计数器
- TR1=1; // 启动T1
- IE=0x88; // 允许T1中断和总中断允许
- while(1)
- { P2=0x00; // 输出百位显示值
- out=seg[i/100];
- P2=0x02;
- for(j=0;j<100;j++);
- P2=0x00;
- out=seg[i%100/10]; // 输出十位显示值
- P2=0x04;
- for(j=0;j<100;j++);
- P2=0x00; out=seg[i%10]; // 输出个位显示值
- P2=0x08;
- for(j=0;j<100;j++);
- }
- }
- void Timer1_ISR() interrupt 3 // T1中断程序,产生50ms 定时
- { static char j = 0;
- TH1=0x3C; // 重设定时器值,50ms 定时,12MHz 晶振
- TL1=0xB0;
- if(++j == 20) // 是否中断20次,即50msx20次 = 1s
- { j=0;
- i=(TH0 << 8)|TL0;
- // 1s内的计数值即为电机转动速度,单位:转/秒
- TH0=0; // T0清零
- TL0=0;
- }
- }
复制代码
所有资料51hei提供下载:
E1.zip
(779 Bytes, 下载次数: 23)
|