普中STM32-PZ6806L开发板(HAL库函数实现-7段共阳数码管数字显示)

简介

通过操作GPIO输出电平实现驱动单个共阳数码管 0 ~ F的显示。

电路原理图

数码管电路原理图
在这里插入图片描述
数码管与主芯片电路原理图
在这里插入图片描述

其他知识

1. 由原理图可知, 共阳极已接VCC, 所以只需要控制GPIO输出低电平就可以点亮7 + . 的数码管了.
2. 驱动管与主芯片引脚对应关系
	A -> PC0、B->PC1 .... DP->PC7, 下图是驱动的每一段示意图

在这里插入图片描述
3. 共阳数码管段码
通过下面的表我们能看出来从0 ~ F显示需要点亮的数码管,共阳数码管, 低电平点亮, 0就是点亮,1是熄灭, 也看出来为什么要有些字母小写, 因为跟数字段码重复了, 例如b跟d的大写字母段码与8和0段码重复

A B C D E F G DP HEX
0 0 0 0 0 0 0 1 1 0xC0
1 1 0 0 1 1 1 1 1 0xF9
2 0 0 1 0 0 1 0 1 0xA4
3 0 0 0 0 1 1 0 1 0xB0
4 1 0 0 1 1 0 0 1 0x99
5 0 1 0 0 1 0 0 1 0x92
6 0 1 0 0 0 0 0 1 0x82
7 0 0 0 1 1 1 1 1 0xF8
8 0 0 0 0 0 0 0 1 0x80
9 0 0 0 1 1 0 0 1 0x98
A 0 0 0 1 0 0 0 1 0x88
b 1 1 0 0 0 0 0 1 0x83
C 0 1 1 0 0 0 1 1 0xC6
d 1 0 0 0 0 1 0 1 0xA1
E 0 1 1 0 0 0 0 1 0x86
F 0 1 1 1 0 0 0 1 0x8E

实现步骤

创建项目

与上篇讲到的8个LED的电路一致, 初始化参考 普中STM32-PZ6806L开发板(HAL库函数实现-批量操作GPIO引脚实现跑马灯)

添加用户代码

segment_display.c

#define SEG_PORT GPIOC

#define SEG_MAX_NUMBER 15  // 显示最大数字
#define SEG_MANY_NUMBER_COUNT 16 // 显示数字个数
#define SEG_ALL_SEG_CODE 0xFF // 全段选择的码
uint8_t seg_code[SEG_MANY_NUMBER_COUNT] = 
										{
    0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,
											0x80, 0x98, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E };

void Seg_ClearDisplay()
{
   
	HAL_GPIO_WritePin(SEG_PORT, SEG_ALL_SEG_CODE, GPIO_PIN_SET);
}
											
void Seg_NumberDisplay(uint16_t num)
{
   
	if (num > SEG_MAX_NUMBER)
	{
   
		return;
	}
	Seg_ClearDisplay();
	
	HAL_GPIO_WritePin(SEG_PORT, ~seg_code[num], GPIO_PIN_RESET);
}

void Seg_DoForeachNumberAction(uint32_t delay_ms, uint16_t time)
{
   
	int i = 0;
	while (time--)
	{
   
		for (i = 0; i < SEG_MANY_NUMBER_COUNT; ++i)
		{
   
			Seg_NumberDisplay(i);
			HAL_Delay(delay_ms);
		}
	}
}

main.c

int main()
{
   
...
while(1)
{
   
	Seg_DoForeachNumberAction(1000, 1);
}
...
}

代码解读

HAL_GPIO_WritePin(SEG_PORT, ~seg_code[num], GPIO_PIN_RESET);
GPIO_PIN_RESET : 低电平点亮, GPIO_PIN_RESET就是点亮
~seg_code[num] : 段码是按照引脚输出进行取值的, 而现在是选择引脚, 所以与逻辑刚好相反, 所以要按位取反

共赏

普中STM32-PZ6806L开发板(HAL库函数实现-7段共阳数码管数字显示)

代码

不需要下载, 基本代码上面都提供了

参考

普中STM32-PZ6806L开发板(HAL库函数实现-批量操作GPIO引脚实现跑马灯)

最近更新

  1. TCP协议是安全的吗?

    2023-12-29 07:04:05       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-29 07:04:05       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-29 07:04:05       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-29 07:04:05       18 阅读

热门阅读

  1. 第41节: Vue3 watch函数

    2023-12-29 07:04:05       42 阅读
  2. uniapp 目录结构

    2023-12-29 07:04:05       35 阅读
  3. K8S Ingress-Nginx导出TCP端口

    2023-12-29 07:04:05       39 阅读
  4. k8s之服务发现

    2023-12-29 07:04:05       39 阅读
  5. springboot/spring cloud 手动控制事务提交

    2023-12-29 07:04:05       37 阅读
  6. uniapp怎么存储用户登录的所有数据?

    2023-12-29 07:04:05       40 阅读
  7. uniapp:富文本回显

    2023-12-29 07:04:05       42 阅读