STM32实战项目-数码管

本文详细介绍了如何使用STM32微控制器来驱动TM1620数码管,包括硬件电路设计、TM1620驱动IC的特性、指令设置、软件编程中的串口配置、数码管译码、写入函数以及初始化和亮度调节功能。程序在上电后每隔50ms数码管计数,并可通过触摸按键1调节8级亮度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

程序实现功能:

1、上电后,数码管间隔50ms计数;

2、触摸按键1调节数码管亮度,8个等级;


目录

1、硬件电路

 1.1数码管

1.2TIM1620 驱动电路

 二、技术讲解

2.1概述 

2.2特性

2.3引脚说明

 3.指令说明及配置

3.1显示模式命令设置 

 3.2写数据地址模式

 3.3显示控制命令设置

 3.4显示寄存器地址

3.5数码管显示驱动 

 4.软件编程

4.1串口高低电平配置 

 4.2数码管译码配置

 4.3写入函数

4.4初始化TIM1620函数

 4.5数码管显示函数

 4.6运行函数

 4.7回调函数-按键控制亮度


 


1、硬件电路

 1.1数码管

 

1.2TIM1620 驱动电路

 

 二、技术讲解

2.1概述 

TM1620是一种LED(发光二极管显示器)驱动控制专用IC,内部集成有MCU数字接口、数据锁存器、 LED驱动等电路。

2.2特性

• 采用CMOS工艺
• 显示模式(8 段× 6 位~10段× 4位
• 辉度调节电路(8 级占空比可调)
串行接口(CLK,STB,DIN)
• 振荡方式:内置RC振荡
• 内置上电复位电路
• 内置数据锁存电路
• 内置针对LED反偏漏电导致暗亮问题优化电路
• 抗干扰能力强
• 封装形式: SOP20

2.3引脚说明

TIM1620需要通过引脚CLK、DIN、STB 控制串行数据传输,所以优先配置好GPIO串口,具体配置如下图所示:

 3.指令说明及配置

3.1显示模式命令设置 

该指令用来设置选择段和位的个数(4~6 位,8~10 段) 。当该指令被执行时,显示被强制关闭。 在显示模式不变时,显存内的数据不会被改变,显示控制命令控制显示开关。如下图所示:


 为了移植方便,在我们的显示函数声明部分,将所以可能的选项枚举出来,具体代码如下:

/显示模式
typedef enum
{
	Disp_Mode_GRID4_SEG10  = 0x00,
	Disp_Mode_GRID5_SEG9   = 0x01,
	Disp_Mode_GRID6_SEG8   = 0x02,
} Disp_Mode_t;

 3.2写数据地址模式

该指令用来设置数据写和读,B1和B0位不允许设置01或11。具体如下图所示:


  为了移植方便,在我们的显示函数声明部分,将所以可能的选项枚举出来,具体代码如下:

//写数据模式
typedef enum
{
	Write_Data_Addr_Fix      = 0x44,
	Write_Data_Addr_Auto_Add = 0x40,
} Write_Data_Addr_Mode_t;

 3.3显示控制命令设置

该指令用来设置显示的开关以及显示亮度调节。共有8级辉度可供选择进行调节。如下图所示:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值