基于SLH89F5162單片機的公交車語音報站系統(tǒng)
3、軟件設(shè)計原理
本系統(tǒng)的軟件設(shè)計分為兩部分,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程序設(shè)計
單片機的程序是用KEIL4編制的,主要是按鍵的識別、液晶屏的顯示、語音芯片WT588D的單線通信程序三部分。主要程序如下,詳情見附件。
void main(void)
{
uint block_n;
uint updata;
uint key_flag;
uchar flag_hold;
initinal(); //調(diào)用LCD字庫初始化程序
delay(50); //大于100uS的延時程序
flag_key=0;
flag_hold=0;
beep1(2-1);
block_n=2;
updata=1;
Display_hanzi(0,0,“公交報站系統(tǒng)”,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; ///標志,當按鍵按下,動作一下,按鍵松開后才能再次按下響應(yīng),防止連續(xù)動作
}
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);//下一站
}}}}
單片機相關(guān)文章:單片機教程
電路圖符號相關(guān)文章:電路圖符號大全
單片機相關(guān)文章:單片機視頻教程
單片機相關(guān)文章:單片機工作原理
手機充電器相關(guān)文章:手機充電器原理 燃氣報警器相關(guān)文章:燃氣報警器原理
評論