《基于单片机的公交车语音报站系统的设计说明.doc》由会员分享,可在线阅读,更多相关《基于单片机的公交车语音报站系统的设计说明.doc(85页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 宁波理工学院 毕业设计(论文)题 目基于单片机的公交车语音报站系统的设计姓 名周玲燕学 号3080431052专业班级08通信工程2班指导教师林功学 院信息科学与工程学院完成日期2012年5月20日79 / 85摘要为了提高公交车服务质量,满足各类乘客需求,设计了一个带有语音播放的公交车报站系统。系统通过3个按键控制实现起始站、上一站、下一站的控制功能。系统主要由AT89C51单片机、语音模块ISD4004、按键和LCD1602显示器组成。ISD4004语音模块存放报站信息,按键控制语音播放,播放的信息在液晶上显示。经6组人员的试用测试,结果表明系统工作稳定,可靠,达到了设计要求。关键词:单
2、片机控制;液晶显示;ISD4004;键盘AbstractIn 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 stati
3、on. 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 s
4、hows 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
5、.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章 选题背景和意义随着城市化的进展和经济的快速发展,大城市人口高度集中并大幅度增长,同时汽车越来越普与,交通需求迅速扩大,而道路交通基础设施建设的发展相对滞后。城市交通需求与供给之间的矛盾越来越突出,城市“乘
6、车难”、“行车难”的局面在加剧,交通堵塞呈现出点到线,由线到面的扩展趋势,交通拥挤、交通延误、交通堵塞以与由此引起的噪音、废气污染,城市空气质量指数的严重跌落严重影响着居民的正常生活以与社会经济的持续、健康发展。而与出租车和私家车相比,公交车人均占道面积少、成本低、运载能力高,同时它的通行路线覆盖面广,在缓解交通拥堵,节能减排方面都有较好的作用,因此很多城市建议人们出门乘坐公交车1。同时有关专家学者和交通工程师们在吸取各国城市交通发展经验基础上,也提出解决我国城市交通发展问题的有效途径,即优先发展城市公共交通,以公共交通为杠杆降低城市交通需求总量,实现道路交通基础设施发展与交通需求增进的均衡。
7、实施“公交优先”是解决我国城市交通问题的有效途径,也是我国目前城市交通发展的基本政策。可见,未来,公交车将充当现代城市生活中一个重要的角色,也就是说城市公共交通在今后的发展中将得到迅速的发展。然而,现有的城市公交车运输方面存在一些不良问题:首先,目前公交车报站系统的设计只为了公交车的乘客服务,因而没有考虑到车站台等车乘客的需要,在天气恶劣或视线不好的时候,乘客往往无法清楚的分辨到达的车辆路线,出现众多乘车不利的现象:有的乘客下到机动车道伸头观望,更多的是常常一拥而上,前后跑动、追赶,找寻自己要上得车辆,很容易造成盲目拥挤,秩序混乱的场面。还经常出现乘客坐不到车,耽误坐车时间,还会出现一些不安全
8、事故。其次,传统的报站方式效果太差。即由售票人员进行人工报站,这个售票人员多的工作不仅需要负责售票工作,还要准确的为乘客报站,作为一个地区的公交车站行业,有一定的地方特色,他们报站时多采用地方口音,作为一个外地人有时候很难听懂报站,从而引起很多麻烦。现在传统的人工语音报站已经被很多城市淘汰了,取而代之的是公交车自动报站系统,它弥补了传统人工语音报站的落后方式,使使进站、出站信息自动服务用语,为,市民提供更人性化,更完善的服务。比如可以通过公交车语音报站,照顾盲人乘客;可以用液晶显示器显示站名,照顾聋哑人等等,让人们在生活中感受到科技给我们带来的便捷。目前语音报站器技术主要有以下四种2:1) 手
9、动语音报站器。这类控制器是由乘务人员按动进站按钮开始报站,出站时,由乘务人员按下出站按钮,开始预报下站的站名,通过序号来记录各个站点;2) 门控语音报站器。它是将开门,关门时转换信号和语音报站器连接,开门和关门时自动报站;3) 无线信标语音报站器3。它是在每个公交车站点设置发射信标点,公交车临近到站点左右会收到信标信号,开始自动报站,出站后信号消失,开始预报下一站,此报站器报站准确,但需要为每个站点组建无线发射信标,建设复杂、费用高,大部分站点无电源供应,公交车数量多时存在频率干扰问题,而且较严重,用户修改站点非常不方便,系统维护成本高。4) GPS自动语音报站器4。此报站器是在公交车上安装G
10、PS自动语音报站器,自动识别站点并报告站点信息。从技术层面讲,此方案从原理上解决了可靠性低的问题,问题是如何把一个先进的原理性的技术成果转化成为“产品化”的产品,还存在一些不足,如:把要报站的语音容事先固化到语音芯片中,这种设计在很多应用中普遍采用,但就这个项目而言,却十分不合理,因为它有悖于“通用化”设计原则。其次,把显示屏要显示的报站容也事先固化到车载控制系统,从用户角度看,通过有线的串行口配置或更新一个已经安装完成的“移动式”的车载设备谈何容易。考虑到各方面的因素后,在本次公交车报站器系统设计中,我采用了第一种的语音报站方法。第2章 系统体系结构本设计采用单片机AT89C51作为自动报站
11、的检测和驱动控制核心,控制ISD4004语音芯片电路以与LCD1602液晶显示站名的硬件设计和软件设计,实现公交车的语音报站。2.1 系统构成本公交报站系统工作原理为公交车每到一站,乘务人员通过按键中断的方式让报站器播报当前站名和下一站站名,提醒乘客到车下车,下一站下车的乘客做好下车准备,这样方便了乘客使其不至错过了车站;并带有LCD 显示系统,告知乘客当前的站点。 在本次设计中,系统由以下几部分电路构成:单片机主控电路、语音录放电路、液晶显示电路、按键电路、复位电路。采用AT89C51单片机作为主控芯片,利用ISD4004数码语音芯片实现语音报站,显示采用LCD1602,键盘采用通用按键开关
12、,简单易行且控制方便。图2.1是整一个系统构成框图5。图 2.1 系统总框图下面介绍一下各部分电路的功能与原理。主控电路是由AT89C51单片机与其相关外围电路组成,AT89C51在系统中实现对ISD4004中的语音信号的控制,实现存储和播放的控制,并响应按键引起的中断,播放合适的语音,同时调用字符库在液晶上显示相关站点名称。总之,AT89C51在系统中实现对整个系统的全局控制,是该系统的指挥部件。结构如图2.2所示。ISD4004具有如下特点:首先是记录声音没有段长度限制,并且声音记录不需要A/D转换和压缩。其次,快速闪存作为存储介质,无需电源可保存数据长达100年,重复记录10000次以上
13、。此外,ISD4004具有记录时间长(可达16分钟)的优点。而且ISD4004开发应用具有所需外围电路简单的优点。ISD4004系列工作电压3V,单片录放时间8分钟至16分钟,音质好,适用于移动与其他便携式电子产品中。芯片采用CMOS技术,含振荡器、防混淆滤波器、平滑滤波器、音频放大器、自动静噪与高密度多电平闪烁存贮列。芯片设计是基于所有操作必须由微控制器控制,操作命令可通过串行通信接口(SPI或Microwire)送入。芯片采用多电平直接模拟量存储技术, 每个采样值直接存贮在片闪烁存贮器中,因此能够非常真实、自然地再现语音、音乐、音调和效果声,避免了一般固体录音电路因量化和压缩造成的量化噪声
14、和金属声。采样频率可为 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 液晶显示电路在本次按键模块的设计中,
15、我选择了拥有8个按键的矩阵式键盘模块。矩阵式键盘的工作过程可分为两步:第一步是CPU首先检测键盘上是否有按键按下;第二步是识别哪一个键按下。1) 检测键盘上是否有按键按下的处理方法是:将列线送入全扫描字,读入行线的状态来辨别。其过程如下:PA口输出00H,即所有列线置成低电平,然后将行线的电平状态读入累加器A中。如果有按键按下,总会有一根行线的电平被拉至低电平,从而使行输入状态不全为“1”。2) 识别键盘中哪一个键按下的处理方法是:将列线逐列置成低电平,检查行输入状态,称为逐列扫描。其具体过程如下:从PA0开始,依次输出“0”,置对应的列线为低电平,然后从PC口读入行线状态,如果全为“1”,则
16、按下的键不在此列;如果不全为“1”,则按下的键必在此列,而且是该列与“0”电平行线相交的交点上的那个键。为求取编码,在逐列扫描时,可用计数器记录下当前扫描列的列号,检测到第几行有键按下,就用该行的首键码加列号得到当前按键的编码。2.2 软硬件功能分配2.2.1 软件功能分配 在整一个系统设计中,软件主要负责程序的编写,实现语音模块ISD4004的多段语音录放,以与LCD1602的液晶显示,最后将各个独立的程序进行整合实现最终的公交车语音报站系统的设计。下面主要介绍一下语音模块ISD4004,以与LCD1602在程序编写时所采用的原理。ISD4004 采用多电平直接模拟量存储技术,每个采样值直接
17、存储在片闪烁存储器中,因此能够非常真实的再现语音,音乐等效果。ISD4004工作于SPI串行接口。SPI协议是一个同步串行数据传输协议。协议要求数据在时钟上升沿移入,在下降沿移出。即在时钟上升沿锁存MOSI引脚数据,写入命令字;在下降沿将数据送至MISO引脚,读取状态字。MCS-51单片机的串行口方式0与其要求一致的。ISD4004端口的状态字和命令字如图2.4所示。命令字的高5为为操作码,低11位为操作地址。状态字的最高2位分别是溢出标志OVF和信息段末尾标志EOM,紧跟其后的是行地址计数器的值。ISD4004总共10条命令。当单片机作为主芯片控制ISD4004时,我们只需要在主程序中完成一
18、些初始化的工作以与录放结束工作,如ISD上电,掉电等。另外通过循环扫描键盘,来检查启动键是否按下,根据录放开关状态跳转到相应的子程序7。图 2.4 SPI端口的命令字和状态字LCD1602字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式的显示模块。1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)。表2.1是1602液晶模块部的控制器共有11条控制指令。表 2.1 1602液晶模块部的控制器共用11条控制指令指令1:清显示,指令码01H,光标复位到地址00H位置。指令2:光标复位,光标返回到地址00H。指令3:光标和显示模式设置
19、I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。指令7:字符发生器RAM地址设置。指令8:D
20、DRAM地址设置。指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。指令10:写数据。指令11:读数据。LCD1602液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图2.5是1602的部显示地址。图 2.5LCD1602部显示地址2.2.2 硬件功能分配硬件需要实现的主要功能是将AT89C51最小系统,LCD1602液晶显示模块,ISD4004语音芯片模块以与按键模块,按照程序正确的连接,观察现象,看是否能
21、够实现所需要的功能。由于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相连,用来控制数据输入。模块的接口
22、定义如下(顶视)图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.
23、0口连接,用以控制整个系统设计中LCD液晶显示以与语音播放。在此就不做详细介绍。2.3 功能描述本次设计的课题是基于单片机的公交车语音报站系统,因此主要功能是完成公交车语音报站。采用AT89C51单片机作为主控芯片,对ISD4004数码语音芯片与LCD1602进行控制,实现语音报站,同时显示站名。键盘采用通用按键开关,简单易行且控制方便。在本次软件设计中,主要设计了4站,通过三个按键进行控制。具体如下:k1键起始键现象:ISD4004播报“欢迎乘坐”,同时LCD1602上显示“Huan Ying Cheng Zuo”。k2键上一站,k3键下一站,现象:num=1,ISD4004播报“欢迎乘坐3
24、63路公交车”,同时LCD1602上显示“Huan Ying Cheng Zuo ”。num=2,ISD4004播报“理工到了,请从后门下车,下车请当心;车辆起步,请拉好扶手,前方停靠万里学院”,同时LCD1602上显示“Ningboligong Dao Le”。num=3,ISD4004播报“万里学院到了,请从后门下车,下车请当心;车辆起步,请拉好扶手,前方停靠医药学校”,同时LCD1602上显示“Wanglixueyuan Dao Le”。num=4,ISD4004播报“医药学校到了,请从后门下车,下车请当心;车辆起步,请拉好扶手,前方停靠鄞州二院”,同时LCD1602上显示“Yiyaox
25、uexiao 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年(典型值)
26、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控制模式下,键盘采用按键扫描法,当有键按下时,通过软件进行按键扫描,实现键码对应的
27、功能。因此当公交车到达某站时通过键盘来控制本系统进行工作,通过语音输出电路进行语音报站,CPU同时通过程序读取字符信息送入LCD液晶显示电路进行液晶显示8。3.2 系统原理图图3.1是系统仿真时的原理图,在整个系统软件设计中,依旧从语音,液晶显示以与按键这三大部分进行综合考虑。由于Proteus软件的限制,无法对ISD4004语音芯片进行仿真,从而在此处我选用了LED灯来代替语音芯片,当按键按下时,相对应的LED灯点亮。所以在此,我主要介绍一下液晶显示模块LCD1602以与按键显示的工作原理。在此次软件设计过程中,总共有4个按键,k1:HuanyingChengzuo,k2:上一站,k3:下一
28、站,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
29、上数据、字幕等显示。LCD1602液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符9。图 3.1 系统原理图仿真在将12864与LCD1602进行对比后,我选择了LCD1602液晶显示模,因为1602实现起来较为简单,也很实用,在两个能够达到类似功能的时候,我选择了1602,不过唯一的缺点就是1602不能显示汉字。除此之外,我将仿真中的LED换成了真正的语音模块,ISD4004语音模块,用以实现语音播放的功能。3.3 元器件选择在本次设计中,我主要选择的器件有LCD160
30、2,语音模块ISD4004,按键模块,以与AT89C51的最小系统。由于LCD1602具有显示质量高,数字式接口,功耗低等优点,其中因为拥有数字式接口,在和单片机系统的接口变得更加简单可靠,操作更加方便。因此对于LCD液晶显示模块我选择了LCD1602。ISD4004具有如下特点:首先是记录声音没有段长度限制,并且声音记录不需要A/D转换和压缩。其次,快速闪存作为存储介质,无需电源可保存数据长达100年,重复记录10000次以上。此外,ISD4004具有记录时间长(可达16分钟),音质好,适用于移动与其他便携式电子产品中的优点。同时ISD4004开发应用具有所需外围电路简单的优点。同时51最小
31、系统能够给他提供3.3V的工作电压,让它正常工作。除此之外,由于身边有同学用过这个芯片,对它比较了解,如果我遇到问题了,可以有人请教。因此对于语音模块,我选择了ISD4004。按键模块比较简单,因为我只需要3个按键而已,所以无论是三个独立的按键,还是一个按键模块,只要能实现我要的功能都可以。在本次设计中,我选择了一个按键模块。AT89C51单片机最小系统是上课上过的容对此比较熟悉,同时本次设计也是针对单片机的公交车语音报站系统的设计,而且实验室有现成的资源可以利用,所以毫无疑问,主控系统就选择了AT89C51最小系统。3.4 各模块介绍本次设计主要由AT89C51最小系统,ISD4004语音模
32、块,LCD1602液晶显示模块以与按键模块这四模块组成。单片机又称单片微控制器,是在一块芯片中集成了CPU(中央处理器)、RAM(数据存储器)、ROM(程序存储器)、定时器/计数器和多种功能的I/O(输入/输出)接口等一台计算机所需要的基本功能部件,从而可以完成复杂的运算、逻辑控制、通信等功能。对51 系列单片机来说,最小系统一般应该包括:单片机、时钟电路、复位电路、输入/输出设备等(见图3.2)。在本次设计中,AT89C51作为系统的CPU来对语音模块,液晶显示模块,按键模块进行总体的控制。单片机复位电路时钟电路电源输入/输出设备图 3.2 AT89C51最小系统框图ISD4004引脚排列如
33、图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存储器,可擦写1
34、0万次。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可驱动的
35、0.5W的喇叭。3) 自动静噪端AMCAP通过1uF电容接地,XCLK接地,使用部时钟。4) 拨动开关k1为录音状态,k2为放音状态。录音时按下k4,可将录音地址后移100,存放另一段录音片段。LCD1602液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。其实用LCD显示一个字符时比较复杂,因为一个字符由68或88点阵组成,既要找到和显示屏幕上某几个位置对应的显示RAM区的8字节,还要使每字节的不同位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮。这样一来就组成某个字符。但由于带字符发生器的控制器来说,显示字符就比较简单了,可以让
36、控制器工作在文本方式,根据在LCD上开始显示的行列号与每行的列数找出显示RAM对应的地址,设立光标,在此送上该字符对应的代码即可。在本次设计中,LCD1602液晶显示模块的rs,rw,e分别与51单片机的P35,P36,P37端口连接,进行程序的读写数据,字符操作。而D0D7分别与51单片机的P0口进行连接,用来输出数据与字符,这样就可以在液晶上显示出自己想要的字符10。键盘是若干按键的集合,是向系统提供操作人员干预命令与数据的接口设备。键盘可分为编码键盘和非编码键盘两种类型。前者能自动识别按下的键并产生相应代码,以并行或串行方式发送给CPU。它使用方便,接口简单,响应速度快,但需要专用的硬件
37、电路。后者则通过软件来确定按键并计算键值。这种方法虽然没有编码键盘速度快,但它不需要专用的硬件支持。键盘,作为向系统提供操作人员的干预命令的接口,以其特定的按键序列代表着各种确定的操作命令。所以,准确无误地辨认每个键的动作与其所处的状态,是系统能否正常工作的关键。因此在设计按键模块时,通过延时进行了按键去抖动的现象11。第4章 系统软件4.1 设计思想软件设计的主要功能是完成公交车语音报站,采用AT89C51单片机作为主控芯片,对ISD4004数码语音芯片与LCD1602进行控制,实现语音报站,同时显示站名。键盘采用通用按键开关,简单易行且控制方便。在本次软件设计中,主要设计了4站,通过三个按
38、键进行控制。具体如下: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上显
39、示“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站进行了
40、单边线路的设计。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键,
41、开始播放之前所录的声音。按下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 按键部分按键部分采用扫描法,
42、当检测到按键按下时,进行键值判断,并进行相应的显示程序以与语音播放程序的跳转,实现公交车语音报站功能。图4.5是本次设计的按键程序流程图。图 4.5 按键程序流程图4.3 仿真过程、结果分析本次单片机软件仿真系统我选择了Proteus。在整个系统软件设计中,依旧从语音,液晶显示以与按键这三大部分进行综合考虑。由于Proteus软件的限制,无法对ISD4004语音芯片进行仿真,从而在此处我选用了LED灯来代替语音芯片,当按键按下时,相对应的LED灯点亮。在仿真时,由于语音模块不能进行仿真,为了增加点难度,在液晶显示模块方面我选择了可以显示汉字的1602模块。下面主要介绍一下1602的工作原理12
43、。LCD1602液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。其实用LCD显示一个字符时比较复杂,因为一个字符由68或88点阵组成,既要找到和显示屏幕上某几个位置对应的显示RAM区的8字节,还要使每字节的不同位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮。这样一来就组成某个字符。但由于带字符发生器的控制器来说,显示字符就比较简单了,可以让控制器工作在文本方式,根据在LCD上开始显示的行列号与每行的列数找出显示RAM对应的地址,设立光标,在此送上该字符对应的代码即可。在本次设计中,LCD1602液晶显示模块的rs,rw,e分别与
44、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”,此时L
45、ED4亮,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亮
46、。图 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 硬件调试在整一个硬件调试过程中,我主要分为三部分进行调试,第一部分是按键
47、调试。,第二部分是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录放音的调试。在这次设计中,如何正确