标题:
基于单片机的转速测量系统设计
[打印本页]
作者:
happy112
时间:
2016-6-4 19:33
标题:
基于单片机的转速测量系统设计
基于单片机的转速测量系统设计
介绍了一种基于AT89C51单片机平台,采用光电传感器实施电机转速测量的方法,硬件系统包括脉冲信号产生、脉冲信号处理和显示模块,并采用C语言编程,结果表明该方法具有简单、精度高、稳定性好的优点。介绍了该测速法的基本原理、实现步骤和软硬件设计。
0.png
(42.54 KB, 下载次数: 47)
下载附件
2016-6-4 19:28 上传
0.png
(114.71 KB, 下载次数: 53)
下载附件
2016-6-4 19:30 上传
原代码:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uint mm=1234;
uchar code table[]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,};
delay(uint m)
{ uint i,j;
for(i=m;i>0;i--)
for(j=60;j>0;j--);
}
xian_shi()
{ uchar qian,bei,shi,ge;
uint jj;
jj=mm;
jj*=20;
//jj+=1;
qian=jj/1000;
bei=jj%1000/100;
shi=jj%100/10;
ge=jj%10;
P2=0x10;
P0=table[qian];
delay(1);
//P2=0;
P2=0x20;
P0=table[bei];
delay(1);
//P2=0;
P2=0x40;
P0=table[shi];
delay(1);
//P2=0;
P2=0x80;
P0=table[ge];
delay(1);
//P2=0;
}
timer_init() //定时器计数器初始化函数
{ EA=1;
ET0=1;
ET1=1;
TMOD=0X51;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
TH1=0;
TL1=0;
TR0=1;
TR1=1;
}
main()
{
timer_init();
P0=0; //开始数码管不显示
while(1)
{
xian_shi();
delay(2); //数码管刷新时间单位毫秒
}
}
void timer0() interrupt 1
{ TR0=0;
TR1=0;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
mm=0;
mm|=TH1;
mm=(mm<<8)|TL1;
// mm-=55536;
TH1=0;
TL1=0;
TR0=1;
TR1=1;
}
void timer1() interrupt 3 //显示0000说明出错
{ TR1=0;
TR0=0;
mm=0;
// TH1=0;
// TL1=0;
// TR1=1;
}
复制代码
全部资料(压缩包)下载:
测速.rar
(333.16 KB, 下载次数: 52)
2016-6-4 19:32 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
51hei电控2112311
时间:
2016-6-4 19:47
光电测速比较靠谱,实际运用是霍尔传感器的。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1