基于单片机的电子导盲杖设计_第1页
基于单片机的电子导盲杖设计_第2页
基于单片机的电子导盲杖设计_第3页
基于单片机的电子导盲杖设计_第4页
基于单片机的电子导盲杖设计_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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)

2、 3.2.1 模块实物图及说明 (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米以内的障碍物。它的主要缺点是不能发现较远一点的障碍物以及悬空的障碍物。随着社会的发展,传统的导盲杖已经远远不能满足盲人的需要了。超声波导盲杖是为视觉障碍者提供环境导引的辅助工具,它通过超声波传感器对周围环境进行探测,将探测的信息反馈给视觉障碍者,帮助他们弥补视觉信息的缺失。我们设计的这个导盲杖可以帮助盲人在无他人帮助的情况下感知周围环境并且能够自己行走,帮助盲人安全出行,有助于盲人回归社会。 我们设计的智能导盲杖可以实现前方障

4、碍物自动语音报警以及手柄震动报警功能,夜间警示路人功能。导盲杖使用方便,实用性强,是盲人出行的好助手。 这是一种智能的导盲杖,使用超声波检测前方是否有障碍物,如果前方1米内有障碍物,则盲杖会语音提示“注意注意”,还会不停地震动来提醒盲人;如果前方1米处有障碍物,则盲杖自动语音提示“前方一米处有障碍物,请注意!”,还会在语音提示时震动提示;如果前方2米处有障碍物,则盲杖自动语音提示“前方二米处有障碍物,请注意!”;如果前方3米处有障碍物,则盲杖自动语音提示“前方三米处有障碍物,请注意!”,如果前方3米外没有障碍物,无提示音。手柄震动功能,可以让盲人在嘈杂的环境中通过手柄的震动接收到前方障碍物信号

5、,弥补了语音提示在嘈杂环境中的弊端。LED数码管的显示功能,可以让家人帮忙检测超声波模块是否运行正常,避免因模块测距不准确而无法正确提示。夜间警示路人功能,在夜间遇到4米以内障碍物时,盲杖上的指示灯亮,可以警示前方路人注意盲人的位置,注意避让盲人。GPRS模块,则能让家人能实时了解盲人所在的位置,也避免了走失,被拐带等多种突发因素。另外,GSM模块则能够在盲人摔倒或者遇到紧急情况时,自动发送信息给家人或者社会保障机构,向他们及时求救。1.2课程设计的要求和技术指标设计要求:本作品由超声波测距功能、前方障碍物语音警示功能、震动警示功能、夜间警示路人功能。在盲人走路时,如果前方1米处有障碍物,则盲

6、杖自动语音提示“前方一米处有障碍物,请注意!”,如果前方1米处没有障碍物,无提示音;如果前方2米处有障碍物,则盲杖自动语音提示“前方二米处有障碍物,请注意!”,如果前方2米处没有障碍物,无提示音;如果前方3米处有障碍物,则盲杖自动语音提示“前方三米处有障碍物,请注意!”,如果前方3米处没有障碍物,无提示音。手柄震动警示功能,可以让盲人在嘈杂的环境中通过手柄的震动接收到前方障碍物信号,弥补了语音提示在嘈杂环境中的弊端。夜间警示路人功能,在夜间遇到4米以内障碍物时,盲杖上的指示灯亮,可以警示前方路人注意盲人的位置,注意避让盲人。盲杖具有使用方便,功耗低,实用性,是盲人出行外出的好助手。技术指标:超

7、声波测距模块:可提供2cm-400cm的非接触式距离感测功能,测距精度可达3mm。ISD1420语音芯片:具有20秒高保真语音录放功能,通过具有专利技术的模拟处理存储方式,使录放音质极佳,没有常见的的背景噪音,且电路断电后语音内容仍不丢失。2.方案设计2.1 硬件设计方案 电子导盲杖的总体框图如下图(图1)所示,它由超声波模块、单片机、语音模块、震动模块、警示模块、校准模块 组成。STC89C52单片机HCSR04 超声波模块ISD1420语音模块震动模块警示模块校准模块图1 硬件原理框图2.1.1 测距模块方案选择 方案一:红外测距利用红外线测距,测距里程可达1-5公里。利用红外线传播时的不

8、扩散原理:因为红外线在穿越其他物质时折射率很小,所以长距离测距会考虑红外线,而红外线的传播是需要时间的,当红外线从测距仪发出,碰到反射物被反射回来被测距仪接受,在根据从发射到接受的时间及红外线的传播速度就可算出距离。 方案二: 激光测距 利用激光对目标的距离进行准确测量,测程可达40公里。激光测距在工作时向目标射出一束很细的激光,由光电元件接收目标反射的激光束,计时器测定激光束从发射到接收的时间,计算出从观测者到目标的距离。 方案三: 超声波测距 超声波测距是根据超声波遇到障碍物反射回来的特性进行测量的,测控距离为2cm到4m。超声波发射器向某一方向发射超声波,在发射的同时开始计时,超声波在空

9、气中传播,途中碰到障碍物会立即返回来,超声波接收器收到反射波就立即中断停止计时。通过不断检测产生波发射后遇到障碍物所发射的回波,从而测出发射超声波和接收超声波的时间差,然后根据超声波的速度算出距障碍物的距离。 选择方案三原因: 方案一的红外线测距,在距离较短的情况下,从发射到接收的时间过短,用单片机很难计算出,因此红外测距适合较长距离的测量。方案二的激光测距,虽然测量精度较高,但是价格昂贵。因此,在精度要求不是很高的情况下,选择价格便宜,适合短距离测量的超声波测距模块更为合适。 2.1.2 语音模块选择 方案一: ZLG1730语音芯片 ZLG1730语音芯片,内部采用多层次存储技术,在单个芯

10、片上提供了自然的,高质量的录放决方案。输入语音信号直接存储在环形Flash存储器中,且能重现自然的音质。芯片带有两种操作模式:独立按键模式,微控制器(SPI)模式。在独立按键模式下,无需知道消息存储在存储器里的准确位置就可以对消息进行录制、播放、擦除和快进操作。在SPI模式下可以通过4条串行接线口来实现分段录制和播放等操作,但需要另外购买编程器。 方案二: ISD1820 语音芯片 ISD1820语音芯片是单片8-20秒的单段语音录放电路,基本结构与ISD1420完全相同,采用CMOS技术,内含振荡器,话筒前置放大,自动增益控制,防混淆滤波器,扬声器驱动及FLASH阵列。放音模式有三种可选择,

11、其音质比通常的话筒放大器要好很多,而且不会出现喇叭过载的情况。整个电路耗电极低,几乎为0。录入的时间越短音质越好,录入的时间越长,音质越差。 方案三: ISD1420 语音芯片 ISD1420录放音质极佳,没有常见的的背景噪音,且电路断电后语音内容仍不丢失。通过A0-A7地址端选择不同地址进行录音,每位地址代表125毫秒的寻址,160个地址覆盖20秒的语音范围,只需要将录制的时间大致计算出来,除以125,就可以准确知道每段录音的播放首地址。在接入单片机控制后,只需要将对应地址赋值,就可以播放不同段的语音信息。录音及放音功能均从设定的起始地址开始,录音结束由停止键操作决定,芯片内部自动在该段的结

12、束位置插入结束标志(EOM);而放音时芯片遇到EOM标志即自动停止放音。 选择方案三原因: 方案一的ZLG1730模块,虽然可以通过软件分段录放音,但是需另外购买下载编程器,价格和其他两种方案比,较昂贵。方案二的ISD1820模块只能进行单段语音的录放,不能实现要求的分段播放功能,因此不宜选择。方案三的ISD1420模块就在同等条件下较合适,能直接用单片机控制分段播放,价格便宜实惠。综合考虑,选择方案三。 2.1.3 显示模块方案选择 方案一:ZLG7290数码管显示 ZLG7290数码管,内部有显示RAM,能自动将显示RAM中的内容动态显示在相应的数码管上。内部有I2C串行接口,方便与处理器

13、相接。可驱动8位共阴数码管或64只独立LED和64个按键。它的扫描位数可控,任一数码管闪烁可控,无需外接元件即可直接驱动LED。 方案二:1602液晶屏显示 1602液晶模块采用标准的16脚接口。它是一种专门用来显示字母、数字、符号等的型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用。微功耗、体积小、显示内容丰富、超薄轻巧,常用在袖珍式仪表和低功耗应用系统中。 选择方案一原因: 电子导盲杖中不需要用到专门的显示部分,而加入显示只是为了在测距的时候能够知道测量的距离是否准确,或者校

14、正时使用。因此,若选择方案二有点浪费单片机的IO口。从经济角度考虑,实验室有集成的ZLG7290模块,而没有1602液晶屏,另外购买会造成浪费。综合考虑,选择方案一。 2.1.4 震动模块的选择 方案一:直流电机加偏振块 震动是在电机转动时由于偏振块的作用而产生的。直流电机的应用广泛,可直接加上电压而不会烧坏,但对电流要求较高,价格便宜,方便购买。 方案二: 偏振电机 偏振电机在手机等众多领域有广泛应用,可直接加很小的电压就可以驱动,所需电流相对较小。 选择方案二原因: 方案一中虽然直流电机购买方便,但是偏振块却难以实现,市场上也没有单独的偏振块购买,从网上订货不方便。而且直流电机虽然震感强烈

15、,但所需电流一般单片机难以直接提供。方案二的偏振电机市场上也几乎没有,但可以直接从手机等废弃的电子产品上拆下,只需要很小的电流电压就可以驱动,无需另外增加驱动电路。综合考虑,选择方案二。2.2软件设计方案 本课程设计的软件设计部分主要采用C语言编程,简单易懂。分别对每个模块独立编程,再将所有整合,即可实现需要的功能。主程序中,先将各个模块初始化,定义变量及赋初值。给超声波一个脉冲触发它开始工作,然后开始计时,在收到回波信号后,立即停止计数。此计数值就是从发射到接收的时间,乘以超声波此时的速度,就可以算出障碍物距超声波的大致距离,可以将此距离直接显示。根据距离的不同,发出不同的语音提示和震动。下

16、图(图2)为软件设计框图:图2 软件流程图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种可选择节电模式。空闲模式下,C

17、PU 停止工作,允许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位地址和8

18、位数据的复用总线。此时,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个TTL

19、输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电平,这时可用作输入口。P2作为输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。P3端口(P3.0P3.7,1017引脚):P3是一个带内部上拉电阻的8位双向I/O端口。P3的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。P3做输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输入一个电流。P3口除作为一般I/O口外,还有其他一些复用功能,如下表所示:表1 P3口引脚复用功能引脚号复用功能P3.0RXD(串行输入口)P3.1T

20、XD(串行输出口)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编程时,此引脚()也用作

21、编程输入脉冲。(29引脚):外部程序存储器选通信号()是外部程序存储器选通信号。当AT89C51RC从外部程序存储器执行外部代码时,在每个机器周期被激活两次,而访问外部数据存储器时,将不被激活。/VPP(31引脚):访问外部程序存储器控制信号。为使能从0000H到FFFFH的外部程序存储器读取指令,必须接GND。注意加密方式1时,将内部锁定位RESET。为了执行内部程序指令,应该接VCC。在Flash编程期间,也接收12伏VPP电压。XTAL1(19引脚):振荡器反相放大器和内部时钟发生电路的输入端。XTAL2(18引脚):振荡器反相放大器的输入端。 3.1.2 定时器 STC89C52RC除

22、了有定时器/计数器0和定时器/计数器1之外,还增加了一个一个定时器/计数器2.定时器/计数器2的控制和状态位位于T2CON和T2MOD。 定时器2是一个16位定时/计数器。通过设置特殊功能寄存器T2CON中的C/T2位,可将其作为定时器或计数器。定时器2有3种操作模式:捕获、自动重新装载(递增或递减计数)和波特率发生器,这3种模式由T2CON中的位进行选择。表2 特殊功能寄存器T2CON的描述3.2 HC-SR04超声波模块介绍 采用 IO 触发测距, 控制口发一个10US 以上的高电平,就可以在接收口等待高电平输出。一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此

23、次测距的时间,方可算出距离。如此不断的周期测,就可以达到移动测量了。 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。测的距离与实际

24、距离比较,如下表(表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; /定时器

25、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公司出品的新型单片优质语音录放电路,较之以往所有的语音电路,具有专利技术的模拟处理存储方

26、式,使录放音质极佳,没有常见的的背景噪音,且电路断电后语音内容仍不丢失。电路内部由振荡器、语音存储单元、前置放大器、自动增益控制电路、抗干扰滤波器、输出放大器组成。一个最小的录放系统仅由一个麦克风、一个喇叭、两个按钮、一个电源、少数电阻电容组成。 3.3.1 芯片引脚图及功能说明右图(图8)为ISD1420语音芯片的引脚图。其引脚功能为下表(表3)所示。其特性为:工作电压:5V静态电流:0.52A工作电流:1530mA重现优质原声基本上不耗电信息存储信息可保存100年,可反复录放10万次选址处理多达160段信息维持状态,仅需0.5A电流,具有自动节电模式 图8 ISD1420引脚图表4 ISD

27、1420引脚功能说明名 称管 脚功 能名 称管 脚功 能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个按键选择分段录音的地址。根据计算,一段语音信息

28、大概为4秒左右,分3段,首段地址分别为0x00,0x28,0x50。只要将对应的八个按键根据这三个地址即可开始录制,录音时,按住REC键,此时LED灯常亮,表示在录音状态。按PLAYE即可播放当前录的语音信息,放完后遇到EOM标志,LED闪一下,表示放音结束。 3.3.3 语音程序设计 功能说明:语音提示当超声波探头距离障碍物不同距离时,播放不同时段的语音信息,同时加入震动,及LED灯提示等功能。框图如下图(图10)所示:图10 语音程序流程图3.4 震动模块及LED灯的控制 震动功能的实现主要是通过偏振电机来实现的,其电路图如下图(图11)所示。图11 震动模块电路P1.1口(图中为ZD)通

29、过三极管放大后直接接在电机的一端,通过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个NPN

30、三极管1个串口1个MAX2321个8脚,28脚,40脚芯片底座各一个电阻若干电容若干ZLG单片机实验箱一台杜邦线,排针,导线若干4.软件设计 4.1 程序设计#include <reg52.h>#include <absacc.h>#include "i2c.h"#include "zlg7290.h"#include <stdio.h>#define uchar unsigned char /定义一下方便使用#define uint unsigned int#define ulong unsigned longuin

31、t time;uint succeed_flag;uchar timeL;uchar timeH;sbit Trig=P10;sbit 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(;t>0;t-) for(dt=0;dt<1000;dt+);void delay_20us() /延时20us uchar a ; for(a=0;a<100;a+); /*/*函数:SystemI

32、nit()功能:系统初始化*/void SystemInit(void)I2C_Init();/TMOD = 0x01;Delay(30);/等待ZLG7290复位完毕/*/语音播放子程序/* 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(b<5) P2=0x00; PLAYE=1; PLAYE=0; LED1=0; LED2=0; ZD=1; else P2=0x28;/距离在1.

33、5米到2米则语音提示加震动警示 PLAYE=1; PLAYE=0; LED1=0; LED2=0; ZD=1; Delay(20); break; case 2: /距离在2米到2.5米则语音提示加震动警示 if(b<5) 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(b<5) P2=0x50; PLAYE=1; PLA

34、YE=0; LED1=0; LED2=0; ZD=1; Delay(20); break; /*/主程序void main(void) long float distance,dat;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_2

35、0us(); /延时20us Trig=0; /产生一个20us的脉冲 while(Echo=0); /等待Echo回波引脚变高电平 succeed_flag=0; /清测量成功标志 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; /厘米

36、if(succeed_flag=0) distance=0; /没有回波则清零 dat=distance*10; /显示程序,作为导盲杖可不接端口。也可屏蔽a = dat / 1000;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(

37、a,b); /语音播放 Delay(20);void exter() interrupt 0 / 外部中断0是0号 EX0=0; /关闭外部中断 timeH =TH1; /取出定时器的值 timeL =TL1; /取出定时器的值 succeed_flag=1;/至成功测量的标志 /定时器1中断,用做超声波测距计时void timer1() interrupt 3 / TH1=0; TL1=0; 4.2 程序调试结果图14 调试成果图5.设计小结 在课程设计的过程中,我们一开始找不到方向,感觉像无头苍蝇,不知道从哪儿着手。在看过任务安排后,我们通过抽签选择了队友,当天也确定了我们组的课题电子导盲

38、杖。接下来,就是绞尽脑汁的想到底可以实现哪些功能。当时的我们只想出了三四个简单的功能,都是自己感觉有哪些就写上去。经过老师指点,我才意识到,现在不用淘宝这块的资源,就是一大浪费。当天下午,我们就立即回去搜索现有的盲杖的功能。回头发现,我们的功能只是十年前人家就已经实现了的。重新定义了一番后,我们组三个人开始分工合作,测距部分,提示部分,控制部分,每人一个部分开始找寻方案选择合适方案。 硬件选择及设计部分遇到的困难及解决方法 首先,在选择器件上,我们采用比较法,选择几个相近功能的芯片,再一一比较选择最合适的那个。在选超声波模块时,我们拿了暑假做实验用的那个模块,但是怎么做都没有出现距离的显示,一

39、开始我以为是程序不对,我将程序仔细对了一遍,对照框图检查程序,在多次检查编译后没有发现错误。然后就检查超声波模块,检查有无信号输出和接收。结果一接电源模块后面的芯片就发烫,原来是芯片烧坏了。当考虑到要用数字显示来观测测距的准确性时却不知道用液晶屏还是周立功显示。液晶屏显示测距是已经实现过的,但是现在所用的单片机不一样,液晶屏接口相对较多,会浪费过多的IO口,所以选择周立功显示。但在使用周立功显示时用我写的程序开始实现不了,数码管也一直不亮。改用以前单片机实验室的程序也不能显示,我就担心周立功是否烧坏,但在其他同学的电脑上测试他们的显示程序,依然是可以的,所以不是模块的问题。再重新接线后居然可以

40、显示了,原来是接线接反了。选择语音模块的时候,由于需要分段录音,所以选择起来比较麻烦。选择实验箱上的语音模块时,看了说明书后我可以实现基本的录音和放音,但是分段起来较困难,需要下载器,因此我们换了一个芯片,根据上一届学长的指导,我们选择了ISD1420。这个芯片可以自己计算录音的长度来设计存放的地址段,来进行分段录音。焊接语音模块的时候,由于外围线路较多,焊接比较麻烦,每次焊完后都要用外用表测试下是否短路或虚焊。整个都焊完,花了一上午时间,但下午检查的时候还是发现有个接地错焊到了电源线,幸好提前检查了一遍,不然芯片可能就毁了。在录制语音的时候,我计算好每段的首地址,录进去后播放,总能放出。但当

41、我录完第三段,却放不出第一段和第二段,我一直以为是程序的问题,但是录音不要用到程序,因此一直在疑惑为什么会出现这种问题,但是在过了一 天后,我又检查了接线,发现我一直把低地址和高地址在开关上接反了,因此,录音的时候地址选择不正确,过短的地址不能容纳这么长的语音信号,因此放音的时候就成了乱码。在改过之后,立即变得清晰明确。 在设计警示灯的时候,我将电阻错焊了,100欧姆的焊成100千欧姆的。在测试的时候幸好提前检测了下电阻值,否则,灯将不会亮。在除焊和重焊的过程中,我也学会了更好的焊接。在做完基本的测距和报警功能后,我们停滞不前,在老师的指导下,我们又加了一个震动功能。但是虽说震动功能想着容易实

42、现,找偏振电机的时候却遇上了些困难。在银河电子城根本找不到偏振电机,只有直流电机,但是直流电机的驱动电流比较大,靠单片机根本驱动不了,于是想加一个偏振块,但是在市场上还是没有偏振块卖。这可让我们陷入僵局,不知该从何处下手。我的队友这时提出可以用手机上的震动电机。他那边正好有一个不用的旧手机,可以将它拆了取出震动模块。测试它震动所需的最小电压和电流,然后将单片机口的输出电压用三极管和电阻转换为合适的电压和电流输出,用来驱动震动电机。 软件设计部分遇到的困难及解决方法 在第二周编写程序的时候,根据之前模块的说明书以及我们画的框图来编写,在测距的程序的基础上加上显示,和报警,震动。在最开始的周立功显

43、示程序上我添加了测距程序,经过测试后,可以显示数字,但是只能显示大概的数字,就是百位的数字,十位和个位都不能很准确的显示,为了能更准确显示和报警,我在测得的数字上又做了进一步的调整,保留小数点后一位,这样能减少报警的误差,增加准确性。开始我调用显示子函数,在子函数中修改精度,发现编译后会出现定义的数据类型不一致的问题,后来,我将小数都改为整数再进行转换就可以实现1mm的精度了。在放音时我使用的是CASE语句,由于没有加跳出语句,因此,在第一段放完之后,就播放第二段语音造成混乱。在显示部分,总是跳来跳去,显示不稳定,不好做比较。在测距是如果距离固定,他显示的数字仍是在不断跳变,后来我在显示后边加

44、了一个延时,时间是20us,数字显示就稳定了些,但却滞后变化。于是我缩短延时时间,虽然还有跳变,但基本可以看清数字,跳变的也不是很厉害了。我们做的事电子导盲杖,不需要显示,但为了能更好的校准,我还是增加了这一部分。 在整个课程设计中,我学习到了一些芯片的用法,也了解了单片机的实用功能,更加注意到考虑问题的周全性和仔细性。这些都是书本上没有的东西,但在实践中,我们就会自己去体验去接触,因此,这次实践对于动手能力是极大地锻炼和提高,也教导我团队合作的重要性。我相信,在以后我们一定可以做到更好,为以后工作或学习打下扎实基础。 参考文献1 童诗白主编.模拟电子技术基础(第三版)·高教出版社.20012 张毅刚主编.单片机原理及应用 (第一版)·高教出版社.20033 程德福、林君主编.智能仪器.(第二版)机械工业出版社.20114 张国雄主编.测控电路(第四版)·机械工业出版社.20115 扬州大学.智能仪表设计基础实验指导书扬州大学.20126 张国雄主编.测控电路(第四版)·

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论