目次
一、介绍
二、传感器原理
1.原理图
2.引脚形貌
三、步伐计划
main文件
usart.h文件
usart.c文件
四、实验结果
五、资料获取
项目分享
一、介绍
JQ6500是一种支持串口驱动的语音模块,提供串口的MP3芯片,集成了MP3、WMV的硬解码。同时软件支持TF卡驱动,支持电脑直接更新SPI Flash的内容,支持FAT16、FAT32文件体系。通过简单的串口指令即可完成播放指定的音乐,以及怎样播放音乐等功能,利用方便,稳固可靠。
以下是JQ6500语音模块的参数:
型号
| JQ6500
| 工作电压
| 3.3~5V
| 额定电流
| 20mA
| UART接口
| 尺度串口,TTL电平,波特率可设
| 工作温度
| -40~80℃
| 湿度
| 5%~95%
| 哔哩哔哩视频链接:
JQ6500语音模块(STM32)
(资料分享见文末)
二、传感器原理
1.原理图
2.引脚形貌
三、步伐计划
1.利用STM32F103C8T6利用JQ6500语音模块连接扬声器,通过按键控制播放几段音频。
KEY
| PA0
| JQ6500_TX
| PA10
| JQ6500_RX
| PA9
| OLED_SCL
| PB11
| OLED_SDA
| PB10
| main文件
- #include "stm32f10x.h"
- #include "led.h"
- #include "usart.h"
- #include "delay.h"
- #include "oled.h"
- #include "key.h"
- /*****************辰哥单片机设计******************
- STM32
- * 项目 : JQ6500语音模块实验
- * 版本 : V1.0
- * 日期 : 2025.2.7
- * MCU : STM32F103C8T6
- * 接口 : 参看usart.h
- * BILIBILI : 辰哥单片机设计
- * CSDN : 辰哥单片机设计
- * 作者 : 辰哥
- **********************BEGIN***********************/
- int key = 0;
- int key_state = 0;
- int key_num = 0;
- int main(void)
- {
-
- SystemInit();//配置系统时钟为72M
- delay_init(72);
- LED_Init();
- LED_On();
- USART1_Config();//串口初始化
- Key_Init();
- OLED_Init();
- printf("Start \n");
- delay_ms(1000);
-
- OLED_Clear();
- //显示“语音序号:”
- OLED_ShowChinese(0,0,0,16,1);
- OLED_ShowChinese(16,0,1,16,1);
- OLED_ShowChinese(32,0,2,16,1);
- OLED_ShowChinese(48,0,3,16,1);
- OLED_ShowChar(64,0,':',16,1);
- while (1)
- {
- key = Key_GetData();
- if(key)
- {
- key_state = 1;
- key_num++;
- if(key_num>3)key_num=1;
- }
- else
- key_state = 0;
-
- if(key_state)
- {
- switch(key_num)
- {
- case 1:
- music_play(1);
- LED_Toggle();
- OLED_ShowNum(56,30,1,1,16,1); //1
- break;
-
- case 2:
- music_play(2);
- LED_Toggle();
- OLED_ShowNum(56,30,2,1,16,1); //2
- break;
-
- case 3:
- music_play(3);
- LED_Toggle();
- OLED_ShowNum(56,30,3,1,16,1); //3
- break;
-
- default:
- break;
- }
- }
- }
- }
复制代码 usart.h文件
- #ifndef __USART1_H
- #define __USART1_H
- #include "stm32f10x.h"
- #include <stdio.h>
- /*****************辰哥单片机设计******************
- STM32
- * 项目 : JQ6500语音模块实验
- * 版本 : V1.0
- * 日期 : 2025.2.7
- * MCU : STM32F103C8T6
- * 接口 : 参串口1
- * BILIBILI : 辰哥单片机设计
- * CSDN : 辰哥单片机设计
- * 作者 : 辰哥
- **********************BEGIN***********************/
- void USART1_Config(void);
- int fputc(int ch, FILE *f);
- void USART1_printf(USART_TypeDef* USARTx, uint8_t *Data,...);
- void UART1SendByte(unsigned char SendData);
- void music_play(unsigned char dat);
- #endif /* __USART1_H */
复制代码 usart.c文件
- #include "usart.h"
- #include <stdarg.h>
- /*****************辰哥单片机设计******************
- STM32
- * 项目 : JQ6500语音模块实验
- * 版本 : V1.0
- * 日期 : 2025.2.7
- * MCU : STM32F103C8T6
- * 接口 : 参串口1
- * BILIBILI : 辰哥单片机设计
- * CSDN : 辰哥单片机设计
- * 作者 : 辰哥
- **********************BEGIN***********************/
- void USART1_Config(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
- USART_InitTypeDef USART_InitStructure;
- /* 使能 USART1 时钟*/
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE);
- /* USART1 使用IO端口配置 */
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOA, &GPIO_InitStructure);
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入
- GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化GPIOA
-
- /* USART1 工作模式配置 */
- USART_InitStructure.USART_BaudRate = 9600; //波特率设置:9600
- USART_InitStructure.USART_WordLength = USART_WordLength_8b; //数据位数设置:8位
- USART_InitStructure.USART_StopBits = USART_StopBits_1; //停止位设置:1位
- USART_InitStructure.USART_Parity = USART_Parity_No ; //是否奇偶校验:无
- USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; //硬件流控制模式设置:没有使能
- USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;//接收与发送都使能
- USART_Init(USART1, &USART_InitStructure); //初始化USART1
- USART_Cmd(USART1, ENABLE);// USART1使能
- }
- /* 描述 :重定向c库函数printf到USART1*/
- int fputc(int ch, FILE *f)
- {
- /* 将Printf内容发往串口 */
- USART_SendData(USART1, (unsigned char) ch);
- while (!(USART1->SR & USART_FLAG_TXE));
-
- return (ch);
- }
- /*发送一个字节数据*/
- void UART1SendByte(unsigned char SendData)
- {
- USART_SendData(USART1,SendData);
- while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
- }
- void music_play(unsigned char dat)
- {
- unsigned char music_code[6] = {0X7E,0X04,0X03,0X00,0X01,0XEF};
- int i;
- music_code[4] = dat;
- for(i=0;i<6;i++)
- {
- UART1SendByte(music_code[i]);
- }
- }
复制代码 四、实验结果
五、资料获取
项目分享
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |