基于单片机的智能小车设计与制作_第1页
基于单片机的智能小车设计与制作_第2页
基于单片机的智能小车设计与制作_第3页
基于单片机的智能小车设计与制作_第4页
基于单片机的智能小车设计与制作_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、桂林航天工业学院毕 业 论 文(设计)论文题目 基于单片机的智能小车设计与制作 姓 名 学 号 _ _专 业 指导教师 职 称 中国桂林二0一二年九月目 录1 引言32设计思想、方案选择及设计任务的指标42.1 设计思想42.2 方案设计比较与选择52.2.1 遥控模块52.2.2 障碍物检测模块62.3 设计指标及技术参数63 硬件电路设计73.1 智能寻迹小车系统框图及概述73.2 智能小车系统硬件电路图及单元电路83.2.1 系统的硬件电路总体设计83.2.2 分布单元电路设计与功能概述83.3 单元电路设计小结134 软件程序设计134.1164.2184.2.1 程序状态指示灯模块1

2、84.2.2 流水灯演示模块184.2.3 数码管及跑马灯模块194.2.4 按键中断查询模块194.2.5 话筒声音识别模块194.2.6 光敏电阻及蜂鸣器模块204.2.7 红外反射与直流电机驱动模块204.2.8 串口通信模块214.3 单元模块程序设计小结215 实物运行与测试结果以及结论215.1 小车的运行情况225.2 小车的测试结果及分析225.3 结论236 结束语23参考文献23英文摘要24致 谢25附录A:系统总原理图26附录B:部分程序清单27附录C:33附录D:34基于单片机的智能小车设计与制作王 鹰摘 要:基于近几年大学生电子大赛中关于小车的研究,对此根据嵌入式系统

3、的应用,提出了提出了一种以8位单片机作为系统大脑能实现智能循线避障避悬崖小车的设计方法,通过主芯片的32个完全IO端口,对这些端口加以信号输入电路,控制电路和执行电路,并且利用红外探头技术检测障碍物和搜集地面信息,采用AT89S52单片机进行适时控制,实现智能循线避障以及避悬崖。智能小车采用前轮驱动,两轮各用一个电机执行,用MAX232芯片来控制,前方和底部探头采用红外发射管和红外接收管进行障碍物检测以及地面信息的采集。关键词:AT89S52,寻线,避障,避悬崖,流水灯1 引言随着汽车工业的迅速发展,关于汽车的研究也就越来越受人关注。全国大学生电子大赛和省内电子大赛中几乎每次都有关于小车这方面

4、的题目,全国各高校也都很重视该题目的研究,可见其研究意义很大。本设计就是在这样的背景下提出的,指导教师已经有充分的准备。本题目是结合科研项目而确定的设计类课题。设计的智能电动小车应该具有智能寻迹、避障、避悬崖等功能。根据题目的要求,确定如下方案:在已有线路板及元器件的基础上,将传感器改为红外探头,将前方底部的两个步进电机改为用LG9110驱动的电机,再编写一段程序,通过COM1端口将程序下载至线路板上的STC单片机芯片里,使得LED灯和数码管具有程序指示作用以及跑马灯流水灯的演示,并且实现小车的防撞、避悬崖和寻迹。本设计以AT89S52为主芯片,通过P0.0,P0.1,P0.2,P0.3分别控

5、制LG9110电机驱动,来驱动电机1和电机2,。由电机的正转与反转来完成小车的前进,后退,左转,右转等功能的基本动作。在小车前进时如果前方有障碍物,由红外发射管发射的红外信号被反射给红外接收管,且将此信号经过P3.7传送入AT89S52中,主芯片通过内部的代码进行小车的绕行,同时主芯片将P3.7的信号状态通过P2.5的LED灯显示出来;小车行走时P3.5与P3.6的红外接收探头会进行路面检测,当走到悬崖处时,端口将会收到一个电平信号,此电平信号通过相应端口传送入主芯片中,以此来控制小车后退然后左转以避开悬崖前进;另外通过代码还附有程序状态指示功能,蜂鸣器的报警功能,夜间自动照明等功能。第三代单

6、片机包括了Intel公司发展MCS-51系列的新一代产品,如8C15280C51FA/FB80C51GA/GB8C4518C452,还包括了PhilipsSiemensADMFujutsuOKIHarria-MetraATMEL等公司以80C51为核心推出的大量各具特色与80C51兼容的单片机。新一代的单片机的最主要的技术特点是向外部接口电路扩展,以实现Microcomputer完善的控制功能为己任,将一些外部接口功能单元如A/DPWMPCA(可编程计数器阵列)WDT(监视定时器)高速I/O口计数器的捕获/比较逻辑等。这一代单片机中,在总线方面最重要的进展是为单片机配置了芯片间的串行总线,为单

7、片机应用系统设计提供了更加灵活的方式。Philips公司还为这一代单片机80C51系列8C592单片机引入了具有较强功能的设备间网络系统总线-CAN(Controller Area Network BUS)。新一代单片机为外部提供了相当完善的总线结构,为系统的扩展与配置打下了良好的基础。本设计就采用了比较先进的89S52为控制核心,89S52采用CHOMS工艺,功耗很低,因此该设计具有实际意义。2设计思想、方案选择及设计任务的指标2.1 设计思想本系统主要实现的功能有:避障功能,避悬崖功能,寻黑线功能,声控功能,流水灯演示,程序状态指示功能,数码管演示,报警功能,夜间探照灯照明及方向灯模拟。(

8、1)避障避悬崖功能:小车前进时,如果遇到具有反光的物体或者悬崖时,小车会自动后退一段,然后左转,绕过障碍物和避开悬崖行驶。(2)巡线功能:将小车放在一条特定的黑色跑道上,边缘是白色,小车会寻着黑线行驶,不会走到白色跑道上。(3)声控功能:前进时,用双手拍打一下,小车就会停止前进,这时前方的探照灯依然亮着,再次拍打后,小车又会继续前进。(4)流水灯和数码管演示:将流水灯模块的程序写入单片机之后,小车上的LED灯会从左到右,从右到左,从两边到中间以及从中间到两边依次点亮。(5)报警功能:小车在遇到悬崖和障碍物时后退左转过程中会报警,一直到继续前进时才停下警笛声音。(6)夜间探照灯照明及方向灯模拟:

9、当小车处于黑暗条件时,前方的探照灯会一直点亮,起到照明作用;小车处于左转时,左边方向灯闪一次,右边的方向灯会灭,模拟了生活中汽车的方向灯。具体设计思路如图2-1所示。 遥控功能流水灯演示 AT89S52避障功能避悬崖巡线功能 声控功能 报警功能 COM1接口 方向灯模拟 图2-1 基本模块方框图2.2 方案设计比较与选择2.2.1 遥控模块方案一:普通遥控玩具小车的遥控装置。此装置是通过发送不同频率的电磁波,被小车接收后,在电路中产生不同的电流和电压,从而控制各个电动机的开关和方向,来实现遥控目标的。此装置需要在遥控器和小车上安装小型天线,用于发射和接受,虽然是无线的,但是也不方便,容易弯曲与

10、损坏,而且遥控距离较短。方案二:红外遥控装置。此装置是通过遥控器的按键发送由一串0和1的二进制代码组成,被红外接收装置接受,运用单片机将遥控器上的多种按键解码出来,用作单片机系统的输入。这样不但解决了常规矩阵键盘线路板过大、布线复杂、占用I/O口过多的弊病,而且通过使用遥控器,操作时可实现人与机器设备的分离,从而更加方便实用。通过两种方案的比较,结合本设计所采用的主控制器为单片机芯片AT89S52,故采用第二种方案。2.2.2 障碍物检测模块方案一:超声波探测采用超声波器件。超声波传感器向空气中发射声脉冲,声波遇到障碍物反射回来,被接收探头接受进行相关的计算和处理;超声波波瓣较宽,一个发生器就

11、可以监测较宽的范围。其优点为抗干扰能力强,不受物体表面颜色的影响;缺点为实现电路复杂,且用通常的测量方法在较近距离上有盲区。方案二:光电式探测采用光电式发射器。发射器向外发送信号,如遇到具有反光效应的障碍物,接受管会接收到信号,通过电路转换成高电平或低电平的电信号,送入芯片内部,通过预先设计的程序使其绕过障碍物。其优点是电路实现非常简单,抗干扰能力较强,但是这种探测只能躲避反光物体,如遇黑色物体则不能避障。通过比较,两种方案均有优缺点,由于本设计中的避障功能不需要非常的精确,并且探测的距离比较近,考虑到电路实现的难易程度,对于电路知识掌握不够熟练,所以综合之下,采用方案二。在方案二中,由于单个

12、发射器的照射范围不能太小,因此不使用激光管。用波瓣较宽的脉冲调制型红外发射管和接收管。2.3 设计指标及技术参数 (1)输入基准电压:6V(2)路径识别:黑色寻迹(3)障碍物检测范围:具有反光性质物体范围:0.005m1m 不具反光性质物体范围:0(4)悬崖探测范围:大于0.1m(5)转弯角度设置:左转90度(6)行驶速度:0.06 m/s(7)遥控距离:25m3 硬件电路设计一个单片机应用系统的硬件电路设计包含有两部分内容:一是系统扩展,即单片机内部的功能单元,如ROMRAMI/O口定时/记数器中断系统等能量不能满足应用系统的要求时,必须在片外进行扩展,选择适当的芯片,设计相应的电路。二是系

13、统配置,既按照系统功能要求配置外围设备,如键盘显示器打印机A/DD/A转换器等,要设计合适的接口电路。3.1 智能寻迹小车系统框图及概述如下图3-1所示:COM 1端口微控制器CPU电动机电机驱动模块防撞功能模块数码管显示模块程序指示灯模块寻迹避悬崖功能模块跑马灯演示模块探照灯模拟模块声控模块蜂鸣器报警模块遥控模块图3-1 小车系统框图微控制器CPU即控制核心模块(MCU):使用AT89S52单片机,其作用是对其他模块采集到的信号进行通过设计的程序进行相关处理,并发出正确的控制信号,是整个系统中最重要的部分。防撞模块巡迹避悬崖模块都采用红外发射探头和红外接收探头,利用红外光线反射和其对黑白两色

14、反光程度不同的原理,既可以很好的检测到前方能够反射的白光物体,从而实现绕障碍物与防撞的功能,也可以用来检测黑线与白线,实现智能巡迹的功能,同时还可以根据这种方法来实现避悬崖及其他更多的高级功能。声控模块由普通的小型话筒构成,简易方便,电路搭建也不复杂;在接近小车上方的位置,有间隔的拍打双手两次,小车会实行停止与前进两种状态。流水灯数码管以及程序状态指示模块均由一排发光二极管和一个数码管组成,发光二极管可以展示不同的花样,比且与小车的运行状态同步;数码管采用共阳的方式接入,由芯片端口直接控制,可以更好的展现出小车的运行状态。电机驱动模块分别由两个LG9110芯片通过主芯片的发出指令来驱动底部的两

15、个电动机,以完成小车的顺利运行;采用简单易于管理的LG9110驱动芯片,充分主程序有时间去处理其它更多功能,比步进电机驱动更简单,更能提高主芯片的效率。电源模块比较简单,由四节干电池构成电池组,提供整机的电源;COM接口模块采用RS232连接方式,为电脑控制小车实现RS232通信建立了接口,能实现串口通信,同时它还是程序下载与烧录不可缺少的端口,可以通过它完成ISP编程。3.2 智能小车系统硬件电路图及单元电路3.2.1 系统的硬件电路总体设计小车的硬件搭建电路主要根据上述框图的每个模块设计,将分步的模块电路与主控制器连接构成系统总原理图,原理总图见附录A。3.2.2 分布单元电路设计与功能概

16、述 (1)微控制器CPU模块 根据前面关于单片机系统的概述,本设计的主控电路采用AT89S52单片机芯片,主要是根据外部遥控和红外探头送入单片机的信号,以内部代码来控制小车的运动状态以及数码管LED灯的动作;附控电路选用LG9110芯片,即驱动小车的底部电机,它根据主芯片发出的指令来控制电机的正转和反转,以完成小车的前进、后退、左转、右转。两种芯片的结构、引脚及连接电路如下图3-2所示:图3-2 AT89S52引脚图和LG9110引脚图(2)COM1端口模块COM端口在电路中的连接如下图3-3所示:图3-3 COM1端口模块电路MAX232芯片是为电脑的RS-232标准串口设计的单电源电平转换

17、芯片,使用+5v单电源供电。第一部分是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DB9插头;DB9插头的RS-232数据从R1IN、R2I

18、N输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。第三部分是供电,15脚GND、16脚VCC(+5v)。(3)遥控模块 外部遥控信号与小车的无线连接装置利用电视机的遥控器发送无线信号以及安装在小车上的红外遥控接收头接收信号,然后转变成电信号,通过外部中断端口和访问外部程序存储器控制信号的端口送入主芯片内部进行处理,以发出正确的指令来控制小车(4)防撞寻迹以及电机驱动模块 此模块是小车的肢体,小车根据微控制器CPU大脑所下发的指令,来做出正确的肢体行为,此肢体即为红外反射与直流电机驱动,用红外发射管和红外接收管以及电机驱动芯片LG9110来实现。其与主芯片的搭建电路如下图3-4所示

19、: 防撞寻迹探头 LG9110驱动电机 图3-4 防撞寻迹以及电机驱动模块电路红外反射是通过V1、V2、V5、V6、V3和V4,信号通过220电阻到达发射管V1,电路中220欧电阻是给发射管提供工作电压和工作电流;15K电阻至V2是将光信号转变成电信号传送到单片机的端口P3.7和P3.6以及P3.5端口,V3、V4是防撞的,V5、V6是寻迹的。 电机驱动主要是通过驱动芯片LG9110,将电机直接接到芯片输出的两端,引脚1和4用于电机方向的控制,1和4的电平不同变换表示电机的运转方向不同,主要有正转和反转等状态,以驱动小车的前进、后退、左转以及右转。设计中对路径检测精度要求较高,可采用6个红外探

20、头置于小车前方(超出小车的车头,成“一”型)和底端(垂直于车身向下,离地面大约1cm),安装时探头需置于小车前方超出小车车头,是为了增加径向探出距离,从理论上讲,径向探出距离越大即探头超出小车车头的距离越大,越有利于尽早的预测小车即将通过的路径,早点将此信息传递给单片机,作出相应的调整,发出正确的控制信号,从而改善小车的性能,因此从理论上讲,径向探出距离是越大越好。但从实际出发,增加径向探出距离会使探头位于小车前方,必然会使小车的重心前移,如果小车本事的重量较轻的话,势必会影响到小车自身的平衡性,严重影响小车在行驶过程中的稳定性能,当然不会得到理想的控制效果的。但是本设计中的小车底部有电机,重

21、心比较稳,并且检测障碍物选用的是红外探头,重量很轻,故不需考虑会影响到小车的平衡性。此外,在采取合理的安置检测探头后,还可以将探头向下倾斜安置,如下图3-5所示。这样做会比垂直安置光电传感器更能获得较大的径向探出距离,更能有效的探测障碍物。小车车身红外探头图3-5 探头装置图(5)声控模块实现小车具有声控功能,则需有声音信号采集装置,因此采用比较简单的小型话筒,其声控的硬件电路设计如下图3-6所示:图3-6 声控电路当有声音输入时,话筒内部的电流会发生相应的变化,47K电阻将声音信号转变成电压信号,其电压信号经过10uF的滤波电容传入到三极管中,8050在设置时有静态工作点,通过1M电阻和15

22、0K电阻使三极管处于一种即将开启状态或者是即将导通状态,当有信号输入时,三极管导通,输出一个低电平的信号,传送到单片机的P0.4端口;没有信号时,三极管将处于截止状态,信号的电平被拉高,则P0.4端口将会是一个高电平。这样就可以实现话筒的声控功能。(6)数码管显示、程序指示灯及跑马灯演示模块 数码管与LED灯电路的电路设计比较简单,主要在于它的软件设计。其硬件电路如下图3-7所示:图3-7 显示电路电路中数码管和LED灯与主芯片通过560欧的限流电阻连接,主芯片根据预先设计的程序会通过P1和P2发出指令信号,这样数码管就会显示相应的数字或相应顺序的连续变换,以及发光二极管同时点亮,完成从左到右

23、、从右到左、从中间往两边和从两边往中间依次点亮的跑马灯的演示。(7)探照灯模拟与蜂鸣器模块此模块主要是在电路中加入了两个发光二极管,前方左右各一个用于方向指示,以及一个光敏电阻用于夜间照明;同时安装了一个蜂鸣器,实现报警功能。其电路如下图3-8所示:图3-8 照明与报警电路光敏电阻RL1通过15K电阻,将光信号转为电压信号,传送到单片机的P0.5端口;蜂鸣器经过三极管V1和220欧电阻与P0.6端口连接,作为输出。因为选用的三极管是8550,故低电平时才能导通。当外界光度较强时,RL1阻值变小,输入到单片机的是低电平,此时蜂鸣器就会工作;相反,当没有光照或较暗时,送入的是高电平,蜂鸣器就会截止

24、。而且电路中在P0.7和P2.0端口输出照明电路,黑暗条件下,装在小车前段的LED灯会点亮,模拟了汽车的夜间照明。3.3 单元电路设计小结以上为智能小车的每个单元电路设计,并且对每个电路的设计思想、部分元器件的性能及实现的功能,进行了比较详细的阐述,把每个模块整合后就会形成小车的整体硬件电路,但是这只是小车的肢体,没有语言使大脑发出正确的指令,它需要大脑来控制,即需要对小车的软件部分进行精心设计。4 软件程序设计在进行微机控制系统设计时,除了系统硬件设计外,大量的工作就是如何根据每个生产对象的实际需要设计应用程序。因此,软件设计在微机控制系统设计中占重要地位。对于本系统,软件更为重要。在单片机

25、控制系统中,大体上可分为数据处理、过程控制两个基本类型。数据处理包括:数据的采集、数字滤波、标度变换等。过程控制程序主要是使单片机按一定的方法进行计算,然后再输出,以便控制生产。为了完成上述任务,在进行软件设计时,通常把整个过程分成若干个部分,每一部分叫做一个模块。所谓“模块”,实质上就是所完成一定功能,相对独立的程序段,这种程序设计方法叫模块程序设计法。模块程序设计法的主要优点是:1、 单个模块比起一个完整的程序易编写及调试;2、 模块可以共存,一个模块可以被多个任务在不同条件下调用;3、 模块程序允许设计者分割任务和利用已有程序,为设计者提供方便。本系统软件部分与硬件电路设计相似,采用模块

26、化结构,由程序状态指示灯模块,流水灯演示模块,数码管及跑马灯模块,按键中断查询模块,话筒声音识别模块,光敏电阻及蜂鸣器模块,红外反射与直流电机驱动模块,红外遥控解码模块,串口通信模块构成。软件流程如图4-1流程图所示:初 始 化状态指示灯闪烁是否烧录程序开关是否按下前 进是否遇障碍物是否第一次检测到声音避障子程序避悬崖子程序是否遇到悬崖是否第二次检测到声音停止前进图4-1 软件设计流程图4.1总程序的头文件、数据类型和端口定义以及综合程序#include 包含51 相关的头文件typeset unsigned char uchar; typedef unsigned int uint; 重定义

27、char和int数据类型#define ShowPort P2 uchar code LedShowData=0x03,0x9F,0x25,0x0D,0x99, 0x49,0x41,0x1F,0x01,0x19; /0,1,2,3,4,5,6,7,8,9 定义数码管显示端口和显示数据static unsigned int RecvData; static unsigned char CountData; 定义接收红外数据变量和红外个数计数变量static unsigned char AddData; static unsigned int LedFlash; 定义自增变量和闪动频率计数变量un

28、signed char HeardData; bit RunFlag=0;定义接收到数据的高位变量和运行标志位以上完成了基本数据变量和端口的定义,下面对状态指示灯及按键端口进行相关的定义:sbit S1State=P10; sbit S2State=P11; sbit B1State=P12; sbit IRState=P13; 定义S1、S2、B1、IR状态标志位sbit RunStopState=P14;sbit FontIRState=P15; sbit LeftIRState=P16; sbit RightIRState=P17; 定义运行停止标志位以及FontIR、LeftIR和Ri

29、ghtIRState三种状态标志位sbit S1=P32; sbit S2=P34;定义S1、S2按键端口完成LED灯的定义后,我们将对最重要的红外探头和电机端口进行定义,如下:sbit LeftLed=P20; sbit RightLed=P07; 定义前方左侧和右侧指示灯端口sbit LeftIR=P35; sbit RightIR=P36; sbit FontIR=P37;定义前方左侧和右侧红外探头以及正前方红外探头sbit M1A=P00; sbit M1B=P01; sbit M2A=P02; sbit M2B=P03; 定义电机1及电机2的正向端口和反向端口下面是对小车的附加功能,

30、如话筒、光敏电阻、蜂鸣器的端口定义,如下:sbit B1=P04; sbit RL1=P05; sbit SB1=P06;定义话筒传感器、光敏电阻和蜂鸣端口sbit IR1=P33定义红外接收端口void Delay(); uint DelayTime=30000 定义延时子程序和延时时间变量综上所有程序只是整体程序代码设计的开头部分,只是对小车所有需要定义的端口及数据类型进行定义,为以下的每个模块程序设计做好铺垫。4.2 单个模块程序设计与编写4.2.1 程序状态指示灯模块程序状态指示灯是比较常见到的一种工作状态指示器,像网卡、无线发射器、电脑等等都会有相应的LED指示灯来表示当前仪器的工作

31、状况。往往用LED闪亮的快慢来表示仪器是否处在工作中,以及长亮与长灭来表示仪器是否故障或需要检查等操作本设计系统中的此模块也是通过LED灯来模拟小车的运行情况,设计思路如下:(1)定义一个可变的延时函数,通过它来改变灯闪亮的时间.(2)选取51机器人中相应的LED模块,声明端口,用来显示闪亮的状态。(3)编写主函数,让芯片一直循环运行,并定义一个时间记录器来改变闪亮情况。(4)根据时间记录器的数值来改变LED指示灯的闪亮情况,来完成程序状态指示灯的模拟操作.具体的程序见附录B程序指示灯模块。4.2.2 流水灯演示模块(1)unsigned int code BToM=0x7E,0x3C,0x1

32、8,0x00; unsigned int code MToB=0xE7,0xC3,0x81,0x00;定义由两边到中间及中间到两边的显示数据void Delay() reentrant unsigned int DelayTime=10000;while(DelayTime-); 加入可重入的延时函数延和时时间基数,以便每个LED灯闪灭之间有一定的延时(2)void LeftToRight() unsigned char TempCount=0; Led=Led1; 定义从左边到右边的显示函数以及显示次数变量;由右边向左边移动数据;然后定义初步的显示数据,通过循环进行数据显示,在每次移动数据开

33、始的时候加入(1)中的延时,最后通过空返回语句return表明该子程序的结束,进入下一个子程序。流水灯的四个动作程序结构与设计上完全一样,完整的程序见附录B中流水灯模块。4.2.3 数码管及跑马灯模块此模块只是将数码管的显示融入到上述的流水灯演示里面,使两者结合起来演示,所以不复杂,并且设计中已经将这个模块的程序写入到总程序中,在小车运行时,会有相应的显示。4.2.4 按键中断查询模块本模块通过两个按键对数码管进行操作,分别演示了查询与中断的操作方式,中断中应用了对按键进行查询的方法来判断按键的键值,查询按键方法中则采用了键盘延迟的方法来消除按键重复输入。程序运行效果:开机后数码管显示数字 1

34、 ,当按 S1 不放时,数码管数字不变,松开 S1 按键,数码减 1 ;按 S2 键不放时,数码管数字会自动加 1。并且数字遵守从 0-9 循环操作。具体的程序见附录B中的按键中断查询模块4.2.5 话筒声音识别模块 本程序主要通过话筒对声音信号进行识别,由于硬件关于本模块电路设计中能有效的去除杂波,所以仅能对响度较大的声音进行识别 ( 例 : 拍手声,大叫声等等 )。像正常的说话声对本电路虑除,不会产生信息的输入。话筒识别的加入,为我们建立了声控平台。主要的程序设计如下: while(1) if (0=B1) while(0=B1); Delay(); LeftLed=!LeftLed; R

35、ightLed=!RightLed;首先判断是否有声音输入,等待声音信号结束,去除多余杂音,然后使小车前方左侧和右侧指示灯分别取反,这样就实现了声音识别的功能;关于声音控制小车运行的设计,已经写入了总程序中,在小车运行时能展现出声控的功能。4.2.6 光敏电阻及蜂鸣器模块while(1)if(1=RL1)Delay();SB1=!SB1;LeftLed=!LeftLed;RightLed=!RightLed;elseSB1=1;LeftLed=1;RightLed=1;首先判断光敏的现在状态 ( 有光 0, 无光 1),然后开始延时,如果在黑暗条件下,高电平输入使蜂鸣器响亮以及前方左右两侧指示

36、灯闪亮;否则蜂鸣器和指示灯均关闭。4.2.7 红外反射与直流电机驱动模块此模块为小车最为重要的模块,因为它关系着小车整体的运行情况,避障避悬崖和寻线都是设计的核心部分,也都是在本模块实现的。首先要定义前方指示灯、红外探头以及电机驱动、语音传感器和蜂鸣器端口,然后加入小车调转子时间子程序并定义转弯时间变量,在延时子程序中写入让蜂鸣器响亮的代码:while(DelayTime-); SB1=!SB1; 这样使得小车转弯时蜂鸣器报警,用return语句来结束该子程序,进入到下一个电机控制子程序,将电机的初始化都设为0,用case语句来判断小车的前进,后退,左转以及右转四种状态,并在相应的状态下写入电

37、机的运转状态,如前进时电机M1M2正转,左转时M1 电机反转M2 电机正转;下面是进入主循环。用LeftLed和RightLed分别表示前方左侧和右侧红外探头状态,RunShow指示前方红外探头状态,然后用if语句(if(FontIR=0 | LeftIR=1)来判断前方 , 左侧 , 右侧是否有信号输入RightIR=1);ControlCar(2); 让小车后退,在后退过程中加入了蜂鸣器报警,注意此时小车没有声控功能,因为存在报警声音,对其造成了一定的干扰。4.2.8 串口通信模块本程序是通过数码管、LED 指示灯的闪亮来表示当前串口通信的结果 , 串口通信使单片机与电脑之间通信的桥梁,可

38、以很好的用电脑来进行单片机的控制,及对单片机数据的采集。 具体的程序代码见附录B中的串口通信模块运行时可以看到,打开本机电源开关后, P1端LED 指示灯在不停的闪耀,此时使用“串口调试助手” 或其它软件向单片机发送数据,可以看到相应的数据显示在数码管上,并且发送的数据又返回到电脑中。 ( 只显示 0-9 数字)4.3 单元模块程序设计小结 以上是对小车软件部分的每个模块进行了说明,并且对主要的程序设计思想进行了阐述,有的模块已经融入到了综合程序中,有的模块是需要分步下载之后才能展现出来,将每个模块的程序经过整合,定义的端口和函数都放在前面,子程序通过空返回语句return来连接,构成总程序。

39、 总程序代码如附录B中总程序所示。5 实物运行与测试结果以及结论5.1 小车的运行情况将COM端口的USB线把小车和电脑连接起来,通过ISP编程器和STC_ISP_V394软件将综合程序写入到芯片中,等待几秒钟,放在一张反光较强的桌子上,打开电源可以看到,小车往前走,当遇到障碍物时会后退转弯,绕过障碍物行驶;行驶到桌子的边缘时,小车同样也会后退转弯,躲避悬崖;同时在前进过程中,可以用拍手声来控制小车,使小车停下来,再拍一次小车又会前进。 由于寻迹功能需单独演示,所以要将其程序写入芯片并把原有程序覆盖,单独实现黑色寻迹。 流水灯和程序状态指示灯也都是属于独立演示的模块,所以要通过端口依次写入依次

40、演示。5.2 小车的测试结果及分析(1)测试结果及数据如下:小车的前进和后退速度一致,均为0.059m/s;障碍物检测距离:反光很强的物体:约1m; 反光很弱的物体:约0.005m; 黑色物体:0 m(即检测不到黑色的障碍物);避悬崖高度范围:大于等于0.09m;巡黑线偏离范围:00.04m;转弯角度:路面较光滑时为左转8790度 路面比较粗糙时左转约8087度数码管能正常显示出数字“0、1、2、”,LED灯比较亮,没有出现闪、较暗或不亮的情况;流水灯演示、方向灯探照灯及声控功能都能实现遥控功能没有实现(2)测试结果分析如下:经过调试与测试,实物小车的速度与设计指标相差0.001 m/s;转弯

41、度与目标值相差10度,这两种误差都与小车行驶的路面状况有关,摩擦力大时,误差范围会更大,所以都符合预先设计的技术要求。避障避悬崖以及寻线的精确度与设计指标相差不是太大,这与元器件的性能有关。其他功能也都能实现,只有实遥控功能没有实现,这是本次设计中的缺陷所在经过线路板及元器件的焊点观察和测试分析,主要原因有以下几点:可能是红外遥控接收头坏了,接收不到遥控器发出的信号;可能是红外接收头至芯片那一路的某个元件虚焊导致断路;还有可能是所选遥控器与软件设计的代码不匹配,实现不了对小车的遥控。由于对遥控解码程序不熟悉,可能通过单片机的程序对遥控器的按键解码不正确,导致小车不具遥控功能。5.3 结论至此小

42、车的整体包括硬件和软件的设计已经完成,历时三个月的设计过程中,我首先上网搜集资料,并在网上选购线路板,在我实习的车间里焊接小车的线路板。虽然我训练过两个月的焊接,但是在实际的焊接过程中,我感觉到即使是一个简单的电路,要想很轻松的焊好,也不是很容易的事情,有时是“虚焊”的原因,有时可能是阻值选错,比如这次的遥控功能就不能实现,这使我深深感受到理论与实际间的差距。通过这样的设计,提高了我的动手能力。焊接结束后,要对其进行调试,在调试过程中,出现了很多问题,如数码管不显示、小车总是后退不前进等等一些问题,在孟老师的指导与帮助下,这些难题已经被攻克了,小车能够正确的实现智能防撞壁悬崖等功能。小车的模型

43、图和实物图见附录C所示;小车的元件清单见附录D所示。6 结束语从三月份着手查资料开始到今日,小车的焊接、调试和组装已经完成,系统基本上能稳定的运行,但是还有不足之处,就是上面所提到的遥控功能没有实现,所以要吸取经验,在以后的学习和工作中要更加完善。参考文献1 胡汉才.单片机原理及其接口技术. M. 北京: 清华大学出版社,2004年2月.2 张永瑞,王松林,李小平.电路分析. M. 北京:高等教育出版社,2004年10月.3 谭浩强.C程序设计. M. 北京: 清华大学出版社,2005年7月.4 清源科技.电路原理图与PCB设计及仿真. M. 北京:机械工业出版社,2008年6月.5 李松法.

44、电子元器件应用技术. M. 北京:航空工业出版社,2009年6月.6 AT89C51 DATA SHEEP Philips Semiconductors 1999.dec7 Nilsson,J.W.Introductory Circuits for Electrical and Computer Engineering. M.BeiJing:Publishing House of Electronics Industry英文摘要Based on single chip microcomputer intelligent car design and productionWang Ying(an

45、hui agricultural university economic institute of technology, Hefei 230036)Abstract: based on undergraduate electronic contest in recent years, the research on this car according to the application of the embedded system, puts forward presented a 8-bit microcontroller as the system can realize intel

46、ligent follow line brain obstacle-avoidance avoid cliff car design methods, through the main chip 32 completely to these ports, IO port to signal input circuit, control circuit and execute circuit, and make use of infrared sensor technology testing obstacles and ground information, collected by AT89

47、S51 for timing control, intelligent obstacle-avoidance and resolutely line from the cliff. Intelligent car using two rounds of the front wheel drive, with a motor with MAX232 chips to carry out, control, and front and bottom probe USES the infrared tubes and infrared receiving tube obstacle detectio

48、n and ground information collection.Key words: AT89S51 , Cast about line,obstacle-avoidance avoid cliffs,flowing water line of light.致 谢四年的生活与学习经历,是我对大学恋恋不忘,学校优美的环境,浓烈的学习气氛,老师们的精心教学,都给我留下美好的深刻的印象,在此我想对辅导员和所有的授课老师以及同学说声谢谢!尤其是在我的这个毕业设计与制作中,张老师给了我很大的帮助,调试中好多的问题都是在张老师细心认真的指导下解决的,所以我特别向他表示感谢!附录A:系统总原理图附录

49、B:部分程序清单程序指示灯模块流水灯模块#include #define LED P1void Delay(unsigned int DelayTime) while(DelayTime-); void main() unsigned int CountData=0;while(1) if(CountData30) Delay(60000); else if(CountData60)Delay(30000); else if(CountData90) Delay(10000);else if(CountData120) CountData=0;.CountData=CountData+1; L

50、ED=LED; #include #define Led P1 Unsigned int code BToM=0x7E,0x3C,0x18,0x00; unsigned int code MToB=0xE7,0xC3,0x81,0x00;void Delay() reentrant unsigned int DelayTime=10000; while(DelayTime-); void LeftToRight() unsigned char TempCount=0; Led=0xFE; for(TempCount=0;TempCount8;TempCount+) Delay(); Led=L

51、ed1; return; void RightToLeft() unsigned char TempCount=0; Led=0x7F; for(TempCount=0;TempCount1; return; void BothToMid() unsigned char TempCount=0; Led=0xFF;for(TempCount=0;TempCount5;TempCount+) Delay();Led=BToMTempCount; return; void MidToBoth()unsigned char TempCount=0; Led=0xFF;for(TempCount=0;

52、TempCount5;TempCount+) Delay(); Led=MToBTempCount;return;void main() while(1) LeftToRight();RightToLeft(); BothToMid(); MidToBoth();按键中断查询模块串口通信模块#include typedef unsigned char uchar;typedef unsigned int uint; sbit S1=P32; sbit S2=P34; uchar DataCount=0; charcode LedShowData=0x9F,0x25,0x0D,0x99,0x49, 0x41,0x1F,0x01,0x19,0x03; void KeyDelay() uint KeyTime=20000; while(KeyTime-);return;void S1_Break() interrupt 0while(0=S1); DataCount-; if(DataCount9) DataCount=9; return;void main() ET0=1; EX0=1; EA=1; while(1) if(0=S2) KeyDelay(); DataCount+;if(DataCount9)DataCount=0; P

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论