简单给你讲讲思路,给TRIG高电平再启动中断并开始计数,ECOH连接中断口P33,待有信号返回ECOH置高,关闭中断取出计数值,通过测试距离=(高电平时间声速(340m/s))/2;计算得出1米所需时间,即可通过条件判断是否启动小灯喽!
sbit Beep=P5^5;
ulint wavaVal;
/ Timer初始化函数 /
void InitTimer(void)
{
TMOD &= 0x10; //设置定时器模式
TH0 = 0;
TL0 = 0;
TR0 = 0;
INT_CLKO |=0x10;
EA = 1;
}
// 距离计算函数//
ulint Distance_count()
{
ulint temp;
temp=wavaVal172; //距离计算,2S=VT V/2=344/2
temp=temp12/18432;
return temp-30;
}
void Dis_Wave()
{
TH0=0;
TL0=0;//清定时0
TR0=1;//开定时0
INT_CLKO |=0x10; //开启外部中断
SEND = 1;
Delay10us(5);
SEND = 0;
Delay10ms();
dis=Distance_count();//有触发则调用距离计算函数
w_str[0]=(dis/1000%10)+0x30;
w_str[1]=(dis/100%10)+0x30;
w_str[2]=(dis/10%10)+0x30;
w_str[3]=(dis%10)+0x30;
}
//中断服务程序
void exint2() interrupt 10 //INT2中断入口
{
TR0=0;//关定时器0
INT_CLKO &=0xEF; //关闭外部中断
// INT_CLKO |=0x10; //开启外部中断
wavaVal=TH0256+TL0; //处理外部中断
if(wavaVal>10000)
wavaVal=0;
}
以上就是关于超声波测距模块hc-seo4,51单片机c程序,求高手全部的内容,包括:超声波测距模块hc-seo4,51单片机c程序,求高手、大神能否帮我写个超声波测距c51程序,单片机是stc89c52,超声波现成的模块,给一个大于10u、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)