基于SLH89F5162单片机的公交车语音报站系统

时间:2014-03-31来源:网络

3、软件设计原理

本系统的软件设计分为两部分,WT588D的语音库下载和SLH89F5162单片机程序下载。

3.1 WT588D的语音库下载程序

首先利用科大讯飞的语音软件《文语通》进行语音合成,合成需要的站台信息和提示声音,利用词语分组和句子划分,让语音通顺流畅,最后生成wav文件,如图3.1.1所示。然后利用WT588D的处理软件WT588D VoiceChip V-B进行语音文件的编译处理,如图3.1.2所示,最后下载到WT588D里面。


图3.1.1文语通的CSSML Editor语音生成界面


图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 2 3 4

关键词: 单片机 语音报警 SLH89F5162 WT588D

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版