用STC89C52和US-100来实现超声波测距,谁能给个思路,有c代码更加好!

如题所述

US-100是什么,不同时把规格说明贴出来,几个人能知道?
我居然还犯贱还百度了一下,你看看是不是这个?
http://wenku.baidu.com/view/65e63e35a32d7375a41780ce.html
这个接口很常见,以前我给别人也回答过类似问题,当然型号却是另一个。现在擅长创新的太少,擅长起名的太多了。
电路可以按STC89C52的基本电路搭建(晶振、复位、RS232),也可以使用成品开发板,把US-100的Trig和Echo分别连到89C52上。
再给你一段伪代码吧,这是几个月前我回答别人时写的,给你稍微改了一下。

//定义T为与模块Trig脚相连的IO脚;
//定义E为与模块Echo脚相连的IO脚;
//定义L为int16类型,存储计时数据,它也代表着距离;
//定义D为int16类型,用于调整两次测距的时间间隔;
//定义R为int16类型,用于存储实际的测量结果;

while(1)
{
T=1;
//延迟10uS,建议加几行nop();
T=0;
L=0;
for(D=0;D<123456;D++) //调整123456这个值,使T脚两次触发的时间间隔为200ms左右
{
if(E==1) L++; //当E为高电平时L累加,L的大小能体现E的持续时间,也就是测距的距离
}
R=L*0.06789+3.456; //将本次的测量结果转换为公制,保存在R中
//这里可以输出测距结果R

}

上面的0.06789和3.456是两个系数,最终需要你根据不同距离的标靶进行实际矫正。另外3.456基本也是盲区的距离,可直接测得。系数确定以后,对于批量生产的产品,只要程序不改、晶振和MCU不变、电路和探头模块无大调整,这两个系数都不会变。
温馨提示:内容为网友见解,仅供参考
无其他回答

STC89C52利用定时器及GPIO口来实现PWM输出一个3V电压,求代码
可以用定时器定时100us,首先办出高电平,中断3次后输出低电平,5次后恢复高电平 include<REG51.H> define uchar unsigned char sbit PWM=P2^0;uchar a=0;void main(void)\/\/主程序 { TMOD=0X02;TH0=256-100;TL0=256-100;ET0=1;EA=1;while(1)} void timer0()interrupt 1\/\/中断程序 {...

...STC89C52的连接方法,谁能告诉我啊,还有C代码,谢谢了@!!!
你这样的超声波测距模块,商家应该会给你提供运用程序的范例的。连接可以单片机的任意两个I\/O口相连,只是要与程序相对应。

51单片机超声波测距代码
include <reg51.h>#define uchar unsigned char#define uint unsigned int#define LCD_DATA P2sbit LCD_BL=P1^0;sbit LCD_RS=P1^1;sbit LCD_RW=P1^2;sbit LCD_EN=P1^3;sbit TRIG=P0^0;sbit ECHO=P0^1;bit flag=0;uchar time,b,s,g;uint l;uchar code num_tab[]="0123456789";v...

相似回答