当前位置:文档之家› 基于89c51单片机的智能超声波避障小车

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

接口实验课程结课论文学号、专业:

姓名:

论文题目:

指导教师:

所属学院:

成绩评定

教师签名

桂林电子科技大学研究生院

2014年 7 月 1 日

引言

现今发达的交通在给人们带来便捷的同时也带来了许多的交通事故。发生交通事故的因素有很多。当然,如果我们的汽车能够更加智能,就是说事先能预测并显示前面障碍物离车的距离,当障碍物距离很近时汽车会自动采取一些措施避开障碍物,这样就能够在很大程度上避免这些事故的发生。

第一章 总体方案概述

本小车使用一片A T89c52 单片机作为主控芯片;用HC-SR04超声波模块来探测前方障碍物的距离,用单片机P3.1口送出大于10us 的高电平,P3.0用来检测回波,用单片机定时中断计算超声波来回经历的时间,这样可以通过距离计算公式求得前方障碍物的距离;LCD1602液晶屏用来显示距离;L298驱动芯片用来驱动两个直流电机,在单片机P1口控制L298的IN1,IN2,IN3,IN4的高低电平来控制两个直流电机的正反转,并且在P1口输出PWM 波,控制车子的行驶速度;选用ISD1760语音芯片实现语音播报功能,主要采用独立按键方式,进行语音的录放,用单片机的P2.4口控制语音的播放。

本系统设计的简易智能小车分为几个模块:系统控制模块,测距模块,驱动模块,显示模块,语音播报模块以及电源模块。以上相关模块的具体描述如下:

系统控制模块:单片机STC89C52RC; 测距模块:HC-SR04超声波测距; 驱动模块:芯片L298及其相关逻辑电路; 显示模块:LCD1602及其外围电路

语音播报模块:芯片ISD1760及其录放音电路; 电源模块:4节1.5伏的锂电池

它们之间的相互关系如下图1所示。

单片机控制模块 液晶显示模块

直流电机驱动模块

超声波测距模块

语音播报模

图1 智能小车简要原理框架图

第二章硬件电路设计

2.1 单片机控制模块

此模块控制着超声波测距模块、液晶显示模块、直流电机驱动模块、语音播报模块的工作。单片机通过计时器记录超声波发射和接受的时间差计算出小车距离障碍物的距离,控制P0口的高低电平来控制液晶显示,通过输出PWM波来控制直流电机的工作,通过按键方式来控制语音芯片的定点放音,实现语音播报功能。

2.1.1 STC89C52RC单片机特性及管脚说明

STC89C52RC单片机是宏晶科技公司生产的一款单片机。其引脚图如下:

VCC (40脚):电源端

VSS (20脚):接地端

P0:P0口是一个漏极电路的双向I/O口。可以将P0 口用作可驱动TTL负载的输出口。也可用作高阻抗输入,但是必须先对其写入1。P0 口最常用的是作为输出口,可以通过上拉电阻外接负载和电源

P1: P1端口与P0 口的功能及用法类似,只不过P1端口内部含有上拉电阻。P1 口用作输入端口时,必须首先对其写1

P2端口: P2 口功能及用法与P1 口类似

P3端口: P3 口基本功能及使用同P2 口。下面介绍其复用功能:

P3.0:RXD—用作串口输入端

P3.1:TXD—用作串口输出端

P3.2:作为单片机的外部中断0输入

P3.3:作为单片机的外部中断1输入

P3.4:定时器TO的输入端

P3.5:定时器T1的输入端

P3.6:单片机写使能端

P3.6:单片机读使能端

RST (9脚):用作单片机的复位信号输入端。只有该引脚检测到大于两个机器周期的高电平脉冲信号时,单片机才会进行复位操作

ALE (30脚):当单片机访问外部程序存储区时,该引脚输出脉冲信号对存储区地址低8位进行锁存。同时该引脚也可用作FLASH编程的脉冲输入端

PSEN (29脚):当单片机STC89C52RC从读取外部程序寄存器的程序并执行程序时需要将该引脚设为低电平使能状态

EA/VPP (31引脚):该引脚控制单片机访问程序区的选择,当对外部程序区进行访问时需将该引脚拉低。如果只对内部程序存储区进行访问,那么应将该引脚置高为1 XTAL1 (19引脚):该因引脚是单片机时钟振荡器即晶振的输入端口

XTAL2 (18引脚):单片机时钟振荡器的反相输入端,与XTAL1 —起与晶振连接作为单片机的时钟脉冲输入

2.1.2 单片机复位电路

上电复位:当系统上电时,VCC电源端将对电容C1充电,电容保存电荷后会呈现电池状态,单片机的第9引脚被输入高电平,单片机实现上电复位;

手动复位:在系统上电状态下,按下按键S5时,电源VCC通过电阻R3连接到单片机第9引脚复位端,直接对单片机复位端提供高电平,从而实现手动复位。

本系统电路采用的是上电复位电路。

2.1.3 单片机时钟电路

单片机采用12MHZ晶振,Y1的两端直接连接到单片机的XTAL1和XTAL2两个引脚,对单片机提供振荡源。两个电容C2和C3(均为20pf)起到滤波和滤尖峰的作用,保护晶振工作在正常状态。

2.2直流电机驱动模块

L298驱动芯片用来驱动两个直流电机,让小车动起来。其原理图如下所示。

L298N是SGS公司的产品,其内部包含4通道逻辑驱动电路,由L298N构成的PWM 功率放大器的工作形式为单极可逆模式,L298可驱动2个电机,OUT1,OUT2和OUT3,OUT4之间分别接2个电动机。5,7,10,12脚接输入控制电平,控制电机的正反转,ENA,ENB接控制使能端,控制电机的停转。

由于电源电压的波动,以及电路节点电压的不稳定,直流电机外围电路中接有稳压二极管,用来保护电路,使得电机两端电压稳定,小车行驶过程平稳。

下图2为L298芯片输入输出关系。

EN A IN

1

IN

2

电机运行状况

H H L 正转H L H 反转

H IN

2 IN

1

快速停止

L X X 停止

图2 L298芯片输入输出关系下面介绍L298芯片各引脚功能:

SENSEA(1)和SENSEB(15):该引脚通过检测电阻连接到地,对L298的电压值进行检测,如果超出设定值,则该引脚将ENA端拉低,禁止L298

OUT1(2)和OUT2(3):该两引脚是L298的电压输出端,用来驱动负载

VS(4):直流电动机驱动电源输入端口

N1(5)和IN2(7):L298的内部驱动电路的输入端,当IN1=1, IN2=0时,OUT1为输出电压正极,0UT2为负极

ENA(6)和ENB(11):L298的驱动使能端。当该引脚为高电平时,L298为使能状态,正常输出工作电压;当该引脚为低电平时,L298为禁止状态,无输出工作电压GND(8):与地连接,散热作用

VSS(9):L298逻辑控制电路的电源接入端,一般接+12V直流电压

IN3(10)和IN4(12):L298的内部驱动电路的输入端,当IN3=1,IN4=0时,OUT3输出电压正极,0UT4为负极

OUT3(13)和OUT4(14):该两引脚是L298的电压输出端,用来驱动负载

2.3 超声波测距模块

HC-SR04超声波模块,VCC供5V电源,GND 为地线,TRIG触发控制信号输入,ECHO回响信号输出等四个接口端。单片机提供一个10uS以上脉冲触发信号,该模块内部将发出8个40kHz周期电平并检测回波。一旦检测到有回波信号则输出回响信号。

由此通过发射信号到收到的回响信号时间间隔可以计算得到距离。公式:uS/58=厘米;

或者,距离= 高电平时间*声速(340M/S)/2。

该小车电路板引出4个引脚的排针,分别接GND,VCC,Trig,Echo。

触发信号子函数:

void trigger() //超声波触发信号,触发电平110us

{

trig=1;

delay(1);

trig=0;

}

距离计算公式:

distance=3453*distance/20000 //单位:us

右边的distance为中断求出来的时间,左边的distance为计算的距离。

2.4 液晶显示模块

采用LCD1602液晶显示屏,单片机的P0口接8位数据总线,P2口的5,6,7分别控制液晶的数据指令rs,读写rw,使能信号e。滑动变阻器R1,阻值10K,用来调整背光。R2的阻值不能选的太大了,几百欧就可以,否则液晶的亮度偏暗。该模块的作用就是实时的将超声波测得的距离给显示出来。

图3 液晶显示电路

2.5 语音播报模块

ISD1760各引脚及其功能说明如下:

VCCD(1):数字电源

LED(2):LED指示信号输出

RESET(3):芯片复位

MISO(4):SPI接口的串行输出。在SCLK的下降沿半个周期之前把数据送到MIS端,之后在SCLK的下降沿移出。

MOSI(5):SPI 接口的数据输入端口。主控制芯片在SCLK 上升沿之前的半个周期将数据放置在MOSI 端。数据在CLK 上升沿被锁存在芯片内。此管脚在空闲时,应该被拉高

SCLK(6):SPI接口的时钟。由主控制芯片产生,并且被用来同步芯片MOSI和SCLK 627MIS端各自的数据输入和输出。此管脚空闲时,必须拉高

/SS(7):为低时,选择该芯片成为当前被控制设备并且开启SPI 接口。空闲时,

需要拉高

VSSA(8):模拟地

Anain(9):片录音或直通时,辅助的模拟输入。需要一个交流耦合电容(典型0.1uF),并且输入信号的幅值不能超出1.0Vpp。APC寄存器的D3可以决定Analn信号被立刻录制到存

储器中,与Mic信号混合被录制到存储器中,或者被缓存到喇叭端并经由直通线路从

AUD/AUX输出。

MIC+(10):麦克风输入+

MIC-(11):麦克风输入-

VSSPA(12):负极PWM 喇叭驱动器地喇叭输出-

SP-(13):PWM喇叭驱动器电源

VCCP+(14):喇叭输出+

SP-(15):正极PWM喇叭驱动器地

VSSP1(16):辅助输出,决定于APC寄存器

AUD/AUX(17):D7,用来输出一个AUD或AUX输出。AUD是一个单端电流输出,而AuxOut是一个单端电压输出。他们能够被用来驱动一个外部扬声器。出厂默认设置为AUD。APC寄存器的D9可以使其掉电

AGC(18):自动增益调

/VOL(19):音量控制

ROSC(20):振荡电阻ROSC用一个电阻连接到地,决定芯片的采样频率

VCCA(21):模拟电路电源

/FT(22):在独立芯片模式下,当FT 一直为低,Analn 直通线路被激活。Analn 信号被立刻从Analn 经由音量控制线路发射到喇叭以及AUD/AUX 输出。D0所控制。该管脚有一个内部上拉设备和一个内部防抖动设计,当在SPI 模式下,SPI 无视这个输入,而且直通线路被APC 寄存器的,允许使用按键开关来控制开始和结束

/PLAY(23):播放控制端

/REC(24):录音控制端

/ERASE(25):擦出控制端

/FWD(26):快进控制端

RDY /INT(27):一个开路输出。Ready(独立模式)该管脚在录音,放音,擦除和快进操作时保持为低,保持为高时进入空闲状态;Interrupt(SPI模式):在完成SPI 命令后,会产生一个低信号的中断。一旦中断消除,该脚变回为高。

VSSD(28):模拟地

此模块是用来提供语音提示,当小车到达安全距离时,小车的控制系统会发出语音提示。

图4 语音播报电路

ISD1760 工作原理:通过REC键来进行录音录音时要一直按住REC键,录完一段语音后松开REC键,按动PLAY键可以对刚才的录音播放出来;VOL 键可以加减音量,每按动一次VOL键,声音就增大一级,由于只有8级音量调节,所以在第9次按动VOL键时,声音又回到了最小音量;ERASE 键可以对已经录入的语音进行擦除,短按此键可以擦除上一段录音,长按此键可以擦除所有录音;通过SS,SCLK,MISO,MOSI 脚与单片机进行SPI通信,单片机就是通过这几个脚实现对ISD1760 的定点放音。

该小车采用的是独立按键方式进行语音的录放,按下REC键录好音,另外播放键PLAY单独引出,用杜邦线与单片机P2口4脚连接,该引脚电平拉低就播放出语音。

该模块录放的语音为“在您前方15cm处有一障碍物,请您注意避让”。

第三章硬件调试以及成品展示

3.1 硬件调试

在电路板制作,元器件焊接工作完成之后,根据设计的步骤要求对硬件电路板进行了调试,这里将调试过程及在调试的过程中所遇到的问题提出来进行讨论,以便使得对后面的误差分析提供一些依据。

首先是用万用表检测元器件的好坏,是否正常工作,是否漏焊等。具体的实现方法是先检测电容、电阻及导线是否短接。另外还有导线之间不能挨得太近,否则会出现短路的情况。

之后是测试各个引脚来判断电路是否正常工作。先用万用表测电路的电源和地端之

间的电阻,如果它们之间电阻不为零,就可给电路板通电;反之,就必须检查电路,因为电路肯定有短路。完成这一步后,给电路接通电源,测试芯片的VCC端电压是否达到要求,接地端是否都接地,无误后,则开始对电路中所用到的引脚进行信号波形测试,看每个引脚的电平是否与资料上的测结果相符。在调试语音播报的电路板时,不管对着麦克风说什么话,扬声器都没有语音播放出来。用万用表检查电路的情况,结果发现顶层的电阻有一个脚虚焊了,加焊锡之后有语音播放出来。

经过这几次实际操作我也发现,很多问题其实就是在实际动手中的失误造成的,许多问题都是可以通过我们的多一点认真得到避免的。

3.2 成品展示

图5 成品展示

第四章系统软件设计

本系统的软件设计主要由主程序,定时器T0中断服务子程序,定时器T1中断服务子程序,初始化子程序,延时子程序组成。C语言程序有利于实现较复杂的算法,汇编语言程

序容易精细计算程序运行的时间,而超声波测距的程序既有较复杂的计算(计算距离时),又要求精细计算程序运行时间(超声波测距时),所以为了有利于程序结构化和容易计算出距离,程序采用C语言编写。

该系统利用了51 单片机的定时中断功能,用T0产生PWM波,并且控制小车的行驶速度,利用T1中断来计算超声波来回所用的时间。下面介绍两个定时器中断T0,T1的程序流程图,图6所示。

开始

定时器初始化

启动定时器T0,定时1ms,开T0中断

启动计数器T1,开始计数

车子继续直行

回波接收成功

N

Y

关T1中断计算时间

计算距离

关总中断EA

图6 中断程序流程图

系统功能实现的程序流程图,见图7所示。

图7 系统程序流程图

第五章 应用前景

本智能小车系统最诱人的前景就是可用于未来的智能汽车,当驾驶员因疏忽或打瞌睡时这样的智能汽车的设计就能体现出它的作用。如果汽车偏离车道或距障碍物小于安全距离 时,汽车就会发出报警,提醒驾驶员注意,如果驾驶员没有及时作出反应,汽车就会自动减速或停靠于路边。 这样的小车还可以用于月球探测等的无人探月车,帮助我们传达月球上更多的信息,让我们更加的了解月球,为将来登月做好充分准备。 这样的小车在科学考察探测车上也有广阔的应用前景。在科学考察中,有许多很危险且人 们无法涉足的地方,这时,智能科学考察车就能够派上用场,在它上面装上摄像机,代替人们进行许多无法进行的工作。

开始

系统初始化 >=30cm

停止直行,语音播报,车子转弯

驱动电机,直行

Y

N

超声波测量距离

参考文献

[1] 康华光.电子技术基础[M].北京:高等教育出版社,2006.

[2] 郭天祥.新概念51 单片机C 语言教程——入门、提高、开发、拓展全攻略.北京:电子工业出版社,2009

[3] 焦玉朋.基于51单片机的PWM直流电机调速系统.内蒙古:内蒙古大学,2013

[4] 李丽华.基于ISD1760实现的语音信息播报系统.福建:福建电脑,2009

[5]杨姣秀,基于单片机的超声波测距仪的设计.湖南工业大学,2008.

桂林电子科技大学接口实验报告

附录

系统电路原理图:

相关主题
文本预览
相关文档 最新文档