ImageVerifierCode 换一换
格式:DOCX , 页数:34 ,大小:394.34KB ,
资源ID:17913483      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17913483.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于单片机的智能小车设计与制作Word文档格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于单片机的智能小车设计与制作Word文档格式.docx

1、新一代的单片机的最主要的技术特点是向外部接口电路扩展,以实现Microcomputer完善的控制功能为己任,将一些外部接口功能单元如A/DPWMPCA(可编程计数器阵列)WDT(监视定时器)高速I/O口计数器的捕获/比较逻辑等。这一代单片机中,在总线方面最重要的进展是为单片机配置了芯片间的串行总线,为单片机应用系统设计提供了更加灵活的方式。Philips公司还为这一代单片机80C51系列8C592单片机引入了具有较强功能的设备间网络系统总线-CAN(Controller Area Network BUS)。新一代单片机为外部提供了相当完善的总线结构,为系统的扩展与配置打下了良好的基础。本设计就

2、采用了比较先进的89S52为控制核心,89S52采用CHOMS工艺,功耗很低,因此该设计具有实际意义。2设计思想、方案选择及设计任务的指标2.1 设计思想本系统主要实现的功能有:避障功能,避悬崖功能,寻黑线功能,声控功能,流水灯演示,程序状态指示功能,数码管演示,报警功能,夜间探照灯照明及方向灯模拟。(1)避障避悬崖功能:小车前进时,如果遇到具有反光的物体或者悬崖时,小车会自动后退一段,然后左转,绕过障碍物和避开悬崖行驶。(2)巡线功能:将小车放在一条特定的黑色跑道上,边缘是白色,小车会寻着黑线行驶,不会走到白色跑道上。(3)声控功能:前进时,用双手拍打一下,小车就会停止前进,这时前方的探照灯

3、依然亮着,再次拍打后,小车又会继续前进。(4)流水灯和数码管演示:将流水灯模块的程序写入单片机之后,小车上的LED灯会从左到右,从右到左,从两边到中间以及从中间到两边依次点亮。(5)报警功能:小车在遇到悬崖和障碍物时后退左转过程中会报警,一直到继续前进时才停下警笛声音。(6)夜间探照灯照明及方向灯模拟:当小车处于黑暗条件时,前方的探照灯会一直点亮,起到照明作用;小车处于左转时,左边方向灯闪一次,右边的方向灯会灭,模拟了生活中汽车的方向灯。具体设计思路如图2-1所示。 遥控功能流水灯演示 AT89S52避障功能 图2-1 基本模块方框图2.2 方案设计比较与选择2.2.1 遥控模块方案一:普通遥

4、控玩具小车的遥控装置。此装置是通过发送不同频率的电磁波,被小车接收后,在电路中产生不同的电流和电压,从而控制各个电动机的开关和方向,来实现遥控目标的。此装置需要在遥控器和小车上安装小型天线,用于发射和接受,虽然是无线的,但是也不方便,容易弯曲与损坏,而且遥控距离较短。方案二:红外遥控装置。此装置是通过遥控器的按键发送由一串0和1的二进制代码组成,被红外接收装置接受,运用单片机将遥控器上的多种按键解码出来,用作单片机系统的输入。这样不但解决了常规矩阵键盘线路板过大、布线复杂、占用I/O口过多的弊病,而且通过使用遥控器,操作时可实现人与机器设备的分离,从而更加方便实用。通过两种方案的比较,结合本设

5、计所采用的主控制器为单片机芯片AT89S52,故采用第二种方案。2.2.2 障碍物检测模块超声波探测采用超声波器件。超声波传感器向空气中发射声脉冲,声波遇到障碍物反射回来,被接收探头接受进行相关的计算和处理;超声波波瓣较宽,一个发生器就可以监测较宽的范围。其优点为抗干扰能力强,不受物体表面颜色的影响;缺点为实现电路复杂,且用通常的测量方法在较近距离上有盲区。光电式探测采用光电式发射器。发射器向外发送信号,如遇到具有反光效应的障碍物,接受管会接收到信号,通过电路转换成高电平或低电平的电信号,送入芯片内部,通过预先设计的程序使其绕过障碍物。其优点是电路实现非常简单,抗干扰能力较强,但是这种探测只能

6、躲避反光物体,如遇黑色物体则不能避障。通过比较,两种方案均有优缺点,由于本设计中的避障功能不需要非常的精确,并且探测的距离比较近,考虑到电路实现的难易程度,对于电路知识掌握不够熟练,所以综合之下,采用方案二。在方案二中,由于单个发射器的照射范围不能太小,因此不使用激光管。用波瓣较宽的脉冲调制型红外发射管和接收管。2.3 设计指标及技术参数 (1)输入基准电压:6V(2)路径识别:黑色寻迹(3)障碍物检测范围:具有反光性质物体范围:0.005m1m 不具反光性质物体范围:(4)悬崖探测范围:大于0.1m(5)转弯角度设置:左转90度(6)行驶速度:0.06 m/s(7)遥控距离:25m3 硬件电

7、路设计一个单片机应用系统的硬件电路设计包含有两部分内容:一是系统扩展,即单片机内部的功能单元,如ROMRAMI/O口定时/记数器中断系统等能量不能满足应用系统的要求时,必须在片外进行扩展,选择适当的芯片,设计相应的电路。二是系统配置,既按照系统功能要求配置外围设备,如键盘显示器打印机A/DD/A转换器等,要设计合适的接口电路。3.1 智能寻迹小车系统框图及概述如下图3-1所示:COM 1端口微控制器CPU电动机电机驱动模块防撞功能模块数码管显示模块程序指示灯模块寻迹避悬崖功能模块跑马灯演示模块探照灯模拟模块声控模块蜂鸣器报警模块遥控模块图3-1 小车系统框图微控制器CPU即控制核心模块(MCU

8、):使用AT89S52单片机,其作用是对其他模块采集到的信号进行通过设计的程序进行相关处理,并发出正确的控制信号,是整个系统中最重要的部分。防撞模块巡迹避悬崖模块都采用红外发射探头和红外接收探头,利用红外光线反射和其对黑白两色反光程度不同的原理,既可以很好的检测到前方能够反射的白光物体,从而实现绕障碍物与防撞的功能,也可以用来检测黑线与白线,实现智能巡迹的功能,同时还可以根据这种方法来实现避悬崖及其他更多的高级功能。声控模块由普通的小型话筒构成,简易方便,电路搭建也不复杂;在接近小车上方的位置,有间隔的拍打双手两次,小车会实行停止与前进两种状态。流水灯数码管以及程序状态指示模块均由一排发光二极

9、管和一个数码管组成,发光二极管可以展示不同的花样,比且与小车的运行状态同步;数码管采用共阳的方式接入,由芯片端口直接控制,可以更好的展现出小车的运行状态。电机驱动模块分别由两个LG9110芯片通过主芯片的发出指令来驱动底部的两个电动机,以完成小车的顺利运行;采用简单易于管理的LG9110驱动芯片,充分主程序有时间去处理其它更多功能,比步进电机驱动更简单,更能提高主芯片的效率。电源模块比较简单,由四节干电池构成电池组,提供整机的电源;COM接口模块采用RS232连接方式,为电脑控制小车实现RS232通信建立了接口,能实现串口通信,同时它还是程序下载与烧录不可缺少的端口,可以通过它完成ISP编程。

10、3.2 智能小车系统硬件电路图及单元电路3.2.1 系统的硬件电路总体设计小车的硬件搭建电路主要根据上述框图的每个模块设计,将分步的模块电路与主控制器连接构成系统总原理图,原理总图见附录A。3.2.2 分布单元电路设计与功能概述 (1)微控制器CPU模块 根据前面关于单片机系统的概述,本设计的主控电路采用AT89S52单片机芯片,主要是根据外部遥控和红外探头送入单片机的信号,以内部代码来控制小车的运动状态以及数码管LED灯的动作;附控电路选用LG9110芯片,即驱动小车的底部电机,它根据主芯片发出的指令来控制电机的正转和反转,以完成小车的前进、后退、左转、右转。两种芯片的结构、引脚及连接电路如

11、下图3-2所示:图3-2 AT89S52引脚图和LG9110引脚图(2)COM1端口模块COM端口在电路中的连接如下图3-3所示:图3-3 COM1端口模块电路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脚

12、(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)防撞寻迹以及

13、电机驱动模块 此模块是小车的肢体,小车根据微控制器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是寻迹的。 电机驱动主要是通过驱动芯片

14、LG9110,将电机直接接到芯片输出的两端,引脚1和4用于电机方向的控制,1和4的电平不同变换表示电机的运转方向不同,主要有正转和反转等状态,以驱动小车的前进、后退、左转以及右转。设计中对路径检测精度要求较高,可采用6个红外探头置于小车前方(超出小车的车头,成“一”型)和底端(垂直于车身向下,离地面大约1cm),安装时探头需置于小车前方超出小车车头,是为了增加径向探出距离,从理论上讲,径向探出距离越大即探头超出小车车头的距离越大,越有利于尽早的预测小车即将通过的路径,早点将此信息传递给单片机,作出相应的调整,发出正确的控制信号,从而改善小车的性能,因此从理论上讲,径向探出距离是越大越好。但从实

15、际出发,增加径向探出距离会使探头位于小车前方,必然会使小车的重心前移,如果小车本事的重量较轻的话,势必会影响到小车自身的平衡性,严重影响小车在行驶过程中的稳定性能,当然不会得到理想的控制效果的。但是本设计中的小车底部有电机,重心比较稳,并且检测障碍物选用的是红外探头,重量很轻,故不需考虑会影响到小车的平衡性。此外,在采取合理的安置检测探头后,还可以将探头向下倾斜安置,如下图3-5所示。这样做会比垂直安置光电传感器更能获得较大的径向探出距离,更能有效的探测障碍物。图3-5 探头装置图(5)声控模块实现小车具有声控功能,则需有声音信号采集装置,因此采用比较简单的小型话筒,其声控的硬件电路设计如下图

16、3-6所示:图3-6 声控电路当有声音输入时,话筒内部的电流会发生相应的变化,47K电阻将声音信号转变成电压信号,其电压信号经过10uF的滤波电容传入到三极管中,8050在设置时有静态工作点,通过1M电阻和150K电阻使三极管处于一种即将开启状态或者是即将导通状态,当有信号输入时,三极管导通,输出一个低电平的信号,传送到单片机的P0.4端口;没有信号时,三极管将处于截止状态,信号的电平被拉高,则P0.4端口将会是一个高电平。这样就可以实现话筒的声控功能。(6)数码管显示、程序指示灯及跑马灯演示模块 数码管与LED灯电路的电路设计比较简单,主要在于它的软件设计。其硬件电路如下图3-7所示:图3-

17、7 显示电路电路中数码管和LED灯与主芯片通过560欧的限流电阻连接,主芯片根据预先设计的程序会通过P1和P2发出指令信号,这样数码管就会显示相应的数字或相应顺序的连续变换,以及发光二极管同时点亮,完成从左到右、从右到左、从中间往两边和从两边往中间依次点亮的跑马灯的演示。(7)探照灯模拟与蜂鸣器模块此模块主要是在电路中加入了两个发光二极管,前方左右各一个用于方向指示,以及一个光敏电阻用于夜间照明;同时安装了一个蜂鸣器,实现报警功能。其电路如下图3-8所示:图3-8 照明与报警电路光敏电阻RL1通过15K电阻,将光信号转为电压信号,传送到单片机的P0.5端口;蜂鸣器经过三极管V1和220欧电阻与

18、P0.6端口连接,作为输出。因为选用的三极管是8550,故低电平时才能导通。当外界光度较强时,RL1阻值变小,输入到单片机的是低电平,此时蜂鸣器就会工作;相反,当没有光照或较暗时,送入的是高电平,蜂鸣器就会截止。而且电路中在P0.7和P2.0端口输出照明电路,黑暗条件下,装在小车前段的LED灯会点亮,模拟了汽车的夜间照明。3.3 单元电路设计小结以上为智能小车的每个单元电路设计,并且对每个电路的设计思想、部分元器件的性能及实现的功能,进行了比较详细的阐述,把每个模块整合后就会形成小车的整体硬件电路,但是这只是小车的肢体,没有语言使大脑发出正确的指令,它需要大脑来控制,即需要对小车的软件部分进行

19、精心设计。4 软件程序设计在进行微机控制系统设计时,除了系统硬件设计外,大量的工作就是如何根据每个生产对象的实际需要设计应用程序。因此,软件设计在微机控制系统设计中占重要地位。对于本系统,软件更为重要。在单片机控制系统中,大体上可分为数据处理、过程控制两个基本类型。数据处理包括:数据的采集、数字滤波、标度变换等。过程控制程序主要是使单片机按一定的方法进行计算,然后再输出,以便控制生产。为了完成上述任务,在进行软件设计时,通常把整个过程分成若干个部分,每一部分叫做一个模块。所谓“模块”,实质上就是所完成一定功能,相对独立的程序段,这种程序设计方法叫模块程序设计法。模块程序设计法的主要优点是:1、

20、 单个模块比起一个完整的程序易编写及调试;2、 模块可以共存,一个模块可以被多个任务在不同条件下调用;3、 模块程序允许设计者分割任务和利用已有程序,为设计者提供方便。本系统软件部分与硬件电路设计相似,采用模块化结构,由程序状态指示灯模块,流水灯演示模块,数码管及跑马灯模块,按键中断查询模块,话筒声音识别模块,光敏电阻及蜂鸣器模块,红外反射与直流电机驱动模块,红外遥控解码模块,串口通信模块构成。软件流程如图4-1流程图所示:图4-1 软件设计流程图4.1总程序的头文件、数据类型和端口定义以及综合程序#include 包含51 相关的头文件typeset unsigned char uchar;

21、typedef unsigned int uint;重定义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 L

22、edFlash; 定义自增变量和闪动频率计数变量unsigned 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; 定义运行停止标志

23、位以及FontIR、LeftIR和RightIRState三种状态标志位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的正向端口和反向端口下面

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

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

26、0x3C,0x18,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;定义从左边到右边的显示函数以及显示次数变量;由右边向左边移动数据;然后定义初步的显示数据,通过循环进行数据显示,在每次移

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

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1