幸运时时彩平台

单片机+JQ6500语音模块使用代码

2020-01-31来源: 51hei关键字:单片机  JQ6500  语音模块

幸运时时彩平台最近在家无聊做东西玩,要用一个模块驱动喇叭放提示音,一开始买的是WT588DM01图的就是自带8M Flash省心,结果TM还要另外买30几块钱的烧写器才能用。


幸运时时彩平台后来又咬咬牙买了个JQ6500语音模块,插USB连电脑就能烧写mp3进去,果然还是深圳厂商洞察需求。


买是买来了,但是厂家配的资料还分3个版本,PCB外观都改了,PDF没更新,只好自己捣鼓,按着参考资料用个51试试手。

51hei截图_20200130165511.png 

这是PDF里面的模块外面图,实际买来的长下面的样子

51hei截图_20200130165628.png 

芯片是24脚,模块16脚。引出来的16个脚没变,就是模块PCB板上面有略微变化,但是不影响对模块引出来的16个脚直接使用。

51hei截图_20200130165417.png 

模块接线原理图,SPK+和SPK-实测可以直接接无源蜂鸣器。


单片机源程序如下:

#include //头文件

#include

/*

本模块的第九脚也就是RX脚连接到单片机的P3^1

幸运时时彩平台第十脚也就是TX脚连接到单片机的P3^0(如果你不处理本模块返回的数据可以不连接)

幸运时时彩平台同时本模块和单片机还要共地急GND连接GND

本模块五伏供电也可以直接由单片机上的电源供电

*/


typedef   unsigned char  uint8;

typedef   unsigned int   uint16;

sbit KEY1=P3^2;//第一曲键

sbit KEY2=P3^3;//第一曲循环键

幸运时时彩平台sbit KEY3=P3^4;//暂停键

sbit KEY4=P3^5;//进入睡眠键



uint8 First[]={0x7E,0x04,0x03,0x00,0X01,0xEF};//第一曲指令

uint8 Next[]={0x7E,0x03,0x11,0x01,0xEF};                                    //            第一首循环

uint8 Add[]={0x7E ,0x02, 0x0E, 0xEF};                                        //                          0x0e暂停

uint8 Sub[]={0x7E ,0x02 ,0x0A, 0xEF};         //                                     0x0a进入睡眠


void delay150ms(void)   //误差 -0。000000000047us

{

    unsigned char a,b,c;

    for(c=6;c>0;c--)

        for(b=52;b>0;b--)

            for(a=220;a>0;a--);

    _nop_();  //if Keil,require use intrins.h

}





/*

* UART初始化

* 波特率:9600

*/

void UART_init(void)

{

    SCON = 0x50;        // 10位uart,允许串行接受


    TMOD = 0x20;        // 定时器1工作在方式2(自动重装)                        0010 0000

    TH1 = 0xFD;

    TL1 = 0xFD;         //设置波特率为9600


    TR1 = 1;

}


/*

* UART 发送一字节

入口参数uint8的数据类型 即要发送的数据

*/

void UART_send_byte(uint8 dat)

{

        SBUF = dat;

        while (TI == 0);

        TI = 0;

}


/*

* UART 发送字符串 

  第一个参数要发送字符串或数据的首地址

  第二个参数是要发送的数据或字符串的长度

*/

void UART_send_string(uint8 *buf,uint8 len)

{  uint8 i;

        for(i=0;i

                UART_send_byte(*buf++);

}


main()

{

幸运时时彩平台        UART_init();//串口初始化

        

        while (1)   //一个大循环一直在检测按键和发送指令

        {  if(KEY1==0)//如果第一个键被按下播放第一段


    {                while(!KEY1);//等待按键松开

                         UART_send_string(First,6);

    }                

                else if(KEY2==0)//如果第二个按键按下循环第一曲


    {                while(!KEY2);//等待按键松开

                         UART_send_string(Next,5);

                         delay150ms();                           //经测试,两个指令之间延时150ms效果最好

                         UART_send_string(First,6);

    }                

                else if(KEY3==0)//如果第三个按键按下暂停播放

                        {                while(!KEY3);//等待按键松开

                         UART_send_string(Add,4);

幸运时时彩平台    }        

else if(KEY4==0)//如果第四个按键按下进入睡眠状态


    {                while(!KEY4);//等待按键松开

                         UART_send_string(Sub,4);

    }                        

        }


}


用到了四个按键,还有一个串口,每检测到一个按键的按下就利用单片机给模块JQ6500发串口指令,两个指令之间不少于150ms(实测),不然会没反应。

关键字:单片机  JQ6500  语音模块 编辑:什么鱼 引用地址:http://news.sonata9.com/mcu/ic486809.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:基于51单片机的跳一跳小游戏 源程序
下一篇:用STc15f104e单片机做了个学习型红外遥控开关程序

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

基于52单片机控制编码器显示程序
#include "reg52.h"    #define uchar unsigned char#define uint unsigned int#define LCD1602_DATAPINS P0sbit LCD1602_E=P2^7;sbit LCD1602_RW=P2^5;sbit LCD1602_RS=P2^6;sbit DIR=P1^0;sbit STEP=P1^1;sbit K1=P3^1;sbit K2=P3^0;typedef unsigned int u16;   //对数据类型进行声明定义typedef unsigned char
发表于 2020-02-08
单片机步进电机转速控制程序(速度LED显示)
单片机源程序如下://数码管位 高位-----低位//四个按键控制步进电机:正转,反转,加1,减1//上电时电机启动,数码管上显示速度最小档1,加减档位均能通过数码管显示出来,电机采用单双八拍方式//电机转速一共10档,通过按键调节转速 //电机正转时最高位数码管显示0,反转时显示1  #include<reg51.h>#define uchar unsigned char#define uint unsigned int#define led P0//数码管段选#define haha P2sbit s1 = P1^0;sbit s2 = P1^1;sbit s3 = P3^0;sbit
发表于 2020-02-08
单片机步进电机转速控制程序(速度LED显示)
STC单片机+DM134实现LED多段控制
 单片机源程序如下://============================================================================//================翼芯科技 LED流星灯8段16段==软件生成生成数据=================//============================================================================   //  此源码版权属 翼芯科技 全权享有,如欲引用,敬请署名并告知//         
发表于 2020-02-08
STC单片机+DM134实现LED多段控制
基于51单片机的数字电容测量仪设计
本设计详细介绍了一种基于单片机的数字式电容测量仪设计方案及实现方法。设计的主要方法是采用555芯片构成单稳态触发器,将电容容量转换为脉冲宽度。通过单片机的计时器测量脉宽, 根据已知的R值,通过单片机的运算功能,计算出电容容量,最后,再通过单片机的普通I/O口控制液晶屏显示出电容容量的计算结果。系统的测量范围为10pF~ 500uF, 具有多个量程,可根据用户需要由用户选择,与用户的交互是通过键盘实现,不同量程的实现是通过单片机的I/O口控制继电器的吸合与断开来选择不同的R值,从而实现不同的量程。同时,本设计注重设计方法及流程,首先根据原理设计电路,再通过protues仿真,利用keil编程,进而借助altium designer
发表于 2020-02-08
基于51单片机的数字电容测量仪设计
基于51单片机的pwm直流电机调速
仿真原理图如下单片机源程序如下:#include <reg52.h>/********************************************** 定时器初值*********************************************/#define T0HIGH        0xec#define T0LOWW        0x8a
发表于 2020-02-08
基于51单片机的pwm直流电机调速
手把手教你单片机串口通信-基础篇
1的个数之和应为偶数。接收字符时,对1的个数进行校验,若字符不一致,则说明传输数据过程中出现错误。代码和校验发送方将所发数据块求和(或各字节异或),产生一个字节的校验字符(校验和)附加到数据块末尾。接收方接收数据时,同时对数据块(除校验字节外)求和(或各字节异或),将所得的结果与发送方的“校验和”进行比较,一致则无差。循环冗余校验通过某种数学预算实现有效信息与校验位之间的循环校验,常用语对磁盘信息的传输、存储区的完整性校验。串口的基本结构SBUF:51单片机中的特殊寄存器,串行数据缓冲器(一个接收一个发送),两个其实是共用的一个地址99H,但是两个在物理上面是分开的。当发送使用时,就采用SBUF=XXX;  
发表于 2020-02-08
手把手教你单片机串口通信-基础篇
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD。com。cn, Inc。 All rights reserved
湖北快3走势 安徽快3 贵州快3计划 上海快三 幸运时时彩开奖结果 小米彩票登入 500万彩票 小米彩票平台 北京pk10 小米彩票主页