基于51单片机的公交车语音报站器的设计与制作.docx

上传人:b****9 文档编号:25592174 上传时间:2023-06-10 格式:DOCX 页数:38 大小:1.95MB
下载 相关 举报
基于51单片机的公交车语音报站器的设计与制作.docx_第1页
第1页 / 共38页
基于51单片机的公交车语音报站器的设计与制作.docx_第2页
第2页 / 共38页
基于51单片机的公交车语音报站器的设计与制作.docx_第3页
第3页 / 共38页
基于51单片机的公交车语音报站器的设计与制作.docx_第4页
第4页 / 共38页
基于51单片机的公交车语音报站器的设计与制作.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

基于51单片机的公交车语音报站器的设计与制作.docx

《基于51单片机的公交车语音报站器的设计与制作.docx》由会员分享,可在线阅读,更多相关《基于51单片机的公交车语音报站器的设计与制作.docx(38页珍藏版)》请在冰豆网上搜索。

基于51单片机的公交车语音报站器的设计与制作.docx

基于51单片机的公交车语音报站器的设计与制作

基于51单片机的公交车语音报站器

的设计与制作

摘要…………………………………………………………………………………………1

英文摘要……………………………………………………………………………………1

引言………………………………………………………………………………………2

1设计要求………………………………………………………………………………3

2硬件设计………………………………………………………………………………3

硬件原理及框图…………………………………………………………………3

系统供电电源模块设计…………………………………………………………3

单片机在线编程模块设计………………………………………………………4

单片机最小系统设计……………………………………………………………5

语音模块的设计………………………………………………………………6

显示电路的设计………………………………………………………………7

3软件设计………………………………………………………………………………8

主程序设计………………………………………………………………………9

显示子程序设计…………………………………………………………………10

键盘扫描子程序设计……………………………………………………………10

上行线按键处理子程序设计……………………………………………………11

下行线按键处理子程序设计……………………………………………………12

一线发码子程序设计……………………………………………………………12

4软件抗干扰技术………………………………………………………………………14

5调试……………………………………………………………………………………14

结论与谢辞…………………………………………………………………………………16

参考文献…………………………………………………………………………………17

附件1.系统原理图和PCB图……………………………………………………………18

附件2.程序清单……………………………………………………………………………19

附件3.仿真图………………………………………………………………………………26

附件4.实物图………………………………………………………………………………30

附件5.元器件清单…………………………………………………………………………31

 

基于51单片机的公交车语音报站器的设计与制作

摘要:

从公交车语音报站器的设计要求出发,本系统采用STC89C51单片机作为核心控制器,主要由单片机在线编程模块、WT588D语音模块、LED显示器、键盘等组成。

通过语音模块的编程软件设置其每个地址的语音,再通过手动键盘触发语音播放地址,驱动语音播放。

设置站台号,到站站台号通过LED显示器显示出来。

上电后,默认为上行线,运行到线路终点自动切换到下行线,下行线运行到终点也会自动切换到上行线。

关键词:

单片机公交车报站器语音

Basedonthe51mcubussoundstationdevicedesignandproduction

(MajorofAppliedElectronicTechnology,InformationandEngineeringcollege,JinHuaCollegeofVocationAndTechnology,YUWen-jun)

Abstract:

FromthebusVoicestationdesigndevicerequirement,thesystemusesSTC89C51MCUasthecorecontroller,plusasinglechiponlineprogrammingmodule,WT588Dvoicemodule,LEDdisplay,thevoicemoduleprogrammingsoftwaretosetthevoiceofeachaddressandthenmanuallytriggerthekeyboardvoicebroadcastaddress,driveraudioplayback.Settheplatformnumber,departureandarrivalstationnumberdisplayedviaLEDdisplay.Power,thedefaultisascendingline,runtothefinishlinetoautomaticallyswitchtothedownline,rundowntothefinishlinewillautomaticallyswitchtotheuplink.

Keyword:

Single-chipBusStopsdeviceVoice

 

引言

随着社会的快速发展,目前,在一些大城市里,公交车上已经开始逐渐使用GPS报站系统,但是手动的公交车语音报站器仍然占有一定的市场份额,原因在于手动语音报站器价格低廉,同时也具备GPS报站器的报站功能。

尤其是在中小型城市,公交车上应用手动语音报站器是最实惠也是最实际的。

但是随着公交线路不断地调整,而现有的手动语音报站器不能满足公交路线的要求,如不能方便地更改报站器的语音内容、不能存放多个站名等。

所以,一款不仅能在公交车上实现语音报站,更重要的是能根据配合配套的电脑使用软件,随意更换报站器语音内容,并能满足公交车的路线要求的新型手动公交车语音报站器显得越来越重要,也有了它自身存在的价值和意义。

本课题设计的语音报站系统在上电时默认为上行线行驶,上行线行驶到终点能自动切换到下行线,下行线运行到终点能自动切换到上行线。

能实现公交车进站、出站时语音报站提示功能、播报公交车上的5条服务标语、实现播报越站时的退后播报、停止当前语音播报、两位数码管显示站数、根据配合配套的电脑软件,随意更换报站器语音内容,一条路线上/下行总共可加载40个不同的站名,满足公交车的路线要求。

这套语音报站器系统以STC89C51RC单片机为核心,一线控制WT588D-28P语音模块,并增添其他外围设备,单片机在线编程模块、WT588D语音模块、LED显示器、键盘、喇叭等。

这虽然是一个简单的演示模型,但结构简单,使用灵活,功能稳定,音质自然、清晰,为满足公交车路线要求,公交车装备现代化,提高服务档次起到核心的作用。

为此进行设计,以期能够为后续研究提供参考。

 

1设计要求

设计一款基于51单片机的公交车语音报站器,报站器能实现公交车进站、出站时语音报站提示功能;并能播报公交车上的5条服务标语;具有在播报越站时退后播报;停止当前语音播报的功能;两位数码管显示站数。

配合配套电脑使用软件,随意更换报站器语音内容,一条路线上/下行总共可加载40个站名,能满足公交车的路线要求。

2硬件设计

硬件原理及框图

用单片机STC89C51RC一线串口控制WT588D-28P语音模块的P03口来实现语音报站的功能。

电源部分选取+5V直流稳压电源,给系统上电后,通过单片机在线编程模块将程序代码下载到单片机中;再通过按键发送需要的命令或语音码和控制两个共阴数码管显示当前的公交车行驶站数;音频输出部分采用PWM输出方式,直接驱动8Ω的扬声器。

单片机发送命令或语音码成功后,可以通过BUSY输出部分(发光二极管是否点亮)来判断语音是否处于播放忙的状态。

要设计的公交车语音报站器硬件框图如图2-1所示。

图2-1语音报站系统硬件框图

单片机最小系统包括电源电路、时钟电路、复位电路三部分,缺一不可。

系统供电电源模块

本系统电源选用+5V直流稳压电源,接入电源后,用开关控制其输入与断开,并用发光二极管指示,由于电源输入可能会对电路产生干扰,所以用电容来滤波,起到抗干扰的作用。

系统中每个模块都配置一个抗干扰的电容,在PCB板的布置中,要将其布置在每个模块的电源输入附近。

本系统供电电源模块电路如图2-2所示:

其中J4为直流电压+5V的插座,J5为开关,C9、C10、C11起到滤波抗干扰的作用。

图2-2系统供电电源模块电路

单片机在线编程模块

本系统采用的STC89C51RC单片机,具有在系统可编程(ISP)特性,单片机可以在工作的系统上下载/烧录程序,而不用将单片机从工作的系统上拆下来再用通用编程器将程序代码烧录进单片机内部。

STC89C51RC单片机内部固化有ISP系统引导程序,并设置为将单片机内部彻底断电(即冷启动)才运行ISP程序,这时,配合软件就可将程序代码下载到单片机内。

也就是说,在下载时,要先选择下载按钮,然后再给单片机上电复位(即彻底断电),而不能先上电,这样会导致下载程序代码失败。

STC89C51RC内部有EEPROM(电可擦写可编程存储器),可以清除存储数据和再编程,所以可以多次下载程序代码进行调试。

因此本系统可以做一个在线编程电路,串口选用9针的RS232串口(公头),且2脚设置为接收管脚、3脚为发送管脚;STC、RS232转换器选用MAX232芯片,MAX232芯片是单片机和其他设备的一种通讯设施,也是专为RS232标准串口设计的接口芯片。

因为电脑上RS232(公头)也是2号管脚为接收,3号管脚为发送,跟我制作的系统电路板上的RS232(公头)定义一样,所以在硬件连接方面的连接线要制作成两头均为RS232(母头)的连接线,且连接线内部做2号管脚与3号管脚的连接,再将5号管脚与5号管脚连接起来即可。

STC89C51RC单片机在线编程系统电路如图2-3所示。

其中P30网络名称对应的是单片机上RXD引脚,P31网络名称对应的是单片机上TXD引脚。

图2-3单片机在线可编程模块电路

单片机最小系统

本系统采用的STC89C51RC单片机构成的最小系统简单、可靠。

用STC89C51RC单片机构成最小应用系统时,只要将单片机接上电源电路、时钟电路和复位电路即可。

STC89C51RC单片机主要电源电压操作范围为~,所以本设计采用5V。

STC89C51虽然有内部振荡电路,但要形成时钟,必须外部附加电路。

STC89C51RC单片机的时钟产生方法有两种。

内部时钟方式和外部时钟方式。

本设计采用最常用的内部时钟方式,利用芯片内部的振荡电路,在XTAL1、XTAL2引脚上外接定时元件,内部的振荡电路便产生自激振荡,即用外接晶体和电容组成的并联谐振回路。

振荡晶体可在到12MHZ之间选择。

电容值无严格要求,但电容取值对振荡频率输出的稳定性、大小、振荡电路起振速度有少许影响,一般可在20pF到100pF之间取值。

所以本设计中,振荡晶体选择12MHZ,电容选择30pF。

在设计印刷电路板时,晶体和电容应尽可能靠近单片机芯片安装,以减少寄生电容,更好的保证振荡器稳定和可靠地工作。

STC89C51RC单片机通常采用上电复位和按钮复位两种方式。

上电复位是利用电容充电来实现的,即上电瞬间RST端的点位与Vcc相同,随着充电电流的减少,RST端的电位逐渐下降。

只要Vcc的上升时间不超过1ms,振荡器建立时间不超过10ms,当RST端保持至少两个及其周期为高电平时,就能完成复位操作。

但是,为了在程序运行时也能可靠地使单片机复位,所以通常还要设置按键复位的功能,在程序运行时,通过复位按键强制单片机进入复位状态。

所以,在本系统中,采用上电复位与按键复位的复合电路。

但是由于本系统选用的WT588D-28P语音模块的复位要求是低电平复位,所以在单片机复位端接一个三极管起开关的作用,再连接到语音模块的复位端。

综上所述:

STC89C51单片机最小系统如图2-4所示。

其中RES网络名称对应的是语音模块WT588D-28P的复位脚。

图2-4STC89C51单片机最小系统

语音模块

WT588D语音芯片是一款功能强大的可重复擦除烧写的语音单片机芯片,有MP3控制模式、按键控制模式、一线串口控制模式等多种控制模式,通过使用电脑配套软件WT588DVoiceChip可完成语音的组合播放,支持插入静音,使音质更加完美。

插入的静音不占用存储器内存。

内部有220个可控语音地址位和音量调节、循环播放、停止语音播放的命令码。

每个可控地址位内可通过软件自由组合语音,而且其配套的软件操作简单,支持MP3、WAV、WMA的语音模式。

WT588D模块内置语音芯片和SPI-FLASH存储器。

本系统采用的WT588D-28P语音模块内部采用WT588D-32L语音芯片作为核心控制器,包含WT588D-32L外围所需的SPI-FLASH、震荡电路和复位电路。

外部只要供给电源、控制端、复位信号、扬声器就能正常工作。

本系统采用的语音控制模式为一线控制模式,通过单片机与语音芯片的数据引脚将语音地址位或者命令码发送给语音模块,从而触发语音播放。

将WT588D-28P语音模块的P03脚作为数据通信管脚,由STC89C51RC的脚发送语音码或命令码数据。

BUSY输出管脚接发光二极管做放音状态指示。

由于本系统采用的供电电源为DC5V,所以要在WT588D-28P语音模块的VDD端串接两个二极管来提供WT588D-28P语音模块的VCC端的工作电压。

由于WT588D-28P语音模块的PWM音频输出方式能直接驱动8Ω/的喇叭,因此音频输出方式选用PWM输出方式。

综上所述:

WT588D-28P语音模块电路及其与单片机的连接如图2-5所示。

其中RES网络名称对应的是STC89C51RC给语音模块的复位信号,在单片机最小系统中有提到。

data网络名称对应的是STC89C51RC的管脚,用于一线控制WT588D-28P语音模块。

图2-5语音模块电路

显示电路

LED数码管是设备的简易显示常用电子元器件,它能在低电压、小电流条件下驱动发光,高频特性好、单色性好、亮度高,体积小、重量轻、抗冲击性能好,寿命长、成本低,因此LED数码管被广泛应用于数字仪器仪表等数显器件中。

本系统选用两个常见的一位的0.6英寸8段共阴数码管作为动态显示模块,发光颜色为超高亮红色,在段和小数点上要加限流电阻,在动态显示时平均电流为4~5mA,峰值电流为100mA。

在公共端分别接NPN型三极管再接到单片机的I/O口,做开关使用,起到选择位线的作用。

同时,在基极和I/O口接1K的电阻,起到保护I/O口的作用,但是又由于接了这个1K的电阻使基极电流变小,从而导致三极管不能饱和导通,所以要在三极管基极上接一个上拉电阻,使电流增大,让三极管能完全饱和导通。

由于显示模块接在P0口,而单片机P0口内部没有上拉电阻,所以要在外部接上拉电阻,使流过数码管的电流能驱动其正常发光。

选择用510Ω的排阻,那么流过数码管每一段的电流大约为5/510≈10mA,这个电流足以点亮数码管,使其正常发光。

综上所述:

本系统显示模块与单片机的连接电路如图2-6所示。

图2-6显示电路

3软件设计

在进行微机控制系统设计时,除了系统硬件设计外,大量的工作就是如何根据每个生产对象的实际需要设计应用程序。

因此,软件设计在微机控制系统设计中占重要地位。

对于本系统,软件更为重要。

在单片机控制系统中,大体上可分为数据处理、过程控制两个基本类型。

为了完成上述任务,在进行软件设计时,通常把整个过程分成若干个部分,每一部分叫做一个模块。

所谓“模块”,实质上就是所完成一定功能,相对独立的程序段,这种程序设计方法叫模块程序设计法。

在本系统中,软件设计也采取模块程序设计法。

但是由于本系统采用的WT588D模块有相应的电脑配套软件,所以先用其配套软件将其设置为一线控制模式,每个地址内的语音组合好,利用可以插入静音的优点在需要停顿的地方插入静音,然后利用其下载电路板下载到语音模块,下载好后将语音模块插入本系统的语音模块插座中,如果要修改里面的语音,只需拿下来重新下载即可,比较方便。

此配套软件界面使用相当人性化,操作简单。

主程序设计

在本系统设计过程中,当电路上电时,默认为上行线行驶,当上行线行驶到终点时自动切换到下行线,当下行线行驶到终点时自动切换到上行线。

一条线路上有40个不同的站名。

我采用模块程序设计法,程序包含多个子程序模块,主要包括:

显示子程序、按键扫描子程序、上行线按键处理子程序、下行线按键处理子程序、一线发码子程序。

主程序直接调用这些子程序,结构清晰明了,又方便调试和修改程序。

设置是否有键按下的标志F0,F0为1,有键按下;F0为0,则无键按下。

软件编程具体的流程图如图3-1所示。

图3-1主程序流程图

显示子程序设计

把要显示的站数存放在单片机的60H地址中,通过按键改变这个地址中的数值。

由于本系统单向公交线上一共有40个站,所以在这个地址内的数值不能超过40,通过动态显示将公交车到达站数显示出来。

显示子程序设计的设计流程图如图3-2所示。

图3-2显示子程序流程图

键盘扫描子程序设计

在本系统中,设置了八个按键,其中与STC89C51RC单片机~为相连的按键是服务语触发按键;与相连的按键为起步/到站按键,按一次,播放起步语音,再按一次,播放到站语音,通过这个按键,也来控制要显示的值;与相连的按键为停止语音播放按键;与相连的按键为公交车播报越站时,后退播报的按键。

键盘子程序的设计流程图如图3-3所示。

图3-3键盘扫描子程序流程图

上行线按键处理子程序设计

要使语音模块地址中的语音触发,就要通过单片机引脚发送这个地址。

将要触发语音模块的地址数据存放在单片机的77H中。

55H存放语音模块中起步/到站语的地址数据,54H存放语音模块中服务语的地址或者停止命令数据,最后只需将55H或者54H中的数据发送给77H即可。

在按键处理子程序中,因为是有键按下的时间才调用这个按键处理程序的,所以如果当P2口的8个按键中有7个按键没有按下的话,那么剩下的那个按键肯定被按下了。

上行线按键处理子程序的设计流程图如图3-4所示。

图3-4上行线按键处理子程序的设计流程图

下行线按键处理子程序设计

如果P2口的8个按键中有7个按键没有按下的话,那么剩下的那个按键肯定被按下了,因为下行线按键处理是在有键按下的情况下才执行的。

下行线按键处理子程序的设计流程图如图3-5所示。

图3-5下行线按键处理子程序的设计流程图

一线发码子程序设计

在本系统中采用WT588B-28P语音模块,并采用其一线控制模式。

在这种模式下,要触发语音模块中的地址,或者触发语音模块中的命令码,就是通过单片机向语音模块P03口发送地址或命令码的数据实现的。

但是要根据WT588B-28P语音模块的数据通信线控制时序图来实现,依照单片机脚电平占空比不同来代表不同的数据位。

要发送的数据存放在单片机77H中。

根据语音模块在受一线控制下的控制时序图,在发送数据时,应先将数据信号线单片机脚拉低5ms,再发送数据,发送的数据位是从低位开始发送的,也就是说,通过单片机脚要发送的数据,是由低位开始发送的,一位一位发送。

如果要发送的数据位为0,则要使数据信号线(即单片机脚)上高电平与低电平数据占空比为1:

3,如果要发送的数据位为1,则要使数据信号线(即单片机脚)高电平与低电平数据占空比为3:

1。

发送的数据00H~DBH为地址指令,触发在语音模块中这些地址内的语音;E0H~E7H为音量调节命令,F2H为循环命令,FEH为停止命令。

在本系统中,用到的命令就只有停止命令。

一线发码子程序流程图如图3-6所示。

图3-6一线发码子程序流程图

4软件抗干扰技术

在单片机控制系统中,正确的采用软件抗干扰技术,与硬件干扰措施构成双层抗干扰防线,肯定能大大提高控制系统的可靠性。

经常采用的软件抗干扰技术是数字滤波技术、开关量的软件抗干扰技术、指令冗余技术、软件陷阱技术等。

分析干扰的来源,再根据系统设计有效的抗干扰方法。

因此,本系统软件中用到了开关量的软件抗干扰技术。

开关信号存在抖动干扰的问题,在单片机设计中常用软件的方法消除抖动。

在本系统设计中,由于键盘是由机械触点构成的,所以在机械触点断开、闭合时,会有抖动,这种抖动对人来说是感觉不到的,但对单片机来说,是完全可以感应到的,因为单片机处理的速度是在微秒级,而机械抖动的时间至少是毫秒级,这对单片机而言,时间算是很长了。

所以要判断一个按键是否真正按下就需要把这些干扰去掉。

按键与单片机的I/O口相连,当检测到I/O口为低的信号时,不是立即认为按键按下,而是延时20ms的时间后再检测I/O口的信号,如果仍为低电平,那就可以认定按键真的按下了,这实际上就是消除了按键按下时的抖动,对按键是否释放就可以采取查询的方法,直到检测到位高电平为止就说明按键释放了。

一般情况下,不用对按键释放的后沿进行处理,也能满足要求。

5调试

在完成硬件的基础上,我开始根据要实现的功能来设计软件流程图,软件程序编好后,我用KEILC51软件编译,选择Intel8052,编译好后,再用Protues软件进行仿真。

在仿真的过程中,在原理图设计时用了两个一位的共阴数码管,且在公共端接了8050三极管后再接到单片机的I/O口的,但在Protues仿真软件中就直接选用两位一体的共阴数码管,然后将位线直接接到单片机的I/O口。

由于本系统用到的WT588D-28P模块在Protues软件中是没有的,但是我是用一线控制方式的,发送数据给语音模块是通过单片机的口来发送的,而且是从低位开始发送的,所以我就可以用示波器观看单片机的口的波形,波形就能体现单片机发送的数据,且低位在前,高位在后。

当我按键按下的时候出现波形,根据这个波形看是否是我要发送的数据。

在Protues仿真软件中画好图后,我将通过KEILC51软件编译好的十六进制文件装到Protues仿真软件中的单片机中,实现了系统上电后就执行上行线,当上行线运行到终点自动切换到下行线,下行线运行到终点也自动切换到上行线。

触发的每个语音地址数据或者停止命令,也通过波形显示出来了。

显示刚开始就是动态显示不稳定,出现抖动的状态,我在改短了显示延时的时间后,显示稳定。

由于我是根据起步/到站按键K7来控制的55H单元来判断显示是否要加一的,而且K7按一次播放起步语音,再次按动播放到站语音,所以我要在播放到站语音的时候显示加一,也就是K7按第二次的时候显示才加一,当显示到达40后,下一次就又从1开始显示,实现了这个功能。

按下服务语按键,也能触发对应的语音地址。

按下退后播报键,能退后播报,并显示正确的站数。

所以,本系统的设计要求在Protues仿真软件中都实现了。

但是在Protues仿真中,数码管公共极没有接起开关作用的三极管,所以我将显示程序中送显示时位线的电平反了一下。

在实物调试中,直流稳压电源采用+5V,数字万用表主要用来测分立元件的电阻、压降等参数。

然后我将程序下载到单片机中,在实物中开始调试,发现语音这一块已经可以实现了,但是在实物中发现数码管不能点亮,但是语音模块能正常工作。

经过分析,我猜想可能是上拉电阻阻值太大了,驱动不了数码管显示,因为在原理图设计时我并没有计算多大的上拉电阻阻值能使数码管发光,通过计算,发现上拉电阻太大,而且又在经过10K的上拉电阻后在数码管每一段上加了300Ω的限流电阻,通过数码管每一段的电流只有,完全不能驱动数码管发光。

于是我将将上拉电阻换成510Ω,然后又把限流电阻拆掉并在板子上将接限流电阻的地方短接,这样,通过数码管每一段的电流就达到了10mA,完全能驱动数码管发光。

可是换了之后,却又发现

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 建筑土木

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1