基于AT89S51单片机的智能超声波避障小车

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于 AT89S51 单片机的智能 超声波避障小车
姓名: 班级: 学号: 指导老师:

目录
摘要...........................................3 一、总体方案概述 .......................................3 二、总体电路原理图 ....................................3 三、各模块功能介绍 .................................4 (一) 、超声波测距模块 ................................4 (二) 、数码管显示模块 ................................4 (三) 、步进电机控制模块 ..............................6 (四) 、语音提示模块 ..................................7 (五) 、速度自控模块 ..................................8 (六) 、信号提示模块 ..................................8 (七) 、单片机控制模块 ...............................8 四、系统软件设计 .................................. 9 五、元件清单 .....................................10 六、应用前景 .....................................10 六、参考文献 .....................................11
2

摘要:现今发达的交通在给人们带来便捷的同时也带来了许多的交通事故。发生交通事故的因 素有很多。当然,如果我们的汽车能够更加智能,就是说事先能预测并显示前面障碍物离车的 距离, 当障碍物距离很近时汽车会自动采取一些措施避开障碍物,这样就能够在很大程度上避 免这些事故的发生。在本论文中,我们将会看到能够实现这一功能的智能小车。 关键字:超声波、测量、避障、单片机、语音 一、总体方案概述 本小车使用一台 AT89S51 单片机作为主控芯片, 它通过超声波测距来获取小车距离障碍物 的距离,并且用数码管实时的显示出来,在小车与障碍物的距离小于安全距离(用软件设定) 时,小车会发出“在距您车前方 x(数码显示的实时距离)米的地方有一障碍物,请您注意避 让” 的语音提示, 并且拐弯, 以避开障碍物, 同时会点亮相应侧边的发光二极管作为提示信号。 在避开障碍物后,小车会沿直线前进。 本系统设计的简易智能小车分为几个模块: 单片机控制系统、 超声波路面检测系统、 前进、 转弯控制电机以及方向指示灯系统。它们之间的相互关系如下图 1 所示。
图 1:智能小车简要原理框架图
二、总体电路原理图
3

三、各模块功能介绍 (一) 、超声波测距模块 首先利用单片机输出一个 40kHz 的触发信号,把触发信号通过 TRIG 管脚输入到超声波测 距模块, 再由超声波测距模块的发射器向某一方向发射超声波,在发射时刻的同时单片机通过 软件开始计时,超声波在空气中传播,途中碰到障碍物返回,超声波测距模块的接收器收到反 射波后通过产生一个回应信号并通过 ECHO 脚反馈给单片机,此时单片机就立即停止计时。时 序图如图 1 所示。由于超声波在空气中的传播速度为 340m/s,根据计时器记录的时间 t,就可 以计算出发射点距障碍物的距离,即:S=VT/2,通过单片机来算出距离。
图 1:超声波模块时序图
(二) 、数码管显示模块 1、数码管显示原理 数码管有一位、双位、四位等几种。而不管将几位数码管连在一起,数码管和显示原理都 是一样的, 都是靠点亮内部的发光二极管来发光。 数码管的内部电路结构如下页图所示: 从 ( a) 可看出,一位数码管的引脚数是 10 个,显示一个 8 字需要 7 个小段,另外还有一个小数点, 所以其内部一共有 8 个小的发光二极管,最后还有一个公共端,生产商为了封装统一,单位数 码管都封装 10 个引脚。而它们的公共端又分为共阳极和共阴极。上页图的(b)和(c)分别 为共阳极和共阴极数码管的原理图。 本小车的数码管采用的是 4 位共阳极数码管。所谓“共阳”就是指其内部的 8 个发光二极 管的阳极全部接在一起,而它们的阴极是独立的,通常在设计电路时一般把阳极接 VCC,当我
4

们给数码管的任一个阴极加低电平时,对应的那个发光二极管就点亮了。 当使用多位一体数码管时, 它们内部的公共端是独立的,而负责显示什么数字的段线全部 都是连在一起的, 独立的公共端可以控制多位数码管中哪一位点亮。 通常我们把公共端叫做 “位 选线” ,连在一起的段线叫做“段选线” 。








图 2:数码管内部原理图
2、显示部分 C 源程序的编写: 由于在本电子钟中 4 位数码管的段选线是直接接在单片机的 P0 口的,所以我们首先应该 计算出显示各个数字所对应的 P0 口输出的二进制编码。例如如果要显示一个“0” ,对照上面 的(a)图,我们需要点亮数码管中的 a、b、c、d、e、f,而 g 和 dp 不点亮,故 a、b、c、d、 e、f、g、dp 对应的二进制编码就为:00000011。再对照数码管段选线与单片机连接的顺序就 可得要赋给单片机 P0 口的值应为 10100000, 转换为十六进制就是 a0。 同理可以得到其它数字 对应的十六进制编码: uchar code table[10]={0xa0,0xbe,0x62,0x2a,0x3c,0x29,0x21,0xba,0x20,0x28}; uchar code table_dot[10]={0x80,0x9e,0x42,0x0a,0x1c,0x09,0x01,0x9a,0x00,0x08}; 点的数字段码表 //带小数
5


相关文档
最新文档