ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:303.93KB ,
资源ID:8779104      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8779104.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(SYN6288语音播放模块终极版.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

SYN6288语音播放模块终极版.docx

1、SYN6288语音播放模块终极版SYN6288语音播放模块制作1、SYN6288语音芯片封装图:2、通信方式:2.1 异步串行通讯(UART)接口SYN 6288 提供一组全双工的异步串行通讯(UART)接口,实现与微处理器或PC 的数据传输。SYN 6288利用TxD 和RxD 以及GND 实现串口通信。其中GND 作为地信号。SYN 6288 芯片支持UART 接口通讯方式,通过UART 接口接收上位机发送的命令和数据,允许发送数据的最大长度为206 字节。2.2 通讯传输字节格式1、初始波特率:9600 bps2、起始位: 13、数据位:84、校验位:无5、停止位:16、流控制:无与51

2、单片机通信时,可以用单片机的串行通信方式1。3、硬件电路搭建:3.1 外接电源组接法备注:SYN 6288共有6组外接电源,每组电源均使用一个47uF和一个0.1uF的电容;如果用户想节省成本,用户可以在每组电源上均使用0.1uF的电容,并对VDDPP、和VDDA两组电源,各加上一47uF的电容。3.2 复位电路及状态指示电路备注:Ready/Busy 此STATUS引脚信号为低电平时说明芯片正在等待接收数据。在系统设计时可以将此引脚接在MCU的中断输入源上,产生一个下降沿中断请求发送数据,以示上位机MCU可以向语音合成芯片发送数据。3.3 SYN6288 的扬声器输出(1) 为了在用户应用中

3、输出声音, SYN6288 内置了推挽式(Push-Pull)的 DAC ,可直接驱动喇叭,进行声音播报。并且SYN6288 内置的DAC 电路模块,使用了VDDPP/VSSPP 供电电源模块,具体电路说明部分请参见(10.1)和(10.2)节,其供电电压值可独立于其它电源组的供电。(见右图)3.4 SYN6288 外接高速晶振3.5 SYN6288 串口通信的参考电路备注:上位机发送数据给SYN6288 时,中间须加有反向器。在实际电路中,我们用三极管做了一个反向器,电路如下图:该电路的原理是:MCU的TXD输出电平为0时,NPN三极管截止,RXD收到的电平为1。MCU的TXD输出电平为1时

4、,NPN三极管导通,RXD收到的电平为0。3.6 Res 引脚(即第5 引脚)的接法3.7 总体电路原理图:4、程序的编写:4.1 命令帧格式:芯片支持以下命令帧格式:“帧头FD + 数据区长度+数据区”格式。(最大206个字节)注意:数据区(含命令字,命令参数,待发送文本,异或校验)的实际长度必须与帧头后定义的数据区长度严格一致,否则芯片会报接收失败。4.2 语音合成播放命令举例:上位机发送给 SYN6288 芯片的所有命令和数据都需要用“帧”的方式进行封装后传输。其它命令请自行参考SYN6288芯片手册:4.3 文本程序发送:中文系统电脑的文本编码格式一般为:ANSI即GB2312 编码体

5、系,这个可以用二进制文本编辑器(如BinaryEditor)打开并对照GB2312编码表察看。参考程序:/speaker.c#include #include #include #include typedef.h#include SPEAKER.hvoid delayMs(uint16 xms) uint16 i,j; for (i=0;ixms;i+) for (j=0;j123;j+);/语音模块初始化void SpeakerInit()/*串口的初始化*/ TL1=0XFA; /在11.0592MHZ下,设置波特率9600bps,工作方式2 TH1=0XFA; TMOD=0X20; S

6、CON=0X50; /串口工作方式1,允许接收 PCON=0X80; EA=0; REN=1; TI=0; /发生中断标志位置零 RI=0; /接收中断标志位置零 TR1=1; /定时器1用做波特率发生/语音播报程序uint8 Speaker(char * pString) uint8 headOfFrame5; uint8 length; /定义字符串长度 uint8 ecc = 0; /定义校验字节 uint16 i = 0; if (pString = NULL) /空字符串 return -1; /*发送过程*/ headOfFrame0=0XFD; /构造帧头FD headOfFra

7、me1=0X00; /构造数据区长度的高字节 length = strlen(pString); /需要发送文本的长度 headOfFrame2=length+3;/构造数据区长度的低字节 headOfFrame3=0X01; /构造命令字:合成播放命令 headOfFrame4=0X00; /构造命令参数:编码格式为GB2312 for(i=0;i5;i+) /依次发送构造好的5个帧头字节 ecc=ecc(headOfFramei); /对发送的字节进行异或校验 SBUF=headOfFramei; while (TI=0); /等待发送中断标志置位 TI=0; /发送中断标志位清零 for

8、(i=0;ilength;i+) /依次发送待合成的文本数据 ecc=ecc(*pString); SBUF = (*pString); pString +; while(TI=0); TI=0; SBUF=ecc; while(TI=0); TI=0; return 0; /成功返回0/语音读整数uint8 SpeakerInt(int ida) uint8 i; uint8 negative=0; /负数标志位 uint8 intLen=5; char cdat6=0; if (ida 0) /若为负数取绝对值 ida = abs(ida); negative = 1; cdat 0 =

9、(char)(ida / 10000 ) ; cdat 1 = (char)(ida % 10000) /1000); cdat 2 = (char)(ida % 1000) /100); cdat 3 = (char)(ida % 100) /10); cdat 4 = (char)(ida % 10) /1); for (i=0;i5;i+) cdati = cdati + 48; if (cdat0 = 0) intLen = 4; if (cdat1 = 0) intLen = 3; if (cdat2 = 0) intLen = 2; if (cdat3 = 0) intLen =

10、1; if (negative = 1) Speaker(零下); delayMs(1000); Speaker(& cdat5-intLen); return 0;/语音读小数uint8 SpeakerFloat(float fda,uint8 dNum) /fda 为传入的小数,dNum为其小数位数 uint8 negative=0; int ida; /整数部分 float dec; /小数部分 long idec; /转化后的小数部分 if (fda = 5) /如果是尾数x999的情况 idec += 10; idec /= 10; SpeakerInt(idec); delayMs

11、(3000); Speaker(n2); delayMs(200); return 0;void main() SpeakerInit(); while(1) Speaker(现在的室外温度是); delayMs(3000); SpeakerInt(-37); delayMs(1500); SpeakerFloat(-32.23,3); delayMs(3000); Speaker(度); delayMs(1000); /Speaker.h#ifndef _SPEAKER_H_#define _SPEAKER_H_extern void SpeakerInit(); /语音初始化程序extern uint8 Speaker(char * pString); /语音播放程序extern uint8 SpeakerInt(int ida); /语音读整数#endif/typedef.h#ifndef TYPEDEF_H_#define TYPEDEF_H_typedef unsigned char uint8;typedef unsigned int uint16;typedef unsigned long uint32;#endif

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1