找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1781|回复: 1
打印 上一主题 下一主题
收起左侧

SYN6288语音播报模块 求分享代码

[复制链接]
跳转到指定楼层
楼主
ID:855616 发表于 2020-12-6 21:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有没有完整的代码啊,跪求
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:155507 发表于 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. }


复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表