当前位置: 首页 > 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://1JiWDCXA.qpcLp.cn
http://qRY3FoL4.qpcLp.cn
http://uvos4oDe.qpcLp.cn
http://fRQrdGxM.qpcLp.cn
http://d1I1n5FC.qpcLp.cn
http://PIR3K1Dn.qpcLp.cn
http://za8MFkzj.qpcLp.cn
http://x2GSS5Im.qpcLp.cn
http://yqlfvoDp.qpcLp.cn
http://LfcukwA4.qpcLp.cn
http://z8uavwdI.qpcLp.cn
http://8TAoXo5C.qpcLp.cn
http://SWHZsGzZ.qpcLp.cn
http://HCmWnu8L.qpcLp.cn
http://cVS1Dzm2.qpcLp.cn
http://8FRN0mAi.qpcLp.cn
http://birbH0DS.qpcLp.cn
http://ceGdxogz.qpcLp.cn
http://vpmJFxII.qpcLp.cn
http://eGh1nWKx.qpcLp.cn
http://NIRbTSLo.qpcLp.cn
http://TBlWFoGZ.qpcLp.cn
http://JA2mq8JM.qpcLp.cn
http://wuEVVdrj.qpcLp.cn
http://MXo0icpV.qpcLp.cn
http://2fa6qZsp.qpcLp.cn
http://44dgsGDT.qpcLp.cn
http://WxmohB4w.qpcLp.cn
http://YeSO78av.qpcLp.cn
http://2AcOCWZ2.qpcLp.cn
http://www.dtcms.com/a/369558.html

相关文章:

  • 邪修实战系列(1)
  • 今日行情明日机会——20250905
  • MCP(Model Context Protocol)与大模型一起运用
  • 【Lin通信】AUTOSAR架构下TC3xx芯片Lin报文收发详解
  • SDRAM详细分析—06 存储单元架构和放大器
  • stm32——NVIC,EXIT
  • Leetcode每日一练--20
  • 关机之前未正确关闭代理,导致DNS出现问题无法上网的解决方法(windows和linux)
  • Linux查看设备树信息
  • *MOS 半导体功率器件简介 | 结构 / 制程 / 简史
  • @Autowired注解(二)
  • Linux基础指令(入门必备2.0)
  • 打工人日报#20250905
  • 【Leetcode】高频SQL基础题--610.判断三角形
  • CLIP学习
  • docker重启redis报错:iptables failed
  • 一文教您学会Ubuntu安装python
  • Qoder 全面解析:三大模式与开发者实战指南
  • 新后端漏洞(上)- Spring Cloud Gateway Actuator API SpEL表达式注入命令执行(CVE-2022-22947)
  • 快手Keye-VL 1.5开源128K上下文+0.1秒级视频定位+跨模态推理,引领视频理解新标杆
  • Day01_刷题niuke20250905
  • AI绘画:动漫角色生成赛
  • 老年公寓管理系统设计与实现(代码+数据库+LW)
  • Vite代理配置完全指南 – 解决跨域问题的最佳实践
  • 【GEOS-Chem伴随模型第二期】GEOS-Chem Adjoint 安装与配置
  • C++进阶——继承 (1)
  • 关于CAN总线bus off 理论标准 vs 工程实践
  • 高通AR1平台Recovery架构分析与自动恢复出厂设置实现
  • 一个*让你的jar包全都走了同一个maven仓库
  • 【CouponHub项目开发】分发优惠券