教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 高等教育 >

田进 - 基于51单片机的超声波导航的设计与制作 - 图文(8)

来源:网络收集 时间:2026-04-30
导读: 扬州工业职业技术学院毕业设计 delay_nμs(5); //延时5μs P1_3 = 0 ; delay_nμs(750); while(!P1_3) ; TR0 = 1; while (P1_3); TR0 = 0; H = TH0; L = TL0; H = TH0; L = TL0; //定时器1计时停止 count=H*256 + L

扬州工业职业技术学院毕业设计

delay_nμs(5); //延时5μs

P1_3 = 0 ;

delay_nμs(750);

while(!P1_3) ;

TR0 = 1;

while (P1_3); TR0 = 0;

H = TH0; L = TL0; H = TH0; L = TL0;

//定时器1计时停止

count=H*256 + L; x=count/29.034;

if(x>0&&x<400) { x=x/2; x1=x/10; x2=x; Set_xy_LCM(0,0);

Write_Data_LCM(0x30+x1);//在LCD上显示距离的十位数 Set_xy_LCM(0,1);

Write_Data_LCM(0x30+x2); //在LCD上显示距离的显示个位数 Display_List_Char(0, 2, \

printf(\ //在PC机上显示器上显示所测到的距离

} else

printf(\

delay_nms(200); //延时200ms }

16

}

扬州工业职业技术学院毕业设计

void delay_nμs(uint i) //延时nμs { i=i/10; while(--i); }

void delay_nms(uint n) //延时n ms { n=n+1; while(--n)

delay_nμs(900); }

void Time0_Init (void) //计数器0初始化程序 { }

4.1.1距离测量程序设计思路

简要分析以上程序的基本设计思路,用流程图表示如下:

TMOD |= 0x01; //计数器选择工作模式1 TL0 = 0; TH0 = 0; TR0 = 0;

//计数器低四位赋初值零 //计数器高四位赋初值零 //停止计数

17

扬州工业职业技术学院毕业设计

开始 LCM及串口初始化 N 引脚电下降沿? 产生5μS触发脉冲 Y 延时75μS 定时器停止计数 控制引脚置高 将计数值转换为距离 定时器计数开始 调显示函数

图4-1距离测量程序流程图

主要分为两步:

1、先是根据位差超声波传感器的控制时序图,起动位差超声波距离传感器,即通过单片机编程,给超声波传感器的信号引脚提供一个持续时间为5μs的高电平,然后拉低信号引脚750μs,这样位差超声波传感器就被启动,发出超声爆裂,与此同时,启动单片机的定时器开始计数,当超声波遇到物体时会立即反射回来,位差超声波传感器的接收器接到回波时,会自动拉低其信号引脚的电平,单片机查询到此引脚的电平下降沿到来时停止定时器计数,此时定时器计数值就间接反应了超声波从反射到返回所经历的时间。

2、然后读出定时器的计数值除以2,便得到超声波在遇到被测物体返回的时间,根据:距离=速度*时间,就可以计算出前方物体的距离,因超声波在常温下的空气介质中传播的速度大约为344m/s, 即29.034μs超声波能传播1cm,所以在程序中用语句x=count/29.034来计算距离值,获得被测距离值后,调用LCD显示函数将距离值在LCD模块上显示出来。

18

扬州工业职业技术学院毕业设计

4.2 超声波导航程序

根据位差超声波距离传感器测量得的“距离”信息进行避障行走;当轮式教育机器人距离前面障碍物小于20cm时,它会向左拐改变行进方向,避免与物体碰撞。 程序名:moveroaming.c

功 能:利用超声波传感器探测前方物体并引导轮式教育机器人避开障碍物 #include\ #define uint unsigned int #define uchar unsigned char void delay_nμs(uint i); void delay_nms(uint n); void Forward(void); void Left_Turn(void); void Right_Turn(void) ; void Backward(void) ; void Time0_Init (void);

int main(void) //主函数,程序从这里开始运行 {

uint count,x,H,L; //定义无符号整型变量count,x,

while(1)//循环 {

TL0 = 0;

//计数器低位赋初值0 //计数器高位赋初值0

Time0_Init ();

TH0 = 0;

P1_3 = 0 ; //置P1_4输出为高电平,其余的输出低电平

P1_3 = 1;

19

扬州工业职业技术学院毕业设计

delay_nμs(5); //延时5μs

P1_3 = 0 ; delay_nμs(750);

while(!P1_3) ;

TR0 = 1;

//定时器1计时停止

while (P1_3); TR0 = 0;

H = TH0; L = TL0;

count=H*256 + L; x=count/29.034; }

void delay_nμs(uint i) //延时nμs { i=i/10; while(--i); }

20

if(x<=20) //如果距离小于20cm时

{

Backward(); //后退 Left_Turn(); //向左转 }

else //距离不小于等于20cm时 {

Forward(); //向前走

}

delay_nms(30); //延时30ms }

…… 此处隐藏:312字,全部文档内容请下载后查看。喜欢就下载吧 ……
田进 - 基于51单片机的超声波导航的设计与制作 - 图文(8).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/616249.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)