单片机课件第13章基于C51单片机的超声波导航模块.ppt
《单片机课件第13章基于C51单片机的超声波导航模块.ppt》由会员分享,可在线阅读,更多相关《单片机课件第13章基于C51单片机的超声波导航模块.ppt(66页珍藏版)》请在三一办公上搜索。
1、,2,4,5,模块功能描述,必备知识,设计案例,学习内容,第13章 基于C51单片机的超声波导航模块,1,3,相关知识,思考练习与拓展训练,本章概述,1任务 任务一:超声波距离测量任务二:超声波导航2要求(1)能够应用超声波准确前方物体的距离(2)能够应用超声波测距引导轮式教育机器人航行,2,4,5,模块功能描述,必备知识,设计案例,学习内容,第13章 基于C51单片机的超声波导航模块,1,3,相关知识,思考练习与拓展训练,13.1 模块功能描述,本案例模块的主要内容是:利用超声波传感器作为轮式教育机器人的双眼,C51单片机作为轮式教育机器人的大脑,按要求设计硬件电路和编写程序,使轮式教育机器
2、人能够随时监控前方障碍物的距离。并根据传感器采集的数据作出不同的运动策略,通过该项目的学习与实践,可以让读者获得如下知识和技能:掌握单片机定时/计数器的基本原理和应用方法;掌握超声波传感器的基本工作原理和编程应用方法;,2,4,5,模块功能描述,必备知识,设计案例,学习内容,第13章 基于C51单片机的超声波导航模块,1,3,相关知识,思考练习与拓展训练,13.2 必备知识,超声波距离传感器简介,超声波传感器是利用超声波的特性研制而成的传感器,它是通过传送一个超声波(远高于人的听觉范围)和提供一个对应于爆裂回声返回到传感器所需时间的输出脉冲来工作的。超声波传感器在非接触性测量方面的应用非常广泛
3、,如检测液体水位(特别是具有腐蚀性的液体,如硫酸、硝酸液体),汽车倒车防撞系统,金属/非金属探伤等,都可以用到超声波距离传感器。本章应用位差超声波距离传感器作为机器人运动的双眼(测距范围是:2厘米至3米),C51单片机作为机器人的大脑,随时判断和监控前方障碍物的距离。示意图请见教材P234页图131所示,13.2 必备知识,位差超声波距离传感器工作时序,位差超声波距离传感器通过发射短超声波爆裂,然后听回音来探测物体。通过测量回波脉冲的宽度(即时间),就能计算出目标的距离,在主机微控制器发送的触发脉冲的控制下,位差超声波传感器发出一道短40 kHz的(超声波)爆裂声,此爆裂声在空气中以约1130
4、英尺每秒的速度传播,当碰到物体时便反射回到传感器,此时传感器会产生一个输出脉冲,向主机微控制器表示回波被探测,这个脉冲宽度就是对应于爆裂回声返回到传感器所需时间。,13.2 必备知识,位差超声波距离传感器工作时序,图13-2 位差超声波传感器工作时序图,13.2 必备知识,位差超声波距离传感器工作时序,注意:位差超声波距离传感器在下列情况下不能精确地测量距离:a)与物体距离大于3米.b)与物体的表面形成的反射角度太小,使声音不能反映回到传感器.c)物体太小以致没有足够强度的声音返回到传感器。示意图请见教材P235页图133所示,2,4,5,模块功能描述,必备知识,设计案例,学习内容,第13章
5、基于C51单片机的超声波导航模块,1,3,相关知识,思考练习与拓展训练,13.3 设计案例,系统设计方案,系统采用“MCU+传感器+显示设备+执行机构”的总体设计方案,要求MCU对非接触式传感器获取的外部距离信息进行计算转换,将得出的轮式机器人与前方障碍物的距离值送到显示设备显示,并根据程序设定的距离阈值控制轮式机器人实现自动导航功能。其中MCU采用目前性价比较高的AT89C51单片机;传感器采用“超声波传感器”,以非接触的形式测量前方物体的距离;显示设备采用LCD1602液晶显示模块;执行机构采用PARALLAX公司生产的连续旋转伺服电机,其优点是编程控制方便且不需额外增加驱动电路。系统总体
6、框图如下:,图91 直流伺服电机控制框图,13.3 设计案例,系统设计方案,图91 直流伺服电机控制框图,图13-4 系统框图,13.3 设计案例,10.3.2 硬件电路设计,基于C51单片机的超声波距离检测电路原理如图135所示。,图13-5 系统原理图,9.3 设计案例,10.3.3 软件设计,任务一:超声波距离测量 本任务是根据超声波传感器的时序原理图,应用c51单片机定时/计数器实现对前方物体距离的测量并在LCD模块上显示1、源程序/*=程序名:distance.c功 能:利用超声波传感器测距,并在LCD上显示距离值。=*/#includeat89x52.h#includeuart.h
7、,9.3 设计案例,10.3.3 软件设计,任务一:超声波距离测量 本任务是根据超声波传感器的时序原理图,应用c51单片机定时/计数器实现对前方物体距离的测量并在LCD模块上显示1、源程序#include#define uint unsigned int#define uchar unsigned charvoid delay_ns(uint i);void delay_nms(uint n);void Time0_Init(void);,9.3 设计案例,10.3.3 软件设计,任务一:超声波距离测量 本任务是根据超声波传感器的时序原理图,应用c51单片机定时/计数器实现对前方物体距离的测量
8、并在LCD模块上显示1、源程序void main(void)uint count,x,H,L,x1,x2;/定义变量 uart_Init();/串口初始化 Time0_Init();/计数器初始化 LCM_Init();/LCD模块初始化 printf(Program Running!n);,9.3 设计案例,10.3.3 软件设计,任务一:超声波距离测量 本任务是根据超声波传感器的时序原理图,应用c51单片机定时/计数器实现对前方物体距离的测量并在LCD模块上显示1、源程序while(1)/进入循环体 TL0=0;/计数器低位赋初值0 TH0=0;/计数器高位赋初值0 P1_3=0;/置P1
9、_3为0 P1_3=1;/置P1_3为1,9.3 设计案例,10.3.3 软件设计,任务一:超声波距离测量 本任务是根据超声波传感器的时序原理图,应用c51单片机定时/计数器实现对前方物体距离的测量并在LCD模块上显示1、源程序 delay_ns(5);/延时5sP1_3=0;delay_ns(750);while(!P1_3);TR0=1;while(P1_3);TR0=0;/定时器1计时停止,9.3 设计案例,10.3.3 软件设计,任务一:超声波距离测量 本任务是根据超声波传感器的时序原理图,应用c51单片机定时/计数器实现对前方物体距离的测量并在LCD模块上显示1、源程序H=TH0;L
10、=TL0;H=TH0;L=TL0;count=H*256+L;x=count/29.034;if(x0&x400),9.3 设计案例,10.3.3 软件设计,任务一:超声波距离测量 本任务是根据超声波传感器的时序原理图,应用c51单片机定时/计数器实现对前方物体距离的测量并在LCD模块上显示1、源程序 x=x/2;x1=x/10;x2=x%10;Set_xy_LCM(0,0);Write_Data_LCM(0 x30+x1);/在LCD上显示距离的十位数Set_xy_LCM(0,1);,9.3 设计案例,10.3.3 软件设计,任务一:超声波距离测量 本任务是根据超声波传感器的时序原理图,应用
11、c51单片机定时/计数器实现对前方物体距离的测量并在LCD模块上显示1、源程序Write_Data_LCM(0 x30+x2);/在LCD上显示距离的显示个位数Display_List_Char(0,2,cm);printf(x=%d cmn,x);/在PC机上显示器上显示所测到的距离 else,9.3 设计案例,10.3.3 软件设计,任务一:超声波距离测量 本任务是根据超声波传感器的时序原理图,应用c51单片机定时/计数器实现对前方物体距离的测量并在LCD模块上显示1、源程序printf(no ping!);delay_nms(200);/延时200ms,9.3 设计案例,10.3.3 软
12、件设计,任务一:超声波距离测量 本任务是根据超声波传感器的时序原理图,应用c51单片机定时/计数器实现对前方物体距离的测量并在LCD模块上显示1、源程序void delay_ns(uint i)/延时ns i=i/10;while(-i);void delay_nms(uint n)/延时n ms,9.3 设计案例,10.3.3 软件设计,任务一:超声波距离测量 本任务是根据超声波传感器的时序原理图,应用c51单片机定时/计数器实现对前方物体距离的测量并在LCD模块上显示1、源程序 n=n+1;while(-n)delay_ns(900);,9.3 设计案例,10.3.3 软件设计,任务一:超
13、声波距离测量 本任务是根据超声波传感器的时序原理图,应用c51单片机定时/计数器实现对前方物体距离的测量并在LCD模块上显示1、源程序 void Time0_Init(void)/计数器0初始化程序TMOD|=0 x01;/计数器选择工作模式1TL0=0;/计数器低四位赋初值零TH0=0;/计数器高四位赋初值零TR0=0;/停止计数,13.3 设计案例,软件设计,2、程序运行 按图13-5连接硬件电路,参考第1章介绍的操作步骤编译以上程序,将产生的可执行文件烧写到轮式教育机器人控制板上的单片机程序存储器,开机运行,可以看到LCD显示屏上不断的显示出前方物体的距离值。,13.3 设计案例,3、程
14、序设计思路 下面简要分析以上程序的设计思路,程序设计流程如下:,图13-6主程序流程图,13.3 设计案例,软件设计,主要分为两步:1、先是根据位差超声波传感器的控制时序图,起动位差超声波距离传感器,即通过单片机编程,给超声波传感器的信号引脚提供一个持续时间为5s的高电平,然后拉低信号引脚750s,这样位差超声波传感器就被启动,发出超声爆裂,与此同时,启动单片机的定时器开始计数,当超声波遇到物体时会立即反射回来,位差超声波传感器的接收器接到回波时,会自动拉低其信号引脚的电平,单片机查询到此引脚的电平下降沿到来时停止定时器计数,此时定时器计数值就间接反应了超声波从反射到返回所经历的时间。,13.
15、3 设计案例,软件设计,主要分为两步:2、然后读出定时器的计数值除以2(思考为何除以2),便得到超声波在遇到被测物体返回的时间,根据:距离=速度*时间,就可以计算出前方物体的距离,因超声波在常温下的空气介质中传播的速度大约为344m/s,即29.034s超声波能传播1cm,所以在程序中用语句x=count/29.034来计算距离值,获得被测距离值后,调用LCD显示函数将距离值在LCD模块上显示出来。,13.3 设计案例,软件设计,任务二:超声波导航 在本任务中,轮式教育机器人根据位差超声波距离传感器测量得的“距离”信息 进行避障行走;当轮式教育机器人距离前面障碍物小于20cm时,它会向左拐改变
16、行 进方向,避免与物体碰撞。1、源程序/*=程序名:moveroaming.c 功 能:利用超声波传感器探测前方物体并引导轮式教育机器人避开障碍物=*/#includeat89x52.h#define uint unsigned int,#define uchar unsigned charvoid delay_ns(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
17、main(void)/主函数,程序从这里开始运行 uint count,x,H,L;/定义无符号整型变量count,x,Time0_Init();while(1)/循环 TL0=0;/计数器低位赋初值0 TH0=0;/计数器高位赋初值0 P1_3=0;/置P1_4输出为高电平,其余的输出低电平,P1_3=1;delay_ns(5);/延时5s P1_3=0;delay_ns(750);while(!P1_3);TR0=1;while(P1_3);TR0=0;/定时器1计时停止H=TH0;L=TL0;,count=H*256+L;x=count/29.034;if(x=20)/如果距离小于20c
18、m时 Backward();/后退 Left_Turn();/向左转 else/距离不小于等于20cm时 Forward();/向前走 delay_nms(30);/延时30ms,void delay_ns(uint i)/延时ns i=i/10;while(-i);void delay_nms(uint n)/延时n ms n=n+1;while(-n)delay_ns(900);,void Time0_Init(void)/计数器初始化TMOD|=0 x01;/计数器选取方式1TL0=0;/计数器低位赋初值0TH0=0;/计数器高位赋初值0TR0=0;/停止计数,void Forward(
19、void)/声明一个前进子函数P1_0=1;/设置P1_0输出高电平delay_ns(1700);/延时0.0017s P1_0=0;/设置P1_0输出低电平P1_1=1;/设置P1_1输出高电平delay_ns(1300);/延时0.0013sP1_1=0;/设置P1_1输出低电平delay_nms(20);/延时20ms,void Left_Turn(void)/声明一个向左子函数 uint i;for(i=1;i=7;i+)P1_0=1;/设置P1_0输出高电平 delay_ns(1300);/延时0.0013s P1_0=0;/设置P1_0输出低电平,P1_1=1;/设置P1_1输出高
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课件 13 基于 C51 超声波 导航 模块

链接地址:https://www.31ppt.com/p-6449712.html