单片机测速的程序
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
void main(void) { initime(); TR0=1; TR1=1; while(1) {
dectobit(f); display(); } } timer()interrupt 1 using 2 { i=i+1; if(i==100) { i=0; f=TH1*256+TL1; TL1=0; TH1=0; } TL0=(65536-10000)%256; TH0=(65536-10000)/256;
LED2_data=dec/100; dec=dec % 100; LED1_data=dec/10; dec=dec % 10; LED0_data=dec; }
/*显示程序*/ void display() { P0=Segcode[LED3_data]; P2&=~0x01; delay(10); P2|=0x01; P0=Segcode[LED2_data]; P2&=~0x02; delay(10); P2|=0x02; P0=Segcode[LED1_data]; P2&=~0x04; delay(10); P2|=0x04; P0=Segcode[LED0_data]; P2&=~0x08; delay(10); P2|=0x08; } //百位 //千位 //十位 //个位
}
这个说白了就是测量脉冲的个数,也就是理想方波的频率。 给你一个测频率的程序,仅供参考 #include<reg51.h> #include<intrins.h> #define uint unsigned int #define uchar unsigned char float f=0; uchar LED0_data,LED1_data,LED2_data,LED3_data; uchar i=0; uchar code Segcode[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; void display(); void delay(uint v); void initime(); /*定时器初始化*/ void initime() { TMOD=0x51; //T1 计数器,T0 定时器,方式 1 TL0=(65536-10000)%256; TH0=(65536-10000)/256; TL1=0; TH1=0; ET0=1; EA=1; } /*延时子函数*/ void delay(unsigned int c) { unsigned int i,j; for(i=0;i<c;i++) for(j=0;j<100;j++); } /*将十进制数拆成送数码管的显示码*/ void dectobit(int dec) { LED3_data=dec/1000; dec=dec % 1000;