当前位置: 首页 > news >正文

基于STM32单片机FM调频TEA5767功放收音机液晶显示设计

1 基于STM32单片机FM调频TEA5767功放收音机液晶显示设计

本设计基于STM32F103C8T6单片机,结合TEA5767调频收音机模块、LCD1602液晶显示模块、LM386音频功放电路以及按键输入电路,实现一个完整的FM收音机系统。该系统能够通过按键调整频率,在液晶屏上实时显示调谐后的频率,同时通过喇叭或耳机输出广播音频。该设计不仅具备较强的实用性,还能为学习者深入理解嵌入式系统、单片机外围电路以及音频处理提供实践价值。


2 系统功能介绍

本设计的主要功能如下:

  1. 通过LCD1602液晶模块实时显示FM收音机当前的工作频率,用户能够清晰了解调谐状态。
  2. 使用按键调节收音机的频率,频率调节范围在87.5MHz到108MHz之间。
  3. 采用TEA5767收音机模块作为前端调频接收单元,完成调频信号的接收与解调。
  4. 系统支持音频输出,用户可以通过喇叭或耳机收听,单板设计为耳机与喇叭二选一,避免信号冲突。
  5. LM386音频功放电路将收音机模块输出的低电平音频信号放大,驱动喇叭发声,实现声音输出。
  6. 按键控制部分设计为简洁的频率加减调节模式,便于快速操作。

系统整体具有操作简单、显示直观、声音清晰的特点,能够作为学习与应用的典型项目。


3 系统电路设计

3.1 STM32F103C8T6最小系统电路

STM32F103C8T6单片机作为系统的核心控制器,主要负责以下任务:

  • 通过I²C总线与TEA5767模块通信,实现频率设置与状态读取。
  • 通过GPIO接口读取按键输入,实现频率的增减调节。
  • 通过并行接口或模拟串行接口驱动LCD1602,实现频率数值的实时显示。
  • 对接收的信号进行逻辑处理并控制音频输出方式。

最小系统电路包含电源电路(3.3V稳压模块)、复位电路、晶振电路(8MHz外部晶振+内部PLL倍频)、下载接口(SWD/JTAG),保证单片机稳定运行。

3.2 TEA5767收音机模块电路

TEA5767是一款基于I²C总线控制的立体声FM收音机模块,具备高灵敏度和低噪声特点,常用于收音机及多媒体系统中。在本设计中,TEA5767主要实现以下功能:

  • 接收并解调87.5MHz至108MHz的FM调频广播信号。
  • 将解调后的低电平音频信号输出至功放电路。
  • 通过I²C与STM32进行数据通信,接收频率调节指令,并返回当前工作状态。
    TEA5767模块对外围电路要求不高,只需连接合适的天线、电源滤波电容以及I²C接口即可正常工作。

3.3 LCD1602液晶显示电路

LCD1602液晶模块用于显示当前调谐的频率信息。其主要特点如下:

  • 可显示两行字符,每行16个字符,满足频率显示需要。
  • 接口方式支持8位或4位并行总线,减少单片机I/O资源占用。
  • 通过初始化指令设置显示模式,能够实时更新显示数据。
    在本设计中,LCD1602用于显示收音机的当前频率,例如“FM: 98.5MHz”,方便用户操作。

3.4 按键电路

按键电路主要实现频率调节功能。设计方案如下:

  • 设置两个独立的按键,分别用于频率增加与减少。
  • 按键采用上拉电阻与单片机GPIO输入模式,按下时电平变化被检测到。
  • 程序中设置消抖处理,保证操作的准确性与稳定性。

3.5 LM386音频功放电路

LM386是一款常用的低电压音频功率放大器,适用于便携式收音机和小功率音响系统。本设计中LM386的作用如下:

  • 接收来自TEA5767的低电平音频信号并进行放大。
  • 输出功率能够驱动小型喇叭,音量适中,满足一般收听需求。
  • 外围电路简单,典型应用只需少量电阻电容即可实现稳定工作。
    此外,LM386还可以通过切换电路实现耳机与喇叭的二选一输出。

4 程序设计

程序设计是本系统的核心部分,涉及单片机与各外设的交互。以下对各部分进行详细介绍。

4.1 主程序框架

主程序负责系统初始化、模块调用、主循环控制。整体流程如下:

  1. 初始化系统时钟、GPIO、I²C、LCD1602。
  2. 初始化TEA5767频率至默认值(如98.0MHz)。
  3. 进入主循环,检测按键输入,执行频率调节。
  4. 将当前频率发送至LCD1602显示。
  5. 周期性读取TEA5767状态,保证频率更新与解调状态正确。
#include "stm32f10x.h"
#include "lcd1602.h"
#include "tea5767.h"
#include "key.h"float current_freq = 98.0; // 初始频率int main(void) {SystemInit();LCD1602_Init();TEA5767_Init();Key_Init();TEA5767_SetFreq(current_freq);LCD1602_DisplayString(0, 0, "FM Radio");LCD1602_DisplayFreq(current_freq);while (1) {if (Key_Scan(KEY_UP)) {current_freq += 0.1;if (current_freq > 108.0) current_freq = 108.0;TEA5767_SetFreq(current_freq);LCD1602_DisplayFreq(current_freq);}if (Key_Scan(KEY_DOWN)) {current_freq -= 0.1;if (current_freq < 87.5) current_freq = 87.5;TEA5767_SetFreq(current_freq);LCD1602_DisplayFreq(current_freq);}}
}

4.2 TEA5767模块程序设计

TEA5767通过I²C接口与STM32通信,需要编写相应驱动程序。主要功能包括:

  • 向TEA5767写入寄存器,设置工作频率。
  • 读取寄存器,确认工作状态。
  • 将目标频率转换为对应的PLL值后写入。
#include "i2c.h"
#define TEA5767_ADDR 0x60void TEA5767_SetFreq(float freq) {uint16_t pll = (uint16_t)(4 * (freq * 1000000 + 225000) / 32768);uint8_t data[5];data[0] = (pll >> 8) & 0x3F;data[1] = pll & 0xFF;data[2] = 0xB0; // 高灵敏度,立体声模式data[3] = 0x10; // 无静噪data[4] = 0x00;I2C_WriteBytes(TEA5767_ADDR, data, 5);
}

4.3 LCD1602程序设计

LCD1602驱动程序包括初始化、字符显示、字符串显示、数值转字符显示等功能。

void LCD1602_DisplayFreq(float freq) {char buf[16];sprintf(buf, "FM: %.1fMHz", freq);LCD1602_DisplayString(1, 0, buf);
}

4.4 按键程序设计

按键程序主要负责检测按下状态并消抖。

uint8_t Key_Scan(uint8_t key) {if (GPIO_ReadInputDataBit(GPIOA, key) == 0) {Delay_ms(10);if (GPIO_ReadInputDataBit(GPIOA, key) == 0) {while (GPIO_ReadInputDataBit(GPIOA, key) == 0);return 1;}}return 0;
}

5 总结

本设计基于STM32F103C8T6单片机,结合TEA5767收音机模块、LCD1602液晶、LM386功放以及按键电路,完成了一套完整的FM调频收音机系统。系统实现了频率调节、液晶显示与音频播放的功能,频率范围覆盖87.5MHz至108MHz,能够满足日常收听需求。
从硬件电路设计到程序实现,项目涵盖了单片机应用的多个方面:I²C通信、液晶驱动、音频功放、按键输入等,具有较强的综合性与实用性。该系统不仅能够作为电子设计的实践项目,还能帮助学习者深入掌握嵌入式开发的实际技能,为进一步的系统集成与应用拓展奠定基础。

http://www.xdnf.cn/news/1469539.html

相关文章:

  • Zynq-7000 上 RT-Thread 的 MMU 与 SMP 优势分析
  • 七彩喜智慧养老:科技向善,让“养老”变“享老”的智慧之选
  • 23种设计模式——桥接模式 (Bridge Pattern)详解
  • 极大似然估计与概率图模型:统计建模的黄金组合
  • 洛谷 P1099 [NOIP 2007 提高组] 树网的核-普及+/提高
  • ShareX神操作:多区域截图+特效功能!
  • linux ubi文件系统
  • Linux 文件系统及磁盘相关知识总结
  • Webpack 有哪些特性?构建速度?如何优化?
  • 前端开发vscode插件 - live server
  • 【SuperSonic】:PluginParser 插件解析器
  • 雅菲奥朗SRE知识墙分享(六):『混沌工程的定义与实践』
  • 十二、软件系统分析与设计
  • Linux:进程信号理解
  • Day21_【机器学习—决策树(2)—ID3树 、C4.5树、CART树】
  • stm32——NVIC,EXIT
  • RHEL7.9、RHEL9.3——源码安装MySQL
  • 人工智能领域、图欧科技、IMYAI智能助手2025年8月更新月报
  • 辗转相除法(欧几里得算法)的证明
  • mysql进阶语法(视图)
  • 25高教社杯数模国赛【A题国奖核心成品论文+问题解析】第一弹
  • 如何提升技术架构设计能力?
  • 保姆级 i18n 使用攻略,绝对不踩坑(帮你踩完了)
  • 《C++ printf()函数的深度解析》
  • vue 经常写的echarts图表模块结构抽取
  • 串口通信—UART
  • 大尺度空间模拟预测与数字制图技术
  • 面向制造与装配的公差分析:成本控制与质量提升方法​
  • 拿到一组数据在mars3d上渲染报错排查思路
  • HTML 各种标签的使用说明书