标题: SYN6288语音播报模块 求分享代码 [打印本页]

作者: 安仔.1999    时间: 2020-12-6 21:39
标题: SYN6288语音播报模块 求分享代码
有没有完整的代码啊,跪求

作者: angmall    时间: 2022-5-19 19:31
我给你来个程序试试

  1. //main.c
  2. #include <reg52.h>
  3. #include "speaker.h"

  4. void main()
  5. {
  6.         SpeakerInit();
  7.         while(1)
  8.         {
  9.                 Speaker("哈哈");
  10.                 delayMs(2000);
  11.                 Speaker("欢迎使用 TTS 模块");
  12.                 delayMs(2000);
  13.         }
  14. }

  15. //speaker.h

  16. #ifndef _SPEAKER_H_
  17. #define _SPEAKER_H_

  18. #ifndef uchar
  19. #define uchar unsigned char
  20. #endif

  21. #ifndef uint
  22. #define uint unsigned int
  23. #endif

  24. void SpeakerInit();                                  //语音初始化程序
  25. char Speaker(char * pString);                        //语音播放程序               
  26. void delayMs(uint xms);

  27. #endif

  28. //speaker.c

  29. #include <reg52.h>
  30. #include <string.h>
  31. #include <math.h>
  32. #include "speaker.h"

  33. void delayMs(uint xms)
  34. {
  35.         uint i,j;
  36.         for(i=0;i<xms;i++)
  37.         for (j=0;j<123;j++);
  38. }

  39. //语音模块初始化
  40. void SpeakerInit()
  41. {
  42.         /**************串口的初始化*****************/
  43.         TL1=0XFA;        //在11.0592MHZ下,设置波特率9600bps,工作方式2
  44.         TH1=0XFA;
  45.         TMOD|=0X20;
  46.         SCON=0X50;  //串口工作方式1,允许接收
  47.         PCON=0X80;
  48.         EA=0;
  49.         REN=1;
  50.         TI=0;                  //发生中断标志位置零
  51.         RI=0;                //接收中断标志位置零
  52.         TR1=1;                //定时器1用做波特率发生
  53. }

  54. //语音播报程序
  55. char Speaker(char * pString)
  56. {
  57.         uchar headOfFrame[5];
  58.         uchar length;                        //定义字符串长度
  59.         uchar ecc = 0;                   //定义校验字节
  60.         uint i=0;

  61.         if (pString == NULL)        //空字符串
  62.         return -1;        

  63.         /*****************发送过程**********************/
  64.         headOfFrame[0]=0XFD;   //构造帧头FD
  65.         headOfFrame[1]=0X00;   //构造数据区长度的高字节
  66.         length = strlen(pString);                //需要发送文本的长度
  67.         headOfFrame[2]=length+3;//构造数据区长度的低字节
  68.         headOfFrame[3]=0X01;        //构造命令字:合成播放命令
  69.         headOfFrame[4]=0X00;        //构造命令参数:编码格式为GB2312

  70.         for(i=0;i<5;i++)        //依次发送构造好的5个帧头字节
  71.         {
  72.                 ecc=ecc^(headOfFrame[ i]); //对发送的字节进行异或校验
  73.                 SBUF=headOfFrame[ i];
  74.                 while (TI==0){;}                 //等待发送中断标志置位
  75.                 TI=0;                                         //发送中断标志位清零
  76.         }

  77.         for(i=0;i<length;i++)       //依次发送待合成的文本数据
  78.         {
  79.                 ecc=ecc^(*pString);
  80.                 SBUF = (*pString);
  81.                 pString ++;
  82.                 while(TI==0){;}
  83.                 TI=0;
  84.         }
  85.        
  86.         SBUF=ecc;
  87.         while(TI==0){;}
  88.         TI=0;
  89.        
  90.         return 0;        //成功返回0
  91. }


复制代码





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1