1、智能仪表设计基础课程设计 课题名称 电子导盲杖 学生学号 学生姓名 所在班级 指导教师 九月目 录1.功能规定及性能指标1.1 课程设计的目的和设计任务(1)1.2 课程设计的规定和技术指标(1)2.方案设计2.1 硬件方案(2) 2.1.1 测距模块方案选择(2) 2.1.2 语音模块方案选择 (3) 2.1.3 显示模块方案选择 (4) 2.1.4 震动模块方案选择(4)2.2 软件方案 (4)3.硬件设计 3.1 STC89C52单片机介绍 (6) 3.1.1 引脚分布及定义(6) 3.1.2 定期器 (8) 3.2 HC-SR04超声波模块介绍 (8) 3.2.1 模块实物图及说明 (
2、9) 3.2.2 测距电路设计 (9) 3.2.3 测距程序设计 (11)3.3 ISD1420语音芯片介绍 (12) 3.3.1 芯片引脚图及功能说明 (12) 3.3.2 语音录放电路的设计 (13) 3.3.3 语音程序设计 (14) 3.4 震动模块及LED灯的控制 (15) 3.5 总原理图 (16) 3.6 仪器仪表清单 (18)4.软件设计 4.1 程序程序设计 (18) 4.2 程序调试结果 (22)5.设计小结 (23)参考文献附录一:课程设计任务书附录二:软件程序清单1. 功能规定及性能指标1.1 课程设计的目的和设计任务世界上视觉障碍者数量众多,他们只能用百分之六十的感觉
3、来获取信息。盲人在独自行走时重要依靠导盲装置,最简朴常用的导盲装置是普通的拐杖,用它在地面上敲击,可帮助盲人发现0.5米以内的障碍物。它的重要缺陷是不能发现较远一点的障碍物以及悬空的障碍物。随着社会的发展,传统的导盲杖已经远远不能满足盲人的需要了。超声波导盲杖是为视觉障碍者提供环境导引的辅助工具,它通过超声波传感器对周边环境进行探测,将探测的信息反馈给视觉障碍者,帮助他们填补视觉信息的缺失。1.2课程设计的规定和技术指标设计规定:本作品由超声波测距功能、前方障碍物语音警示功能、震动警示功能、夜间警示路人功能。在盲人走路时,假如前方1米处有障碍物,则盲杖自动语音提醒“前方一米处有障碍物,请注意!
4、”,假如前方1米处没有障碍物,无提醒音;假如前方2米处有障碍物,则盲杖自动语音提醒“前方二米处有障碍物,请注意!”,假如前方2米处没有障碍物,无提醒音;假如前方3米处有障碍物,则盲杖自动语音提醒“前方三米处有障碍物,请注意!”,假如前方3米处没有障碍物,无提醒音。手柄震动警示功能,可以让盲人在嘈杂的环境中通过手柄的震动接受到前方障碍物信号,填补了语音提醒在嘈杂环境中的弊端。夜间警示路人功能,在夜间碰到4米以内障碍物时,盲杖上的指示灯亮,可以警示前方路人注意盲人的位置,注意避让盲人。盲杖具有使用方便,功耗低,实用性,是盲人出行外出的好助手。技术指标:超声波测距模块:可提供2cm-400cm的非接
5、触式距离感测功能,测距精度可达3mm。ISD1420语音芯片:具有20秒高保真语音录放功能,通过具有专利技术的模拟解决存储方式,使录放音质极佳,没有常见的的背景噪音,且电路断电后语音内容仍不丢失。2.方案设计2.1 硬件设计方案 电子导盲杖的总体框图如下图(图1)所示,它由超声波模块、单片机、语音模块、震动模块、警示模块、校准模块 组成。STC89C52单片机HCSR04 超声波模块ISD1420语音模块震动模块警示模块校准模块图1 硬件原理框图2.1.1 测距模块方案选择 方案一:红外测距运用红外线测距,测距里程可达1-5公里。运用红外线传播时的不扩散原理:由于红外线在穿越其他物质时折射率很
6、小,所以长距离测距会考虑红外线,而红外线的传播是需要时间的,当红外线从测距仪发出,碰到反射物被反射回来被测距仪接受,在根据从发射到接受的时间及红外线的传播速度就可算出距离。 方案二: 激光测距 运用激光对目的的距离进行准确测量,测程可达40公里。激光测距在工作时向目的射出一束很细的激光,由光电元件接受目的反射的激光束,计时器测定激光束从发射到接受的时间,计算出从观测者到目的的距离。 方案三: 超声波测距 超声波测距是根据超声波碰到障碍物反射回来的特性进行测量的,测控距离为2cm到4m。超声波发射器向某一方向发射超声波,在发射的同时开始计时,超声波在空气中传播,途中碰到障碍物会立即返回来,超声波
7、接受器收到反射波就立即中断停止计时。通过不断检测产生波发射后碰到障碍物所发射的回波,从而测出发射超声波和接受超声波的时间差,然后根据超声波的速度算出距障碍物的距离。 选择方案三因素: 方案一的红外线测距,在距离较短的情况下,从发射到接受的时间过短,用单片机很难计算出,因此红外测距适合较长距离的测量。方案二的激光测距,虽然测量精度较高,但是价格昂贵。因此,在精度规定不是很高的情况下,选择价格便宜,适合短距离测量的超声波测距模块更为合适。 2.1.2 语音模块选择 方案一: ZLG1730语音芯片 ZLG1730语音芯片,内部采用多层次存储技术,在单个芯片上提供了自然的,高质量的录放决方案。输入语
8、音信号直接存储在环形Flash存储器中,且能重现自然的音质。芯片带有两种操作模式:独立按键模式,微控制器(SPI)模式。在独立按键模式下,无需知道消息存储在存储器里的准确位置就可以对消息进行录制、播放、擦除和快进操作。在SPI模式下可以通过4条串行接线口来实现分段录制和播放等操作,但需要此外购买编程器。 方案二: ISD1820 语音芯片 ISD1820语音芯片是单片8-20秒的单段语音录放电路,基本结构与ISD1420完全相同,采用CMOS技术,内含振荡器,话筒前置放大,自动增益控制,防混淆滤波器,扬声器驱动及FLASH阵列。放音模式有三种可选择,其音质比通常的话筒放大器要好很多,并且不会出
9、现喇叭过载的情况。整个电路耗电极低,几乎为0。录入的时间越短音质越好,录入的时间越长,音质越差。 方案三: ISD1420 语音芯片 ISD1420录放音质极佳,没有常见的的背景噪音,且电路断电后语音内容仍不丢失。通过A0-A7地址端选择不同地址进行录音,每位地址代表125毫秒的寻址,160个地址覆盖20秒的语音范围,只需要将录制的时间大体计算出来,除以125,就可以准确知道每段录音的播放首地址。在接入单片机控制后,只需要将相应地址赋值,就可以播放不同段的语音信息。录音及放音功能均从设定的起始地址开始,录音结束由停止键操作决定,芯片内部自动在该段的结束位置插入结束标志(EOM);而放音时芯片碰
10、到EOM标志即自动停止放音。 选择方案三因素: 方案一的ZLG1730模块,虽然可以通过软件分段录放音,但是需此外购买下载编程器,价格和其他两种方案比,较昂贵。方案二的ISD1820模块只能进行单段语音的录放,不能实现规定的分段播放功能,因此不宜选择。方案三的ISD1420模块就在同等条件下较合适,能直接用单片机控制分段播放,价格便宜实惠。综合考虑,选择方案三。 2.1.3 显示模块方案选择 方案一:ZLG7290数码管显示 ZLG7290数码管,内部有显示RAM,能自动将显示RAM中的内容动态显示在相应的数码管上。内部有I2C串行接口,方便与解决器相接。可驱动8位共阴数码管或64只独立LED
11、和64个按键。它的扫描位数可控,任一数码管闪烁可控,无需外接元件即可直接驱动LED。 方案二:1602液晶屏显示 1602液晶模块采用标准的16脚接口。它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用。微功耗、体积小、显示内容丰富、超薄轻巧,常用在袖珍式仪表和低功耗应用系统中。 选择方案一因素: 电子导盲杖中不需要用到专门的显示部分,而加入显示只是为了在测距的时候可以知道测量的距离是否准确,或者校正时使用。因此,若选择方案二有点浪费单片
12、机的IO口。从经济角度考虑,实验室有集成的ZLG7290模块,而没有1602液晶屏,此外购买会导致浪费。综合考虑,选择方案一。 2.1.4 震动模块的选择 方案一:直流电机加偏振块 震动是在电机转动时由于偏振块的作用而产生的。直流电机的应用广泛,可直接加上电压而不会烧坏,但对电流规定较高,价格便宜,方便购买。 方案二: 偏振电机 偏振电机在手机等众多领域有广泛应用,可直接加很小的电压就可以驱动,所需电流相对较小。 选择方案二因素: 方案一中虽然直流电机购买方便,但是偏振块却难以实现,市场上也没有单独的偏振块购买,从网上订货不方便。并且直流电机虽然震感强烈,但所需电流一般单片机难以直接提供。方案
13、二的偏振电机市场上也几乎没有,但可以直接从手机等废弃的电子产品上拆下,只需要很小的电流电压就可以驱动,无需此外增长驱动电路。综合考虑,选择方案二。2.2软件设计方案 本课程设计的软件设计部分重要采用C语言编程,简朴易懂。分别对每个模块独立编程,再将所有整合,即可实现需要的功能。主程序中,先将各个模块初始化,定义变量及赋初值。给超声波一个脉冲触发它开始工作,然后开始计时,在收到回波信号后,立即停止计数。此计数值就是从发射到接受的时间,乘以超声波此时的速度,就可以算出障碍物距超声波的大体距离,可以将此距离直接显示。根据距离的不同,发出不同的语音提醒和震动。下图(图2)为软件设计框图:图2 软件流程
14、图3.硬件设计3.1 STC89C52单片机介绍 STC89C52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有机灵的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定期器,内置4KB EEPROM,MAX810复位电路,三个16 位 定期器/计数器,一个6向量2级中断结构,全双工串行口。此外 STC89X52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU
15、 停止工作,允许RAM、定期器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。 3.1.1 引脚分布及定义图3 STC89C52RC引脚图STC89C52RC引脚分布如图三所示,引脚功能说明如下:VCC(40引脚):电源电压VSS(20引脚):接地P0端口(P0.0P0.7,3932引脚):P0口是一个漏极开路的8位双向I/O口。作为输出端口,每个引脚能驱动8个TTL负载,对端口P0写入“1”时,可以作为高阻抗输入。在访问外部程序和数据存储器时,P0口也可以提供低8位地址和
16、8位数据的复用总线。此时,P0口内部上拉电阻有效。在Flash ROM编程时,P0端口接受指令字节;而在校验程序时,则输出指令字节。验证时,规定外接上拉电阻。P1端口(P1.0P1.7,18引脚):P1口是一个带内部上拉电阻的8位双向I/O口。P1的输出缓冲器可驱动(吸取或者输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这是可用作输入口。P1口作输入口使用时,由于有内部上拉电阻,那些被外部拉低的引脚会输出一个电流。P2端口(P2.0P2.7,2128引脚):P2口是一个带内部上拉电阻的8位双向I/O端口。P2的输出缓冲器可以驱动(吸取或输出电流方式)4个TT
17、L输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电平,这时可用作输入口。P2作为输入口使用时,由于有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。P3端口(P3.0P3.7,1017引脚):P3是一个带内部上拉电阻的8位双向I/O端口。P3的输出缓冲器可驱动(吸取或输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。P3做输入口使用时,由于有内部的上拉电阻,那些被外部信号拉低的引脚会输入一个电流。P3口除作为一般I/O口外,尚有其他一些复用功能,如下表所示:表1 P3口引脚复用功能引脚号复用功能P3.0RXD(串行输入口)P3.1
18、TXD(串行输出口)P3.2(外部中断0)P3.3(外部中断1)P3.4T0(定期器0的外部输入)P3.5T1(定期器1的外部输入)P3.6(外部数据存储器写选通)P3.7(外部数据存储器读选通)RST(9引脚):复位输入。当输入连续两个机器周期以上高电平时为有效,用来完毕单片机单片机的复位初始化操作。看门狗计时完毕后,RST引脚输出96个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。ALE/(30引脚):地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。在Flash编程时,此引脚()也用
19、作编程输入脉冲。(29引脚):外部程序存储器选通信号()是外部程序存储器选通信号。当AT89C51RC从外部程序存储器执行外部代码时,在每个机器周期被激活两次,而访问外部数据存储器时,将不被激活。/VPP(31引脚):访问外部程序存储器控制信号。为使能从0000H到FFFFH的外部程序存储器读取指令,必须接GND。注意加密方式1时,将内部锁定位RESET。为了执行内部程序指令,应当接VCC。在Flash编程期间,也接受12伏VPP电压。XTAL1(19引脚):振荡器反相放大器和内部时钟发生电路的输入端。XTAL2(18引脚):振荡器反相放大器的输入端。 3.1.2 定期器 STC89C52RC
20、除了有定期器/计数器0和定期器/计数器1之外,还增长了一个一个定期器/计数器2.定期器/计数器2的控制和状态位位于T2CON和T2MOD。 定期器2是一个16位定期/计数器。通过设立特殊功能寄存器T2CON中的C/T2位,可将其作为定期器或计数器。定期器2有3种操作模式:捕获、自动重新装载(递增或递减计数)和波特率发生器,这3种模式由T2CON中的位进行选择。表2 特殊功能寄存器T2CON的描述3.2 HC-SR04超声波模块介绍 采用 IO 触发测距, 控制口发一个10US 以上的高电平,就可以在接受口等待高电平输出。一有输出就可以开定期器计时,当此口变为低电平时就可以读定期器的值,此时就为
21、本次测距的时间,方可算出距离。如此不断的周期测,就可以达成移动测量了。 3.2.1 模块实物图及说明 图3 实物图 接口定义: VCC:接+5V电源 GND:接地 Trig:接控制端 Echo:接接受端 3.2.2 测距电路设计图4 超声波测距电路图通过单片机的P1.1口给超声波模块一个20us的高电平脉冲,触发超声波模块,使之开始工作,定期器开始计数,于此同时,接受端开始不断检测有无回波。一旦接受到有回波信号,则P3.2口立即进入中断,停止定期器计数,把计数值送入寄存器中计算当前距离。公式:uS/58=厘米或者uS/148=英寸;或是:距离=高电平时间*声速(340M/S)/2。测的距离与实
22、际距离比较,如下表(表3:表3 测距对比 图5 测距对比图6 测距对比折线图 3.2.3 测距程序设计图7 超声波测距软件流程图 具体程序入下: Trig=0; /一方面拉低脉冲输入引脚 EA=1; /打开总中断0 TMOD=0x10; /定期器1,16位工作方式 while(1) EA=0; /关总中断 Trig=1; /超声波输入端 delay_20us(); /延时20us Trig=0; /产生一个20us的脉冲 while(Echo=0); /等待Echo回波引脚变高电平 succeed_flag=0; /清测量成功标志 EA=1; EX0=1; /打开外部中断0 TH1=0; /定
23、期器1清零 TL1=0; /定期器1清零 TF1=0; /计数溢出标志 TR1=1; /启动定期器1 delay(20); /等待测量的结果 TR1=0; /关闭定期器1 EX0=0; /关闭外部中断0 if(succeed_flag=1) time=timeH*256+timeL; distance=time*0.0172; /厘米 if(succeed_flag=0) distance=0; /没有回波则清零 display(distance); 3.3 ISD1420语音芯片介绍ISD1420是美国ISD公司出品的新型单片优质语音录放电路,较之以往所有的语音电路,具有专利技术的模拟解决存
24、储方式,使录放音质极佳,没有常见的的背景噪音,且电路断电后语音内容仍不丢失。电路内部由振荡器、语音存储单元、前置放大器、自动增益控制电路、抗干扰滤波器、输出放大器组成。一个最小的录放系统仅由一个麦克风、一个喇叭、两个按钮、一个电源、少数电阻电容组成。 3.3.1 芯片引脚图及功能说明右图(图8)为ISD1420语音芯片的引脚图。其引脚功能为下表(表3)所示。其特性为:工作电压:5V静态电流:0.52A工作电流:1530mA重现优质原声基本上不耗电信息存储信息可保存12023,可反复录放10万次选址解决多达160段信息维持状态,仅需0.5A电流,具有自动节电模式 图8 ISD1420引脚图表4
25、ISD1420引脚功能说明名 称管 脚功 能名 称管 脚功 能A0A516地址Ana Out21模拟输出A6、A79、10地址(MSB)Ana In20模拟输入VCCD28数字电路电源AGC19自动增益控制VCCA16模拟电路电源Mic17麦克风输入VSSD12数字地Mic Ref18麦克风参考输入VSSA13模拟地24放音,边沿触发SP、14、15喇叭输出、27录音XCLK26外接定期器(可选)25发光二极管接口NC11空脚23放音,电平触发 3.3.2 语音录放电路的设计语音录音电路的电路设计如下图(图9)所示:图9 语音录音电路 通过地址端口的7个按键选择分段录音的地址。根据计算,一段语
26、音信息大约为4秒左右,分3段,首段地址分别为0x00,0x28,0x50。只要将相应的八个按键根据这三个地址即可开始录制,录音时,按住REC键,此时LED灯常亮,表达在录音状态。按PLAYE即可播放当前录的语音信息,放完后碰到EOM标志,LED闪一下,表达放音结束。 3.3.3 语音程序设计 功能说明:语音提醒当超声波探头距离障碍物不同距离时,播放不同时段的语音信息,同时加入震动,及LED灯提醒等功能。框图如下图(图10)所示:图10 语音程序流程图3.4 震动模块及LED灯的控制 震动功能的实现重要是通过偏振电机来实现的,其电路图如下图(图11)所示。图11 震动模块电路P1.1口(图中为Z
27、D)通过三极管放大后直接接在电机的一端,通过P1.1口输出电平信号的高低来控制电机的工作状态。LED灯的控制也是直接由P1口输出的电平信号来控制,其电路图如下图(图12)所示:图12 LED灯的控制电路三个灯分别接在P1.2,P1.3,P1.4。当这三个端口分别输出低电平时灯亮。因此在程序中,只要在需要灯闪烁时将P1口置低电平即可。3.5 总原理图图13 总原理图 将各个模块的电路整合起来,就可以得到整个原理图了。3.6 仪器仪表清单表5 使用的元器件元件名称数量STC89C52RC1个HC-SR041个ISD14201个偏振电机1个扬声器,麦克风各一个12MHZ晶振1个按键3个LED 灯4个
28、NPN三极管1个串口1个MAX2321个8脚,28脚,40脚芯片底座各一个电阻若干电容若干ZLG单片机实验箱一台杜邦线,排针,导线若干4.软件设计 4.1 程序设计#include #include #include i2c.h#include zlg7290.h#include #define uchar unsigned char /定义一下方便使用#define uint unsigned int#define ulong unsigned longuint time;uint succeed_flag;uchar timeL;uchar timeH;sbit Trig=P10;sbit
29、 Echo=P32;sbit PLAYE=P11;sbit LED1=P12;sbit LED2=P13;sbit ZD=P14;/*/延时子程序void Delay(unsigned int t) /延时(t*1)ms uint dt; for(;t0;t-) for(dt=0;dt1000;dt+);void delay_20us() /延时20us uchar a ; for(a=0;a100;a+); /*/*函数:SystemInit()功能:系统初始化*/void SystemInit(void)I2C_Init();/TMOD = 0x01;Delay(30);/等待ZLG729
30、0复位完毕/*/语音播放子程序/* void YUYIN(int a,int b) switch(a) case 0: /距离小于1米则震动报警 ZD=1; LED1=0; LED2=0; Delay(20); break; case 1: /距离在1。5米以下则语音提醒加震动警示 if(b5) P2=0x00; PLAYE=1; PLAYE=0; LED1=0; LED2=0; ZD=1; else P2=0x28;/距离在1.5米到2米则语音提醒加震动警示 PLAYE=1; PLAYE=0; LED1=0; LED2=0; ZD=1; Delay(20); break; case 2: /
31、距离在2米到2.5米则语音提醒加震动警示 if(b5) P2=0x28; PLAYE=1; PLAYE=0; LED1=0; LED2=0; ZD=1; else P2=0x50; PLAYE=1; PLAYE=0; LED1=0; LED2=0; ZD=1; Delay(20); break; case 3: /距离在2。5米到3。5米则语音提醒加震动警示 if(b5) P2=0x50; PLAYE=1; PLAYE=0; LED1=0; LED2=0; ZD=1; Delay(20); break; /*/主程序void main(void) long float distance,dat
32、;int a,b,c,d;SystemInit(); Trig=0; /一方面拉低脉冲输入引脚 EA=1; /打开总中断0 TMOD=0x12; /定期器1,16位工作方式 LED1=1; /指示灯复位(保持高电平为熄灭态) LED2=1;ZD=0; while(1) LED1=1; /指示灯复位(保持高电平为熄灭态) LED2=1; ZD=0; EA=0; /关总中断 Trig=1; /超声波输入端 delay_20us(); /延时20us Trig=0; /产生一个20us的脉冲 while(Echo=0); /等待Echo回波引脚变高电平 succeed_flag=0; /清测量成功标
33、志 EA=1; EX0=1; /打开外部中断0 TH1=0; /定期器1清零 TL1=0; /定期器1清零 TF1=0; /计数溢出标志 TR1=1; /启动定期器1 Delay(20); /等待测量的结果 TR1=0; /关闭定期器1 EX0=0; /关闭外部中断0 if(succeed_flag=1) time=timeH*256+timeL; distance=(long float)time/58; /厘米 if(succeed_flag=0) distance=0; /没有回波则清零 dat=distance*10; /显示程序,作为导盲杖可不接端口。也可屏蔽a = dat / 10
34、00;ZLG7290_Download(3,0,0,a);b = (dat-a*1000) /100;ZLG7290_Download(2,0,0,b);c = (dat-a*1000-b*100)/10;ZLG7290_Download(1,1,0,c);d = dat-a*1000-b*100-c*10;ZLG7290_Download(0,0,0,d);/DISP(distance);/显示子程序 YUYIN(a,b); /语音播放 Delay(20);void exter() interrupt 0 / 外部中断0是0号 EX0=0; /关闭外部中断 timeH =TH1; /取出定期
35、器的值 timeL =TL1; /取出定期器的值 succeed_flag=1;/至成功测量的标志 /定期器1中断,用做超声波测距计时void timer1() interrupt 3 / TH1=0; TL1=0; 4.2 程序调试结果图14 调试成果图5.设计小结 在课程设计的过程中,我们一开始找不到方向,感觉像无头苍蝇,不知道从哪儿着手。在看过任务安排后,我们通过抽签选择了队友,当天也拟定了我们组的课题电子导盲杖。接下来,就是绞尽脑汁的想到底可以实现哪些功能。当时的我们只想出了三四个简朴的功能,都是自己感觉有哪些就写上去。通过老师指点,我才意识到,现在不用淘宝这块的资源,就是一大浪费。当天下午,我们就立即回去搜索现有的盲杖的功能。回头发现,我们的功能只是十年前人家就已经实现了的。重新定义了一番后,我们组三个人开始分工合作,测距部分,提醒部分
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100