




已阅读5页,还剩56页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
宁波理工学院 毕业设计(论文)题 目 基于单片机的公交车语音报站系统的设计姓 名 周玲燕 学 号 3080431052 专业班级 08通信工程2班 指导教师 李林功 学 院 信息科学与工程学院 完成日期 2012年5月20日 摘要为了提高公交车服务质量,满足各类乘客需求,设计了一个带有语音播放的公交车报站系统。系统通过3个按键控制实现起始站、上一站、下一站的控制功能。系统主要由at89c51单片机、语音模块isd4004、按键和lcd1602显示器组成。isd4004语音模块存放报站信息,按键控制语音播放,播放的信息在液晶上显示。经6组人员的试用测试,结果表明系统工作稳定,可靠,达到了设计要求。关键词:单片机控制;液晶显示;isd4004;键盘ivabstractin order to improve the quality of bus service and satisfy the requirements of all kinds of passengers, a bus-stop-reporting system with voice player is designed. the system realizes the function of reporting the originating station、the previous station and the next station. the system is made up of at89c51、voice module isd4004、buttons and monitor lcd1602. information of stations reported is stored in isd4004 voice module. voice player is controlled by buttons, broadcasted information is displayed on lcd. the design is tested by six groups of people and the result shows that the system works stably and reliably. it reaches the design requirements.keywords:single chip microcomputer;lcd;isd4004;keys 目录摘要iabstractii目录iii第1章 选题背景和意义1第2章 系统体系结构32.1系统构成32.2 软硬件功能分配62.2.1 软件功能分配62.2.2硬件功能分配82.3功能描述102.4技术指标11第3章 系统硬件123.1设计思想123.2系统原理图123.3元器件选择133.4各模块介绍14第4章 系统软件184.1设计思想184.2模块程序设计184.2.1软件主流程图194.2.2isd4004语音模块录放音194.2.3lcd1602214.2.4按键部分224.3仿真过程、结果分析23第5章 系统调试285.1硬件调试285.2软件调试295.3综合调试325.4测试结果32第6章 测试结果及分析376.1测试环境376.2测试结果37第7章 总结与展望39参考文献41附件42致 谢56第1章 选题背景和意义 随着城市化的进展和经济的快速发展,大城市人口高度集中并大幅度增长,同时汽车越来越普及,交通需求迅速扩大,而道路交通基础设施建设的发展相对滞后。城市交通需求与供给之间的矛盾越来越突出,城市“乘车难”、“行车难”的局面在加剧,交通堵塞呈现出点到线,由线到面的扩展趋势,交通拥挤、交通延误、交通堵塞以及由此引起的噪音、废气污染,城市空气质量指数的严重跌落严重影响着居民的正常生活以及社会经济的持续、健康发展。而与出租车和私家车相比,公交车人均占道面积少、成本低、运载能力高,同时它的通行路线覆盖面广,在缓解交通拥堵,节能减排方面都有较好的作用,因此很多城市建议人们出门乘坐公交车1。同时有关专家学者和交通工程师们在吸取各国城市交通发展经验基础上,也提出解决我国城市交通发展问题的有效途径,即优先发展城市公共交通,以公共交通为杠杆降低城市交通需求总量,实现道路交通基础设施发展与交通需求增进的均衡。实施“公交优先”是解决我国城市交通问题的有效途径,也是我国目前城市交通发展的基本政策。可见,未来,公交车将充当现代城市生活中一个重要的角色,也就是说城市公共交通在今后的发展中将得到迅速的发展。然而,现有的城市公交车运输方面存在一些不良问题:首先,目前公交车报站系统的设计只为了公交车内的乘客服务,因而没有考虑到车站台等车乘客的需要,在天气恶劣或视线不好的时候,乘客往往无法清楚的分辨到达的车辆路线,出现众多乘车不利的现象:有的乘客下到机动车道伸头观望,更多的是常常一拥而上,前后跑动、追赶,找寻自己要上得车辆,很容易造成盲目拥挤,秩序混乱的场面。还经常出现乘客坐不到车,耽误坐车时间,还会出现一些不安全事故。其次,传统的报站方式效果太差。即由售票人员进行人工报站,这个售票人员多的工作不仅需要负责售票工作,还要准确的为乘客报站,作为一个地区的公交车站行业,有一定的地方特色,他们报站时多采用地方口音,作为一个外地人有时候很难听懂报站,从而引起很多麻烦。现在传统的人工语音报站已经被很多城市淘汰了,取而代之的是公交车自动报站系统,它弥补了传统人工语音报站的落后方式,使使进站、出站信息自动服务用语,为,市民提供更人性化,更完善的服务。比如可以通过公交车语音报站,照顾盲人乘客;可以用液晶显示器显示站名,照顾聋哑人等等,让人们在生活中感受到科技给我们带来的便捷。目前语音报站器技术主要有以下四种2:1) 手动语音报站器。这类控制器是由乘务人员按动进站按钮开始报站,出站时,由乘务人员按下出站按钮,开始预报下站的站名,通过序号来记录各个站点;2) 门控语音报站器。它是将开门,关门时转换信号和语音报站器连接,开门和关门时自动报站;3) 无线信标语音报站器3。它是在每个公交车站点设置发射信标点,公交车临近到站点左右会收到信标信号,开始自动报站,出站后信号消失,开始预报下一站,此报站器报站准确,但需要为每个站点组建无线发射信标,建设复杂、费用高,大部分站点无电源供应,公交车数量多时存在频率干扰问题,而且较严重,用户修改站点非常不方便,系统维护成本高。4) gps自动语音报站器4。此报站器是在公交车上安装gps自动语音报站器,自动识别站点并报告站点信息。从技术层面讲,此方案从原理上解决了可靠性低的问题,问题是如何把一个先进的原理性的技术成果转化成为“产品化”的产品,还存在一些不足,如:把要报站的语音内容事先固化到语音芯片中,这种设计在很多应用中普遍采用,但就这个项目而言,却十分不合理,因为它有悖于“通用化”设计原则。其次,把显示屏要显示的报站内容也事先固化到车载控制系统内,从用户角度看,通过有线的串行口配置或更新一个已经安装完成的“移动式”的车载设备谈何容易。考虑到各方面的因素后,在本次公交车报站器系统设计中,我采用了第一种的语音报站方法。56第2章 系统体系结构本设计采用单片机at89c51作为自动报站的检测和驱动控制核心,控制isd4004语音芯片电路以及lcd1602液晶显示站名的硬件设计和软件设计,实现公交车的语音报站。2.1 系统构成本公交报站系统工作原理为公交车每到一站,乘务人员通过按键中断的方式让报站器播报当前站名和下一站站名,提醒乘客到车下车,下一站下车的乘客做好下车准备,这样方便了乘客使其不至错过了车站;并带有lcd 显示系统,告知乘客当前的站点。 在本次设计中,系统由以下几部分电路构成:单片机主控电路、语音录放电路、液晶显示电路、按键电路、复位电路。采用at89c51单片机作为主控芯片,利用isd4004数码语音芯片实现语音报站,显示采用lcd1602,键盘采用通用按键开关,简单易行且控制方便。图2.1是整一个系统构成框图5。图 2.1 系统总框图下面介绍一下各部分电路的功能及原理。主控电路是由at89c51单片机及其相关外围电路组成,at89c51在系统中实现对isd4004中的语音信号的控制,实现存储和播放的控制,并响应按键引起的中断,播放合适的语音,同时调用字符库在液晶上显示相关站点名称。总之,at89c51在系统中实现对整个系统的全局控制,是该系统的指挥部件。结构如图2.2所示。isd4004具有如下特点:首先是记录声音没有段长度限制,并且声音记录不需要a/d转换和压缩。其次,快速闪存作为存储介质,无需电源可保存数据长达100年,重复记录10000次以上。此外,isd4004具有记录时间长(可达16分钟)的优点。而且isd4004开发应用具有所需外围电路简单的优点。isd4004系列工作电压3v,单片录放时间8分钟至16分钟,音质好,适用于移动电话及其他便携式电子产品中。芯片采用cmos技术,内含振荡器、防混淆滤波器、平滑滤波器、音频放大器、自动静噪及高密度多电平闪烁存贮陈列。芯片设计是基于所有操作必须由微控制器控制,操作命令可通过串行通信接口(spi或microwire)送入。芯片采用多电平直接模拟量存储技术, 每个采样值直接存贮在片内闪烁存贮器中,因此能够非常真实、自然地再现语音、音乐、音调和效果声,避免了一般固体录音电路因量化和压缩造成的量化噪声和金属声。采样频率可为 4.0,5.3,6.4,8.0khz,频率越低,录放时间越长,而音质则有所下降,片内信息存于闪烁存贮器中,可在断电情况下保存100年(典型值),反复录音10万次。适合用于公交车语音报站系统这种多段录音的设计6。本次液晶模块选用lcd1602。报站系统液晶驱动显示电路连接图如图2.3所示。控制电路选用单片机at89c51,本电路/ea接高电平,没有扩展rom。将液晶的数据输入端db0db7与单片机的p2口相连,将p0.0,p0.1,p0.2分别与液晶的rs,rw,e端连接,用来控制液晶lcd1602的显示。图 2.2 主控电路图 2.3 液晶显示电路在本次按键模块的设计中,我选择了拥有8个按键的矩阵式键盘模块。矩阵式键盘的工作过程可分为两步:第一步是cpu首先检测键盘上是否有按键按下;第二步是识别哪一个键按下。1) 检测键盘上是否有按键按下的处理方法是:将列线送入全扫描字,读入行线的状态来辨别。其过程如下:pa口输出00h,即所有列线置成低电平,然后将行线的电平状态读入累加器a中。如果有按键按下,总会有一根行线的电平被拉至低电平,从而使行输入状态不全为“1”。2) 识别键盘中哪一个键按下的处理方法是:将列线逐列置成低电平,检查行输入状态,称为逐列扫描。其具体过程如下:从pa0开始,依次输出“0”,置对应的列线为低电平,然后从pc口读入行线状态,如果全为“1”,则按下的键不在此列;如果不全为“1”,则按下的键必在此列,而且是该列与“0”电平行线相交的交点上的那个键。为求取编码,在逐列扫描时,可用计数器记录下当前扫描列的列号,检测到第几行有键按下,就用该行的首键码加列号得到当前按键的编码。2.2 软硬件功能分配2.2.1 软件功能分配 在整一个系统设计中,软件主要负责程序的编写,实现语音模块isd4004的多段语音录放,以及lcd1602的液晶显示,最后将各个独立的程序进行整合实现最终的公交车语音报站系统的设计。下面主要介绍一下语音模块isd4004,以及lcd1602在程序编写时所采用的原理。isd4004 采用多电平直接模拟量存储技术,每个采样值直接存储在片内闪烁存储器中,因此能够非常真实的再现语音,音乐等效果。isd4004工作于spi串行接口。spi协议是一个同步串行数据传输协议。协议要求数据在时钟上升沿移入,在下降沿移出。即在时钟上升沿锁存mosi引脚数据,写入命令字;在下降沿将数据送至miso引脚,读取状态字。mcs-51单片机的串行口方式0与其要求一致的。isd4004端口的状态字和命令字如图2.4所示。命令字的高5为为操作码,低11位为操作地址。状态字的最高2位分别是溢出标志ovf和信息段末尾标志eom,紧跟其后的是行地址计数器的值。isd4004总共10条命令。当单片机作为主芯片控制isd4004时,我们只需要在主程序中完成一些初始化的工作以及录放结束工作,如isd上电,掉电等。另外通过循环扫描键盘,来检查启动键是否按下,根据录放开关状态跳转到相应的子程序7。图 2.4 spi端口的命令字和状态字lcd1602字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式的显示模块。1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)。表2.1是1602液晶模块内部的控制器共有11条控制指令。表 2.1 1602液晶模块内部的控制器共用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地址设置。指令8:ddram地址设置。指令9:读忙信号和光标地址 bf:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。指令10:写数据。指令11:读数据。lcd1602液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图2.5是1602的内部显示地址。图 2.5 lcd1602内部显示地址2.2.2 硬件功能分配硬件需要实现的主要功能是将at89c51最小系统,lcd1602液晶显示模块,isd4004语音芯片模块以及按键模块,按照程序正确的连接,观察现象,看是否能够实现所需要的功能。由于at89c51最小系统是主控中心,所以在此主要介绍各个模块是如何与at89c51连接的。isd4004的工作电压为3.3v,本模块已经做好5v3.3v电压转换处理(由asm1117-3.3v实现)模块引脚直接接5v电源。模块有两路输入和两路输出。输入:mic输入以及耳机插口输入;输出:喇叭输出与耳机插口输出。其中gnd与p6.25相连,vcc与p6.26相连接,为语音模块提供电源。sclk串行接口时钟输入端与p1.5相连,/ss为片选与p1.6相连,miso串行数据输出端与p1.8相连,用来控制数据输出,mosi串行数据输入端与p1.3相连,用来控制数据输入。模块的接口定义如下(顶视)图2.6所示。(注:nc为空脚) miso-串行输出 mosi-串行输入 vcc-5v /ss-片选 sclk-时钟 gnd-地 此处为idc10接口标有白色框的为vcc.定义同上音频输入mic音频输出电源转换输入和输出音量调节图 2.6 语音模块的接口定义 lcd1602液晶显示模块的rs,rw,e分别与51单片机的p35,p36,p37端口连接,进行程序的读写数据,字符操作。而d0d7分别与51单片机的p0口进行连接,用来输出数据与字符。如图2.7 所示。图 2.7液晶1602与at89c51实物连接图本次设计的按键模块采用通用按键开关,简单易行且控制方便,与51单片机的p2.0口连接,用以控制整个系统设计中lcd液晶显示以及语音播放。在此就不做详细介绍。2.3 功能描述本次设计的课题是基于单片机的公交车语音报站系统,因此主要功能是完成公交车语音报站。采用at89c51单片机作为主控芯片,对isd4004数码语音芯片与lcd1602进行控制,实现语音报站,同时显示站名。键盘采用通用按键开关,简单易行且控制方便。在本次软件设计中,主要设计了4站,通过三个按键进行控制。具体如下:k1键起始键现象:isd4004播报“欢迎乘坐”,同时lcd1602上显示“huan ying cheng zuo”。k2键上一站,k3键下一站,现象:num=1,isd4004播报“欢迎乘坐363路公交车”,同时lcd1602上显示“huan ying cheng zuo ”。num=2,isd4004播报“宁波理工到了,请从后门下车,下车请当心;车辆起步,请拉好扶手,前方停靠万里学院”,同时lcd1602上显示“ningboligong dao le”。num=3,isd4004播报“万里学院到了,请从后门下车,下车请当心;车辆起步,请拉好扶手,前方停靠医药学校”,同时lcd1602上显示“wanglixueyuan dao le”。num=4,isd4004播报“医药学校到了,请从后门下车,下车请当心;车辆起步,请拉好扶手,前方停靠鄞州二院”,同时lcd1602上显示“yiyaoxuexiao dao le”。num=5,isd4004播报“鄞州二院到了,请从后门下车,下车请当心;”,同时lcd1602上显示“yinzhoueryuan dao le”。num=6,isd4004播报“谢谢乘坐本次公交车”,同时lcd1602上显示“xie xie cheng zuo”。2.4 技术指标针对本次基于单片机的公交车语音报站系统的设计,其技术指标主要来源于isd4004语音模块以及lcd1602液晶显示模块。isd4004:1) 3v单电源工作2) 工作电流2530ma3) 维持电流1ua4) 多段信息处理5) 10 万次录音周期(典型值) 6) 不耗电信息保存100年(典型值)lcd1602:1) 显示容量:162个字符2) 芯片工作电压:4.55.5v3) 工作电流:2.0ma(5.0v)4) 模块最佳工作电压:5.0v5) 字符尺寸:2.954.35(wh)mm第3章 系统硬件3.1 设计思想本次设计主要是利用at89c51单片机作为cpu来进行总体控制,通过语音芯片isd4004组成的语音控制电路能够建立多段语音库信息,并且可以对这些段的语音信息进行自由的组合,形成变化多样的语音提示信息,同时使用lcd1602液晶显示电路进行字符显示,能够实现公交车的语音报站及字符显示。在cpu控制模式下,键盘采用按键扫描法,当有键按下时,通过软件进行按键扫描,实现键码对应的功能。因此当公交车到达某站时通过键盘来控制本系统进行工作,通过语音输出电路进行语音报站,cpu同时通过程序读取字符信息送入lcd液晶显示电路进行液晶显示8。3.2 系统原理图图3.1是系统仿真时的原理图,在整个系统软件设计中,依旧从语音,液晶显示以及按键这三大部分进行综合考虑。由于proteus软件的限制,无法对isd4004语音芯片进行仿真,从而在此处我选用了led灯来代替语音芯片,当按键按下时,相对应的led灯点亮。所以在此,我主要介绍一下液晶显示模块lcd1602以及按键显示的工作原理。在此次软件设计过程中,总共有4个按键,k1:huanyingchengzuo,k2:上一站,k3:下一站,k4:谢谢乘坐。当按下k1键时,lcd上显示“huanyingchengzuo”,同时led1亮;如果当前的站是“wanlixueyuan dao le”,当按下k2键时,lcd上显示“ningboligong dao le”,此时led2亮,led3灭;当按下k3键时,lcd上显示“yiyaoxuexiao dao le”,此时led4亮,led3灭。当按下k4时,lcd上显示“xiexiechengzuo”。1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)。1602液晶模块内部的控制器共有11条控制指令,通过这11条指令,可以完成1602上数据、字幕等显示。lcd1602液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符9。图 3.1 系统原理图仿真在将12864与lcd1602进行对比后,我选择了lcd1602液晶显示模,因为1602实现起来较为简单,也很实用,在两个能够达到类似功能的时候,我选择了1602,不过唯一的缺点就是1602不能显示汉字。除此之外,我将仿真中的led换成了真正的语音模块,isd4004语音模块,用以实现语音播放的功能。3.3 元器件选择在本次设计中,我主要选择的器件有lcd1602,语音模块isd4004,按键模块,以及at89c51的最小系统。由于lcd1602具有显示质量高,数字式接口,功耗低等优点,其中因为拥有数字式接口,在和单片机系统的接口变得更加简单可靠,操作更加方便。因此对于lcd液晶显示模块我选择了lcd1602。isd4004具有如下特点:首先是记录声音没有段长度限制,并且声音记录不需要a/d转换和压缩。其次,快速闪存作为存储介质,无需电源可保存数据长达100年,重复记录10000次以上。此外,isd4004具有记录时间长(可达16分钟),音质好,适用于移动电话及其他便携式电子产品中的优点。同时isd4004开发应用具有所需外围电路简单的优点。同时51最小系统能够给他提供3.3v的工作电压,让它正常工作。除此之外,由于身边有同学用过这个芯片,对它比较了解,如果我遇到问题了,可以有人请教。因此对于语音模块,我选择了isd4004。按键模块比较简单,因为我只需要3个按键而已,所以无论是三个独立的按键,还是一个按键模块,只要能实现我要的功能都可以。在本次设计中,我选择了一个按键模块。at89c51单片机最小系统是上课上过的内容对此比较熟悉,同时本次设计也是针对单片机的公交车语音报站系统的设计,而且实验室有现成的资源可以利用,所以毫无疑问,主控系统就选择了at89c51最小系统。3.4 各模块介绍本次设计主要由at89c51最小系统,isd4004语音模块,lcd1602液晶显示模块以及按键模块这四模块组成。单片机又称单片微控制器,是在一块芯片中集成了cpu(中央处理器)、ram(数据存储器)、rom(程序存储器)、定时器/计数器和多种功能的i/o(输入/输出)接口等一台计算机所需要的基本功能部件,从而可以完成复杂的运算、逻辑控制、通信等功能。对51 系列单片机来说,最小系统一般应该包括:单片机、时钟电路、复位电路、输入/输出设备等(见图3.2)。在本次设计中,at89c51作为系统的cpu来对语音模块,液晶显示模块,按键模块进行总体的控制。单片机复位电路时钟电路电源输入/输出设备图 3.2 at89c51最小系统框图isd4004引脚排列如图3.3所示,其中nc为空引脚,其余引脚的功能如下:图 3.3 isd4004引脚排列图vcca、vccd分别为模拟和数字电路的电源端;vssa、vssd分别为模拟地和数字地;anain+、anain分别为模拟信号同相和反相输入端,模拟信号可采用单端输入方式或差分输入方式;audout为音频输出端,能驱动5000欧姆的负载;/ss为片选,低电平有效;mosi为串行数据输入端;miso为串行数据输出端;sclk为串行接口时钟输入端;xclk为外部时钟输入端;/int为中断请求端,漏极开路;amcap为自动静噪控制端;单片机选用atmel公司的at89c51,其内含4kb的flash存储器,可擦写10万次。isd4004语音芯片与单片机的接口如图3.4所示。gnd与p6.25相连,vcc与p6.26相连接,为语音模块提供电源。sclk串行接口时钟输入端与p1.5相连,/ss为片选与p1.6相连,miso串行数据输出端与p1.8相连,用来控制数据输出,mosi串行数据输入端与p1.3相连,用来控制数据输入。图 3.4 isd4004语音模块与51的实物连接图 硬件连接的几点说明:1) 串口工作于方式0发送方式,p1.4用于串口时钟输入端,p1.5用于片选,此时高电平有效,p1.2用于串行数据输入端,p1.7用于串行数据输出端。2) isd内部功放驱动能力较低,因此外接了一个lm386可驱动的0.5w的喇叭。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章 系统软件4.1 设计思想软件设计的主要功能是完成公交车语音报站,采用at89c51单片机作为主控芯片,对isd4004数码语音芯片与lcd1602进行控制,实现语音报站,同时显示站名。键盘采用通用按键开关,简单易行且控制方便。在本次软件设计中,主要设计了4站,通过三个按键进行控制。具体如下:k1键起始键现象:isd4004播报“欢迎乘坐”,同时lcd1602上显示“huan ying cheng zuo”。k2键上一站,k3键下一站,现象:num=1,isd4004播报“欢迎乘坐”,同时lcd1602上显示“huan ying cheng zuo”。num=2,isd4004播报“宁波理工到了,请从后门下车,下车请当心;车辆起步,请拉好扶手,前方停靠万里学院”,同时lcd1602上显示“ningboligong dao le”。num=3,isd4004播报“万里学院到了,请从后门下车,下车请当心;车辆起步,请拉好扶手,前方停靠医药学校”,同时lcd1602上显示“wanglixueyuan dao le”。num=4,isd4004播报“医药学校到了,请从后门下车,下车请当心;车辆起步,请拉好扶手,前方停靠鄞州二院”,同时lcd1602上显示“yiyaoxuexiao dao le”。num=5,isd4004播报“鄞州二院到了,请从后门下车,下车请当心;”,同时lcd1602上显示“yinzhoueryuan dao le”。num=6,isd4004播报“谢谢乘坐本次公交车”,同时lcd1602上显示“xie xie cheng zuo”。4.2 模块程序设计 在本次设计中我针对363公交车,从中取了“宁波理工,万里学院,医药学校,鄞州二院”这4站进行了单边线路的设计。4.2.1 软件主流程图系统上电后,液晶显示模块lcd1602与语音模块isd4004进行初始化,当检测到有按键按下时,进行键值的判断,根据键值,跳转到相应的显示程序和语音播放程序并执行,从而实现公交车语音报站功能。软件主流程图如图4.1所示。图 4.1软件主流程图4.2.2 isd4004语音模块录放音在本次软件程序设计中,我总共设置了5个按键,录音键(k1=p2.5),放音键(k2=p2.6),停止键(k3=p2.7),录放音地址移位键(k4=p2.0),复位键(k5=p2.1)。当按下k1键时,语音模块就从0x05开始录音,录好一段音后,按下k3键,停止录音。按下k2键,开始播放之前所录的声音。按下k4键,录音地址往后移100,此时再按下k1键,开始第二段录音。如此,便可实现多段录音,而且每段录音所存放的地址都通过计算得出。若是不满意当前的录音,可以按下k5键,重新录音。图4.2为录音流程图。图4.3为放音流程图。图 4.2 录音程序流程图图 4.3 放音程序流程图4.2.3 lcd1602系统上电后,液晶显示模块进行初始化。同时液晶显示部分按照数组序号显示字符程序,程序中table为要显示的数组序号,按照数组的次序依次显示每站的站名。图4.4为本次设计的液晶显示1602的程序流程图。图 4.4 lcd1602程序流程图4.2.4 按键部分按键部分采用扫描法,当检测到按键按下时,进行键值判断,并进行相应的显示程序以及语音播放程序的跳转,实现公交车语音报站功能。图4.5是本次设计的按键程序流程图。图 4.5 按键程序流程图4.3 仿真过程、结果分析本次单片机软件仿真系统我选择了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上显示“huan ying cheng zuo”,同时led1亮;如果当前的站是wanglixueyuan dao le”,当按下k2键时,lcd上显示“ningboligong dao le”,此时led2亮,led3灭;当按下k3键时,lcd上显示“yiyaoxuexiao dao le”,此时led4亮,led3灭。当按下k4时,lcd上显示“xie xie cheng zuo”。实现的效果图如下图4.6,4.7,4.8,4.9,4.10,4.11所示按下k1键 lcd1602液晶显示“huan ying cheng zuo”,同时led1亮。图 4.6 “huan ying cheng zuo”按下k2或者k3键显示,k2键逆向显示,k3键顺向显示num=1 lcd1602液晶显示“ningboligong dao le”,同时led2亮。图 4.7 “ningboligong dao le”num=2 lcd1602液晶显示“wanglixueyuan dao le”,led3亮。图 4.8 “wanglixueyuan dao le”num=3 lcd1602液晶显示“yiyaoxuexiao dao le”,同时led4亮。图 4.9 “yiyaoxuexiao dao le” num=4 lcd1602液晶显示“yinzhoueryuan dao le”,同时led5亮。图 4.10 “yinzhoueryuan dao le”按下k4键 lcd1602液晶显示“xie xie cheng zuo”,同时led5亮。图 4.11 “xie xie cheng zuo”第5章 系统调试5.1 硬件调试在整一个硬件调试过程中,我主要分为三部分进行调试,第一部分是按键调试。,第二部分是lcd液晶显示调试,第三部分是isd4004语音模块录放调试。首先,我进行了按键调试。对于按键和led调试,我所采用的工具是万用表,因为按键原理是松开状态,电路断开;按下按键,电路短路,以此来检测它们的好坏。其次,第二部分就是lcd1602液晶显示的调试。第一步,将lcd1602正确的连接到51单片机上,在连接时要注意液晶屏的日rs,rw,e这三个口的位置,一旦接错lcd就有可能被烧坏。我的lcd模块的这三个接口分别是p3.5,p3.6,p3.7,而数据输入口接在p0口上,因此只要将其连接上即可。第二步,将已编译正确的lcd液晶显示程序下载到51单片机,查看lcd1602上是否能够显示你想得到的内容。这一部分,因为看了很多相关的视频,所以基本没有遇到问题。例如显示“huan ying cheng zuo”如图5.1所示。图 5.1 lcd1602液晶显示调试模块示例最后,进行isd4004录放音的调试。在这次设计中,如何正确的将isd4004与51连接成了我最大的问题。经过咨询好多人后,才得以成功连接,并能播放示例音乐。此外,将另外一段一录一放的程序下载到51,检测isd4004的录放音功能。若程序烧录成功后,按下录音键,喇叭出现“滴滴滴滴”连续的响声,说明录音开始,可以进行录音。复位键录完后,按下放音键,检测是否能够正确放音。检测完语音芯片后,接下来就是实现多段语音录放。在本次设计中,我设置了一个移位变量add,每录完一个音,移位100,开始录下一段语音。移位的目的就是将不同的语音段保存在指定的位置,这样以便地址的查询。isd4004语音调试模块如图5.2所示。录音键暂停键放音键移位键图 5.2 isd4004语音调试模块 5.2 软件调试与硬件调试类似,在本次软件调试中,主要分为三部分进行调试,按键与lcd1602结合程序的调试,isd4004与按键结合程序的调试,以及isd4004、lcd1602与按键的调试。首先,按键与lcd1602的调试。由于在使用lcd1602之前,翻阅了很多相关的资料以及视频,因此lcd1602液晶显示程序已经调试好,没有问题。主要的问题是如何将按键加入到程序中,对lcd1602显示的内容进行控制。一开始,我先让按键控制lcd1602显示内容中的其中一条。在程序中设置了void key(),通过调用void write(uchar com)这个函数,显示出lcd1602的第一条内容“huan ying cheng zuo”。因此想要显示其他内容,原理也一样。如图5.3所示。图 5.3 “huan ying cheng zuo”示例图其次,按键与isd4004的调试。由于之前查阅的很多资料中有一段一录一放的程序,了解他的原理后,发现与我需要的多段录放效果原理相同。因此在原有的基础上,我设置了一个k4,k4所需要实现的功能是移位,每录好一次,按下k4移位100,然后再按下录音键,这样就实现了多段录放音。其中,在调试录放音时,还添加了led模块,主要功能是检测按键是否有效。初始状态,系统上电,所有led灯亮,有键按下时led1灭。如果再有按键按下led1亮,如此来判别录音键,放音键,移位键,复位键以及停止键是否有效。如下图5.4isd4004与按键的实物连接图。放音键停止键录音键复位键移位键led灯图 5.4 isd4004与按键的实物连接图最后,按键、lcd1602与isd4004三者的结合。在这三者结合时,对于isd4004语音模块,我只需要一段放音程序,只要将之前存放在地址位置里面的录音片段通过放音程序放出来就好。在这一测试中,按键要控制两项lcd1602的液晶显示以及isd4004语音的播放,而且两个要同时。这时候,通过设置void write(uchar com)中com的值以及将语音播放play()函数添加到void key()中,通过void key()中按键按下后多种条件的核对,从而确定按键按下后要显示的内容以及语音播放的内容。以“ningboligong dao le” 一站为例,最终的结果如下图5.5所示。图 5.5 “ningboligong dao le”总体示例图5.3 综合调试1) 根据给出isd4004的电路原理图,正确连接电路;2) 调试已编译的程序,将程序下载到51单片机中;3) 按下录音键进行录音,连续录完一段后,按下停止键停止。然后按下移位键再次按下录音键开始录另外一段音,按停止键停止;如此反复6次,将需要的录音片段录好并存放到单元位置;4) 录完音后,按放音键放音,按一次键就播放一段录音;5) 将语音模块正确连接到at89c51最小系统。最后,将整个程序合并,进行最后的调试,公交车语音报站系统完成。5.4 测试结果为了使本设计的结果更加客观与可靠,我随机调查了一下身边同学试用情况。本次调查中,我主要将试验者分为6组,第一组“huanyingchengzuo”组,如表5-1所示,第二组“ningboligon dao le”组,如表5-2所示,第三组“wanlixueyuan dao le”组,如表5-3所示,第四组“yiyaoxuexiao dao le”组,如表5-4所示,第五组“yinzhoueryuan dao le”组,如表5-5所示,第六组“xiexiechengzuo”组,如表5-6所示,每组抽查5个人,其中上一站/下一站一起进行检测。表5.1是随机者a1,a2,a3,a4,a5按下k1键时的反馈情况。此时num=1,如果lcd1602上显示“huanyingchengzuo”,同时语音isd4004中播放“欢迎乘坐363路公交车”,则说明正确,五名随机者回答“是”即可。表 5.1 “huanyinchenzuo”编号按键(num=1)lcd上显示“huanyingchengzuo”语音播放同一站名a1k1是是a2k1是是a3k1是是a4k1是是a5k1是是表5.2是10名随机者对num=2时的反馈情况,其中a1a5是对k2键的试用,a6a10对k3键的试用。如果此时lcd1602上显示“ningboligong dao le”,同时语音isd4004中播放“宁波理工到了,请从后门下车,下车请当心。车辆起步,请拉好扶手,前方停靠,万里学院”,则说明正确,十名随机者回答“是”即可。表 5.2 “ningboligong dao le”编号按键(num=2)lcd上显示“ningboligong dao le”语音播放同一站名a1k2是是a2k2是是a3k2是是a
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年建筑行业工程师资格认证考试指南及模拟题集
- 电力供应基础知识培训总结
- 2025年电力工程师中级实操技能考试指南与模拟题集
- 2025年初级新媒体运营人员面试实战指南及预测题
- 2025年厨师长中级面试技巧及实操模拟题答案
- 2025年初级设计师面试攻略与模拟题详解
- 2025年高考数学复习冲刺卷及答案详解
- 2025年新员工入职前培训资料仓库管理面试模拟题及解答指南
- 2025年特岗教师招聘考试英语语法与写作模拟题详解
- 2025年特岗教师招聘考试初中数学命题趋势分析
- 2025年急诊急救试题(附答案)
- 变电站新员工培训课件
- 会所会议室管理制度
- 中科海光:2025年深算智能:海光DCU行业实战手册
- 信息服务费 合同
- 2025年医师节临床知识竞赛题库
- 《研学旅行指导师实务》课件-第6章 基(营)地研学课程操作
- 2025年中国中药废弃物的资源化利用行业市场调研分析及投资战略咨询报告
- 小儿川崎病护理查房
- 膀胱炎护理课件
- 电力工程管理培训课件
评论
0/150
提交评论