找回密码
 立即注册

QQ登录

只需一步,快速开始

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

给大家分享一个可用于制作语音播报的电子资料JQ8900-16P

  [复制链接]
跳转到指定楼层
楼主
模块价格也不贵  功能挺好用的


全部资料51hei下载地址:
JQ8900-16P语音模块-资料包.rar (6.82 MB, 下载次数: 149)

语音合成软件使用说明

  1. #include "main.h"

  2. bit bSysHalfSec;
  3. u8 TimeWaitCnt = 0;

  4. u8 code PrevFile[] = {0xAA, 0x05, 0x00, 0xAF};/*此数组指令可以直接由上位机生成,复制过来即可  */
  5. u8 code NextFile[] = {0xAA, 0x06, 0x00, 0xB0};
  6. u8 code Path[] = {0xAA, 0x08, 0x10, 0x02, 0x2F, 0xB9, 0xE3, 0xB8, 0xE6, 0x2A, 0x2F, 0xD0, 0xA1, 0xC3, 0xD7, 0x2A, 0x4D, 0x50, 0x33, 0x8B, }; // flash   /广告*/小米*MP3



  7. /***************************************************************************************

  8. 本程序为MP3串口模块测试程序C51版本,测试芯片采用 STC12C5A32S2,外部晶振,11.0592MHZ
  9. 串口设置:9600



  10. **************************************************************************************/

  11. u8 UartData = 0xff;
  12. /*****************************************************************************
  13. 函 数 名  : Timer0Init
  14. 功能描述  : 定时器初使化 定时2毫秒@11.0592MHz
  15. 输入参数  : void
  16. 输出参数  : 无
  17. 返 回 值  :
  18. 调用函数  :
  19. 被调函数  :

  20. 修改历史      :
  21.   1.日    期   : 2013年3月26日
  22.     作    者   : Blueice
  23.     修改内容   : 新生成函数

  24. *****************************************************************************/
  25. void Timer0Init ( void )
  26. {
  27.     AUXR |= 0x80;                /*定时器时钟1T模式  */
  28.     TMOD &= 0xF0;                /*设置定时器模式  */
  29.     TMOD |= 0x01;                /*设置定时器模式  */
  30.     TL0 = 0x9A;                    /*设置定时初值  */
  31.     TH0 = 0xA9;                    /*设置定时初值  */
  32.     TF0 = 0;                    /*清除TF0标志  */
  33.     TR0 = 1;                    /*定时器0开始计时  */
  34.     ET0 = 1;
  35. }
  36. /*****************************************************************************
  37. 函 数 名  : SysInit
  38. 功能描述  : 系统初使化
  39. 输入参数  : void
  40. 输出参数  : 无
  41. 返 回 值  :
  42. 调用函数  :
  43. 被调函数  :

  44. 修改历史      :
  45.   1.日    期   : 2013年3月24日
  46.     作    者   : Blueice
  47.     修改内容   : 新生成函数

  48. *****************************************************************************/
  49. void SysInit ( void )
  50. {
  51.     Timer0Init();
  52.     UartInit();
  53.     EA = 1;/*开总中断  */
  54. }
  55. /*****************************************************************************
  56. 函 数 名  : Delay1us
  57. 功能描述  : 1微秒延时函数
  58. 输入参数  : int T
  59. 输出参数  : 无
  60. 返 回 值  :
  61. 调用函数  :
  62. 被调函数  :

  63. 修改历史      :
  64.   1.日    期   : 2016年2月19日
  65.     作    者   : wskblueice
  66.     修改内容   : 新生成函数

  67. *****************************************************************************/
  68. void Delay1us ( int T )
  69. {
  70.     T = T - 70;
  71.     do
  72.     {
  73.         ;
  74.     }
  75.     while ( T-- );
  76. }
  77. #define  sda   P01 /*一线串口发送引脚  */
  78. /*****************************************************************************
  79. 函 数 名  : SendData
  80. 功能描述  : 一线串口发送函数
  81. 输入参数  : u16 N
  82. 输出参数  : 无
  83. 返 回 值  :
  84. 调用函数  :
  85. 被调函数  :

  86. 修改历史      :
  87.   1.日    期   : 2014年8月17日
  88.     作    者   : wskblueice
  89.     修改内容   : 新生成函数

  90. *****************************************************************************/
  91. void SendData ( u8 addr )
  92. {
  93.     u8 i;

  94.     EA = 0;/*发送时关掉中断,防止中断影响时序  */

  95.     sda = 1;/*开始拉搞  */
  96.     Delay1us ( 1000 );
  97.     sda = 0;/*开始引导码*/
  98.     Delay1us ( 2200 );/*此处延时最少要大于2ms,此参数延时为310ms  */

  99.     for ( i = 0; i < 8; i++ ) /*总共8位数据  */
  100.     {
  101.         sda = 1;
  102.         if ( addr & 0x01 ) /*3:1表示数据位1,每个位用两个脉冲表示  */
  103.         {
  104.             Delay1us ( 500 );
  105.             sda = 0;
  106.             Delay1us ( 210 );
  107.         }
  108.         else              /*1:3表示数据位0 ,每个位用两个脉冲表示  */
  109.         {
  110.             Delay1us ( 210 );
  111.             sda = 0;
  112.             Delay1us ( 500 );
  113.         }
  114.         addr >>= 1;
  115.     }
  116.     sda = 1;
  117.     EA = 1;
  118. }
  119. /*****************************************************************************
  120. 函 数 名  : UartSendData
  121. 功能描述  : 两线串口发送指令
  122. 输入参数  : u8 *Buff
  123. 输出参数  : 无
  124. 返 回 值  :
  125. 调用函数  :
  126. 被调函数  :

  127. 修改历史      :
  128.   1.日    期   : 2016年5月1日
  129.     作    者   : wskblueice
  130.     修改内容   : 新生成函数

  131. *****************************************************************************/
  132. void UartSendData ( u8 *Buff, u8 Len )
  133. {
  134.     u8 i;
  135.     for ( i = 0 ; i < Len ; i++ )
  136.     {
  137.         UartPutByte ( Buff[i] );
  138.     }
  139. }
  140. /*****************************************************************************
  141. 函 数 名  : main
  142. 功能描述  : 系统主循环
  143. 输入参数  : void
  144. 输出参数  : 无
  145. 返 回 值  :
  146. 调用函数  :
  147. 被调函数  :

  148. 修改历史      :
  149.   1.日    期   : 2013年2月21日
  150.     作    者   : Blueice
  151.     修改内容   : 新生成函数

  152. *****************************************************************************/
  153. void main ( void )
  154. {

  155.     SysInit();



  156.     P0M0 |= BIT ( 0 ) | BIT ( 1 );
  157.     UartSendData ( Path, 20 );
  158.     while ( 1 )
  159.     {
  160.         if ( TimeWaitCnt == 4 ) /*每隔两秒会自动发下一曲指令  */
  161.         {
  162.             TimeWaitCnt = 0;
  163.             SendData ( 0x15 );//next file
  164.             //UartSendData ( NextFile,4 );
  165.         }
  166.     }
  167. }
  168. /*****************************************************************************
  169. 函 数 名  : tm0_isr
  170. 功能描述  : 定时中断
  171. 输入参数  : 无
  172. 输出参数  : 无
  173. 返 回 值  :
  174. 调用函数  :
  175. 被调函数  :

  176. 修改历史      :
  177.   1.日    期   : 2013年3月26日
  178.     作    者   : Blueice
  179.     修改内容   : 新生成函数

  180. *****************************************************************************/
  181. void Timer0_isr() interrupt 1
  182. {
  183.     static u8 TimeCnt;

  184.     TL0 = 0x9A;                /*设置定时初值  */
  185.     TH0 = 0xA9;                /*设置定时初值  */

  186.     TimeCnt++;
  187.     if ( ( TimeCnt % 5 ) == 0 )
  188.     {


  189.     }
  190.     if ( ( TimeCnt % 250 ) == 0 )
  191.     {
  192.         TimeCnt = 0;
  193.         bSysHalfSec = !bSysHalfSec;
  194.         P00 = !P00;
  195.         TimeWaitCnt++;
  196.     }

  197. }
复制代码


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏7 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:88606 发表于 2019-4-10 17:10 | 只看该作者
看看能不能用上,谢谢楼主!
回复

使用道具 举报

板凳
ID:422055 发表于 2019-5-8 12:04 | 只看该作者
main.h文件咋没有
回复

使用道具 举报

地板
ID:296205 发表于 2019-5-9 18:12 | 只看该作者
感谢楼主分享
回复

使用道具 举报

5#
ID:658723 发表于 2020-1-10 19:03 | 只看该作者
问一问  STC12C5A60S2能通过串口控制JQ6500吗
回复

使用道具 举报

6#
ID:192205 发表于 2020-1-30 17:08 | 只看该作者
youwanlian 发表于 2020-1-10 19:03
问一问  STC12C5A60S2能通过串口控制JQ6500吗

可以..
回复

使用道具 举报

7#
ID:329516 发表于 2020-4-22 13:43 | 只看该作者
为啥解压不了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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