普中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段码重复

ABCDEFGDPHEX
0000000110xC0
1100111110xF9
2001001010xA4
3000011010xB0
4100110010x99
5010010010x92
6010000010x82
7000111110xF8
8000000010x80
9000110010x98
A000100010x88
b110000010x83
C011000110xC6
d100001010xA1
E011000010x86
F011100010x8E

实现步骤

创建项目

与上篇讲到的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引脚实现跑马灯)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/305941.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android---Kotlin 学习013

互操作性和可空性 Java 世界里所有对象都可能是 null&#xff0c;而 kotlin 里面不能随便给一个变量赋空值的。所有&#xff0c;kotlin 取调用 java 的代码就很容易出现返回一个 null&#xff0c;而 Kotlin 的接收对象不能为空&#xff0c;你不能想当然地认为 java 的返回值就…

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取相机当前实时帧率(C#)

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用UserSet功能保存和载入相机的各类参数&#xff08;C#&#xff09; Baumer工业相机Baumer工业相机的帧率的技术背景Baumer工业相机的帧率获取方式CameraExplorer如何查看相机帧率信息在NEOAPI SDK里通过函数获取相机帧率 Baume…

【Spark精讲】一文讲透Spark宽窄依赖的区别

宽依赖窄依赖的区别 窄依赖&#xff1a;RDD 之间分区是一一对应的宽依赖&#xff1a;发生shuffle&#xff0c;多对多的关系 宽依赖是子RDD的一个分区依赖了父RDD的多个分区父RDD的一个分区的数据&#xff0c;分别流入到子RDD的不同分区特例&#xff1a;cartesian算子对应的Car…

flutter 安卓使用高德插件黑屏

地址 https://lbs.amap.com/api/android-sdk/guide/create-project/android-studio-create-project 下面介绍的方式是Native配置 sdk&#xff0c;也就是需要手动下载到本地在引入的方式 1、添加 jar 文件&#xff1a; 将下载的地图 SDK 的 jar包复制到工程&#xff08;此处截…

Zookeeper-Zookeeper特性与节点数据类型详解

1.Zookeeper介绍 ZooKeeper 是一个开源的分布式协调框架&#xff0c;是Apache Hadoop 的一个子项目&#xff0c;主要用来解决分布式集群中应用系统的一致性问题。Zookeeper 的设计目标是将那些复杂目容易出错的分布式一致性服务封装起来&#xff0c;构成一高效可靠的原…

docker compose 部署 grafana + loki + vector 监控kafka消息

Centos7 随笔记录记录 docker compose 统一管理 granfana loki vector 监控kafka 信息。 当然如果仅仅是想通过 Grafana 监控kafka&#xff0c;推荐使用 Grafana Prometheus 通过JMX监控kafka 目录 1. 目录结构 2. 前提已安装Docker-Compose 3. docker-compose 自定义服…

如何批量提取pdf文件名到excel?

如何批量提取pdf文件名到excel&#xff1f;在大家整理PDF文档的时候会不会遇到下面这些问题&#xff0c;首先PDF过多&#xff0c;每个PDF文件都有自己的名字&#xff0c;我们想要分类排放的话非常麻烦&#xff0c;不仅耗费时间而且带来的收益非常低&#xff0c;然后即使我们整理…

手撕测试tcp服务器效率工具——以epoll和io_uring对比为例

服务器性能测试介绍 服务器的性能测试主要包括2部分&#xff1a; 并发量。能容纳多大的连接效率。在不崩坏的情况下能对报文的处理效率。 本文主要进行效率测试&#xff0c;看看基于epoll模型和io_uring模型的tcp服务器&#xff0c;谁的效率更高。 测试思路 客户端&#x…

3D 建模中的法线贴图解释

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 什么是 3D 建模中的法线贴图 3D 对象由多边形组成&#xff1a;平面、…

Java的maven

一.概念&#xff1a; 是一款用于管理和构建java项目的工具 作用: 方便项目的依赖管理 统一项目的结构,方便程序员开发及维护 提供了一套标准的项目构建流程,方便编译和构建 二.仓库类型: 本地仓库>自己计算机上的一个目录 中央仓库>由Maven团队维护的全球唯一的。…

C语言之进制转换

C语言之进制转换 一、引言二、十进制与二进制、八进制、十六进制三、二进制与八进制、十六进制四、八进制与十六进制 一、引言 在C语言中&#xff0c;经常使用的整数的进制有十进制、二进制、十六进制&#xff08;在C语言中以0x或0X为前缀&#xff09;、八进制&#xff08;在C…

圆中点算法

中心在原点&#xff0c;半径为 R 的圆的隐式函数方程为 F ( x , y ) x 2 y 2 − R 2 0 F(x, y) x^2 y^2 - R^2 0 F(x,y)x2y2−R20 把像素上的点的坐标代入上述隐式方程 八分法画圆算法 利用坐标轴和与坐标轴夹角 45 度的直线 原理 假设圆弧起点 x 0 x0 x0&#xff0…