历史上的今天
今天是:2025年01月31日(星期五)
2020年01月31日 | 单片机+JQ6500语音模块使用代码
2020-01-31 来源:51hei
最近在家无聊做东西玩,要用一个模块驱动喇叭放提示音,一开始买的是WT588DM01图的就是自带8M Flash省心,结果TM还要另外买30几块钱的烧写器才能用。
后来又咬咬牙买了个JQ6500语音模块,插USB连电脑就能烧写mp3进去,果然还是深圳厂商洞察需求。
买是买来了,但是厂家配的资料还分3个版本,PCB外观都改了,PDF没更新,只好自己捣鼓,按着参考资料用个51试试手。
这是PDF里面的模块外面图,实际买来的长下面的样子
芯片是24脚,模块16脚。引出来的16个脚没变,就是模块PCB板上面有略微变化,但是不影响对模块引出来的16个脚直接使用。
模块接线原理图,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 } 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(实测),不然会没反应。
史海拾趣
|
学习Verilog三步走,一些未懂部分 //**************************************************************** // 入门篇: (秋干勿燥,冬去春来) //**************************************************************** 01. 建立项目 ...… 查看全部问答> |
|
NUM1 DW 5678H ,1234H ; 双精度数12345678H NUM2 DW 0ABCDH ,6789H ; 双精度数6789ABCDH MOV AX ...… 查看全部问答> |
|
各位: 我的串口测试程序在实际的硬件板子上可以打开串口(说明驱动已经加载,在注册表中也可以看到驱动加载) 但是当我短接2-3脚发送数据时程序却死在那里不动了,同一快电路板在XP下却可以通过超级终端实现自己发送接收! 具体程序如下: *** ...… 查看全部问答> |
|
用在机床数控上,ARM9 , linux操作系统,因为要显示加工图,不知道能不能支持液晶显示器?还有分辨率至少800X600,我看好多用LED的分辨率达不到这么高. 请大家推荐一块板子,要资料、驱动和技术支持完善的。 … 查看全部问答> |
|
http://community.eeworld.net/Expert/topic/5432/5432048.xml?temp=.2711756 在上面这贴中,hcd007 (猎人王) 在大伙都没完成解答之后,自己查阅相关的文档,找到后还与大伙一起分享,这样的人品很不错的,现在的坛子里有很多无答的贴子,不 ...… 查看全部问答> |
|
我15年的51单片机,6年的ARM。 ARM基本上没赚钱,以为小批量成本高,都被其他方案取代了。。。 51一直给我,更给老板赚钱。 现在基本上把ARM当成个人爱好了,还准备学习PIC,希望这个兄弟能带给我更多的财富和机会。 … 查看全部问答> |
|
请问大家,有没有什么资料是详细的解释错误编码的? 我今天出现了错误,但打出来就是这个“S_ioLib_NO_FILENAME”。 我觉得他写的太笼统了,我也不知道是那里错了,请问有没有这种资料。 当然要是你们知道这个问题怎么解决也请高手指点以下。 ...… 查看全部问答> |




