【蓝桥杯嵌入式】拓展板之数码管显示
文章目录
- 硬件电路
- 连接方式
- 函数实现
- 文章福利
硬件电路
通过上述原理图,可知拓展板上的数码管是一个共阴数码管,也就是说某段数码管接上高电平时,就会点亮。
上述原理图还给出一个提示,即:三个数码管分别与三个74HC595移位缓存器并联,而三个移位寄存器串联。
74LS595芯片实际上是一个8位串行输入、并行输出的位移缓存器。也就是说数据是一个一个进入,但是一起输出的。
当SCK处于上升沿时,串行数据由SDL输入到内部的8位位移缓存器,并由Q7’输出;而并行输出则是在LCK处于上升沿时,将在8位位移缓存器的数据存入到8位并行输出缓存器。当串行数据输入端OE的控制信号为低使能时,并行输出端的输出值等于并行输出缓存器所存储的值。
点亮三个数码管需要3*8=24个数据,而一个74LS595移位寄存器只能够存储8位数据,其存储值远小于输入值。
根据上述的原理,可知:上图中seg3数码管的数据是经seg2数码管位移过来的,而seg2数码管数据是经seg1数码管位移过来。也就是说数码管刷新的顺序为seg3->seg2->seg1。
共阴数码管显示说明
首先来看看一个数码管的段码分布吧!🤤🤤🤤
也就是说一个数码管是由八段组成,a段为最低位,dp为最高位。
由于拓展板的数码管是一个共阴数码管(1有效)。那么显示数值的段码由来示例分析为:
显示值 | dp | g | f | e | d | c | b | a | 十六进制表示 |
---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0x3f |
1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0x06 |
0. | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0xbf |
1. | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0x86 |
连接方式
经过查找原理图,不难发现74LS595芯片的三个输入端(SER、PCLK、SCK)实际上分别与PA1、PA2、PA3引脚相连接。
因此,其连接方式如下图:
函数实现
cubeMx配置
函数示例
声明定义:
// 声明GPIO分组及引脚
#define RCLK_PIN GPIO_PIN_2
#define RCLK_PORT GPIOA
#define SER_PIN GPIO_PIN_1
#define SER_PORT GPIOA
#define SCK_PIN GPIO_PIN_3
#define SCK_PORT GPIOA// 声明函数别名
#define RCLK_H HAL_GPIO_WritePin(RCLK_PORT, RCLK_PIN, GPIO_PIN_SET)
#define RCLK_L HAL_GPIO_WritePin(RCLK_PORT, RCLK_PIN, GPIO_PIN_RESET)#define SER_H HAL_GPIO_WritePin(SER_PORT, SER_PIN, GPIO_PIN_SET)
#define SER_L HAL_GPIO_WritePin(SER_PORT, SER_PIN, GPIO_PIN_RESET)#define SCK_H HAL_GPIO_WritePin(SCK_PORT, SCK_PIN, GPIO_PIN_SET)
#define SCK_L HAL_GPIO_WritePin(SCK_PORT, SCK_PIN, GPIO_PIN_RESET)
函数实现:
/************ 共阴数码管段码 *****************/
// 0 1 2 3 4 5 6 7 8 9 - 熄灭
u8 segTab[] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x40, 0x00,
// 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. - 熄灭 0xbf, 0x86, 0xdb, 0xcf, 0xe6, 0xed, 0xfd, 0x87, 0xff, 0xef, 0x40, 0x00,
// A B C D E F 熄灭0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71, 0x00 };
// 储存数码管需要显示的值
u8 segBuff[3] = {10,10,10};/* -------------------------------- begin -------------------------------- */
/*** @Name segDisplay* @brief 数码管显示函数* @param None* @retval None* @author 黑心萝卜三条杠* @Data 2023-03-02**/
/* -------------------------------- end -------------------------------- */
void segDisplay(void)
{u8 code_tmp = 0,j = 0;static u8 i = 3;code_tmp = segTab[segBuff[i-1]];// 拉低复位端口 低电平有效 表示需要写入数据RCLK_L;for(j = 0; j < 8; ++j){// 拉低控制信号SCK_L;// 判断最高位是否为1if(code_tmp & 0x80)// 写入1SER_H;else// 写入0SER_L;code_tmp = code_tmp << 1;// 拉低控制信号SCK_L;// 拉高控制信号SCK_H;}// 拉高复位端口 一般默认接VCC 表示写入数据完成RCLK_H;// 移动下一次显示数码管的位置if(--i > 0 ) i = 3;
}
使用说明:使用时直接将要显示的数据放入数组segBuff[]
,再调用刷新函数segDisplay()
code>即可。
例如
void sysWork(void)
{static int i = 0; segDisplay();segBuff[0] = i;segBuff[1] = i+1;segBuff[2] = i+2;i = (i+1)%24;
}
注意使用上述的segDisplay()
函数还需要调整刷新频率,否则会出现闪烁的情况。
若认为老实调节频率过于麻烦,可以使用下面这个版本的>segDisplay()
:
/* -------------------------------- begin -------------------------------- */
/*** @Name segDisplay* @brief 数码管显示函数* @param None* @retval None* @author 黑心萝卜三条杠* @Data 2023-03-02**/
/* -------------------------------- end -------------------------------- */
void segDisplay(void)
{u8 code_tmp = 0,j = 0,i = 3;for(i=3;i>0;--i){code_tmp = segTab[segBuff[i-1]];// 拉低复位端口 低电平有效 表示需要写入数据RCLK_L;for(j = 0; j < 8; ++j){// 拉低控制信号SCK_L;// 判断最高位是否为1if(code_tmp & 0x80)// 写入1SER_H;else// 写入0SER_L;code_tmp = code_tmp << 1;// 拉低控制信号SCK_L;// 拉高控制信号SCK_H;}// 拉高复位端口 一般默认接VCC 表示写入数据完成RCLK_H;}
}
至于函数调用本质上是一样的,只不过可以不用细调数码管的刷新频率了。🤣🤣🤣
文章福利
下边是小编个人整理出来免费的蓝桥杯嵌入式福利,有需要的童鞋可以自取哟!🤤🤤🤤
- 【蓝桥杯嵌入式】第十一届蓝桥杯嵌入式省赛(第二场)程序设计试题及其题解
- 【蓝桥杯嵌入式】第十二届蓝桥杯嵌入式省赛程序设计试题以及详细题解
- 【蓝桥杯嵌入式】第十三届蓝桥杯嵌入式省赛程序设计试题及其详细题解
- 【蓝桥杯嵌入式】第十三届蓝桥杯嵌入式省赛(第二场)程序设计试题及其题解
- 【蓝桥杯嵌入式】第十三届蓝桥杯嵌入式国赛程序设计试题以及详细题解
- 【蓝桥杯】一文解决蓝桥杯嵌入式开发板(STM32G431RBT6)LCD与LED显示冲突问题,并讲述LCD翻转显示
也欢迎大家留言或私信交流,共同进步哟!😉😉😉
相关文章:
【蓝桥杯嵌入式】拓展板之数码管显示
文章目录硬件电路连接方式函数实现文章福利硬件电路 通过上述原理图,可知拓展板上的数码管是一个共阴数码管,也就是说某段数码管接上高电平时,就会点亮。 上述原理图还给出一个提示,即:三个数码管分别与三个74HC59…...
Web Spider案例 网洛克 第三题 AAEncode加密 练习(七)
声明 此次案例只为学习交流使用,抓包内容、敏感网址、数据接口均已做脱敏处理,切勿用于其他非法用途; 文章目录声明一、资源推荐二、逆向目标三、抓包分析 & 下断分析逆向3.1 抓包分析3.2 下断分析逆向拿到混淆JS代码3.3 AAEncode解决方…...
【javaScript面试题】2023前端最新版javaScript模块,高频24问
🥳博 主:初映CY的前说(前端领域) 🌞个人信条:想要变成得到,中间还有做到! 🤘本文核心:博主收集的关于javaScript的面试题 目录 一、2023javaScript面试题精选 1.js的数据类型…...
Hadoop集群启动从节点没有DataNode
一、问题背景 之前启动hadoop集群的时候都没有问题,今天启动hadoop集群的时候,从节点的DataNode没有启动起来。 二、解决思路 遇见节点起不来的情况,可以去看看当前节点的日志文件 我进入当前从节点的hadoop安装目录的Logs文件下去查看日…...
FIFO IP Core
FIFO IP Core 先进先出的缓存器常常被用于数据的缓存,或者高速异步数据交互(跨时钟信号传递)和RAM和ROM的区别是没有地址线,无法指定地址 写时钟(Write Clock Domain),读时钟写复位(wr_rst),读…...
从FPGA说起的深度学习(四)
这是新的系列教程,在本教程中,我们将介绍使用 FPGA 实现深度学习的技术,深度学习是近年来人工智能领域的热门话题。在本教程中,旨在加深对深度学习和 FPGA 的理解。用 C/C 编写深度学习推理代码高级综合 (HLS) 将 C/C 代码转换为硬…...
pytorch入门7--自动求导和神经网络
深度学习网上自学学了10多天了,看了很多大神的课总是很快被劝退。终于,遇到了一位对小白友好的刘二大人,先附上链接,需要者自取:https://b23.tv/RHlDxbc。 下面是课程笔记。 一、自动求导 举例说明自动求导。 torch中的…...
QT 之wayland 事件处理分析基于qt5wayland5.14.2
1. Qt wayland 初始化 接收鼠标/案件,触摸屏等事件事件 QWaylandNativeInterface : public QPlatformNativeInterface 在QWaylandNativeInterface 继承qpa 接口类QPlatformNativeInterface; 1.1 初始化鼠标: void *QWaylandNativeInterface::nativeR…...
【this 和 super 的区别】
在 Java 中,this 和 super 都是关键字,表示当前对象和父类对象。 this 关键字可以用于以下几种情况: 引用当前对象的成员变量,方法和构造方法,用于区分局部变量和成员变量重名的情况; 调用当前类的另外一…...
K8s:Monokle Desktop 一个集Yaml资源编写、项目管理、集群管理的 K8s IDE
写在前面 Monokle Desktop 是 kubeshop 推出的一个开源的 K8s IDE相关项目还有 Monokle CLI 和 Monokle Cloud相比其他的工具,Monokle Desktop 功能较全面,涉及 k8s 管理的整个生命周期博文内容:Monokle Desktop 下载安装,项目管理…...
自动化测试实战篇(8),jmeter并发测试登录接口,模拟从100到1000个用户同时登录测试服务器压力
首先进行使用jmeter进行并发测试之前就需要搞清楚线程和进程的区别还需要理解什么是并发、高并发、并行。还需要理解高并发中的以及老生常谈的,TCP三次握手协议和TCP四次握手协议**TCP三次握手协议指:****TCP四次挥手协议:**进入Jmeter&#…...
ATTCK v12版本战术实战研究—持久化(二)
一、前言前几期文章中,我们介绍了ATT&CK中侦察、资源开发、初始访问、执行战术、持久化战术的知识。那么从前文中介绍的相关持久化子技术来开展测试,进行更深一步的分析。本文主要内容是介绍攻击者在运用持久化子技术时,在相关的资产服务…...
python函数式编程
1 callable内建函数判断一个名字是否为一个可调用函数 >>> import math >>> x 1 >>> y math.sqrt >>> callable(x) False >>> callable(y) True 2 记录函数(文档字符串) >>> def square(x): …...
3.linux下安装mysql
1.安装前的环境准备 查看是否安装过mysql 首先检测Linux操作系统中是否安装了MySQL: # rpm -qa | grep -i mysql 卸载安装包 如果有信息出现,则进行删除,命令如下: # rpm -e --nodeps 包名 删除老版本mysql的开发头文件和…...
17、MySQL分库分表,原理实战
MySQL分库分表,原理实战 1.MyCAT分布式架构入门及双主架构1.1 主从架构1.2 MyCAT安装1.3 启动和连接1.4 配置文件介绍2.MyCAT读写分离架构2.1 架构说明2.2 创建用户2.3 schema.xml2.4 连接说明2.5 读写测试2.6 当前是单节点3.MyCAT高可用读写分离架构3.1 架构说明3.3 schema.xm…...
【C++的OpenCV】第九课-OpenCV图像常用操作(六):图像形态学-阈值的概念、功能及操作(threshold()函数))
目录一、阈值(thresh)的概念二、阈值在图形学中的用途三、阈值的作用和操作3.1 在OpenCV中可以进行的阈值操作3.2 操作实例3.2.1 threshold()函数介绍3.2.2 实例3.2.3 结果上节课的内容(作者还是鼓励各位同学按照顺序进行学习哦)&…...
[Java代码审计]—MCMS
环境搭建 MCMS 5.2.4:https://gitee.com/mingSoft/MCMS/tree/5.2.4/利用 idea 打开项目 创建数据库 mcms,导入 doc/mcms-5.2.8.sql 修改 src/main/resources/application-dev.yml 中关于数据库设置参数 启动项目登录后台 http://localhost:8080/ms/l…...
《程序员面试金典(第6版)》面试题 01.08. 零矩阵
题目描述 编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。 示例1: 输入:[1, 2, 3, 3, 2, 1] 输出:[1, 2, 3] -示例2: 输入:[1, 1, 1, 1, 2] 输出:[1, 2] 提示: 链表长度在[0, 20000]范…...
初识 Python
文章目录简介用途解释器命令行模式交互模式输入和输出简介 高级编程语言,解释型语言代码在执行时会逐行翻译成 CPU 能理解的机器码代码精简,但运行速度慢基础代码库丰富,还有大量第三方库代码不能加密 用途 网络应用工具软件包装其他语言开…...
常用sql语句分享
SELECT COUNT(DISTINCT money) FROM ac_association_course;#COUNT() 函数返回匹配指定条件的行数SELECT AVG(money) FROM ac_association_course;#AVG 函数返回数值列的平均值。NULL 值不包括在计算中SELECT id FROM ac_association_course order by id desc limit 1;#返回最大…...
极狐GitLab DevSecOps 为企业许可证安全合规保驾护航
本文来自: 小马哥 极狐(GitLab) 技术布道师 开源许可证是开源软件的法律武器,是第三方正确使用开源软件的安全合规依据。 根据 Linux 发布的 SBOM 报告显示,98% 的企业都在使用开源软件(中文版报告详情)。随着开源使用…...
后端程序员的前端基础-前端三剑客之HTML
文章目录1 HTML简介1.1 什么是HTML1.2 HTML能做什么1.3 HTML书写规范2 HTML基本标签2.1 结构标签2.2 排版标签2.3 块标签2.4 基本文字标签2.5 文本格式化标签2.6 标题标签2.7 列表标签(清单标签)2.8 图片标签2.9 链接标签2.10 表格标签3 HTML表单标签3.1 form元素常用属性3.2 i…...
VS2019加载解决方案时不能自动打开之前的文档(回忆消失)
✏️作者:枫霜剑客 📋系列专栏:C实战宝典 🌲上一篇: 错误error c3861 :“_T“:找不到标识符 逐梦编程,让中华屹立世界之巅。 简单的事情重复做,重复的事情用心做,用心的事情坚持做; 文章目录前言一、问题描…...
ConcurrentHashMap-Java八股面试(五)
系列文章目录 第一章 ArrayList-Java八股面试(一) 第二章 HashMap-Java八股面试(二) 第三章 单例模式-Java八股面试(三) 第四章 线程池和Volatile关键字-Java八股面试(四) 提示:动态每日更新算法题,想要学习的可以关注一下 文章目录系列文章目录一、…...
互联网衰退期,测试工程师35岁的路该怎么走...
国内的互联网行业发展较快,所以造成了技术研发类员工工作强度比较大,同时技术的快速更新又需要员工不断的学习新的技术。因此淘汰率也比较高,超过35岁的基层研发类员工,往往因为家庭原因、身体原因,比较难以跟得上工作…...
Windows Cannot Initialize Data Bindings 问题的解决方法
前言 拿到一个调试程序, 怎么折腾都打不开, 在客户那边, 尝试了几个系统版本, 发现Windows 10 21H2 版本可以正常运行。 尝试 系统篇 系统结果公司电脑 Windows 8有问题…下载安装 Windows10 22H2问题依旧下载安装 Windows10 21H2问题依旧家里的 笔记本Window 11正常 网上…...
Leetcode每日一题 1487. 保证文件名唯一
Halo,这里是Ppeua。平时主要更新C语言,C,数据结构算法......感兴趣就关注我吧!你定不会失望。 🌈个人主页:主页链接 🌈算法专栏:专栏链接 我会一直往里填充内容哒! &…...
Linux常用命令——lsusb命令
在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) lsusb 显示本机的USB设备列表信息 补充说明 lsusb命令用于显示本机的USB设备列表,以及USB设备的详细信息。 lsusb命令是一个学习USB驱动开发,认识USB设备的助手,推荐大家使用…...
Python——我愿称之为最简单的语言
Python——我愿称之为最简单的语言开发工具基础语法变量和数据类型列表和元组字典if语句while语句函数类文件与异常测试代码参考书籍:《python编程从入门到实践》 开发工具 python编程环境分为两个部分:python解释器和文本编辑器。运行.py文件时&#…...
java.io.IOException: Broken pipe
1、问题出现的场景 线上环境,拉取对账单,走的接口的形式,当天单量比较大,就出现了,拉取订单超时,报了个错java.io.IOException: Broken pipe。 2、解决方案 我们设置的超时时间是100S,由于当…...
哪些网站做简历合适/seo关键词排名公司
redis集群 java架构师项目实战,高并发集群分布式,大数据高可用,视频教程在redis3.0之前,出现了sentinel工具来监控各个Master的状态(可以看上一篇博客)。如果Master异常则会做主从切换。选举一个slave作为新的Master,3.0之后出现了…...
网站域名哪里买/便宜的seo网络营销推广
点击上方"蓝字"关注我们,享更多干货!前段时间,墨天轮邀请数据库资深专家 李真旭(Roger) 老师分享了《Oracle中为什么没有Double Write?Oracle支持原子写吗?》,在这里我们将…...
超低价的郑州网站建设/最近一周的重大新闻
多进程指的是一个程序可以启动多个进程执行,一般模式如下: import multiprocessing from multiprocessing import Process,current_process import time# cup 核数量 num_cpus multiprocessing.cpu_count()def func(x):time.sleep(1)proc current_pro…...
郑州网站建设首选创新/培训机构好还是学校好
配置一个数据源 Spring在第三方依赖包中包含了两个数据源的实现类包,其一是Apache的DBCP,其二是 C3P0。可以在Spring配置文件中利用这两者中任何一个配置数据源。 DBCP数据源 DBCP类包位于 /lib/jakarta-commons/commons-dbcp.jar,DB…...
北京交通管制信息网站/深圳网络推广平台
目录1、引入依赖2、获取方法1、引入依赖 <!-- 获取客户端信息 --> <!-- https://mvnrepository.com/artifact/eu.bitwalker/UserAgentUtils --> <dependency><groupId>eu.bitwalker</groupId><artifactId>UserAgentUtils</artifactId&…...
建设网站的公司排名/网络营销的特点有几个
往期精选● 深度解析某头条的一道面试题● 如果你还是“程序员”,我劝你别创业!● 【良心文章】终于有人把云计算、大数据和人工智能讲明白了!原文:https://blog.csdn.net/learningcoding/article/details/79983248作者:Yoda_wang搞懂 Hash…...