超声波测距离加语音报距毕业设计.docx
《超声波测距离加语音报距毕业设计.docx》由会员分享,可在线阅读,更多相关《超声波测距离加语音报距毕业设计.docx(64页珍藏版)》请在冰点文库上搜索。
超声波测距离加语音报距毕业设计
毕业设计报告
设计题目:
超声波测距仪
设计作者:
专业班级/学号:
08级机电
(1)班0806050142
合作者1:
专业班级/学号:
0806050110
合作者2:
专业班级/学号:
0806050122
指导教师:
设计时间:
2011-4-15
1引言
2毕业设计任务及要求
2.1设计任务
(1)画出超声波测距仪的电路原理图
(2)画出语音芯片ISD1720应用电路图
(3)编写显示、语音等模块的单片机程序
(4)制作硬件电路板,并进行调试
2.2设计要求
要完成设计任务,必需掌握以下各方面知识:
(1)C51系列单片机的应用原理
(2)掌握超声波传感器的使用
(3)查语音芯片ISD1720的资料及了解其的应用
(4)掌握诺基亚5510LCD屏幕(液晶)的使用
(5)了解一些芯片,如NE555P(脉冲产生)、LM393(双比较器)、CD4069(六相反相器)等
(6)完成超声波测距的电路和程序
(7)完成测到的距离数据显示
(8)完成距离数据可以用语音报出
3系统总体设计
3.1方案论证
3.1.1主控制器方案论证确定
方案三:
用AT89S52,
3.1.2超声波发射电路方案论证确定
方案3 :
如图3-3,由NE555时基电路及外围元件构成40kHZ多谐振荡器电路,调节电阻器Rt1和Rt2阻值,可以改变振荡频率。
由NE555第3脚输出端驱动超声波换能器Lf的一端并接非门CD4069的一端,CD4069第2端接超声波换能器Lf的另一端使之发射出超声波信号。
由于NE555工作时,使能端4要接9V电压,而单片机输出5V,因而用LM393比较器进行比较,使NE555的工作由单片机控制。
电路简单易制。
电路工作电压9V,工作电流40~50mA。
发射超声波信号大于8m。
图3-340KHz超声波发动和电路三
3.1.3超声波接收及信号处理电路方案论证确定
方案2:
采用集成电路CX20106A构成超声波接收电路,如图3-5。
集成电路CX20106A是一款红外线检波接收的专用芯片,常用于电视机红外遥控接收器。
CX20106A内部电路由前置放大器、自动偏置电平控制电路(ABLC)、限幅放大器、带通滤波器、峰值检波器及波形整形电路组成。
考虑到红外遥控常用的载波频率38kHz与测距的超声波频率40kHz较为接近,可以利用它制作超声波检测接收电路。
此电路外围元件较少,灵敏度可靠性较高,故选择此方案。
图3-5CX20106A引脚图
3.1.4显示电路方案论证确定
3.1.5语音模块方案论证确定
方案1:
使用ISD1400系列的语音芯片,该芯片是并行通信,问世时间较早,在一些功能上不够完善。
由于并口通信,它的使用较简单,不过引线较多,占资源会较多。
不采用因方案。
方案2:
使用ISD1700系列的语音芯片,该芯片是SPI串口通信,是ISD1400系列的升级版,功能较完善。
音质好,语音长短可由用户定义。
它引线少。
使用时比ISD1400系列的复杂,作为毕业设计,使用此方案,是较好的段练。
所以语音模块上选用此方案,电路图见图3-7。
图3-7语音模块电路图
3.1.6系统电源电路
系统电源以
为主电源,通过三端稳压电路LM7809及LM7805得到系统需要的
和
电源。
超声波发射电路采用
供电,其余电路采用
供电。
电路如图3-8。
图3-8电源电路
3.2系统结构框图设计及说明
A本毕业设计系统结构框图设计设计如下(图3-9):
图3-9系统结构框图
B设计说明:
根据生活的一些自然现象,可知超声波以一定速度(v=340m/s左右)在空气中传播,如果超声波在前方遇到障碍物时则被反射返回。
然后通过计时发送到接收的时间,再经过计算就可以得出距离。
该设计主要核芯是单片机,所先单片机的一个端口来控制超声波发射电路产生一个40KHz的脉冲信号,经过驱动电路,发射器发出超声波并开始计时,等到有波返回来时,接收器将接收到信号,信号经过放大,送给主芯片,以此同时并关断定时器。
经过其往返时间为t,距离s=vt/2即可算出被测物体的距离。
然后把距离送到LCD显示,也可以把距离用语音报出来。
如果需要,当你按下S1按键(可以参考附录电路图)时,可以把此时的距离读出来。
4软、硬件设计
4.1系统硬件设计
主控单片机I/O口分配表(表4-1):
端口
功能
端口
功能
P1.0
ISD1720的MOSO端
P2.3
LCD的SCE端
P1.1
ISD1720的MOSI端
P2.4
LCD的RES端
P1.2
ISD1720的SCLK端
P2.5
LCD的D/C端
P1.3
ISD1720的SS端
P2.6
LCD的SDIN端
P2.1
超声波发送信号控制端
P2.7
LCD的SCLK端
P3.3
外部中断入口
P1.4
语音报距离按钮
表4-1单片机I/O口分配表
4.1.1系统硬件原理图及工作原理说明
本项目的主要核芯是单片机,所先单片机的一个端口(输出5V电压)来控制LM393芯片(工作电压为9V)的1端口输出的电平(0V或9V)。
根据LM393的1端电平的不同,来控制NE555P的工作。
NE555P的第3脚输出端驱动超声波换能器Lf的一端并接非门CD4069的一端,CD4069第2端接超声波换能器Lf的另一端使之发射出超声波信号,从而实现单片机控制超声波的发送。
CX20106A红外接收芯片的输出端的与单片机连接,状态直接反应到单片机。
单片机通过P2.1引脚来控制超声波的发送。
当一次超声波发送完后,就开启内部定时器,开启外部中断,且单片机不停的检测INT1引脚,当INT1引脚的电平由高电平变为低电平时就认为超声波已经返回。
单片机开启外部中断使定时器关闭,定时器所计的数据就是超声波所经历的时间,通过运算就可以得到传感器与障碍物之间的距离,这时通过BCD码转换把十六进制的数据转换成十进制,并通过查表把距离显示在Nokia5510LCD液晶器上。
如果需要报距,按下特定的键,可以把此时的距离用语音报出来。
实现方法是根据ISD1720与单片机进行SPI串口通信。
ISD1720具有定点播放的功能,通过查表把相应的语音读出来。
电路中用到的CX20106A是一款红外线检波接收的专用芯片,常用于电视机红外遥控接收器。
考虑到红外遥控常用的载波频率38kHz与测距的超声波频率40kHz较为接近,可以利用它制作超声波检测接收电路(如图2-3)。
实验证明用CX20106A
接收超声波(无信号时输出高电平),具有很好的灵敏度和较强的抗干扰能力。
适当更改电容C7的大小,可以改变接收电路的灵敏度和抗干扰能力。
4.1.2单元电路设计原理与元件参数选择
(1)超声波模块
A发送电路:
如图3所示,发送电路主要核心是NE555P。
它的最高工作电压是15V,本实验工作电压为9V。
当第4端为高电平时(9V),第3端就输出相应脉冲,它的脉冲宽度TL≈0.7(Rt1+R7)C4,由于电容C4放电时间决定;TH≈0.7(Rt1+R7)C4,由电容C4充电决定。
所以脉冲宽度T≈TH+TL。
因为实验中的超声波频率为40KHZ,且TL=TH。
假设取C4=1000pF,那么可以相应求出Rt1+R7=Rt2+R8≈18k,则取R7=R8=10k,Rt1=Rt2=20k。
C5固定取0.01Uf。
根据上段所述,控制脉冲输出的电平是9V,而单片机的电平在4.5-5.2V。
这显然不满足要求。
因此,引入比较器LM393,LM393是双比较器(如图4-1),但在本实验只用其中一个比较器。
LM393的第2端与第3端比较,其中第2端接约1V左右电压,第3端接单片机控制端P2.7。
当P2.1为高电平时,第1端则输出9V电平。
反之,输出低电平。
从而主单片机进行控制超声波的发送。
图4-1LM393内部结构
B接收电路:
接收电路中用到的CX20106A是一款红外线检波接收的专用芯片,常用于电视机红外遥控接收器。
考虑到红外遥控常用的载波频率38kHz与测距的超声波频率40kHz较为接近,可以利用它制作超声波检测接收电路(如图4-2)。
实验证明用CX20106A接收超声波(无信号时输出高电平),具有很好的灵敏度和较强的抗干扰能力。
适当更改电容C7的大小,可以改变接收电路的灵敏度和抗干扰能力。
图4-2超声波接收电路
CX20106A的引脚注释:
l脚:
超声波信号输入端,该脚的输入阻抗约为40kΩ。
2脚:
该脚与GND之间连接RC串联网络,它们是负反馈串联网络的一个组成部分,改变它们的数值能改变前置放大器的增益和频率特性。
增大电阻R或减小C,将使负反馈量增大,放大倍数下降,反之则放大倍数增大。
但C的改变会影响到频率特性,一般在实际使用中不必改动,推荐选用参数为R18=4.7Ω,C4=3.3μF。
3脚:
该脚与GND之间连接检波电容,电容量大为平均值检波,瞬间相应灵敏度低;若容量小,则为峰值检波,瞬间相应灵敏度高,但检波输出的脉冲宽度变动大,易造成误动作,推荐参数为C5=3.3μF。
4脚:
接地端。
5脚:
该脚与电源端VCC接入一个电阻,用以设置带通滤波器的中心频率f0,阻值越大,中心频率越低。
例如,取R17=200kΩ时,fn≈42kHz,若取R17=220kΩ,则中心频率f0≈38kHz。
所以取220kΩ
6脚:
该脚与GND之间接入一个积分电容,标准值为C6=330pF,如果该电容取得太大,会使探测距离变短。
7脚:
遥控命令输出端,它是集电极开路的输出方式,因此该引脚必须接上一个上拉电阻到电源端,该电阻推荐阻值为22kΩ,没有接收信号时该端输出为高电平,有信号时则会下降。
8脚:
电源正极,4.5V~5V。
(2)显示模块
显示采用Nokia5510lcd显示,其是串口与单片机通信。
它的外部引线有8条。
具体如下:
1脚:
电源正极端,电压范围2.7V-6.2V。
2脚:
电源负端
3脚:
SCE芯片使能,允许输入数据。
低电平有效。
4脚:
RES复位端,应用于初始化,低电平有效。
5脚:
D/C模式选择,选择命令/地址或数据。
6脚:
DIN串行数据线,输入数据线。
7脚:
SCLK串行时钟线。
8脚:
背灯电源端,电压正时亮,负时灭。
与外部连接如下图(图4-3):
图4-3LCD外部连接图
它是一个48X84点阵LCD,内部有个DDRAM显示数据存储器。
通过写相应命令和数据,可显示出相应的数据。
内部工作原理图(图4-4)如下:
图4-4内部工作原理图
(3)语音模块
ISD1720一些主要引脚功能表(表4-2):
端口
功能
4
MOSO脚,数据在时钟下降沿输出SPI接口的串行输出
5
MOSI脚,数据在时钟上升沿输出SPI接口的串行输入
6
SCLK脚,SPI接口的时钟,由主控芯片产生时钟
7
SS脚,片选端,低有效
10
MIC+脚,话筒差分信号正向输入端
11
MIC-脚,话筒差分信号负向输入端
13
SP-脚,喇叭输出负端
15
SP+脚,喇叭输出正端
19
VOL脚,音量调节端
22
FT脚,直通选择端。
SPI时无效
23
PLAY脚,播放当前曲
24
REC脚,录音控制端
25
ERASE脚,擦除控制端
11
FWD脚,指针指向下一曲
表4-2ISD1720主要引脚功能表
语音芯片ISD1720的工作方式有两种:
按键操作模式和SPI模式。
在按键操作模式上,是通过按键进行控制它工作。
该工作方式上,通过按键操作。
独立按键工作模式录放电路非常简单,而且功能强大。
不仅有录、放功能,还有快进,擦除,音量控制,直通放音和复位等功能。
在本设计上,由于要指定播放特定的语音,在按键模式上难于实现。
而且要微机控制它的工作,所以它工作方式为SPI模式。
在芯片内,所先用户要根据各需要的语音存储到内部储存地址里面,有两种方式:
一种是用外围电路通过第九端ANALN,把语音信息传送到内部地址。
一种是用独立按键直接录音。
在第一种情况下,能准确的把相应的语音存放在用户需要的地址内,不过要有各个源语音,格式为WAV音频;第二种情况下,它的储存地址是10H后面,顺序排列。
但由于设备的限制,采用独立按键录音。
工作时采用SPI工作。
图7为语音模块的电路图,ISD1720其中的第20端内部有个电阻ROSC为振荡电阻,决定内部的工作频率,振荡电阻用一个电阻R2接到地。
根据R2的不同,可以得到它不同的工作频率,从而得到不同的录音时间。
R2的大小与录音时间长短关系如下表4-3:
R2(KΩ)
53
80
100
120
160
录音时间(S)
20
30
37
45
60
表4-3R2与录音时间关系
由于应用在音质一般的场合,因此取R2=80kΩ,图中其它元件阻值为固定参数。
在此不多介绍。
4.2系统软件设计
4.2.1软件系统总流程图及设计思路说明
单片机地址单元分配表(表4-4):
地址分配
用途
初始值
20H.0
LCD底色选择
00H
30H
超声波发送个数设定
00H
50H
距离个位缓冲区
00H
51H
距离十位缓冲区
00H
52H
距离百位缓冲区
00H
60H
即将播放起始语音低地址
无
61H
即将播放起始语音高地址
无
62H
即将播放结束语音低地址
00H
63H
即将播放结束语音高地址
00H
64H
ISD1720状态寄存器SR0低8位
无
65H
ISD1720状态寄存器SR0高8位
无
66H
ISD1720状态寄存器SR1
无
71H
LCD即将显示数据的起始横坐标
00H
72H
LCD即将显示数据的起始纵坐标
00H
表4-4单片机地址单元分配表
①软件系统总流程图(图4-5):
4-5
②设计思路说明:
主程序框图如图所示,主程序首先对系统环境初始化,设置定时器T0工作模式为16位的定时计数器模式,置位总中断允许位EA并给显示端口P0和P2清0。
然后调用超声波发射子程序送出超声波脉冲,为避免超声波从发射器直接传送到接收器引起的直接波触发,需延迟一段时间,保持电平12.5us左右,也就是超声波频率大约为40KHZ,连续发送15个波形(这也是超声波测距离会有一个最小可测距离的原因)后,才打开外中断1接收返回的超声波信号。
由于采用12MHz的晶振,机器周期为1us,当主程序检测到接收成功的标志位后,将计数器T0中的数(即超声波来回所用的时间)按下式计算即可测得被测物体与测距仪之间的距离,设计时取20℃时的声速为340m/s则有:
d=(C*T0)/2=170*T0/10000cm(其中T0为计数器T0的计数值)
测出距离后结果将以十进制BCD码方式送到LCD显示管显示,看是否要语音报距。
一个流程之后又反回继续发送超声波……
4.2.2软件各功能模块的流程图设计及思路说明
(1)距离运算模块
①软件功能模块流程图设计(图4-6):
图4-6距离运算流程图
②设计思路说明:
在系统中,根据超声波的发送与返回。
得到的只有时间大小,在运算模块中的任务就是把时间的大小转换距离的大小。
刚开始从定时器取时间大小T,该值可能是8位或是16位。
我们已知的是超声波的传播距离V=340m/s。
那么距离S=VT,返回的时间T单位是us,则有:
S=(C*T0)/2=170*T0/10000cm(其中T0为计数器T0的计数值)
但是,在89S51单片机中,高运算范围是8位,在此中,运算最大可能有24位的数值。
因此,需进行双字节运算。
首先,进行双字节的乘法,T*170(170是超声波发送加返回的速度)得出结
果是距离,单位是0.01mm。
其次。
进行双字节除法,要显示的单位是cm。
双字节的乘法得出来的是0.01mm
单位,需除以1000之后单位才是cm。
再次,进行双字节BCD码转换。
时间经过双字节的乘法,进行双字节除法之后得出来的距离表示方法是16进制,需转成十进制,让人更直观。
(1)显示模块
①软件功能模块流程图设计(图4-7):
图4-7显示模块流程图设
②设计思路说明:
因为显示是用LCD液晶,无需进行动态刷新。
所以当距离缓冲区的内容改变时,LCD屏幕上的数据更新一下。
其它的显示数据,无需改变,它是48X84的点阵。
如果需要在特定的位置上显示特定的数据时,只需准确给定它的横坐标和纵坐标的值,然后调用要显示的内容,内容就加载到DDRAM中,接着就进行显示。
以下是距离更新的子程序:
DPLY_JL:
MOVCOL,#32;给定纵坐标
MOVROW,#2;给定横坐标
MOVA,50H;距离百位
CALLLCD_NUM;调用写入数据子程序
MOVA,51H;距离十位
CALLLCD_NUM
MOVA,52H;距离个位
CALLLCD_NUM
RET
LCD串口总协议图(图4-8):
图4-8LCD串口总协议图
(3)语音模块
①软件功能模块流程图设计(图4-9):
图4-9语音模块流程图
②设计思路说明:
ISD1720的SPI协议格式如下图(图4-10):
图4-10ISD1720的SPI协议格式图
ISD1720内部语音地址分配表(表4-5):
起始地址
结束地址
存放内容(相应语音)
11H
13H
0
14H
16H
1
17H
18H
2
19H
1AH
3
1BH
1CH
4
1DH
1EH
5
1FH
20H
6
22H
23H
7
25H
26H
8
27H
28H
9
29H
2EH
厘米
2FH
30H
百
31H
32H
十
表4-5语音地址分配表
ISD1720的通信是SPI方式,所先写个SPI通信功能程序(见子程序SENDDATA)。
每次要写命令或读取状态直接调用,使用时方便。
/************************************************************************
*函数原型:
SENDDATA;
*功能:
SPI串口数据发送,发送数据,一次一个字节,
*待发送数据存在R2,读取接收ISD1720芯片移出的一个字节,接收
*存在R2
***********************************************************************/
SENDDATA:
MOVR4,#8
SETBSCLK
CLRSS
NOP
NOP
LOOP1:
CLRSCLK
CLRC
CALLDELAY_30ns
MOVA,R2
RRCA
MOVA,R2
MOVMOSI,C
JNBMOSO,LOOP2
MOVA,R2
ORLA,#10000000B
MOVR2,A
LOOP2:
SETBSCLK
CALLDELAY_30ns
DJNZR4,LOOP1
CLRMOSI
RET
每次计算出来的距离值存在对应缓冲区内,如果需要时需用语音读出来。
在语音芯片,它能定点播放(从特定的地址开始播放到特定的结束地址),所以需知道它各个语音的存放地址和结束地址。
在软件设计上,把各语音段的地址制作成一个表,每个语音有两个地址,一个起始地址,一个结束地址。
所以,把表作成双字节表(见程序表TAB)。
比如语音“0”它的起始地址为11H,结束地址为13H;语音“1”它的起始地址为14H,结束地址为17H。
TAB:
DB11H,13H,14H,16H,17H,18H,19H,1AH,1BH,1CH,1DH,1EH,1FH,20H,22H,23H,25H,26H,27H,28H,29H,2EH,2FH,30H,31H,32H
在设计上,能测到的距离是三位的数字,它把距离数据存在缓冲区内,包括各位有出现零。
语音每次播报的内容来自距离缓冲区。
如果遇到有效数只有一位或两位时,此时前面有两个或一个零。
在语音播报时,需让百位或十位的零自动去掉,读出有效的距离。
还有,如果是三位有效值或两位有效值,但中间或个位为零,在我们习惯中,中间为零时,通常不加“十”的语音。
另外,如果是三位有效值或两位有效值,个位为零时,在习惯中,就不读出零的语音。
,在本软件设计上也实现这两点。
(4)中断服务子程序
①软件功能模块流程图设计(图4-11):
图4-11中断服务子程序流程图
②设计思路说明:
当进入中断时,必须马上关闭定时器。
避免定时器继续计时,让时间误差更大,导致结果误差加大。
接着取定时器定时的时间,该时间通过运算得到距离结果。
为了有余波的干扰再次进入中断,在外部中断服务子程序中关断外部中断子程序。
5安装与调试
5.1安装调试过程
本系统需实现部分分硬件与软件部分,软件是根据硬件的方案而编写。
在硬件,先确定各个模块所采用的方案然后作出各个方案的电路原理图。
调试各各模块功能是否实现。
如果实现了,做出各个模块结合在一起的主控电路原理图和各模块的功能电路图(本设计语音模块与总电路不同于一个电路板上)。
画完之后,做出PCB图时,安装两个超声波探头时应保持两个探头中心轴线平行相距4-8CM。
其它元件无特殊要求。
检查PCB图与电路原理图是否一致。
检查无误之后做出电路板焊上各个元件。
焊完之后,对照图看是否有焊错,确认无误后通额定的电压(输入端输入12V左右)。
然后用万用表测7809和7805,看它们的输出端是否分别为9V、5V。
如果是,电源电路正常。
保输入电压一段时间,检查各个元件是否正常(比如是否发热)。
各个模块安装完成之后,在输入端接上12左右的电压。
用示波器观察单片机18、19端是否有12MHZ波形。
如果有,单片机正常工作。
在LM393的第3端接入5V的电平,用示波器观察第1端是否有幅度9V波形。
如果有,调节滑动变阻器RT1、RT2,使1端输出频率为40KHZ,且高低电平时间相等。
频率调完成之后,用平滑坚硬的东西挡在两个超声波探头前,距离大约10cm左右。
此时,用万用表测CX20106A第7端的电平,看是否为低。
如果是,接着第3端接入低电平,看1端是否没波形输出。
如果是,此时,用万用表测CX20106A第7端的电平,看是否为高。
如果以上皆是,则超声波发送与接收电路都可以。
在显示上,检查一下单片机P23-2.7接到NOKAI5510LCD上的线是否正确。
如果正确,主控电路板电路正常。
当主控电路板正确后,检查语音模块。
先通过独立按键模式下是否有实现相应的功能。
如果有,用独立按键的方法录下各个需要的语音,数字语音“0、1、2、3、4、5、6、7、8、9”和“百、十、厘米”语音。
录下之后,用按键试播放语音,看语音是否齐全与音质如何。
如果可以,该电路正常。
硬件安装调试完成。
硬件安装调试完成之后。
需进行软件编写调试。
用KEIL软件