光电模块测速
时间:10-02
整理:3721RD
点击:
当转速超过20左右就无法显示了 不知道是模块问题 还是 程序问题 感觉程序问题没有 就是测不了高速
我在12864上显示 电机测速程序 t0记时 t1计数 各位麻烦看下
while(1)
{
if(time==10)//判断时间是否到1s
{
TR0=0;
TR1=0;
time=0;
fre=TH1*256+TL1; //计数器t1
LCD_WrAddr(4,0);
delayMs(2);
LCD_WrDat(fre/1000+0x30);
LCD_WrDat(fre%1000/100+0x30);
LCD_WrDat(fre%100/10+0x30);
LCD_WrDat(fre%10+0x30);
delayMs(2);
TH1=0;
TL1=0;
TR1=1;
TR0=1;
}
}
void timer1int()
{
TMOD = 0x50; //设置计数器
TH1=0;
TL1=0;
EA = 1; //打开总中断
ET1 = 1; //打开定时器中断
TR1 = 1; //启动定时器、
}
void timer0int()
{
TMOD = 0x01; //设置定时器为工作方式0
TH0 =(65536-50000)/256;
TL0 =(65536-50000)%256; //赋初值
EA = 1; //打开总中断
ET0 = 1; //打开定时器中断
TR0 = 1; //启动定时器、
}
void timer0() interrupt 1
{
TH0 = (65536-50000)/256;//设置初值
TL0 = (65536-50000)%256;
time++;
}
我在12864上显示 电机测速程序 t0记时 t1计数 各位麻烦看下
while(1)
{
if(time==10)//判断时间是否到1s
{
TR0=0;
TR1=0;
time=0;
fre=TH1*256+TL1; //计数器t1
LCD_WrAddr(4,0);
delayMs(2);
LCD_WrDat(fre/1000+0x30);
LCD_WrDat(fre%1000/100+0x30);
LCD_WrDat(fre%100/10+0x30);
LCD_WrDat(fre%10+0x30);
delayMs(2);
TH1=0;
TL1=0;
TR1=1;
TR0=1;
}
}
void timer1int()
{
TMOD = 0x50; //设置计数器
TH1=0;
TL1=0;
EA = 1; //打开总中断
ET1 = 1; //打开定时器中断
TR1 = 1; //启动定时器、
}
void timer0int()
{
TMOD = 0x01; //设置定时器为工作方式0
TH0 =(65536-50000)/256;
TL0 =(65536-50000)%256; //赋初值
EA = 1; //打开总中断
ET0 = 1; //打开定时器中断
TR0 = 1; //启动定时器、
}
void timer0() interrupt 1
{
TH0 = (65536-50000)/256;//设置初值
TL0 = (65536-50000)%256;
time++;
}
高速指多高?会不会是槽式光耦器件本身频率响应不够?
每秒超过30多转速就显示不出来了 直接显示000
程序
槽式光耦器件本身频率响应不够
这是编码器吗。
我想请问下,你的光电传感器接在单片机的哪几个口,因为我也有一个,但不懂
你好,能给我看下你的程序吗
那该怎么解决