STM32-TM1640-点数码管计数

本文介绍了如何使用STM32通过串行通信方式驱动TM1640数码管,详细讲解了通信时序、初始化、延时函数以及command1、command2和command3函数的功能。数码管初始化涉及GPIO配置,延时函数精确到1us,命令发送函数实现了数据传输,主函数中counter计数用于显示动态效果。

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

数码管功能

说明:在哔哩哔哩跟随UP主铁头山羊学习,所有代码均来自铁头山羊B站课堂或者根据铁头山羊代码修改。

利用TM1640芯片,串行通信方式,STM3两个GPIO进行通信。

功能说明

1、 两个GPIO进行通信,GPIOA_PIN–DIN;GPIOA_PIN1—CLK。
2、 通信方式主要是串行通信方式,通信方式软件编写:
 读懂时序图,包括起始位、数据位、结束位。
 在输入数据时当CLK是高电平时,DIN上的信号必须保持不变;只有CLK上的时钟信号为低电平时,DIN上的信号才能改变。数据的输入总是低位在前,高位在后传输。
 数据输入的开始条件是CLK为高电平时,DIN由高变低。
 结束条件是CLK为高时,DIN由低电平变为高电平。
 波形时长根据时序特性来延时,本次编程使用1us。
在这里插入图片描述
在这里插入图片描述

3、 显示数据包括三个命令,其中command2中的data最多有16个,即可以同时显示16个数码管,如图
在这里插入图片描述

4、 command1:主要设置数据命令,本次设置为地址自动加1模式。
在这里插入图片描述

5、 command2:主要设置地址,以及导入显示数据。
在这里插入图片描述

6、 command3:主要设置显示亮度。
在这里插入图片描述

7、 数码管原理图连接。
在这里插入图片描述

数码管初始化函数

TM1640通信电平位5V,单片机IO电平为3.3V,所以需要外接上拉到5V,采用开漏模式。


//TM1640初始化
void TM1640_Init()
{
   
	//GPIOA_PIN_0--Data; GPIOA_PIN_1--Clk   开漏模式
	GPIO_InitTypeDef gpioinit;
	gpioinit.Pin = GPIO_PIN_0 | GPIO_PIN_1;
	gpioinit.Mode = GPIO_MODE_OUTPUT_OD;
	gpioinit.Speed = GPIO_SPEED_FREQ_HIGH;

	__HAL_RCC_GPIOA_CLK_ENABLE();
	HAL_GPIO_Init(GPIOA,&gpioinit);
	HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0 | GPIO_PIN_1, GPIO_PIN_SET);
}

延时函数

精确到1us。


//延时函数,最小1us
void Delayus(uint32_t us)
{
   
	uint32_t n = SystemCoreClock / 1000000 / 8 * us
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值