当前位置:首页 > 基于AT89S52单片机的超声波避障智能小车设计资料
安徽新华学院2014届本科毕业论文(设计)
3 小车软件设计
3.1软件总体设计
本次软件设计采用模块结构,由主程序﹑电机驱动子程序﹑定时子程序、各模块的中断子程序构成。其整体程序的流程图如下图所示:
否 距离小于30cm 开始 驱动电机转动(正转) 定时器中断程序控制每0.8s发送一次触发信号 否 接收反射波信号 是 测量障碍物的距离 是
电机转动方向 图3.1 软件总体设计
11
安徽新华学院2014届本科毕业论文(设计)
另外,定时中断服务程序,主要是进行定时与距离的计算并判断;避障中断程序来完成对超声波探测器产生的外部中断进行处理,从而配合主程序作出判断,若其超出预设定的距离就转弯来进行避障,直到能顺利前行为止。
3.2软件模块设计
3.2.1
主程序执行设计
编程思路:小车前进,步进电机转动方向正转;此时,探头发射声波并计时,检测是否有回波?计算障碍物距离;当前方距离小于设定值小车停止,并且小车左轮电动机旋转90度,测定前方距离是否符合某设定值,如果其在某设定值范围内,则执行后退或左、右车轮继续旋转90度,然后继续探测直到距离符合大于某设定值,则小车前进;如此循环。
初始化 初始化开中断 执行“前进”子程序 同时执行发射声波中断程序与计时 否 检测是否接收到回波? 是 停止计时并进行距离计算 否 是否在设定的距离范围? 是 执行相应的子程序: 后退、左转、停止、前进 图3.2 主程序执行流程图
12
安徽新华学院2014届本科毕业论文(设计)
3.2.2 子程序功能设计
各个子程序分别执行不同的功能,主要有:延时子程序,前进子程序,后退子程序,左转子程序,停止子程序,计时子程序,距离计算子程序,发射和接收声波子程序。 停止、前进、后退及左转程序执行的是对L298N驱动系统的输入电平控制,来实现对电机的运转状态控制;延时与计时子程序是设计的基本子程序,为了达到延时与计时的目的;距离计算程序与发射接收声波程序及计时程序三者是一体的关系,后两者为前者计算提供数据服务,从而为主程序作出判断提供依据。 所有子程序均由主程序调控和判断是否执行。
3.3 程序调试及功能实现
根据总是设计,完成了主程序及各个子程序的设计与编写,在软件平台上调试时,出现
很多问题。基本是一些编程语法错误,不是少了大括号就是分号,还有个错误就是没有定义的变量直接使用了。其他的问题就是在我移植程序时,不能创建目标,两天才把此问题解决,那就是我在敲代码是没有注意我是在中文环境下进行的,导致符号与函数名不能被识别,走了不少弯路。
另外,就是程序写完,拼接移植完毕后,整体运行调试,软件没有问题,当下载到硬件上时,发现效果和自己预想的差很远,调整了多个地方也不行,主要是执行上条程序与下一条程序中间时间隔太长,调整延时与程序顺序都没有起到多大效果。
最后在同学帮助下,将程序重头到尾梳理一遍,作了一下大调整和改动,此时功能实现就明显多了,而且有好几个地方都有很明显的改进,虽还有一些不足,但是已经算很完美了。至少我设计的几个功能很好地实现了,并且我的创新设计点——紧急倒车凸显出来了,前进左转停止这些基本的功能也很好地实现了。
13
安徽新华学院2014届本科毕业论文(设计)
4 系统调试
4.1调试步骤
本文设计的超声波测距智能避障的小车,其总共可算两个模块:超声波测距,L298N驱动。调试时把他们分别进行调试,然后把两个模块按照设计组合,之后进行整机调试。完成最后的性能测试,看是否符合设计标准,直到达到预期目标为止。
4.2调试单个模块
4.2.1 L298N驱动模块检测调试
此部分是借鉴而来,电路图以及实物图均是成品。所以首先用万用表检查电路是否出现短路,电阻电容二极管等电子元件是否有损坏,电路是否违规串通、该通的是否不通等一些比较关键的电路检测,这些主要是使用万用表来检测的。而后检测芯片是否能实现预设功能利用时钟信号来检测调试,看其是否能实现驱动控制。
4.2.2 超声波测距模块检测调试
超声波测距这个模块总共引出四个引脚,分别是:VCC,GND,超声波接收引脚,超声波发射引脚。因此连接电路只要引出四根插线,来连接到STC89C52的对应引脚上,烧好测试的程序,来检测其功能是否符合预设标准。此次设计将四根线分别接:VCC,GND,然后其发射和接收引脚连接I/O口的P1.7和P3.2口。此模块在单片机开发板上来检验其是否正常。
4.3整体调试总结
通过系统调试,不仅可以学习更多的电路知识、软件修改调整的方式步骤及方向,而且也能知晓仿真调试和实物调试的差别。另外,设计的程序执行得来的结果可能和实物调试出的结果存在不一致,因此需要进一步思考,并加以改善,从而得到想要的效果。经调
14
共分享92篇相关文档