基于SLH89F5162的公交车语音报站系统设计
计如图2.2.2所示。单片机通过单线连接模式和WT588D进行通信,WT588D的语音信号通过DAC输出方式输出。
![](../img/eep/emb/emb-449220dbbkisoqlm.jpg)
图2.2.2 WT588D语音模块的电路图
2.3 LM386功放电路设计
LM386是美国国家半导体公司生产的音频功率放大器,主要应用于低电压消费类产品。为使外围元件最少,电压增益内置为20.但在1脚和8脚之间增加一只外接电阻和电容,便可将电压增益调为任意值,直至200.其管脚图如图2.3.1所示。
![](../img/eep/emb/emb-44923bvyma33vk1q.jpg)
图2.3.1 LM386芯片的引脚图
本系统用LM386构成了声音信号放大器,将WT588D输出的DAC信号进行放大输出,驱动喇叭发出声音,电路设计如图2.3.2所示,通过调节R3的10K的电阻可以调节放大音量的大小。
![](../img/eep/emb/emb-44924pz2dd15kzh0.jpg)
图2.3.2 LM386构成的放大器电路图
2.4液晶显示电路设计
本系统采用一块128*64的LCD液晶屏作为信息的输出界面,配合语音信息,一起方便司机师傅进行调试和选择,LCD液晶屏的实物图如图2.4.1所示。液晶屏的驱动电路采用官方的驱动电路,利用单片机来控制液晶屏的显示和刷新,液晶屏显示电路设计图如图2.4.2所示,可以通过调节R4的10K电阻调节液晶屏显示的对比度。
![](../img/eep/emb/emb-44925laielykxp0l.jpg)
图2.4.1 LCD液晶屏的实物图
![](../img/eep/emb/emb-44926xokdmzg4edl.jpg)
图2.4.1 LCD液晶屏的显示驱动电路
3、软件设计原理
本系统的软件设计分为两部分,WT588D的语音库下载和SLH89F5162单片机程序下载。
3.1 WT588D的语音库下载程序
首先利用科大讯飞的语音软件《文语通》进行语音合成,合成需要的站台信息和提示声音,利用词语分组和句子划分,让语音通顺流畅,最后生成wav文件,如图3.1.1所示。然后利用WT588D的处理软件WT588D VoiceChip V-B进行语音文件的编译处理,如图3.1.2所示,最后下载到WT588D里面。
![](../img/eep/emb/emb-44927chgdmf2t1jp.jpg)
图3.1.1文语通的CSSML Editor语音生成界面
![](../img/eep/emb/emb-44928zmhosjfkwmi.jpg)
图3.1.2 WT588D VoiceChip V-B语音编译与下载界面
3.2单片机的SLH89F5162程序设计
单片机的程序是用KEIL4编制的,主要是按键的识别、液晶屏的显示、语音芯片WT588D的单线通信程序三部分。主要程序如下,详情见附件。
void main(void)
{
uint block_n;
uint updata;
uint key_flag;
uchar flag_hold;
initinal(); //调用LCD字库初始化程序
delay(50); //大于100uS的延时程序
flag_key=0;
flag_hold=0;
beep1(2-1);
block_n=2;
updata=1;
Display_hanzi(0,0,“公交报站系统”,8);
Display_hanzi(0,2,“本站:”,3);
Display_hanzi(0,1,“上站:”,3);
Display_hanzi(0,3,“下站:”,3);
Display_hanzi(3,2,Station[block_n],5);
Display_hanzi(3,1,Station[block_n-1],5);//上一站
Display_hanzi(3,3,Station[block_n+1],5);//下一站
Display_hanzi(0,1,“本站:”,3);
Display_hanzi(0,2,“上站:”,3);
Display_hanzi(0,3,“下站:”,3);
while(1)
{
delay(200);
if(K1==0
key_flag=0;
updata=1;
block_n=1;
beep1(block_n-1);
}
else if(K2==0
key_flag=0;
updata=1;
block_n=block_n+1;
if(block_n》10)
block_n=10;
beep1(block_n-1);
}
else if(K3==0
key_flag=0;
updata=1;
block_n=block_n-1;
if(block_n《1)
block_n=1;
beep1(block_n-1);
}
else if(K4==0
key_flag=0;
updata=1;
block_n=10;
beep1(block_n-1);
}
if(K1!=0
{
key_flag=1; ///标志,当按键按下,动作一下,按键松开后才能再次按下响应,防止连续动作
}
if(updata==1){
updata=0;
if(block_n==1){
Display_hanzi(3,1,Station[block_n],5);
Display_hanzi(3,2,Station[block_n],5);//上一站
Display_hanzi(3,3,Station[block_n+1],5);//下一站
}else if(block_n==10){
Display_hanzi(3,1,Station[block_n],5);
Display_hanzi(3,2,Station[block_n-1],5);//上一站
Display_hanzi(3,3,Station[block_n],5);//下一站
}else{
Display_hanzi(3,1,Station[block_n],5);
Display_hanzi(3,2,Station[block_n-1],5);//上一站
Display_hanzi(3,3,Station[block_n+1],5);//下一站
}}}}
三、项目设计框图
1、硬件设计框图
![](../img/eep/emb/emb-44929cjvbl4l3guw.jpg)
2、软件设计框图
![](../img/eep/emb/emb-44930nigj1ws33ln.jpg)
四、测试结果
![](../img/eep/emb/emb-449315e2txwie31w.jpg)
系统的PCB板实物图
![](../img/eep/emb/emb-4493254jguixztjx.jpg)
系统调试好的实物图
经过仔细认真的焊接和调试,最终完成了系统的实物系统,经过调试,系统稳定可靠。性能指标如下:
1、系统功率小于5W.
2、能够通过按键操作,进行起始站、上一站、下一站、终点站的语音报警和液晶屏显示,当按键按下时,液晶屏显示相应的信息,语音输出响应的信息。
3、语音的声音输出清晰,流畅,普通
SLH89F5162 WT588D 相关文章:
- 基于SLH89F5162单片机的公交车语音报站系统(03-03)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)