JQ6500語音模塊詳解(STM32)

目錄

一、介紹

二、傳感器原理

1.原理圖

2.引腳描述

三、程序設計

main文件

usart.h文件

usart.c文件

四、實驗效果?

五、資料獲取

項目分享


一、介紹

? ? ? ??JQ6500是一種支持串口驅動的語音模塊,提供串口的MP3芯片,集成了MP3WMV的硬解碼。同時軟件支持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;}elsekey_state = 0;if(key_state){switch(key_num){case 1:music_play(1);LED_Toggle();OLED_ShowNum(56,30,1,1,16,1);		//1break;case 2:music_play(2);LED_Toggle();OLED_ShowNum(56,30,2,1,16,1);		//2break;case 3:music_play(3);LED_Toggle();OLED_ShowNum(56,30,3,1,16,1);		//3break;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;	//波特率設置:9600USART_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);  //初始化USART1USART_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]);}
}

四、實驗效果?

五、資料獲取

項目分享

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/78855.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/78855.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/78855.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何讓自己的博客可以在百度、谷歌、360上搜索到(讓自己寫的CSDN博客可以有更多的人看到)

發現自己寫的博客文章名復制&#xff0c;然后粘貼到百度進行搜索&#xff0c;發現搜索不到自己的&#xff0c;但是會顯示其他人的CSDN博客。于是查找相關資料&#xff0c;整理出以下搜索引擎資源收錄入口&#xff0c;把自己的文章鏈接輸入進去&#xff0c;然后經過審核通過后&a…

1. 用戶之窗

前端開發簡介 1. 什么是前端&#xff1f; 前端開發&#xff08;Front-End Development&#xff09;是構建網站或應用 用戶直接交互界面 的技術領域&#xff0c;涵蓋&#xff1a; 視覺呈現 &#xff08;布局、色彩、動畫&#xff09;交互邏輯 &#xff08;點擊、滾動、表單&a…

無過擬合的記憶:分析大語言模型的訓練動態

Kushal Tirumala? Aram H. Markosyan? Luke Zettlemoyer Armen Aghajanyan Meta AI 研究 {ktirumala,amarkos,lsz,armenag}fb.com 原文鏈接&#xff1a;[2210.09262] Physics-Driven Convolutional Autoencoder Approach for CFD Data Compressions 摘要 盡管超大語言模型…

黑馬Redis(三)黑馬點評項目

優惠卷秒殺 一、全局唯一ID 基于Redis實現全局唯一ID的策略&#xff1a; Component RequiredArgsConstructor public class RedisIdWorker {private static final Long BEGIN_TIMESTAMP1713916800L;private static final int COUNT_BITS 32;Resourceprivate final StringRed…

flume----初步安裝與配置

目錄標題 **flume的簡單介紹**?flume的**核心組件**?**核心特點** **安裝部署**1&#xff09;**解壓安裝包**2&#xff09;**修改名字** **&#xff08;配置文件時&#xff0c;更方便&#xff09;****3&#xff09;??配置文件**4&#xff09;**兼容Hadoop**5&#xff09;**…

深度整合Perforce P4+Jira+Confluence:游戲開發團隊協作工具鏈搭建指南

現場對話 游戲開發團隊最頭疼的版本管理問題是什么&#xff1f; SVN宕機&#xff1f; Git倉庫爆炸&#xff1f; 還是美術資源管理一團亂&#xff1f; 在4月11-12日的GGS 2025全球游戲峰會上&#xff0c;Perforce中國授權合作伙伴-龍智的銷售和技術支持團隊&#xff0c;與行業…

k8s基本概念-YAML

YAML介紹 YAML是“YAML Aint a Markup Language” (YAML不是一種置標語言)的遞歸縮進寫,早先YAML的意思其實是:“Yet Another Markup Language”(另一種置標語言) YAML是一個類似XML、JSON的標記性語言。YAML強調以數據為中心,并不是以標識語言為重點。因而YAML本身的定義…

ECharts散點圖-散點圖20,附視頻講解與代碼下載

引言&#xff1a; ECharts散點圖是一種常見的數據可視化圖表類型&#xff0c;它通過在二維坐標系或其它坐標系中繪制散亂的點來展示數據之間的關系。本文將詳細介紹如何使用ECharts庫實現一個散點圖&#xff0c;包括圖表效果預覽、視頻講解及代碼下載&#xff0c;讓你輕松掌握…

Infrared Finance:Berachain 生態的流動性支柱

在加密市場中&#xff0c;用戶除了參與一級和二級交易&#xff0c;還有一種低門檻參與的就是空投。從 2021 年 DeFi 成為主流開始&#xff0c;空投一直都是“以小搏大”的機會&#xff0c;通過參與項目早期的鏈上交互和任務以獲取空投獎勵&#xff0c;近幾年已成為一種廣受歡迎…

附1:深度解讀:《金融數據安全 數據安全分級指南》——數據分類的藝術專欄系列

文章目錄 一、文件背景與意義1.1 文件背景1.2 文件意義 二、文件結構與核心內容2.1 文件結構概述2.2 核心內容解析2.2.1 范圍與適用對象2.2.2 數據安全定級目標與原則2.2.3 數據安全定級要素2.2.4 要素識別2.2.5 數據安全級別劃分 三、定級方法與流程3.1 定級流程3.2 級別變更機…

vue mixin混入與hook

mixin混入是 ?選項式 API?&#xff0c;在vue3-Composition API <script setup> 中無法直接使用&#xff0c;需通過 setup() 函數轉換 vue2、vue3選項式API: // mixins/mixin.js export const mixin {methods: {courseType(courseLevel) {const levelMap {1: 初級,…

Excel如何安裝使用EPM插件并且漢化?

Excel如何使用EPM插件 Excel如何使用EPM插件一、安裝EPM插件二、啟動EPM插件三、插件漢化設置 Excel如何使用EPM插件 一、安裝EPM插件 在安裝EPM插件時&#xff0c;若運行安裝包后出現報錯提示&#xff0c;通常是因為系統缺少 Visual Studio 2010 組件&#xff0c;需先安裝該…

vue3-springboot-mysql的docker部署

Docker配置原理與部署文檔 概述 本文檔詳細說明RuoYi-Vue與BladeX集成項目的Docker部署原理&#xff0c;包括配置文件的作用、相互關系及數據流動。通過三個核心配置文件&#xff08;docker-compose.yml、Dockerfile和docker-entrypoint.sh&#xff09;&#xff0c;實現了應用…

第十二天 使用Unity Test Framework進行自動化測試 性能優化:Profiler分析、內存管理

前言 在完成游戲核心功能開發后,如何確保項目質量并成功發布到各大平臺?本文將從自動化測試到商店上架,手把手教你構建完整的游戲開發閉環。使用Unity 2022 LTS版本進行演示,所有代碼均經過實際項目驗證。 一、自動化測試實戰(Unity Test Framework) 1.1 測試框架搭建 …

【專題四】前綴和(3)

&#x1f4dd;前言說明&#xff1a; 本專欄主要記錄本人的基礎算法學習以及LeetCode刷題記錄&#xff0c;按專題劃分每題主要記錄&#xff1a;&#xff08;1&#xff09;本人解法 本人屎山代碼&#xff1b;&#xff08;2&#xff09;優質解法 優質代碼&#xff1b;&#xff…

深度解析:TextRenderManager——Cocos Creator藝術字體渲染核心類

一、類概述 TextRenderManager 是 Cocos Creator 中實現動態藝術字體渲染的核心單例類。它通過整合資源加載、緩存管理、異步隊列和自動布局等功能&#xff0c;支持普通字符模式和圖集模式兩種渲染方案&#xff0c;適用于游戲中的動態文本&#xff08;如聊天內容、排行榜&…

【漫話機器學習系列】229.特征縮放對梯度下降的影響(The Effect Of Feature Scaling Gradient Descent)

特征縮放對梯度下降的影響&#xff1a;為什么特征標準化如此重要&#xff1f; 在機器學習和深度學習中&#xff0c;梯度下降是最常用的優化算法之一。然而&#xff0c;很多人在訓練模型時會遇到收斂速度慢、訓練不穩定的問題&#xff0c;其中一個重要原因就是特征未進行適當的…

【神經網絡與深度學習】批標準化(Batch Normalization)和層標準化(Layer Normalization)

引言 在深度學習中&#xff0c;標準化技術&#xff08;Normalization&#xff09;是提高神經網絡訓練效率和性能的重要工具。其中&#xff0c;批標準化&#xff08;Batch Normalization, BN&#xff09;和層標準化&#xff08;Layer Normalization, LN&#xff09;是兩種常用的…

OpenHarmony之電源管理子系統公共事件定義

OpenHarmony之電源管理子系統公共事件定義 電源管理子系統面向應用發布如下系統公共事件&#xff0c;應用如需訂閱系統公共事件&#xff0c;請參考公共事件接口文檔。 COMMON_EVENT_BATTERY_CHANGED 表示電池充電狀態、電平和其他信息發生變化的公共事件的動作。 值&#x…

linux 環境下 c++ 程序打印 core dump 信息

linux 信號機制 軟中斷信號 Signal&#xff0c;簡稱信號&#xff0c;用來通知進程發生了異步事件&#xff0c;進程之間可以互相通過系統調用 kill 等函數來發送軟中斷信號。內核也可以因為內部事件而給進程發送信號&#xff0c;通知進程發生了某個事件。 進程對信號的處理 進…