单片机C语言实现红外脉冲计数计算车速

单片机C语言实现红外脉冲计数计算车速,第1张

以51单片机 12MHz晶振情况下为例

#define STAYTIME 781//定时200ms 其他时间可以自己算

int tcount,p_count

double speed

void t0_init(void)

{

TH0=0x00

TL0=0x00

TMOD|=0x02

ET0=1

TR0=1

IT0=1//外部中断下降沿触发

EX0=1

}

void pulse_int(void) interrupt 0

{

p_count++

}

void t0_int(void) interrupt 1

{

tcount++

if(tcount>STAYTIME){

tcount=0

EX0=0//关输入脉冲的中老歼断

ET0=0

speed=p_count/20/胡猛/侍做冲单位就是 转/秒

//下面重新开始

p_count=0

ET0=1

EX0=1

}

}

}

void main()

{

t0_init()

EA=1

while(1)

}

一般测量频明慧率有2中方法:\

1,你用T1定时1S(只用T1是无法达到定尘肢时1s的目的的,因为时间太长,你还可以借助别的单元+1,+1的形式),然后用T0记数在这1s内通过的方波个数,这个方法不是很精确

2,用外部中断,选择下降沿触发,程序响应中断激兄答后马上开启定时器,在下个下降沿来临的时候关掉定时器就可以了(记得定时器先清零)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12414410.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存