|
- //注意:51单片机使用12M晶振串口发送数据会有误差而不能工作
- // 所以只能使用11.0592M的晶振
- #include <reg51.h>
- #include <string.h>
- #include "uart.h"
- void syn6288(char* tex,unsigned char changdu);
- /****************************************************************************
- * 函 数:void main(void)
- * 功 能:主函数
- * 参 数:无
- * 返回值:无
- * 更 新:无
- * 备 注:无
- ****************************************************************************/
- void main(void)
- {
- /****************需要发送的文本**********************************/
- 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)
- ;
- }
- /****************************************************************************
- * 函 数:void syn6288(char* tex,unsigned char changdu)
- * 功 能:语音读取字符串
- * 参 数:tex--------字符串的地址
- * changdu----字符串tex的长读
- * 返回值:无
- * 更 新:无
- * 备 注:无
- ****************************************************************************/
- void syn6288(char* tex,unsigned char changdu)
- {
- unsigned char headOfFrame[5];
- unsigned char length;
- unsigned char ecc = 0; //定义校验字节
- unsigned int i=0;
- length =changdu; //需要发送文本的长度
- /*****************发送过程**************************************/
- headOfFrame[0] = 0xFD ; //构造帧头FD
- headOfFrame[1] = 0x00 ; //构造数据区长度的高字节
- headOfFrame[2] = length + 3; //构造数据区长度的低字节
- headOfFrame[3] = 0x01 ; //构造命令字:合成播放命令
- /*****************带背景音乐**************************************/
- headOfFrame[4] = 0x21 ; //构造命令参数:编码格式为GBK
- /*****************不带背景音乐**************************************/
- //headOfFrame[4] = 0x01 ; //构造命令参数:编码格式为GBK
- for(i = 0; i<5; i++) //依次发送构造好的5个帧头字节
- {
- ecc=ecc^(headOfFrame[i]); //对发送的字节进行异或校验
- SBUF = headOfFrame[i];
- while (TI== 0) {;} //等待发送中断标志位置位
- TI = 0; //发送中断标志位清零
- }
- for(i = 0; i<length; i++) //依次发送待合成的文本数据
- {
- ecc=ecc^(tex[i]); //对发送的字节进行异或校验
- SBUF = tex[i];
- while (TI== 0) {;}
- TI = 0;
- //uart_delay(10);
- }
- //uart_delay(1000);
- SBUF=ecc; //最后发送校验字节
- while(TI== 0)
- ;
- TI=0;
- }
复制代码 完整代码下载:
syn6288_2_ok.rar
(50.03 KB, 下载次数: 290)
|
|