基于单片机的公交车语音报站系统的设计.docx
《基于单片机的公交车语音报站系统的设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的公交车语音报站系统的设计.docx(42页珍藏版)》请在冰点文库上搜索。
![基于单片机的公交车语音报站系统的设计.docx](https://file1.bingdoc.com/fileroot1/2023-6/14/f0d6b03f-67ac-4d55-819c-ab561b5e42a2/f0d6b03f-67ac-4d55-819c-ab561b5e42a21.gif)
基于单片机的公交车语音报站系统的设计
基于单片机的公交车语音
报站系统的设计
DesignofVoice-BasedBusStopAnnouncement
SystemBasedonSCM
基于单片机的公交车报站系统的设计
摘要:
根据AT89S52单片机的特点和公交车报站特点,本文提出一种用单片机控制语音芯片进行公交车语音手动报站的方法。
同时给出软硬件设计的方法,设计过程中包括硬件电路设计和软件程序编写两个方面,解释单片机在应用过程中的方法和可能出现的问题。
本文主要介绍硬件电路设计部分。
利用AT89S52作为CPU进行总体控制,通过ISD4004语音芯片建立语音信息库,对语音信息进行自由组合,形成变化多样的语音信息,同时运用LCD液晶显示屏进行站数显示。
当公交车到达某站点,用按键控制本系统工作,通过语音电路输出语音信息和提示。
关键字:
AT89S52单片机;ISD4004语音芯片;LCD液晶显示屏
DesignofVoice-basedBusStopAnnouncementSystem
BasedonSCM
Abstract:
AccordingtothefeatureofSCMAT89S52andthecharacteristicsofbusauto-reporter-calling,thearticleputsthemethodofusingSigel-chipmicrocomputertocontrolspeechchipauto-reporter-calling.Themethodofrealizationofhardwarehasalsobeengiven,thewholeprocessincludedhardwarecircuitdesigningandsoftwareprogramdesigning,descriptionthemethodofusingSigel-chipmicrocomputerandproblemthatmaymeetduringtheapplicationofmicrocomputer.Thearticleintroduceshardwarecircuitdesigningmostly.carriesontheoverallcontrolbytheAT89S52monolithicintegratedcircuitasCPU,itcanestablishthevariatevoiceinformationdatabasewiththevoicechipISD4004,andmaycarryonthefreecombinationofthesesectionsofvoiceinformation,atthesametimeusestheLCDtocarryonthestopsfigure.
Keywords:
SCMAT89S52;ISD4004speechchip;LCD
引言
随着科学技术的日益发展和进步,无人售票公交车在街头多起来,手动语音报站器也被广泛使用,这在相当大的程度上免除乘务员沿途报站的麻烦,给许多不熟悉公交线路的乘客带来方便。
当今社会环境污染问题越来越严重,每年的4月22日为世界地球日,每年的6月5日为世界环境日,可见人类对环境污染问题越来越重视。
在城市中机动车的尾气成污染环境的主要污染源,很多国家提倡人们乘坐公共汽车出行以减少污染,有的国家甚至设定某一天为禁止机动车日来告诫人们环境污染的严重性。
由此看来,未来公共汽车将充当现代城市生活中的一个重要角色,而且无人售票的公共汽车成为一个趋势。
公共汽车成为城市人们出行的必备选择后所面临的问题是乘客们如何能够在正确的车站下车,如何知道这辆车开向哪里,途中还会经过哪些车站。
在一些需要提示乘客注意的情况,比如车在转弯需要注意,或者需要让座等等,这时该怎么办?
解决的办法就是利用公交车报站器播放语音,提示乘客。
在当今社会,即使在私家车越来越多的今天,公交车仍然是人们出行的首选,因为公交车具有方便、快捷、车票便宜等优点。
传统的公交车报站主要由售票员报站,但是有些售票员有着浓重的地方口音,给外地人乘坐公交车造成困难,另外,随着无人售票车逐渐增多,公交车报站器就越显得重要。
本毕业设计方案采用Atmel公司的AT89S52单片机,ISD4004语音芯片与LCD1602液晶显示屏制作一个简易的公交车手动报站器。
(1)课题研究的背景及意义
公交汽车为外出的人们提供方便快捷的服务,而公共汽车的报站直接影响服务的质量。
传统由乘务人员人工报站,该方式因其效果太差和工作强度太大,在很多大城市已经被淘汰。
近年来。
随着科学技术的日益发展和进步,微型计算机技术已经在很多领域得到广泛的应用。
在声学领域,微机技术与各种语音芯片相结合,即可以完成语音的合成技术,使得汽车报站器的实现成为可能,从而为市民提供更加人性化的服务。
鉴于传统公交车人工报站不足之处,结合公交车辆的使用特点及实际运营环境,设计一种由单片机控制的公交车手动报站系统。
公交车手动报站器的设计主要为弥补传统人工报站必须有司机或乘务员口头报站的落后方式,进站,出站手动播报站名及服务用语,为市民提供更人性化,更完善的服务。
城市公共交通是市民出行的主要交通工具之一。
提供舒适,安全,便捷的乘车环境,对于公交企业来说,不仅是应尽的责任,亦是追求的目标。
本设计的目的在于通过本次设计能将所学到的单片机理论知识应用于生产实践中,增强自己的社会实践能力,为将来在社会更好的立足做准备,同时在实践中学习更多的理论知识,继续深造。
(2)报站器的动态发展趋势
公共汽车行驶在现代文明程度高的市区,它是一道流动的风景线,因而对整车外形乃至色彩都有更高的要求。
作为公交汽车还要有醒目和减少乘务人员强度的电子报站器,电子显示路牌,无人售票装置,前后电视监视系统等新技术的采用也将越来越普及。
公交车报站系统在公交事业占有举足轻重的地位,它直接影响到公交车的服务质量,目前公交车报站有三种方式,一种是利用GPS(GlobalPositioningSystem)全球卫星定位系统的公交车报站系统,另外两种是手动电子报站和人工报站的方式。
近年来,GPS全球定位系统在各种行业,特别是车辆监控与定位系统的应用中蓬勃发展。
随着经济的持续发展,对公交运输也提出更高的要求,目前国内的中小型城市的各个公交公司也都是在每辆公交车上只配备一个司机。
在司机座位后面隔板上,安装一台15英寸的液晶电视和GPS信号接收器,安装这套设备后,公交车在语音报站的同时,通过液晶电视还可以显示到站站名的字幕,这样如果没有听清报站的话,通过显示屏,乘客也可以一目然,当出现紧急情况时,调度中心将会给公交车发出相应的信息,以短信的形式传送到显示屏上,同时车载台会发出相应的提示音,驾驶员也可以通过相应的工具进行回复。
目前在美国部分城市GPS卫星定位系统已经投入使用,国内也有此类产品的研制开发,其功能强大,系统稳定,但其投资昂贵,尤其是一些小型城市无法承受。
人工报站方式在大量淘汰,手动电子报站的优势在于它的产品价格低廉,同时又具备GPS自动报站系统的功能。
尤其在中小型城市的公交车上,应用手动报站系统是最实惠也是最实际的一种方法。
第一章方案论证与选择
1.1单片机的选用
本设计选用AT89S52单片机,AT89S52单片机是一种低功耗,高性能的CMOS微处理器,片内有8K字节的存储空间,128字节RAM、4个8位并口、一个全双工串行口、2个16位定时/计数器,寻址范围64K。
并且可以在线进行重复编程、快速擦除、快速写入程序,能重复擦除/写入1000次左右,数据保存为10年。
1.2LCD液晶显示模块的选用
方案一:
选用LCD1602的液晶显示屏,它是一块价廉物美的器件,其体积小、控制简单,实用方便。
能显示2行16列的数字或英文信息,另外连接它的线路很少,只要8根数据线和3根控制线,这样给实用带来很大的方便,并且价格便宜,市场上一片只要15元。
方案二:
选用功能强大、可以显示中文文字的HS-12864液晶显示屏,其价格贵,体积大,控制比LCD1260要复杂,但是使用方便。
在控制使用上,需要8根数据线和3根控制线,但是器件的体积比较大,而且笨拙。
综上所述,在本设计中,考虑到本人对LCD1602的运用熟练程度,以及对这个系统的显示要求和性价比,选择方案一的LCD1602液晶显示屏。
1.3语音芯片的选用
方案一:
选用台湾公司生产的AP89021,AP89021是一款采用标准CMOS工艺制造的语音放音芯片,语音播放在6KHz和4位ADPCM采样下为21秒,芯片为一次性烧入的OTP语音芯片,播放方式有:
边缘/电平、保持/不保持、覆盖/不覆盖,工作电压为2.7-3.6V,静态电流为5uA,封装形式有DIP-16/SOP-16,低成本,高音质,性能优越。
方案二:
选用ISD4004系列华邦ISD公司2007年新推出语音芯片,该芯片提供多项新功能,可录、放音十万次,录音时间达到20秒,断电信息可以保持一百年,两种控制方式,两种录音输入方式,两种放音输出方式,可处理多达255段信息,有丰富多样的工作状态提示,多种采样频率对应多种录放时间,音质好,电压范围宽,应用灵活,价廉物美。
综上所述,在本设计中,由于考虑到价格承受能力,以及设计录音要求。
因此选用方案二的ISD4004比较好。
1.4功率放大器的选用
方案一:
选用美国国家半导体公司生产的音频功率放大器,主要应用于低电压消费类产品。
为使外围元件最小,电压增益内置为20。
它的静态功耗仅为24MW,使其特别适合用于电池供电的场合。
LM386的封装形式有塑料封装8引线双列直插式和贴片式。
方案二:
TDA2822是意法半导体(ST)开发的双通道单片功率放大集成电路,通常在袖珍式盒式放音机(WALKMAN)、收录机和多媒体有源音箱中作音频放大器。
具有电路简单、音质好、电压范围宽等特点,可工作于立体声以及桥式放大(BTL)的电路形式下。
综合考虑我们选用方案二的TDA2822为功率放大芯片。
1.5方案确定
综合上面方案:
本设计采用“AT89S52单片机、LCD1602液晶显示屏、ISD4004语音芯片以及TDA2822功率放大芯片”。
第二章公交车报站系统的硬件设计
2.1硬件结构方框图
公交车语音报站系统硬件结构主要包括:
LCD1602显示模块、AT89S52主控模块、ISD4004录音模块、键盘输入模块、扬声器、TDA2822功率放大模块,如图2.1所示。
AT89S52主控模块
LCD1602显示模块
ISD4004录音模块
键盘输入模块
TDA2822功率放大模块
扬声器
图2.1公交车报站系统的硬件结构图
2.2AT89S52单片机模块
AT89S52单片机最初是由Intel公司开发设计的,但后来Intel公司把51核的设计方案卖给几家大的电子设计生产商,譬如SST、Philip、Atmel等大公司。
如是市面上出现各式各样的但均以51为内核的单片机,倒是Intel公司自己的单片机却显得逊色。
这些各大电子生产商推出的单片机都兼容51指令、并在51的基础上扩展一些功能而内部结构是与51一致的。
AT89S52有40个引脚,4个8位并行I/O口,1个全双工异步串行口,同时内含5个中断源,2个优先级,2个16位定时/计数器。
89S52的存储器系统由4K的程序存储器(掩膜ROM),和128B的数据存储器(RAM)组成。
AT89S52单片机的基本组成框图,如图2.2所示。
由图2.2可见,89S52单片机主要由以下几部分组成:
(1)CPU系统
8位CPU,含布尔处理器;
时钟电路;
总线控制逻辑。
(2)存储器系统
图2.2AT89S52单片机内部结构图
4K字节的程序存储器(ROM/EPROM/Flash,可外扩至64KB);
128字节的数据存储器(RAM,可再外扩64KB);
特殊功能寄存器SFR。
(3)I/O口和其他功能单元
4个并行I/O口;
2个16位定时计数器;
1个全双工异步串行口;
中断系统(5个中断源,2个优先级)。
2.2.1AT89S52单片机主要特性
(1)一个8位的微处理器(CPU)。
(2)片内数据存储器RAM(128B),用以存放可以读/写的数据,如运算的中间结果、最终结果以及欲显示的数据等,SST89系列单片机最多提供1K的RAM。
(3)片内程序存储器ROM(4KB),用以存放程序、一些原始数据和表格。
但也有一些单片机内部不带ROM/EPROM,如8031,8032,80C31等。
目前单片机的发展趋势是将RAM和ROM都集成在单片机里面,这样既方便用户进行设计又提高系统的抗干扰性。
SST公司推出的89系列单片机分别集成16K、32K、64KFlash存储器,可供用户根据需要选用。
(4)四个8位并行I/O接口P0~P3,每个口既可以用作输入,也可以用作输出。
(5)两个定时器/计数器,每个定时器/计数器都可以设置成计数方式,用以对外部事件进行计数,也可以设置成定时方式,并可以根据计数或定时的结果实现计算机控制。
为方便设计串行通信,目前的52系列单片机都会提供3个16位定时器/计数器。
(6)五个中断源的中断控制系统。
现在新推出的单片机都不只5个中断源,例如SST89E58RD就有9个中断源。
(7)一个全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单机与微机之间的串行通信。
(8)片内振荡器和时钟产生电路,但石英晶体和微调电容需要外接。
最高允许振荡频率为12MHz。
SST89V58RD最高允许振荡频率达40MHz,因而大大的提高指令的执行速度。
2.2.2AT89S52单片机管脚图
AT89S52单片机共有40个引脚,如图2.3所示。
图2.389S52单片机管脚图
不断向外部分引脚说明:
时钟电路引脚XTAL1和XTAL2:
XTAL2(18脚):
接外部晶体和微调电容的一端;在8051片内它是振荡电路反相放大器的输出端,振荡电路的频率就是晶体固有频率。
若需采用外部时钟电路时,该引脚输入外部时钟脉冲。
要检查8051/8031的振荡电路是否正常工作,可用示波器查看XTAL2端是否有脉冲信号输出。
XTAL1(19脚):
接外部晶体和微调电容的另一端;在片内它是振荡电路反相放大器的输入端。
在采用外部时钟时,该引脚必须接地。
控制信号引脚RST,ALEPSEN和EA:
RST/VPD(9脚):
RST是复位信号输入端,高电平有效。
当此输入端保持备用电源的输入端。
当主电源Vcc发生故障,降低到低电平规定值时,将+5V电源自动两个机器周期(24个时钟振荡周期)的高电平时,就可以完成复位操作。
RST引脚的第二功能是VPD,即接入RST端,为RAM提供备用电源,以保证存储在RAM中的信息不丢失,从而合复位后能继续正常运行。
ALE/PROG(30脚):
地址锁存允许信号端。
当8051上电正常工作后,ALE引脚输出正脉冲信号,此频率为振荡器频率osc的1/6。
CPU访问片外存储器时,ALE输出信号作为锁存低8位地址的控制信号。
平时不访问片外存储器时,ALE端也以振荡频率的1/6固定输出正脉冲,因而ALE信号可以用作对外输出时钟或定时信号。
如果想确定8051/8031芯片的好坏,可用示波器查看ALE端是否有脉冲信号输出。
如有脉冲信号输出,则8051/8031基本上是好的。
ALE端的负载驱动能力为8个LS型TTL(低功耗甚高速TTL)负载。
此引脚的第二功能PROG在对片内带有4KBEPROM的8751编程写入(固化程序)时,作为编程脉冲输入端。
PSEN(29脚):
程序存储允许输出信号端。
在访问片外程序存储器时,此端定时输出负脉冲作为读片外存储器的选通信号。
此引肢接EPROM的OE端(见后面几章任何一个小系统硬件图)。
PSEN端有效,即允许读出EPROM/ROM中的指令码。
PSEN端同样可驱动8个LS型TTL负载。
要检查一个8051/8031小系统上电后CPU能否正常到EPROM/ROM中读取指令码,也可用示波器看PSEN端有无脉冲输出。
如有则说明基本上工作正常。
EA/Vpp(31脚):
外部程序存储器地址允许输入端/固化编程电压输入端。
当EA引脚接高电平时,CPU只访问片内EPROM/ROM并执行内部程序存储器中的指令,但当PC(程序计数器)的值超过0FFFH(对8751/8051为4K)时,将自动转去执行片外程序存储器内的程序。
当输入信号EA引脚接低电平(接地)时,CPU只访问外部EPROM/ROM并执行外部程序存储器中的指令,而不管是否有片内程序存储器。
对于无片内ROM的8031或8032,需外扩EPROM,此时必须将EA引脚接地。
此引脚的第二功能是Vpp是对8751片内EPROM固化编程时,作为施加较高编程电压(一般12V~21V)的输入端。
输入/输出端口P0/P1/P2/P3:
P0口(P0.0~P0.7,39~32脚):
P0口是一个漏极开路的8位准双向I/O口。
作为漏极开路的输出端口,每位能驱动8个LS型TTL负载。
当P0口作为输入口使用时,应先向P0口锁存器(地址80H)写入全1,此时P0口的全部引脚浮空,可作为高阻抗输入。
作输入口使用时要先写1,这就是准双向口的含义。
在CPU访问片外存储器时,P0口分时提供低8位地址和8位数据的复用总线。
在此期间,P0口内部上拉电阻有效。
P1口(P1.0~P1.7,1~8脚):
P1口是一个带内部上拉电阻的8位准双向I/O口。
P1口每位能驱动4个LS型TTL负载。
在P1口作为输入口使用时,应先向P1口锁存地址(90H)写入全1,此时P1口引脚由内部上拉电阻拉成高电平。
P2口(P2.0~P2.7,21~28脚):
P2口是一个带内部上拉电阻的8位准双向I/O口。
P口每位能驱动4个LS型TTL负载。
在访问片外EPROM/RAM时,它输出高8位地址。
P3口(P3.0~P3.7,10~17脚):
P3口是一个带内部上拉电阻的8位准双向I/O口。
P3口每位能驱动4个LS型TTL负载。
P3口与其它I/O端口有很大的区别,它的每个引脚都有第二功能,如下:
P3.0:
(RXD)串行数据接收。
P3.1:
(RXD)串行数据发送。
P3.2:
(INT0#)外部中断0输入。
P3.3:
(INT1#)外部中断1输入。
P3.4:
(T0)定时/计数器0的外部计数输入。
P3.5:
(T1)定时/计数器1的外部计数输入。
P3.6:
(WR#)外部数据存储器写选通。
P3.7:
(RD#)外部数据存储器读选通。
2.2.3AT89S52单片机的中断系统
AT89S52系列单片机的中断系统有5个中断源,2个优先级,可以实现二级中断服务嵌套。
由片内特殊功能寄存器中的中断允许寄存器IE控制CPU是否响应中断请求;由中断优先级寄存器IP安排各中断源的优先级;同一优先级内各中断同时提出中断请求时,由内部的查询逻辑确定其响应次序。
2.2.4AT89S52单片机的定时/计数器
在单片机应用系统中,常常会有定时控制需求,如定时输出、定时检测、定时扫描等;也经常要对外部事件进行计数。
AT89S52单片机内集成有两个可编程的定时/计数器:
T0和T1,它们既可以工作于定时模式,也可以工作于外部事件计数模式,此外,T1还可以作为串行口的波特率发生器。
2.3语音模块
ISD4004主要特性为:
单片4至8分钟语音录放;内置微控制器串行通信接口;3V电源工作;多段信息处理;工作电流25-30mA,维持电流1μA;不上电信息保存100年(典型值);高质量、自然的语音还原技术;10万次录音周期(典型值);自动静噪功能;片内免调整时钟,可选用外部时钟。
ISD4004系列工作电压3V,单片录放时间4至8分钟,音质好,适用于移动电话及其他便携式电子产品中。
芯片采用CMOS技术,内含振荡器、防混淆滤波器、平滑滤波器、音频放大器、自动静噪及高密度多电平闪烁存贮阵列。
芯片设计是基于所有操作必须由微控制器控制,操作命令可通过串行通信接口(SPI或Microwire)送入。
芯片采用多电平直接模拟量存储技术。
每个采样值直接存贮在片内闪烁存贮器中,因此能够非常真实、自然地再现语音、音乐、音调和效果声,避免一般固体录音电路因量化和压缩造成的量化噪声和“金属声”。
采样频率可为4.0,5.3,6.4,8.0kHz,频率越低,录放时间越长,而音质则有所下降。
片内信息存于闪烁存贮器中,可在断电情况下保存100年(典型值),反复录音10万次。
ISD4004引脚描述如下:
电源:
(VCCA,VCCD)为使噪声最小,芯片的模拟和数字电路使用不同的电源总线,并且分别引到外封装的不同管脚上,模拟和数字电源端最好分别走线,尽可能在靠近供电端处相连,而去耦电容应尽量靠近器件。
地线:
(VSSA,VSSD)芯片内部的模拟和数字电路也使用不同的地线。
同相模拟输入(ANAIN+):
这是录音信号的同相输入端。
输入放大器可用单端或差分驱动。
单端输入时,信号由耦合电容输入,最大幅度为峰峰值32mV,耦合电容和本端的3KΩ电阻输入阻抗决定芯片频带的低端截止频率。
差分驱动时,信号最大幅度为峰峰值16mV。
反相模拟输入(ANAIN-):
差分驱动时,这是录音信号的反相输入端。
信号通过耦合电容输入,最大幅度为峰峰值16mV。
音频输出(AUDOUT):
提供音频输出,可驱动5KΩ的负载。
片选(SS):
此端为低,即向该ISD4004芯片发送指令,两条指令之间为高电平。
串行输入(MOSI):
此端为串行输入端,主控制器应在串行时钟上升沿之前半个周期将数据放到本端,供ISD输入。
串行输出(MISO):
ISD的串行输出端。
ISD未选中时,本端呈高阻态。
串行时钟(SCLK):
ISD的时钟输入端,由主控制器产生,用于同步MOSI和MISO的数据传输。
数据在SCLK上升沿锁存到ISD,在下降沿移出ISD。
中断(/INT):
本端为漏极开路输出。
ISD在任何操作(包括快进)中检测到EOM或OVF时,本端变低并保持。
中断状态在下一个SPI周期开始时清除。
中断状态也可用RINT指令读取。
OVF标志----指示ISD的录、放操作已到达存储器的未尾。
EOM标志----只在放音中检测到内部的EOM标志时,此状态位才置1。
行地址时钟(RAC):
漏极开路输出。
每个RAC周期表示ISD存储器的操作进行一行(ISD4004系列中的存储器共产1200行,ISD4004系列中的存贮器共2400行)。
该信号175ms保持高电平,低电平为25ms。
快进模式下,RAC的218.75μs是高电平,31.25μs为低电平。
该端可用于存储管理技术。
外部时钟(XCLK):
本端内部有下拉元件。
芯片内部的采样时钟在出厂前已调校,误差在+1%内。
商业级芯片在整个温度和电压范围内,频率变化在+2.25%内。
工业级芯片在整个温度和电压范围内,频率变化在-6/+4%内,此时建议使用稳压电源。
若要求更高精度,可从本端输入外部时钟(如附录所列)