基于单片机的多功能智能小车.docx
- 文档编号:23176692
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:39
- 大小:439.55KB
基于单片机的多功能智能小车.docx
《基于单片机的多功能智能小车.docx》由会员分享,可在线阅读,更多相关《基于单片机的多功能智能小车.docx(39页珍藏版)》请在冰豆网上搜索。
基于单片机的多功能智能小车
毕业论文
专业:
班级:
姓名:
毕业设计题目:
基于单片机的多功能智能小车
指导教师姓名:
二〇一三年四月
摘要
基于近几年大学生电子大赛中关于小车的研究,对此根据嵌入式系统的应用,提出了提出了一种以8位单片机作为系统大脑能实现智能循线避障避悬崖小车的设计方法,通过主芯片的32个完全IO端口,对这些端口加以信号输入电路,控制电路和执行电路,并且利用红外探头技术检测障碍物和搜集地面信息,采用AT89S52单片机进行适时控制,实现智能循线避障以及避悬崖。
智能小车采用前轮驱动,两轮各用一个电机执行,用MAX232芯片来控制,前方和底部探头采用红外发射管和红外接收管进行障碍物检测以及地面信息的采集。
关键词:
AT89S52,寻线,避障,避悬崖,流水灯
Abstract
basedonundergraduateelectroniccontestinrecentyears,theresearchonthiscaraccordingtotheapplicationoftheembeddedsystem,putsforwardpresenteda8-bitmicrocontrollerasthesystemcanrealizeintelligentfollowlinebrainobstacle-avoidanceavoidcliffcardesignmethods,throughthemainchip32completelytotheseports,IOporttosignalinputcircuit,controlcircuitandexecutecircuit,andmakeuseofinfraredsensortechnologytestingobstaclesandgroundinformation,collectedbyAT89S51fortimingcontrol,intelligentobstacle-avoidanceandresolutelylinefromthecliff.Intelligentcarusingtworoundsofthefrontwheeldrive,withamotorwithMAX232chipstocarryout,control,andfrontandbottomprobeUSEStheinfraredtubesandinfraredreceivingtubeobstacledetectionandgroundinformationcollection.
Keywords:
AT89S51,Castaboutline,obstacle-avoidanceavoidcliffs,flowingwaterlineoflight.
基于单片机的智能小车设计与制作
1引言
随着汽车工业的迅速发展,关于汽车的研究也就越来越受人关注。
全国大学生电子大赛和省内电子大赛中几乎每次都有关于小车这方面的题目,全国各高校也都很重视该题目的研究,可见其研究意义很大。
本设计就是在这样的背景下提出的,指导教师已经有充分的准备。
本题目是结合科研项目而确定的设计类课题。
设计的智能电动小车应该具有智能寻迹、避障、避悬崖等功能。
根据题目的要求,确定如下方案:
在已有线路板及元器件的基础上,将传感器改为红外探头,将前方底部的两个步进电机改为用LG9110驱动的电机,再编写一段程序,通过COM1端口将程序下载至线路板上的STC单片机芯片里,使得LED灯和数码管具有程序指示作用以及跑马灯流水灯的演示,并且实现小车的防撞、避悬崖和寻迹。
本设计以AT89S52为主芯片,通过P0.0,P0.1,P0.2,P0.3分别控制LG9110电机驱动,来驱动电机1和电机2,。
由电机的正转与反转来完成小车的前进,后退,左转,右转等功能的基本动作。
在小车前进时如果前方有障碍物,由红外发射管发射的红外信号被反射给红外接收管,且将此信号经过P3.7传送入AT89S52中,主芯片通过内部的代码进行小车的绕行,同时主芯片将P3.7的信号状态通过P2.5的LED灯显示出来;小车行走时P3.5与P3.6的红外接收探头会进行路面检测,当走到悬崖处时,端口将会收到一个电平信号,此电平信号通过相应端口传送入主芯片中,以此来控制小车后退然后左转以避开悬崖前进;另外通过代码还附有程序状态指示功能,蜂鸣器的报警功能,夜间自动照明等功能。
第三代单片机包括了Intel公司发展MCS-51系列的新一代产品,如8xC152﹑80C51FA/FB﹑80C51GA/GB﹑8xC451﹑8xC452,还包括了Philips﹑Siemens﹑ADM﹑Fujutsu﹑OKI﹑Harria-Metra﹑ATMEL等公司以80C51为核心推出的大量各具特色﹑与80C51兼容的单片机。
新一代的单片机的最主要的技术特点是向外部接口电路扩展,以实现Microcomputer完善的控制功能为己任,将一些外部接口功能单元如A/D﹑PWM﹑PCA(可编程计数器阵列)﹑WDT(监视定时器)﹑高速I/O口﹑计数器的捕获/比较逻辑等。
这一代单片机中,在总线方面最重要的进展是为单片机配置了芯片间的串行总线,为单片机应用系统设计提供了更加灵活的方式。
Philips公司还为这一代单片机80C51系列8xC592单片机引入了具有较强功能的设备间网络系统总线----CAN(ControllerAreaNetworkBUS)。
新一代单片机为外部提供了相当完善的总线结构,为系统的扩展与配置打下了良好的基础。
本设计就采用了比较先进的89S52为控制核心,89S52采用CHOMS工艺,功耗很低,因此该设计具有实际意义。
2设计思想、方案选择及设计任务的指标
2.1设计思想
本系统主要实现的功能有:
避障功能,避悬崖功能,寻黑线功能,声控功能,流水灯演示,程序状态指示功能,数码管演示,报警功能,夜间探照灯照明及方向灯模拟。
(1)避障避悬崖功能:
小车前进时,如果遇到具有反光的物体或者悬崖时,小车会自动后退一段,然后左转,绕过障碍物和避开悬崖行驶。
(2)巡线功能:
将小车放在一条特定的黑色跑道上,边缘是白色,小车会寻着黑线行驶,不会走到白色跑道上。
(3)声控功能:
前进时,用双手拍打一下,小车就会停止前进,这时前方的探照灯依然亮着,再次拍打后,小车又会继续前进。
(4)流水灯和数码管演示:
将流水灯模块的程序写入单片机之后,小车上的LED灯会从左到右,从右到左,从两边到中间以及从中间到两边依次点亮。
(5)报警功能:
小车在遇到悬崖和障碍物时后退左转过程中会报警,一直到继续前进时才停下警笛声音。
(6)夜间探照灯照明及方向灯模拟:
当小车处于黑暗条件时,前方的探照灯会一直点亮,起到照明作用;小车处于左转时,左边方向灯闪一次,右边的方向灯会灭,模拟了生活中汽车的方向灯。
具体设计思路如图2-1所示。
遥控功能
流
水
灯
演
示
AT89S52
避障功能
图2-1基本模块方框图
2.2方案设计比较与选择
2.2.1遥控模块
方案一:
普通遥控玩具小车的遥控装置。
此装置是通过发送不同频率的电磁波,被小车接收后,在电路中产生不同的电流和电压,从而控制各个电动机的开关和方向,来实现遥控目标的。
此装置需要在遥控器和小车上安装小型天线,用于发射和接受,虽然是无线的,但是也不方便,容易弯曲与损坏,而且遥控距离较短。
方案二:
红外遥控装置。
此装置是通过遥控器的按键发送由一串0和1的二进制代码组成,被红外接收装置接受,运用单片机将遥控器上的多种按键解码出来,用作单片机系统的输入。
这样不但解决了常规矩阵键盘线路板过大、布线复杂、占用I/O口过多的弊病,而且通过使用遥控器,操作时可实现人与机器设备的分离,从而更加方便实用。
通过两种方案的比较,结合本设计所采用的主控制器为单片机芯片AT89S52,故采用第二种方案。
2.2.2障碍物检测模块
方案一:
超声波探测
采用超声波器件。
超声波传感器向空气中发射声脉冲,声波遇到障碍物反射回来,被接收探头接受进行相关的计算和处理;超声波波瓣较宽,一个发生器就可以监测较宽的范围。
其优点为抗干扰能力强,不受物体表面颜色的影响;缺点为实现电路复杂,且用通常的测量方法在较近距离上有盲区。
方案二:
光电式探测
采用光电式发射器。
发射器向外发送信号,如遇到具有反光效应的障碍物,接受管会接收到信号,通过电路转换成高电平或低电平的电信号,送入芯片内部,通过预先设计的程序使其绕过障碍物。
其优点是电路实现非常简单,抗干扰能力较强,但是这种探测只能躲避反光物体,如遇黑色物体则不能避障。
通过比较,两种方案均有优缺点,由于本设计中的避障功能不需要非常的精确,并且探测的距离比较近,考虑到电路实现的难易程度,对于电路知识掌握不够熟练,所以综合之下,采用方案二。
在方案二中,由于单个发射器的照射范围不能太小,因此不使用激光管。
用波瓣较宽的脉冲调制型红外发射管和接收管。
2.3设计指标及技术参数
(1)输入基准电压:
6V
(2)路径识别:
黑色寻迹
(3)障碍物检测范围:
具有反光性质物体范围:
0.005m~1m
不具反光性质物体范围:
0
(4)悬崖探测范围:
大于0.1m
(5)转弯角度设置:
左转90度
(6)行驶速度:
0.06m/s
(7)遥控距离:
25m
3硬件电路设计
一个单片机应用系统的硬件电路设计包含有两部分内容:
一是系统扩展,即单片机内部的功能单元,如ROM﹑RAM﹑I/O口﹑定时/记数器﹑中断系统等能量不能满足应用系统的要求时,必须在片外进行扩展,选择适当的芯片,设计相应的电路。
二是系统配置,既按照系统功能要求配置外围设备,如键盘显示器﹑打印机﹑A/D﹑D/A转换器等,要设计合适的接口电路。
3.1智能寻迹小车系统框图及概述
如下图3-1所示:
图3-1小车系统框图
微控制器CPU即控制核心模块(MCU):
使用AT89S52单片机,其作用是对其他模块采集到的信号进行通过设计的程序进行相关处理,并发出正确的控制信号,是整个系统中最重要的部分。
防撞模块巡迹避悬崖模块都采用红外发射探头和红外接收探头,利用红外光线反射和其对黑白两色反光程度不同的原理,既可以很好的检测到前方能够反射的白光物体,从而实现绕障碍物与防撞的功能,也可以用来检测黑线与白线,实现智能巡迹的功能,同时还可以根据这种方法来实现避悬崖及其他更多的高级功能。
声控模块由普通的小型话筒构成,简易方便,电路搭建也不复杂;在接近小车上方的位置,有间隔的拍打双手两次,小车会实行停止与前进两种状态。
流水灯数码管以及程序状态指示模块均由一排发光二极管和一个数码管组成,发光二极管可以展示不同的花样,比且与小车的运行状态同步;数码管采用共阳的方式接入,由芯片端口直接控制,可以更好的展现出小车的运行状态。
电机驱动模块分别由两个LG9110芯片通过主芯片的发出指令来驱动底部的两个电动机,以完成小车的顺利运行;采用简单易于管理的LG9110驱动芯片,充分主程序有时间去处理其它更多功能,比步进电机驱动更简单,更能提高主芯片的效率。
电源模块比较简单,由四节干电池构成电池组,提供整机的电源;
COM接口模块采用RS232连接方式,为电脑控制小车实现RS232通信建立了接口,能实现串口通信,同时它还是程序下载与烧录不可缺少的端口,可以通过它完成ISP编程。
3.2智能小车系统硬件电路图及单元电路
3.2.1系统的硬件电路总体设计
小车的硬件搭建电路主要根据上述框图的每个模块设计,将分步的模块电路与主控制器连接构成系统总原理图,原理总图见附录A。
3.2.2分布单元电路设计与功能概述
(1)微控制器CPU模块
根据前面关于单片机系统的概述,本设计的主控电路采用AT89S52单片机芯片,主要是根据外部遥控和红外探头送入单片机的信号,以内部代码来控制小车的运动状态以及数码管LED灯的动作;附控电路选用LG9110芯片,即驱动小车的底部电机,它根据主芯片发出的指令来控制电机的正转和反转,以完成小车的前进、后退、左转、右转。
两种芯片的结构、引脚及连接电路如下图3-2所示:
图3-2AT89S52引脚图和LG9110引脚图
(2)COM1端口模块
COM端口在电路中的连接如下图3-3所示:
图3-3COM1端口模块电路
MAX232芯片是为电脑的RS-232标准串口设计的单电源电平转换芯片,使用+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、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。
第三部分是供电,15脚GND、16脚VCC(+5v)。
(3)遥控模块
外部遥控信号与小车的无线连接装置利用电视机的遥控器发送无线信号以及安装在小车上的红外遥控接收头接收信号,然后转变成电信号,通过外部中断端口和访问外部程序存储器控制信号的端口送入主芯片内部进行处理,以发出正确的指令来控制小车
(4)防撞寻迹以及电机驱动模块
此模块是小车的肢体,小车根据微控制器CPU大脑所下发的指令,来做出正确的肢体行为,此肢体即为红外反射与直流电机驱动,用红外发射管和红外接收管以及电机驱动芯片LG9110来实现。
其与主芯片的搭建电路如下图3-4所示:
防撞寻迹探头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个红外探头置于小车前方(超出小车的车头,成“一”型)和底端(垂直于车身向下,离地面大约1cm),安装时探头需置于小车前方超出小车车头,是为了增加径向探出距离,从理论上讲,径向探出距离越大即探头超出小车车头的距离越大,越有利于尽早的预测小车即将通过的路径,早点将此信息传递给单片机,作出相应的调整,发出正确的控制信号,从而改善小车的性能,因此从理论上讲,径向探出距离是越大越好。
但从实际出发,增加径向探出距离会使探头位于小车前方,必然会使小车的重心前移,如果小车本事的重量较轻的话,势必会影响到小车自身的平衡性,严重影响小车在行驶过程中的稳定性能,当然不会得到理想的控制效果的。
但是本设计中的小车底部有电机,重心比较稳,并且检测障碍物选用的是红外探头,重量很轻,故不需考虑会影响到小车的平衡性。
此外,在采取合理的安置检测探头后,还可以将探头向下倾斜安置,如下图3-5所示。
这样做会比垂直安置光电传感器更能获得较大的径向探出距离,更能有效的探测障碍物。
图3-5探头装置图
(5)声控模块
实现小车具有声控功能,则需有声音信号采集装置,因此采用比较简单的小型话筒,其声控的硬件电路设计如下图3-6所示:
图3-6声控电路
当有声音输入时,话筒内部的电流会发生相应的变化,47K电阻将声音信号转变成电压信号,其电压信号经过10uF的滤波电容传入到三极管中,8050在设置时有静态工作点,通过1M电阻和150K电阻使三极管处于一种即将开启状态或者是即将导通状态,当有信号输入时,三极管导通,输出一个低电平的信号,传送到单片机的P0.4端口;没有信号时,三极管将处于截止状态,信号的电平被拉高,则P0.4端口将会是一个高电平。
这样就可以实现话筒的声控功能。
(6)数码管显示、程序指示灯及跑马灯演示模块
数码管与LED灯电路的电路设计比较简单,主要在于它的软件设计。
其硬件电路如下图3-7所示:
图3-7显示电路
电路中数码管和LED灯与主芯片通过560欧的限流电阻连接,主芯片根据预先设计的程序会通过P1和P2发出指令信号,这样数码管就会显示相应的数字或相应顺序的连续变换,以及发光二极管同时点亮,完成从左到右、从右到左、从中间往两边和从两边往中间依次点亮的跑马灯的演示。
(7)探照灯模拟与蜂鸣器模块
此模块主要是在电路中加入了两个发光二极管,前方左右各一个用于方向指示,以及一个光敏电阻用于夜间照明;同时安装了一个蜂鸣器,实现报警功能。
其电路如下图3-8所示:
图3-8照明与报警电路
光敏电阻RL1通过15K电阻,将光信号转为电压信号,传送到单片机的P0.5端口;蜂鸣器经过三极管V1和220欧电阻与P0.6端口连接,作为输出。
因为选用的三极管是8550,故低电平时才能导通。
当外界光度较强时,RL1阻值变小,输入到单片机的是低电平,此时蜂鸣器就会工作;相反,当没有光照或较暗时,送入的是高电平,蜂鸣器就会截止。
而且电路中在P0.7和P2.0端口输出照明电路,黑暗条件下,装在小车前段的LED灯会点亮,模拟了汽车的夜间照明。
3.3单元电路设计小结
以上为智能小车的每个单元电路设计,并且对每个电路的设计思想、部分元器件的性能及实现的功能,进行了比较详细的阐述,把每个模块整合后就会形成小车的整体硬件电路,但是这只是小车的肢体,没有语言使大脑发出正确的指令,它需要大脑来控制,即需要对小车的软件部分进行精心设计。
4软件程序设计
在进行微机控制系统设计时,除了系统硬件设计外,大量的工作就是如何根据每个生产对象的实际需要设计应用程序。
因此,软件设计在微机控制系统设计中占重要地位。
对于本系统,软件更为重要。
在单片机控制系统中,大体上可分为数据处理、过程控制两个基本类型。
数据处理包括:
数据的采集、数字滤波、标度变换等。
过程控制程序主要是使单片机按一定的方法进行计算,然后再输出,以便控制生产。
为了完成上述任务,在进行软件设计时,通常把整个过程分成若干个部分,每一部分叫做一个模块。
所谓“模块”,实质上就是所完成一定功能,相对独立的程序段,这种程序设计方法叫模块程序设计法。
模块程序设计法的主要优点是:
1、单个模块比起一个完整的程序易编写及调试;
2、模块可以共存,一个模块可以被多个任务在不同条件下调用;
3、模块程序允许设计者分割任务和利用已有程序,为设计者提供方便。
本系统软件部分与硬件电路设计相似,采用模块化结构,由程序状态指示灯模块,流水灯演示模块,数码管及跑马灯模块,按键中断查询模块,话筒声音识别模块,光敏电阻及蜂鸣器模块,红外反射与直流电机驱动模块,红外遥控解码模块,串口通信模块构成。
软件流程如图4-1流程图所示:
图4-1软件设计流程图
4.1总程序的头文件、数据类型和端口定义以及综合程序
#include
包含51相关的头文件
typesetunsignedcharuchar;
typedefunsignedintuint;
重定义char和int数据类型
#defineShowPortP2
ucharcodeLedShowData[]={0x03,0x9F,0x25,0x0D,0x99,0x49,0x41,0x1F,0x01,0x19};//0,1,2,3,4,5,6,7,8,9
定义数码管显示端口和显示数据
staticunsignedintRecvData;
staticunsignedcharCountData;
定义接收红外数据变量和红外个数计数变量
staticunsignedcharAddData;
staticunsignedintLedFlash;
定义自增变量和闪动频率计数变量
unsignedcharHeardData;
bitRunFlag=0;
定义接收到数据的高位变量和运行标志位
以上完成了基本数据变量和端口的定义,下面对状态指示灯及按键端口进行相关的定义:
sbitS1State=P1^0;
sbitS2State=P1^1;
sbitB1State=P1^2;
sbitIRState=P1^3;
定义S1、S2、B1、IR状态标志位
sbitRunStopState=P1^4;
sbitFontIRState=P1^5;
sbitLeftIRState=P1^6;
sbitRightIRState=P1^7;
定义运行停止标志位以及FontIR、LeftIR和RightIRState三种状态标志位
sbitS1=P3^2;
sbitS2=P3^4;
定义S1、S2按键端口
完成LED灯的定义后,我们将对最重要的红外探头和电机端口进行定义,如下:
sbitLeftLed=P2^0;
sbitRightLed=P0^7;
定义前方左侧和右侧指示灯端口
sbitLeftIR=P3^5;
sbitRightIR=P3^6;
sbitFontIR=P3^7;
定义前方左侧和右侧红外探头以及正前方红外探头
sbitM1A=P0^0;
sbitM1B=P0^1;
sbitM2A=P0^2;
sbitM2B=P0^3;
定义电机1及电机2的正向端口和反向端口
下面是对小车的附加功能,如话筒、光敏电阻、蜂鸣器的端口定义,如下:
sbitB1=P0^4;
sbitRL1=P0^5;
sbitSB1=P0^6;
定义话筒传感器、光敏电阻和蜂鸣端口
sbitIR1=P3^3
定义红外接收端口
voidDelay();
{uintDelayTime=30000
定义延时子程序和延时时间变量
综上所有程序只是整体程序代码设计的开头部分,只是对小车所有需要定义的端口及数据类型进行定义,为以下的每个模块程序设计做好铺垫。
4.2单个模块程序设计与编写
4.2.1程序状态指示灯模块
程序状态指示灯是比较常见到的一种工作状态指示器,像网卡、无线发射器、电脑等等都会有相应的LED指示灯来表示当前仪器的工作状况。
往往用LED闪亮的快慢来表示仪器是否处在工作中,以及长亮与长灭来表示仪器是否故障或需要检查等操作
本设计系统中的此模块也是通过LED灯来模拟小车的运行情况,设计思路如下:
(1)定义一个可变的延时函数,通过它来改变灯闪亮的时间.
(2)选取51机器人中相应的LED模块,声明端口,用来显示闪亮的状态。
(3)编写主函数,让芯片一直循环运行,并定义一个时间记录器来改变闪亮情况。
(4)根据
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 多功能 智能 小车
![提示](https://static.bdocx.com/images/bang_tan.gif)