STM32-TM1640-点数码管计数

数码管功能

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

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

功能说明

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

3、 显示数据包括三个命令,其中command2中的data最多有16个,即可以同时显示16个数码管,如图
STM32-TM1640-点数码管计数_第3张图片

4、 command1:主要设置数据命令,本次设置为地址自动加1模式。
STM32-TM1640-点数码管计数_第4张图片

5、 command2:主要设置地址,以及导入显示数据。
STM32-TM1640-点数码管计数_第5张图片

6、 command3:主要设置显示亮度。
STM32-TM1640-点数码管计数_第6张图片

7、 数码管原理图连接。
STM32-TM1640-点数码管计数_第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;

		do

你可能感兴趣的:(STM32,fpga开发,单片机,嵌入式硬件)