基于单片机的公交车语音报站系统的设计_第1页
基于单片机的公交车语音报站系统的设计_第2页
基于单片机的公交车语音报站系统的设计_第3页
基于单片机的公交车语音报站系统的设计_第4页
基于单片机的公交车语音报站系统的设计_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

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

文档简介

毕业设计(论文)题目基于单片机的公交车语音报站系统的设计姓名周玲燕学号3080431052专业班级08通信工程2班指导教师李林功学院信息科学与工程学院完成日期2012年5月20日宁波理工学院摘要为了提高公交车服务质量,满足各类乘客需求,设计了一个带有语音播放的公交车报站系统。系统通过3个按键控制实现起始站、上一站、下一站的控制功能。系统主要由AT89C51单片机、语音模块ISD4004、按键和LCD1602显示器组成。ISD4004语音模块存放报站信息,按键控制语音播放,播放的信息在液晶上显示。经6组人员的试用测试,结果表明系统工作稳定,可靠,达到了设计要求。关键词单片机控制;液晶显示;ISD4004;键盘ABSTRACTINORDERTOIMPROVETHEQUALITYOFBUSSERVICEANDSATISFYTHEREQUIREMENTSOFALLKINDSOFPASSENGERS,ABUSSTOPREPORTINGSYSTEMWITHVOICEPLAYERISDESIGNEDTHESYSTEMREALIZESTHEFUNCTIONOFREPORTINGTHEORIGINATINGSTATION、THEPREVIOUSSTATIONANDTHENEXTSTATIONTHESYSTEMISMADEUPOFAT89C51、VOICEMODULEISD4004、BUTTONSANDMONITORLCD1602INFORMATIONOFSTATIONSREPORTEDISSTOREDINISD4004VOICEMODULEVOICEPLAYERISCONTROLLEDBYBUTTONS,BROADCASTEDINFORMATIONISDISPLAYEDONLCDTHEDESIGNISTESTEDBYSIXGROUPSOFPEOPLEANDTHERESULTSHOWSTHATTHESYSTEMWORKSSTABLYANDRELIABLYITREACHESTHEDESIGNREQUIREMENTSKEYWORDSSINGLECHIPMICROCOMPUTER;LCD;ISD4004;KEYS目录摘要IABSTRACTII目录III第1章选题背景和意义1第2章系统体系结构321系统构成322软硬件功能分配6221软件功能分配6222硬件功能分配823功能描述1024技术指标11第3章系统硬件1231设计思想1232系统原理图1233元器件选择1334各模块介绍14第4章系统软件1841设计思想1842模块程序设计18421软件主流程图19422ISD4004语音模块录放音19423LCD160221424按键部分2243仿真过程、结果分析23第5章系统调试2851硬件调试2852软件调试2953综合调试3254测试结果32第6章测试结果及分析3761测试环境3762测试结果37第7章总结与展望39参考文献41附件42致谢56第1章选题背景和意义随着城市化的进展和经济的快速发展,大城市人口高度集中并大幅度增长,同时汽车越来越普及,交通需求迅速扩大,而道路交通基础设施建设的发展相对滞后。城市交通需求与供给之间的矛盾越来越突出,城市“乘车难”、“行车难”的局面在加剧,交通堵塞呈现出点到线,由线到面的扩展趋势,交通拥挤、交通延误、交通堵塞以及由此引起的噪音、废气污染,城市空气质量指数的严重跌落严重影响着居民的正常生活以及社会经济的持续、健康发展。而与出租车和私家车相比,公交车人均占道面积少、成本低、运载能力高,同时它的通行路线覆盖面广,在缓解交通拥堵,节能减排方面都有较好的作用,因此很多城市建议人们出门乘坐公交车1。同时有关专家学者和交通工程师们在吸取各国城市交通发展经验基础上,也提出解决我国城市交通发展问题的有效途径,即优先发展城市公共交通,以公共交通为杠杆降低城市交通需求总量,实现道路交通基础设施发展与交通需求增进的均衡。实施“公交优先”是解决我国城市交通问题的有效途径,也是我国目前城市交通发展的基本政策。可见,未来,公交车将充当现代城市生活中一个重要的角色,也就是说城市公共交通在今后的发展中将得到迅速的发展。然而,现有的城市公交车运输方面存在一些不良问题首先,目前公交车报站系统的设计只为了公交车内的乘客服务,因而没有考虑到车站台等车乘客的需要,在天气恶劣或视线不好的时候,乘客往往无法清楚的分辨到达的车辆路线,出现众多乘车不利的现象有的乘客下到机动车道伸头观望,更多的是常常一拥而上,前后跑动、追赶,找寻自己要上得车辆,很容易造成盲目拥挤,秩序混乱的场面。还经常出现乘客坐不到车,耽误坐车时间,还会出现一些不安全事故。其次,传统的报站方式效果太差。即由售票人员进行人工报站,这个售票人员多的工作不仅需要负责售票工作,还要准确的为乘客报站,作为一个地区的公交车站行业,有一定的地方特色,他们报站时多采用地方口音,作为一个外地人有时候很难听懂报站,从而引起很多麻烦。现在传统的人工语音报站已经被很多城市淘汰了,取而代之的是公交车自动报站系统,它弥补了传统人工语音报站的落后方式,使使进站、出站信息自动服务用语,为,市民提供更人性化,更完善的服务。比如可以通过公交车语音报站,照顾盲人乘客;可以用液晶显示器显示站名,照顾聋哑人等等,让人们在生活中感受到科技给我们带来的便捷。目前语音报站器技术主要有以下四种21手动语音报站器。这类控制器是由乘务人员按动进站按钮开始报站,出站时,由乘务人员按下出站按钮,开始预报下站的站名,通过序号来记录各个站点;2门控语音报站器。它是将开门,关门时转换信号和语音报站器连接,开门和关门时自动报站;3无线信标语音报站器3。它是在每个公交车站点设置发射信标点,公交车临近到站点左右会收到信标信号,开始自动报站,出站后信号消失,开始预报下一站,此报站器报站准确,但需要为每个站点组建无线发射信标,建设复杂、费用高,大部分站点无电源供应,公交车数量多时存在频率干扰问题,而且较严重,用户修改站点非常不方便,系统维护成本高。4GPS自动语音报站器4。此报站器是在公交车上安装GPS自动语音报站器,自动识别站点并报告站点信息。从技术层面讲,此方案从原理上解决了可靠性低的问题,问题是如何把一个先进的原理性的技术成果转化成为“产品化”的产品,还存在一些不足,如把要报站的语音内容事先固化到语音芯片中,这种设计在很多应用中普遍采用,但就这个项目而言,却十分不合理,因为它有悖于“通用化”设计原则。其次,把显示屏要显示的报站内容也事先固化到车载控制系统内,从用户角度看,通过有线的串行口配置或更新一个已经安装完成的“移动式”的车载设备谈何容易。考虑到各方面的因素后,在本次公交车报站器系统设计中,我采用了第一种的语音报站方法。第2章系统体系结构本设计采用单片机AT89C51作为自动报站的检测和驱动控制核心,控制ISD4004语音芯片电路以及LCD1602液晶显示站名的硬件设计和软件设计,实现公交车的语音报站。21系统构成本公交报站系统工作原理为公交车每到一站,乘务人员通过按键中断的方式让报站器播报当前站名和下一站站名,提醒乘客到车下车,下一站下车的乘客做好下车准备,这样方便了乘客使其不至错过了车站;并带有LCD显示系统,告知乘客当前的站点。在本次设计中,系统由以下几部分电路构成单片机主控电路、语音录放电路、液晶显示电路、按键电路、复位电路。采用AT89C51单片机作为主控芯片,利用ISD4004数码语音芯片实现语音报站,显示采用LCD1602,键盘采用通用按键开关,简单易行且控制方便。图21是整一个系统构成框图5。图21系统总框图下面介绍一下各部分电路的功能及原理。主控电路是由AT89C51单片机及其相关外围电路组成,AT89C51在系统中实现对ISD4004中的语音信号的控制,实现存储和播放的控制,并响应按键引起的中断,播放合适的语音,同时调用字符库在液晶上显示相关站点名称。总之,AT89C51在系统中实现对整个系统的全局控制,是该系统的指挥部件。结构如图22所示。ISD4004具有如下特点首先是记录声音没有段长度限制,并且声音记录不需要A/D转换和压缩。其次,快速闪存作为存储介质,无需电源可保存数据长达100年,重复记录10000次以上。此外,ISD4004具有记录时间长(可达16分钟)的优点。而且ISD4004开发应用具有所需外围电路简单的优点。ISD4004系列工作电压3V,单片录放时间8分钟至16分钟,音质好,适用于移动电话及其他便携式电子产品中。芯片采用CMOS技术,内含振荡器、防混淆滤波器、平滑滤波器、音频放大器、自动静噪及高密度多电平闪烁存贮陈列。芯片设计是基于所有操作必须由微控制器控制,操作命令可通过串行通信接口SPI或MICROWIRE送入。芯片采用多电平直接模拟量存储技术,每个采样值直接存贮在片内闪烁存贮器中,因此能够非常真实、自然地再现语音、音乐、音调和效果声,避免了一般固体录音电路因量化和压缩造成的量化噪声和“金属声“。采样频率可为40,53,64,80KHZ,频率越低,录放时间越长,而音质则有所下降,片内信息存于闪烁存贮器中,可在断电情况下保存100年典型值,反复录音10万次。适合用于公交车语音报站系统这种多段录音的设计6。本次液晶模块选用LCD1602。报站系统液晶驱动显示电路连接图如图23所示。控制电路选用单片机AT89C51,本电路/EA接高电平,没有扩展ROM。将液晶的数据输入端DB0DB7与单片机的P2口相连,将P00,P01,P02分别与液晶的RS,RW,E端连接,用来控制液晶LCD1602的显示。XTAL218XTAL119ALE30EA31PSEN29RST9P00/AD039P01/AD138P02/AD237P03/AD336P04/AD435P05/AD534P06/AD63P07/AD732P101P112P123P134P145P156P167P178P30/RXD10P31/TXD1P32/INT012P33/INT113P34/T014P37/RD17P36/WR16P35/T115P27/A1528P20/A821P21/A92P22/A1023P23/A124P24/A1225P25/A1326P26/A1427U1AT89C51C130PFC230PFX112MHZ复位电路P10P13按键电路P00P07及P20P27液晶显示电路P30P37语音播放电路图22主控电路图23液晶显示电路在本次按键模块的设计中,我选择了拥有8个按键的矩阵式键盘模块。矩阵式键盘的工作过程可分为两步第一步是CPU首先检测键盘上是否有按键按下;第二步是识别哪一个键按下。1检测键盘上是否有按键按下的处理方法是将列线送入全扫描字,读入行线的状态来辨别。其过程如下PA口输出00H,即所有列线置成低电平,然后将行线的电平状态读入累加器A中。如果有按键按下,总会有一根行线的电平被拉至低电平,从而使行输入状态不全为“1”。2识别键盘中哪一个键按下的处理方法是将列线逐列置成低电平,检查行输入状态,称为逐列扫描。其具体过程如下从PA0开始,依次输出“0”,置对应的列线为低电平,然后从PC口读入行线状态,如果全为“1”,则按下的键不在此列;如果不全为“1”,则按下的键必在此列,而且是该列与“0”电平行线相交的交点上的那个键。为求取编码,在逐列扫描时,可用计数器记录下当前扫描列的列号,检测到第几行有键按下,就用该行的首键码加列号得到当前按键的编码。22软硬件功能分配221软件功能分配在整一个系统设计中,软件主要负责程序的编写,实现语音模块ISD4004的多段语音录放,以及LCD1602的液晶显示,最后将各个独立的程序进行整合实现最终的公交车语音报站系统的设计。下面主要介绍一下语音模块ISD4004,以及LCD1602在程序编写时所采用的原理。ISD4004采用多电平直接模拟量存储技术,每个采样值直接存储在片内闪烁存储器中,因此能够非常真实的再现语音,音乐等效果。ISD4004工作于SPI串行接口。SPI协议是一个同步串行数据传输协议。协议要求数据在时钟上升沿移入,在下降沿移出。即在时钟上升沿锁存MOSI引脚数据,写入命令字;在下降沿将数据送至MISO引脚,读取状态字。MCS51单片机的串行口方式0与其要求一致的。ISD4004端口的状态字和命令字如图24所示。命令字的高5为为操作码,低11位为操作地址。状态字的最高2位分别是溢出标志OVF和信息段末尾标志EOM,紧跟其后的是行地址计数器的值。ISD4004总共10条命令。当单片机作为主芯片控制ISD4004时,我们只需要在主程序中完成一些初始化的工作以及录放结束工作,如ISD上电,掉电等。另外通过循环扫描键盘,来检查启动键是否按下,根据录放开关状态跳转到相应的子程序7。图24SPI端口的命令字和状态字LCD1602字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式的显示模块。1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明1为高电平、0为低电平)。表21是1602液晶模块内部的控制器共有11条控制指令。表211602液晶模块内部的控制器共用11条控制指令指令1清显示,指令码01H,光标复位到地址00H位置。指令2光标复位,光标返回到地址00H。指令3光标和显示模式设置I/D光标移动方向,高电平右移,低电平左移S屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。指令4显示开关控制。D控制整体显示的开与关,高电平表示开显示,低电平表示关显示C控制光标的开与关,高电平表示有光标,低电平表示无光标B控制光标是否闪烁,高电平闪烁,低电平不闪烁。指令5光标或显示移位S/C高电平时移动显示的文字,低电平时移动光标。指令6功能设置命令DL高电平时为4位总线,低电平时为8位总线N低电平时为单行显示,高电平时双行显示F低电平时显示5X7的点阵字符,高电平时显示5X10的点阵字符。指令7字符发生器RAM地址设置。指令8DDRAM地址设置。指令9读忙信号和光标地址BF为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。指令10写数据。指令11读数据。LCD1602液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图25是1602的内部显示地址。图25LCD1602内部显示地址222硬件功能分配硬件需要实现的主要功能是将AT89C51最小系统,LCD1602液晶显示模块,ISD4004语音芯片模块以及按键模块,按照程序正确的连接,观察现象,看是否能够实现所需要的功能。由于AT89C51最小系统是主控中心,所以在此主要介绍各个模块是如何与AT89C51连接的。ISD4004的工作电压为33V,本模块已经做好5V33V电压转换处理(由ASM111733V实现)模块引脚直接接5V电源。模块有两路输入和两路输出。输入MIC输入以及耳机插口输入;输出喇叭输出与耳机插口输出。其中GND与P625相连,VCC与P626相连接,为语音模块提供电源。SCLK串行接口时钟输入端与P15相连,/SS为片选与P16相连,MISO串行数据输出端与P18相连,用来控制数据输出,MOSI串行数据输入端与P13相连,用来控制数据输入。模块的接口定义如下(顶视)图26所示。(注NC为空脚)MISO串行输出MOSI串行输入VCC5V/SS片选SCLK时钟GND地图26语音模块的接口定义LCD1602液晶显示模块的RS,RW,E分别与51单片机的P35,P36,P37端口连接,进行程序的读写数据,字符操作。而D0D7分别与51单片机的P0口进行连接,用来输出数据与字符。如图27所示。输入和输出音量调节电源转换音频输出音频输入MIC此处为IDC10接口标有白色框的为VCC定义同上图27液晶1602与AT89C51实物连接图本次设计的按键模块采用通用按键开关,简单易行且控制方便,与51单片机的P20口连接,用以控制整个系统设计中LCD液晶显示以及语音播放。在此就不做详细介绍。23功能描述本次设计的课题是基于单片机的公交车语音报站系统,因此主要功能是完成公交车语音报站。采用AT89C51单片机作为主控芯片,对ISD4004数码语音芯片与LCD1602进行控制,实现语音报站,同时显示站名。键盘采用通用按键开关,简单易行且控制方便。在本次软件设计中,主要设计了4站,通过三个按键进行控制。具体如下K1键起始键现象ISD4004播报“欢迎乘坐”,同时LCD1602上显示“HUANYINGCHENGZUO”。K2键上一站,K3键下一站,现象NUM1,ISD4004播报“欢迎乘坐363路公交车”,同时LCD1602上显示“HUANYINGCHENGZUO”。NUM2,ISD4004播报“宁波理工到了,请从后门下车,下车请当心;车辆起步,请拉好扶手,前方停靠万里学院”,同时LCD1602上显示“NINGBOLIGONGDAOLE”。NUM3,ISD4004播报“万里学院到了,请从后门下车,下车请当心;车辆起步,请拉好扶手,前方停靠医药学校”,同时LCD1602上显示“WANGLIXUEYUANDAOLE”。NUM4,ISD4004播报“医药学校到了,请从后门下车,下车请当心;车辆起步,请拉好扶手,前方停靠鄞州二院”,同时LCD1602上显示“YIYAOXUEXIAODAOLE”。NUM5,ISD4004播报“鄞州二院到了,请从后门下车,下车请当心;”,同时LCD1602上显示“YINZHOUERYUANDAOLE”。NUM6,ISD4004播报“谢谢乘坐本次公交车”,同时LCD1602上显示“XIEXIECHENGZUO”。24技术指标针对本次基于单片机的公交车语音报站系统的设计,其技术指标主要来源于ISD4004语音模块以及LCD1602液晶显示模块。ISD400413V单电源工作2工作电流2530MA3维持电流1UA4多段信息处理510万次录音周期典型值6不耗电信息保存100年(典型值)LCD16021显示容量162个字符2芯片工作电压4555V3工作电流20MA50V4模块最佳工作电压50V5字符尺寸295435WHMM第3章系统硬件31设计思想本次设计主要是利用AT89C51单片机作为CPU来进行总体控制,通过语音芯片ISD4004组成的语音控制电路能够建立多段语音库信息,并且可以对这些段的语音信息进行自由的组合,形成变化多样的语音提示信息,同时使用LCD1602液晶显示电路进行字符显示,能够实现公交车的语音报站及字符显示。在CPU控制模式下,键盘采用按键扫描法,当有键按下时,通过软件进行按键扫描,实现键码对应的功能。因此当公交车到达某站时通过键盘来控制本系统进行工作,通过语音输出电路进行语音报站,CPU同时通过程序读取字符信息送入LCD液晶显示电路进行液晶显示8。32系统原理图图31是系统仿真时的原理图,在整个系统软件设计中,依旧从语音,液晶显示以及按键这三大部分进行综合考虑。由于PROTEUS软件的限制,无法对ISD4004语音芯片进行仿真,从而在此处我选用了LED灯来代替语音芯片,当按键按下时,相对应的LED灯点亮。所以在此,我主要介绍一下液晶显示模块LCD1602以及按键显示的工作原理。在此次软件设计过程中,总共有4个按键,K1HUANYINGCHENGZUO,K2上一站,K3下一站,K4谢谢乘坐。当按下K1键时,LCD上显示“HUANYINGCHENGZUO”,同时LED1亮;如果当前的站是“WANLIXUEYUANDAOLE”,当按下K2键时,LCD上显示“NINGBOLIGONGDAOLE”,此时LED2亮,LED3灭;当按下K3键时,LCD上显示“YIYAOXUEXIAODAOLE”,此时LED4亮,LED3灭。当按下K4时,LCD上显示“XIEXIECHENGZUO”。1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明1为高电平、0为低电平)。1602液晶模块内部的控制器共有11条控制指令,通过这11条指令,可以完成1602上数据、字幕等显示。LCD1602液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符9。图31系统原理图仿真在将12864与LCD1602进行对比后,我选择了LCD1602液晶显示模,因为1602实现起来较为简单,也很实用,在两个能够达到类似功能的时候,我选择了1602,不过唯一的缺点就是1602不能显示汉字。除此之外,我将仿真中的LED换成了真正的语音模块,ISD4004语音模块,用以实现语音播放的功能。33元器件选择在本次设计中,我主要选择的器件有LCD1602,语音模块ISD4004,按键模块,以及AT89C51的最小系统。由于LCD1602具有显示质量高,数字式接口,功耗低等优点,其中因为拥有数字式接口,在和单片机系统的接口变得更加简单可靠,操作更加方便。因此对于LCD液晶显示模块我选择了LCD1602。ISD4004具有如下特点首先是记录声音没有段长度限制,并且声音记录不需要A/D转换和压缩。其次,快速闪存作为存储介质,无需电源可保存数据长达100年,重复记录10000次以上。此外,ISD4004具有记录时间长(可达16分钟),音质好,适用于移动电话及其他便携式电子产品中的优点。同时ISD4004开发应用具有所需外围电路简单的优点。同时51最小系统能够给他提供33V的工作电压,让它正常工作。除此之外,由于身边有同学用过这个芯片,对它比较了解,如果我遇到问题了,可以有人请教。因此对于语音模块,我选择了ISD4004。按键模块比较简单,因为我只需要3个按键而已,所以无论是三个独立的按键,还是一个按键模块,只要能实现我要的功能都可以。在本次设计中,我选择了一个按键模块。AT89C51单片机最小系统是上课上过的内容对此比较熟悉,同时本次设计也是针对单片机的公交车语音报站系统的设计,而且实验室有现成的资源可以利用,所以毫无疑问,主控系统就选择了AT89C51最小系统。34各模块介绍本次设计主要由AT89C51最小系统,ISD4004语音模块,LCD1602液晶显示模块以及按键模块这四模块组成。单片机又称单片微控制器,是在一块芯片中集成了CPU(中央处理器)、RAM(数据存储器)、ROM(程序存储器)、定时器/计数器和多种功能的I/O(输入/输出)接口等一台计算机所需要的基本功能部件,从而可以完成复杂的运算、逻辑控制、通信等功能。对51系列单片机来说,最小系统一般应该包括单片机、时钟电路、复位电路、输入/输出设备等(见图32)。在本次设计中,AT89C51作为系统的CPU来对语音模块,液晶显示模块,按键模块进行总体的控制。单片机复位电路时钟电路电源输入/输出设备图32AT89C51最小系统框图ISD4004引脚排列如图33所示,其中NC为空引脚,其余引脚的功能如下图33ISD4004引脚排列图VCCA、VCCD分别为模拟和数字电路的电源端;VSSA、VSSD分别为模拟地和数字地;ANAIN、ANAIN分别为模拟信号同相和反相输入端,模拟信号可采用单端输入方式或差分输入方式;AUDOUT为音频输出端,能驱动5000欧姆的负载;/SS为片选,低电平有效;MOSI为串行数据输入端;MISO为串行数据输出端;SCLK为串行接口时钟输入端;XCLK为外部时钟输入端;/INT为中断请求端,漏极开路;AMCAP为自动静噪控制端;单片机选用ATMEL公司的AT89C51,其内含4KB的FLASH存储器,可擦写10万次。ISD4004语音芯片与单片机的接口如图34所示。GND与P625相连,VCC与P626相连接,为语音模块提供电源。SCLK串行接口时钟输入端与P15相连,/SS为片选与P16相连,MISO串行数据输出端与P18相连,用来控制数据输出,MOSI串行数据输入端与P13相连,用来控制数据输入。图34ISD4004语音模块与51的实物连接图硬件连接的几点说明1串口工作于方式0发送方式,P14用于串口时钟输入端,P15用于片选,此时高电平有效,P12用于串行数据输入端,P17用于串行数据输出端。2ISD内部功放驱动能力较低,因此外接了一个LM386可驱动的05W的喇叭。3自动静噪端AMCAP通过1UF电容接地,XCLK接地,使用内部时钟。4拨动开关K1为录音状态,K2为放音状态。录音时按下K4,可将录音地址后移100,存放另一段录音片段。LCD1602液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。其实用LCD显示一个字符时比较复杂,因为一个字符由68或88点阵组成,既要找到和显示屏幕上某几个位置对应的显示RAM区的8字节,还要使每字节的不同位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮。这样一来就组成某个字符。但由于内带字符发生器的控制器来说,显示字符就比较简单了,可以让控制器工作在文本方式,根据在LCD上开始显示的行列号及每行的列数找出显示RAM对应的地址,设立光标,在此送上该字符对应的代码即可。在本次设计中,LCD1602液晶显示模块的RS,RW,E分别与51单片机的P35,P36,P37端口连接,进行程序的读写数据,字符操作。而D0D7分别与51单片机的P0口进行连接,用来输出数据与字符,这样就可以在液晶上显示出自己想要的字符10。键盘是若干按键的集合,是向系统提供操作人员干预命令及数据的接口设备。键盘可分为编码键盘和非编码键盘两种类型。前者能自动识别按下的键并产生相应代码,以并行或串行方式发送给CPU。它使用方便,接口简单,响应速度快,但需要专用的硬件电路。后者则通过软件来确定按键并计算键值。这种方法虽然没有编码键盘速度快,但它不需要专用的硬件支持。键盘,作为向系统提供操作人员的干预命令的接口,以其特定的按键序列代表着各种确定的操作命令。所以,准确无误地辨认每个键的动作及其所处的状态,是系统能否正常工作的关键。因此在设计按键模块时,通过延时进行了按键去抖动的现象11。第4章系统软件41设计思想软件设计的主要功能是完成公交车语音报站,采用AT89C51单片机作为主控芯片,对ISD4004数码语音芯片与LCD1602进行控制,实现语音报站,同时显示站名。键盘采用通用按键开关,简单易行且控制方便。在本次软件设计中,主要设计了4站,通过三个按键进行控制。具体如下K1键起始键现象ISD4004播报“欢迎乘坐”,同时LCD1602上显示“HUANYINGCHENGZUO”。K2键上一站,K3键下一站,现象NUM1,ISD4004播报“欢迎乘坐”,同时LCD1602上显示“HUANYINGCHENGZUO”。NUM2,ISD4004播报“宁波理工到了,请从后门下车,下车请当心;车辆起步,请拉好扶手,前方停靠万里学院”,同时LCD1602上显示“NINGBOLIGONGDAOLE”。NUM3,ISD4004播报“万里学院到了,请从后门下车,下车请当心;车辆起步,请拉好扶手,前方停靠医药学校”,同时LCD1602上显示“WANGLIXUEYUANDAOLE”。NUM4,ISD4004播报“医药学校到了,请从后门下车,下车请当心;车辆起步,请拉好扶手,前方停靠鄞州二院”,同时LCD1602上显示“YIYAOXUEXIAODAOLE”。NUM5,ISD4004播报“鄞州二院到了,请从后门下车,下车请当心;”,同时LCD1602上显示“YINZHOUERYUANDAOLE”。NUM6,ISD4004播报“谢谢乘坐本次公交车”,同时LCD1602上显示“XIEXIECHENGZUO”。42模块程序设计在本次设计中我针对363公交车,从中取了“宁波理工,万里学院,医药学校,鄞州二院”这4站进行了单边线路的设计。421软件主流程图系统上电后,液晶显示模块LCD1602与语音模块ISD4004进行初始化,当检测到有按键按下时,进行键值的判断,根据键值,跳转到相应的显示程序和语音播放程序并执行,从而实现公交车语音报站功能。软件主流程图如图41所示。图41软件主流程图422ISD4004语音模块录放音在本次软件程序设计中,我总共设置了5个按键,录音键(K1P25),放音键(K2P26),停止键(K3P27),录放音地址移位键(K4P20),复位键(K5P21)。当按下K1键时,语音模块就从0X05开始录音,录好一段音后,按下K3键,停止录音。按下K2键,开始播放之前所录的声音。按下K4键,录音地址往后移100,此时再按下K1键,开始第二段录音。如此,便可实现多段录音,而且每段录音所存放的地址都通过计算得出。若是不满意当前的录音,可以按下K5键,重新录音。图42为录音流程图。图43为放音流程图。图42录音程序流程图图43放音程序流程图423LCD1602系统上电后,液晶显示模块进行初始化。同时液晶显示部分按照数组序号显示字符程序,程序中TABLE为要显示的数组序号,按照数组的次序依次显示每站的站名。图44为本次设计的液晶显示1602的程序流程图。图44LCD1602程序流程图424按键部分按键部分采用扫描法,当检测到按键按下时,进行键值判断,并进行相应的显示程序以及语音播放程序的跳转,实现公交车语音报站功能。图45是本次设计的按键程序流程图。开始P2口读取数据是否有按键按下延时去抖返回键1按下键2按下键3按下NUM0NUMNUM液晶显示HUANYINGCHENGZUO,同时语音播放欢迎乘坐根据NUM的值显示对应的内容,播放相应的内容根据NUM的值显示对应的内容,播放相应的内容YNNNYYY图45按键程序流程图43仿真过程、结果分析本次单片机软件仿真系统我选择了PROTEUS。在整个系统软件设计中,依旧从语音,液晶显示以及按键这三大部分进行综合考虑。由于PROTEUS软件的限制,无法对ISD4004语音芯片进行仿真,从而在此处我选用了LED灯来代替语音芯片,当按键按下时,相对应的LED灯点亮。在仿真时,由于语音模块不能进行仿真,为了增加点难度,在液晶显示模块方面我选择了可以显示汉字的1602模块。下面主要介绍一下1602的工作原理12。LCD1602液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。其实用LCD显示一个字符时比较复杂,因为一个字符由68或88点阵组成,既要找到和显示屏幕上某几个位置对应的显示RAM区的8字节,还要使每字节的不同位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮。这样一来就组成某个字符。但由于内带字符发生器的控制器来说,显示字符就比较简单了,可以让控制器工作在文本方式,根据在LCD上开始显示的行列号及每行的列数找出显示RAM对应的地址,设立光标,在此送上该字符对应的代码即可。在本次设计中,LCD1602液晶显示模块的RS,RW,E分别与51单片机的P35,P36,P37端口连接,进行程序的读写数据,字符操作。而D0D7分别与51单片机的P0口进行连接,用来输出数据与字符,这样就可以在液晶上显示出自己想要的字符13。在此次仿真过程中,总共设计了4个按键,K1欢迎乘坐,K2上一站,K3下一站,K4谢谢乘坐。当按下K1键时,LCD上显示“HUANYINGCHENGZUO”,同时LED1亮;如果当前的站是WANGLIXUEYUANDAOLE”,当按下K2键时,LCD上显示“NINGBOLIGONGDAOLE”,此时LED2亮,LED3灭;当按下K3键时,LCD上显示“YIYAOXUEXIAODAOLE”,此时LED4亮,LED3灭。当按下K4时,LCD上显示“XIEXIECHENGZUO”。实现的效果图如下图46,47,48,49,410,411所示按下K1键LCD1602液晶显示“HUANYINGCHENGZUO”,同时LED1亮。图46“HUANYINGCHENGZUO”按下K2或者K3键显示,K2键逆向显示,K3键顺向显示NUM1LCD1602液晶显示“NINGBOLIGONGDAOLE”,同时LED2亮。图47“NINGBOLIGONGDAOLE”NUM2LCD1602液晶显示“WANGLIXUEYUANDAOLE”,LED3亮。图48“WANGLIXUEYUANDAOLE”NUM3LCD1602液晶显示“YIYAOXUEXIAODAOLE”,同时LED4亮。图49“YIYAOXUEXIAODAOLE”NUM4LCD1602液晶显示“YINZHOUERYUANDAOLE”,同时LED5亮。图410“YINZHOUERYUANDAOLE”按下K4键LCD1602液晶显示“XIEXIECHENGZUO”,同时LED5亮。图411“XIEXIECHENGZUO”第5章系统调试51硬件调试在整一个硬件调试过程中,我主要分为三部分进行调试,第一部分是按键调试。,第二部分是LCD液晶显示调试,第三部分是ISD4004语音模块录放调试。首先,我进行了按键调试。对于按键和LED调试,我所采用的工具是万用表,因为按键原理是松开状态,电路断开;按下按键,电路短路,以此来检测它们的好坏。其次,第二部分就是LCD1602液晶显示的调试。第一步,将LCD1602正确的连接到51单片机上,在连接时要注意液晶屏的日RS,RW,E这三个口的位置,一旦接错LCD就有可能被烧坏。我的LCD模块的这三个接口分别是P35,P36,P37,而数据输入口接在P0口上,因此只要将其连接上即可。第二步,将已编译正确的LCD液晶显示程序下载到51单片机,查看LCD1602上是否能够显示你想得到的内容。这一部分,因为看了很多相关的视频,所以基本没有遇到问题。例如显示“HUANYINGCHENGZUO”如图51所示。图51LCD1602液晶显示调试模块示例最后,进行ISD4004录放音的调试。在这次设计中,如何正确的将ISD4004与51连接成了我最大的问题。经过咨询好多人后,才得以成功连接,并能播放示例音乐。此外,将另外一段一录一放的程序下载到51,检测ISD4004的录放音功能。若程序烧录成功后,按下录音键,喇叭出现“滴滴滴滴”连续的响声,说明录音开始,可以进行录音。录完后,按下放音键,检测是否能够正确放音。检测完语音芯片后,接下来就是实现多段语音录放。在本次设计中,我设置了一个移位变量ADD,每录完一个音,移位100,开始录下一段语音。移位的目的就是将不同的语音段保存在指定的位置,这样以便地址的查询。ISD4004语音调试模块如图52所示。图52ISD4004语音调试模块52软件调试与硬件调试类似,在本次软件调试中,主要分为三部分进行调试,按键与LCD1602结合程序的调试,ISD4004与按键结合程序的调试,以及ISD4004、LCD1602与按键的调试。首先,按键与LCD1602的调试。由于在使用LCD1602之前,翻阅了很多相关的资料以及视频,因此LCD1602液晶显示程序已经调试好,没有问题。主要的问题是如何将按键加入到程序中,对LCD1602显示的内容进行控制。一开始,我先让按键控制LCD1602显示内容中的其中一条。在程序中设置了VOIDKEY,通过调用VOIDWRITEUCHARCOM这个函数,显示出LCD1602的第一条内容“HUANYINGCHENGZUO”。因此想要显示其他内容,原理也一样。如图53所示。复位键移位键放音键暂停键录音键图53“HUANYINGCHENGZUO”示例图其次,按键与ISD4004的调试。由于之前查阅的很多资料中有一段一录一放的程序,了解他的原理后,发现与我需要的多段录放效果原理相同。因此在原有的基础上,我设置了一个K4,K4所需要实现的功能是移位,每录好一次,按下K4移位100,然后再按下录音键,这样就实现了多段录放音。其中,在调试录放音时,还添加了LED模块,主要功能是检测按键是否有效。初始状态,系统上电,所有LED灯亮,有键按下时LED1灭。如果再有按键按下LED1亮,如此来判别录音键,放音键,移位键,复位键以及停止键是否有效。如下图54ISD4004与按键的实物连接图。图54ISD4004与按键的实物连接图最后,按键、LCD1602与ISD4004三者的结合。在这三者结合时,对于ISD4004语音模块,我只需要一段放音程序,只要将之前存放在地址位置里面的录音片段通过放音程序放出来就好。在这一测试中,按键要控制两项LCD1602的液晶显示以及ISD4004语音的播放,而且两个要同时。这时候,通过设置VOIDWRITEUCHARCOM中COM的值以及将语音播放PLAY函数添加到VOIDKEY中,通过VOIDKEY中按键按下后多种条件的核对,从而确定按键按下后要显示的内容以及语音播放的内容。以“NINGBOLIGONGDAOLE”一站为例,最终的结果如下图55所示。LED灯复位键移位键录音键停止键放音键图55“NINGBOLIGONGDAOLE”总体示例图53综合调试1根据给出ISD4004的电路原理图,正确连接电路;2调试已编译的程序,将程序下载到51单片机中;3按下录音键进行录音,连续录完一段后,按下停止键停止。然后按下移位键再次按下录音键开始录另外一段音,按停止键停止;如此反复6次,将需要的录音片段录好并存放到单元位置;4录完音后,按放音键放音,按一次键就播放一段录音;5将语音模块正确连接到AT89C51最小系统。最后,将整个程序合并,进行最后的调试,公交车语音报站系统完成。54测试结果为了使本设计的结果更加客观与可靠,我随机调查了一下身边同学试用情况。本次调查中,我主要将试验者分为6组,第一组“HUANYINGCHENGZUO”组,如表51所示,第二组“NINGBOLIGONDAOLE”组,如表52所示,第三组“WANLIXUEYUANDAOLE”组,如表53所示,第四组“YIYAOXUEXIAODAOLE”组,如表54所示,第五组“YINZHOUERYUANDAOLE”组,如表55所示,第六组“XIEXIECHENGZUO”组,如表56所示,每组抽查5个人,其中上一站/下一站一起进行检测。表51是随机者A1,A2,A3,A4,A5按下K1键时的反馈情况。此时NUM1,如果LCD1602上显示“HUANYINGCHENGZUO”,同时语音ISD4004中播放“欢迎乘坐363路公交车”,则说明正确,五名随机者回答“是”即可。表51“HUANYINCHENZUO”编号按键(NUM1)LCD上显示“HUANYINGCHENGZUO”语音播放同一站名A1K1是是A2K1是是A3K1是是A4K1是是A5K1是是表52是10名随机者对NUM2时的反馈情况,其中A1A5是对K2键的试用,A6A10对K3键的试用。如果此时LCD1602上显示“NINGBOLIGONGDAOLE”,同时语音ISD4004中播放“宁波理工到了,请从后门下车,下车请当心。车辆起步,请拉好扶手,前方停靠,万里学院”,则说明正确,十名随机者回答“是”即可。表52“NINGBOLIGONGDAOLE”编号按键(NUM2)LCD上显示“NINGBOLIGONGDAOLE”语音播放同一站名A1K2是是A2K2是是A3K2是是A4K2是是A5K2是是A6K3是是A7K3是是A8K3是是A9K3是是A10K3是是表53是10名随机者对NUM3时候的反馈情况,其中A1A5是对K2键的试用,A6A10对K3键的试用。如果此时LCD1602上显示“WANLIXUEYUANDAOLE”,同时语音ISD4004中播放“万里学院到了,请从后门下车,下车请当心。车辆起步,请拉好扶手,前方停靠,医药学校”,则说明正确,十名随机者回答“是”即可。表53“WANLIXUEYUANDAOLE”编号按键(NUM3)LCD上显示“WANLIXUEYUANDAOLE”语音播放同一站名A1K2是是A2K2是是A3K2是是A4K2是是A5K2是是A6K3是是A7K3是是A8K3是是A9K3是是A10K3是是表54是10名随机者对NUM4时候的反馈情况,其中A1A5是对K2键的试用,A6A10对K3键的试用。如果此时LCD1602上显示“YIYAOXUEXIAODAOLE”,同时语音ISD4004中播放“医药学校到了,请从后门下车,下车请当心。车辆起步,请拉好扶手,前方停靠,鄞州二院”,则说明正确,十名随机者回答“是”即可。表54“YIYAOXUEXIAODAOLE”编号按键(NUM4)LCD上显示“YIYAOXUEXIAODAOLE”语音播放同一站名A1K2是是A2K2是是A3K2是是A4K2是是A5K2是是A6K3是是A7K3是是编号按键(NUM4)LCD上显示“YIYAOXUEXIAODAOLE”语音播放同一站名A8K3是是A9K3是是A10K3是是表55是10名随机者对NUM5时候的反馈情况,其中A1A5是对K2键的试用,A6A10对K3键的试用。如果此时LCD1602上显示“YINZHOUERYUANDAOLE”,同时语音ISD4004中播放“鄞州二院到了,请从后门下车,下车请当心”,则说明正确,十名随机者回答“是”即可。表55“YINZHOUERYUANDAOLE”编号按键(NUM5)LCD上显示“YINZHOUERYUANDAOLE”语音播放同一站名A1K2是是A2K2是是A3K2是是A4K2是是A5K2是是A6K3是是A7K3是是A8K3是是A9K3是是A10K3是是表56是10名随机者对NUM6时候的反馈情况,其中A1A5是对K2键的试用,A6A10对K3键的试用。如果此时LCD1602上显示“XIEXIECHENGZUO”,同时语音ISD4004中播放“谢谢乘坐本次公交车”,则说明正确,十名随机者回答“是”即可。表56“XIEXIECHENGZUO”编号按键(NUM6)LCD上显示“XIEXIECHENGZUO”语音播放同一站名A1K2是是A2K2是是A3K2是是A4K2是是编号按键(NUM6)LCD上显示“XIEXIECHENGZUO”语音播放同一站名A5K2是是A6K3是是A7K3是是A8K3是是A9K3是是A10K3是是通过以上6组的随机试用测试,结果表明改系统稳定,可靠。第6章测试结果及分析61测试环境在本次测试中,主要用到的测试工作是万能表,由于都是现成的模块,因此不需要电烙铁,锡之类的焊接工具。软件测试环境主要是在KEIL,VW,PROTEUS,STC这四类。KEIL和VW主要用于程序的编写以及运行。KEILC51是美国KEILSOFTWARE公司出品的51系列兼容单片机C语言软件开发系统,在C语言在功能上、结构性、可读性、可维护性上有明显的优势13。C文件可以在KEIL中由C51及C51编译器编译生成目标文件OBJ。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件ABS。ABS文件由OH51转换成标准的HEX文件,这样通过STC可以将程序下载到51单片机中,进行硬件方面的测试。当然伟幅也是可以生成HEX文件的,在这次设计中,我用的比较多的就是VW。PROTEUS主要用于仿真,运用这个软件,我们可以通过仿真来查看我们的一些参数

温馨提示

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

评论

0/150

提交评论