|
- //注意:51單片機(jī)使用12M晶振串口發(fā)送數(shù)據(jù)會(huì)有誤差而不能工作
- // 所以只能使用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); //延時(shí)很重要
- syn6288(hubei,sizeof(hubei));
- uart_delay(1000); //延時(shí)很重要
-
- while(1)
- ;
- }
- /****************************************************************************
- * 函 數(shù):void syn6288(char* tex,unsigned char changdu)
- * 功 能:語音讀取字符串
- * 參 數(shù):tex--------字符串的地址
- * changdu----字符串tex的長(zhǎng)讀
- * 返回值:無
- * 更 新:無
- * 備 注:無
- ****************************************************************************/
- void syn6288(char* tex,unsigned char changdu)
- {
- unsigned char headOfFrame[5];
- unsigned char length;
- unsigned char ecc = 0; //定義校驗(yàn)字節(jié)
- unsigned int i=0;
- length =changdu; //需要發(fā)送文本的長(zhǎng)度
- /*****************發(fā)送過程**************************************/
- headOfFrame[0] = 0xFD ; //構(gòu)造幀頭FD
- headOfFrame[1] = 0x00 ; //構(gòu)造數(shù)據(jù)區(qū)長(zhǎng)度的高字節(jié)
- headOfFrame[2] = length + 3; //構(gòu)造數(shù)據(jù)區(qū)長(zhǎng)度的低字節(jié)
- headOfFrame[3] = 0x01 ; //構(gòu)造命令字:合成播放命令
- /*****************帶背景音樂**************************************/
- headOfFrame[4] = 0x21 ; //構(gòu)造命令參數(shù):編碼格式為GBK
- /*****************不帶背景音樂**************************************/
- //headOfFrame[4] = 0x01 ; //構(gòu)造命令參數(shù):編碼格式為GBK
- for(i = 0; i<5; i++) //依次發(fā)送構(gòu)造好的5個(gè)幀頭字節(jié)
- {
- ecc=ecc^(headOfFrame[i]); //對(duì)發(fā)送的字節(jié)進(jìn)行異或校驗(yàn)
- SBUF = headOfFrame[i];
- while (TI== 0) {;} //等待發(fā)送中斷標(biāo)志位置位
- TI = 0; //發(fā)送中斷標(biāo)志位清零
- }
- for(i = 0; i<length; i++) //依次發(fā)送待合成的文本數(shù)據(jù)
- {
- ecc=ecc^(tex[i]); //對(duì)發(fā)送的字節(jié)進(jìn)行異或校驗(yàn)
- SBUF = tex[i];
- while (TI== 0) {;}
- TI = 0;
- //uart_delay(10);
- }
- //uart_delay(1000);
- SBUF=ecc; //最后發(fā)送校驗(yàn)字節(jié)
- while(TI== 0)
- ;
- TI=0;
- }
復(fù)制代碼 完整代碼下載:
syn6288_2_ok.rar
(50.03 KB, 下載次數(shù): 290)
2015-1-5 22:09 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
|