|
- //注意:51單片機使用12M晶振串口發(fā)送數(shù)據(jù)會有誤差而不能工作
- // 所以只能使用11.0592M的晶振
- #include <reg51.h>
- #include <string.h>
- #include "uart.h"
- void syn6288(char* tex,unsigned char changdu);
- /****************************************************************************
- * 函 數(shù):void main(void)
- * 功 能:主函數(shù)
- * 參 數(shù):無
- * 返回值:無
- * 更 新:無
- * 備 注:無
- ****************************************************************************/
- void main(void)
- {
- /****************需要發(fā)送的文本**********************************/
- char code text[] = {"[v10][m10]湖北"};
- char code hubei[] = {"[v9][m9]ok"};
- /****************串口的初始化************************************/
-
- uartinit();
- syn6288(text,sizeof(text));
- uart_delay(2000); //延時很重要
- syn6288(hubei,sizeof(hubei));
- uart_delay(1000); //延時很重要
-
- while(1)
- ;
- }
- /****************************************************************************
- * 函 數(shù):void syn6288(char* tex,unsigned char changdu)
- * 功 能:語音讀取字符串
- * 參 數(shù):tex--------字符串的地址
- * changdu----字符串tex的長讀
- * 返回值:無
- * 更 新:無
- * 備 注:無
- ****************************************************************************/
- void syn6288(char* tex,unsigned char changdu)
- {
- unsigned char headOfFrame[5];
- unsigned char length;
- unsigned char ecc = 0; //定義校驗字節(jié)
- unsigned int i=0;
- length =changdu; //需要發(fā)送文本的長度
- /*****************發(fā)送過程**************************************/
- headOfFrame[0] = 0xFD ; //構造幀頭FD
- headOfFrame[1] = 0x00 ; //構造數(shù)據(jù)區(qū)長度的高字節(jié)
- headOfFrame[2] = length + 3; //構造數(shù)據(jù)區(qū)長度的低字節(jié)
- headOfFrame[3] = 0x01 ; //構造命令字:合成播放命令
- /*****************帶背景音樂**************************************/
- headOfFrame[4] = 0x21 ; //構造命令參數(shù):編碼格式為GBK
- /*****************不帶背景音樂**************************************/
- //headOfFrame[4] = 0x01 ; //構造命令參數(shù):編碼格式為GBK
- for(i = 0; i<5; i++) //依次發(fā)送構造好的5個幀頭字節(jié)
- {
- ecc=ecc^(headOfFrame[i]); //對發(fā)送的字節(jié)進行異或校驗
- SBUF = headOfFrame[i];
- while (TI== 0) {;} //等待發(fā)送中斷標志位置位
- TI = 0; //發(fā)送中斷標志位清零
- }
- for(i = 0; i<length; i++) //依次發(fā)送待合成的文本數(shù)據(jù)
- {
- ecc=ecc^(tex[i]); //對發(fā)送的字節(jié)進行異或校驗
- SBUF = tex[i];
- while (TI== 0) {;}
- TI = 0;
- //uart_delay(10);
- }
- //uart_delay(1000);
- SBUF=ecc; //最后發(fā)送校驗字節(jié)
- while(TI== 0)
- ;
- TI=0;
- }
復制代碼 完整代碼下載:
syn6288_2_ok.rar
(50.03 KB, 下載次數(shù): 290)
2015-1-5 22:09 上傳
點擊文件名下載附件
|
|