江协科技51单片机学习- p11 静态数码管显示
前言:
本文是根据哔哩哔哩网站上“江协科技51单片机”视频的学习笔记,在这里会记录下江协科技51单片机开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了江协科技51单片机教学视频和链接中的内容。
引用:
51单片机入门教程-2020版 程序全程纯手打 从零开始入门_哔哩哔哩_bilibili
c51语言变量语句意思,C51中循环语句-CSDN博客
数码管显示:
【51单片机实验笔记】LED篇(三) 数码管的基本控制_51单片机数码管-CSDN博客
https://zhuanlan.zhihu.com/p/657909281
正文:
0. 概述
在淘宝上购买了江协科技51单片机开发板套件(普中科技STC51单片机A2型号),就上在上一篇博文里说的自己计划学习下江协科技51单片机开发教程,通过STC51单片机这种MCU这种贴近于裸机的开发来增加对于系统硬件层面知识的了解和掌握。
1. LED数码管的显示原理
LED数码管的简介:数码管是一种简单,廉价的显示器,是由多个发光二极管封装在一起组成“8”字型的器件。
LED数码管的显示原理:
- 共阴极LED数码管
- 共阳极LED数码管
在如下截图里,共阴极/共阳极LED数码管的3和8号引脚都是地实际上是接在一起的。数码管的A,B,C,D,E,F,G,DP的和外部引脚是就近连接。
1位LED数码管的有8个外部引脚,
4位LED数码管的有12个外部引脚,8为引脚控制LED数码管显示的字符,4个引脚作为选择引脚控制哪个数码管显示。
2. 共阴极数码管驱动需要缓冲器(驱动器)
按LED的连接方式可以分为共阴极数码管和共阳极数码管。
- 共阴极:将LED的阴极连在一起称为公共阴极(COM)
- 共阳极:将LED的阳极连在一起称为公共阳极(COM)
共阴极需要单片机 IO 给高电平,对应的段(LED)才能点亮,而单片机的 IO 引脚电流输出能力不足,往往需要借助驱动芯片(如74HC245芯片)才可以点亮数码管。而共阳极只需要单片机 IO 给低电平,单片机的灌电流大于拉电流,故共阳极数码管应用更加广泛。
注:由于每段都是由LED组成,故实际电路中应该串联限流电阻,一般接一个8P排阻。
段选和位选
在数码管中有段选和位选两个概念,现阐释如下:
- 段选:针对单个数码管而言。选择要点亮数码管中 a、b、c、d、e、f、g、dp 哪些段。一般通过给 IO 引脚赋值实现。
- 位选:针对多位数码管而言。选择点亮哪个数码管。即控制COM端的高低电平。
仔细观察数码管的段选顺序,按 a、b、c、d、e、f、g、h 逆时针排列,依次对应字节的低位至高位。因此,我们可以给出共阴极数码管的字形码编码表。(有些字母不易表示,缺省)
字形码 | dp g f e d c b a | 十六进制 |
---|---|---|
0 | 0011 1111 | 0x3f |
1 | 0000 0110 | 0x06 |
2 | 0101 1011 | 0x5b |
3 | 0100 1111 | 0x4f |
4 | 0110 0110 | 0x66 |
5 | 0110 1101 | 0x6d |
6 | 0111 1101 | 0x7d |
7 | 0000 0111 | 0x07 |
8 | 0111 1111 | 0x7f |
9 | 0110 1111 | 0x6f |
A | 0111 0111 | 0x77 |
b | 0111 1100 | 0x7c |
c | 0101 1000 | 0x58 |
d | 0101 1110 | 0x5e |
E | 0111 1001 | 0x79 |
F | 0111 0001 | 0x71 |
G | - | - |
H | 0111 0110 | 0x76 |
I | 0011 0000 | 0x30 |
J | 0000 1110 | 0x0e |
K | - | - |
L | 0011 1000 | 0x38 |
M | - | - |
n | 0101 0100 | 0x54 |
o | 0101 1100 | 0x5c |
p | 0111 0011 | 0x73 |
q | 0110 0111 | 0x67 |
r | 0101 0000 | 0x50 |
s | 0110 1101 | 0x6d |
t | - | - |
U | 0011 1110 | 0x3e |
v | 0001 1100 | 0x1c |
w | - | - |
x | - | - |
y | 0110 1110 | 0x6e |
z | - | - |
如果是共阳极,其编码表刚好是共阴极的按位取反(~)。
其实可以看出,数码管对显示字母并不友好,一般用于显示数字,在电梯楼层显示,计算器显示应用广泛。
从上述一系列分析中我们得到,数码管相当于LED的堆叠,它对 IO 口资源的消耗是巨大的。如果要同时显示多个数字,除了采用芯片(如38译码器)来节约 IO 口,还可以采用不同的显示方式实现。数码管有两种驱动显示方式:静态显示和动态显示。
- 静态显示:即每个数码管的每一个段码都由一个单片机的I/O端口进行驱动。优点是编程简单,显示亮度高,缺点是占用I/O端口过多,这显然是致命的。
- 动态显示:利用人眼暂留效应,分时轮流控制 COM端(位选),每个数码管的点亮时间为1ms~2ms,因为频率很快,仿佛所有数码管都是同时点亮的,这即是动态的含义。优点的节省大量IO口,功耗低,缺点是亮度不及静态显示方式,但可以通过降低限流电阻的阻值来提高亮度。
3. 驱动芯片
我们需要清楚一点,单片机适合用于控制,它可以输入输出电平,但电流是很小的。或许单片机驱动单独一个LED是足够的,但当LED数量多起来时,它便无能为力了,更别提驱动大功率的灯泡或是电机了。
这些功率比较大的外设往往需要外接电源,通过驱动芯片来提供电流和能量,单片机提供信号指令。
使用138译码器和74HC245驱动器
- 74HC245驱动器(缓冲器)
- 74HC138译码器
3.1 74HC138译码器
使用74HC138译码器节省了单片机的IO口,使用单片机的3个IO口可以控制8个输出。
74HC138译码器,有A,B,C三个输入,Y0~Y78个输出,还有G1, G2A, G2B 三个控制引脚,当控制端如下电平配置G1=1,G2A=0,G2B=0时,74HC138译码器使能输出。
G1 | 1 |
G2A | 0 |
G2B | 0 |
74HC138译码器芯片上 Y0, Y1, Y2, Y3, Y4, Y5, Y6, Y7, 引脚字符上面的横线表示低电平有效。 也就是说当 138译码器选中某个输出位的时候该引脚输出低电平,其它剩下的引脚输出高电平。
3.2 74HC245驱动器
因为单片机的高电平驱动能力弱通过的电流能力弱,单片机的低电平驱动能力强通过的电流能力强。
主要用于提升单片机 IO 口的驱动电流。一般 IO 口的输出电流为20mA,这个电流大小仅仅点亮一颗LED是没有问题的,但对于驱动数码管、点阵等多负载模块就力不从心了。
74HC245芯片可以将输出电流提升至70-80mA左右,具有8路输入和8路输出,可输出低电平高电平高阻态三态。
- 其中DIR引脚用于控制输入输出方向,高电平(A => B)、低电平(B => A)。
- OE为使能引脚,低电平输出有效。
3.3 课程使用普中51开发板电路原理图分析
课程使用普中51开发板电路原理图分析,从电路原理图看到 LE 接74HC245 的 DIR 方向控制引脚,DIR=1 时74HC245双向缓冲器输出方向为从A=>B,DIR=0时输出方向为从B=>A。在电路原理图中 LE 接 J21 跳帽引脚,通过跳帽把LE接到VCC 则 DIR=1, 74HC245的输出方向为从A=>B,这也是我们本次实验开发板需要的配置。
4. 程序编写数码管显示
根据可能使用的普中科技STC51单片机A2开发板的电路原理图,可以看到 P2_2,P2_3,P2_4 接到74HC138译码器的 A, B, C 三个输入引脚,通过P2_2,P2_3,P2_4 输出值可以控制选中8个数码管的那一个管显示。
P2_2 = 1,P2_3 = 0, P2_4 =1
A,B,C = 101(2进制) = 0x5 (16进制)
74HC138译码器的A,B,C输入0x5,则译码器的 Y5 输出引脚输出低电平,其它引脚输出高电平。因为此开发板使用的是共阴极数码管,当数码管位选信号为低电平时数码管亮。
P0口输出控制数码管的显示段码值。
#include <REGX52.H>
#include <INTRINS.H>void main()
{//ABC=0b101=0x5=选中Y5,连接LED6,从左往右数第3个数码管P2_2 = 1;P2_3 = 0;P2_4 = 1;//数码管段码P0 = 0x3f;while(1){}
}
相关文章:
江协科技51单片机学习- p11 静态数码管显示
前言: 本文是根据哔哩哔哩网站上“江协科技51单片机”视频的学习笔记,在这里会记录下江协科技51单片机开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了江协科技51单片机教学视频和链接中的内容。 引用: 51单片机入门教程-2…...
pandas.frame输出parquet
代码 import pandas as pd import pyarrow._parquet as pqdata pd.read_parquet("0000.parquet") total_rows len(data) half_row_num total_rows//2 print(half_row_num) first_half data.iloc[:20000] second_half data.iloc[20000:20000] # print(first_hal…...
【CT】LeetCode手撕—42. 接雨水
目录 题目1- 思路2- 实现⭐42. 接雨水——题解思路 3- ACM实现 题目 原题连接:42. 接雨水 1- 思路 模式识别:求雨水的面积 ——> 不仅是只求一个比当前元素大的元素,还要求面积 单调栈 应用场景,需要找到左边比当前元素大的…...
GPT-4o一夜被赶超,Claude 3.5一夜封王|快手可灵大模型推出图生视频功能|“纯血”鸿蒙大战苹果AI|智谱AI“钱途”黯淡|月之暗面被曝进军美国
快手可灵大模型推出图生视频功能“纯血”鸿蒙大战苹果AI,华为成败在此一举大模型低价火拼间,智谱AI“钱途”黯淡手握新“王者”,腾讯又跟渠道干上了“美食荒漠”杭州,走出一个餐饮IPOGPT-4o一夜被赶超,Anthropic推出Cl…...
C# + easyui 写的一个web项目
用C# easyui 来开发,其实就是为了开发速度,用easyui可以一天写很多页面,比一些低代码平台还快。 登陆页面 主界面 记录数统计 家庭信息采集表 新建家庭 家庭成员 低保、五保人员帮扶情况登记表 低保、五保人员帮扶情况登记表的新增和编辑 治…...
JVM 垃圾回收分配及算法
一、判断对象是否可以回收 垃圾收集器在做垃圾回收的时候,首先需要判定的就是哪些内存是需要被回收 的,哪些对象是「存活」的,是不可以被回收的;哪些对象已经「死掉」了,需 要被回收。 一般有两种方法来判断ÿ…...
尚品汇-(四)
(1)商品的基本知识 1.1基本信息—分类 一般情况可以分为两级或者三级。咱们的项目一共分为三级,即一级分类、二级分类、三级分类。 比如:家用电器是一级分类,电视是二级分类,那么超薄电视就是三级分类。…...
colima配置docker镜像源
只在 colima ssh 环境下修改 docker 配置文件是无效的,我们需要修改 colima 配置文件才能使 docker 镜像源生效。 此时你需要进入到~/.colima/default目录下编辑colima.yaml文件。该文件是 colima 的配置文件。内容如下图所示,我这里配置了许多家的镜像源…...
Linux_内核缓冲区
目录 1、用户缓冲区概念 2、用户缓冲区刷新策略 3、用户缓冲区的好处 4、内核缓冲区 5、验证内核缓冲区 6、用户缓冲区存放的位置 7、全缓冲 结语 前言: Linux下的内核缓冲区存在于系统中,该缓冲区和用户层面的缓冲区不过同一个概念&#x…...
步步精:连接器领域的卓越品牌
自1987年成立以来,步步精坐落于美丽的旅游城市——温州市乐清虹桥镇,被誉为“国家电子主体生产基地”、“国家精密模具制造基地”。公司拥有7大厂区、9大事业部,800名专职员工,致力于提供高品质的连接器解决方案。注册商标“BBJCO…...
【Linux】基础IO_3
文章目录 六、基础I/O3. 软硬链接4. 动静态库 未完待续 六、基础I/O 3. 软硬链接 使用 ln 就可以创建链接,使用 ln -s 可以创建软链接,直接使用 ln 则是硬链接。 我们对硬链接进行测试一下: 根据测试,我们知道了 硬链接就像一…...
ffmpeg音视频开发从入门到精通——ffmpeg实现音频抽取
文章目录 FFmpeg 实现音频流抽取1. 包含FFmpeg头文件与命名空间声明2. 主函数与参数处理3. 打开输入文件4. 获取文件信息5. 查找音频流6. 分配输出文件上下文7. 猜测输出文件格式8. 创建新的音频流9. 打开输出文件10. 写入文件头信息11. 读取并写入音频数据12. 写入文件尾部信息…...
计算机系统基础实训七-MallocLab实验
实验目的与要求 1、让学生理解动态内存分配的工作原理; 2、让学生应用指针、系统级编程的相关知识; 3、让学生应用各种动态内存分配器的实现方法; 实验原理与内容 (1)动态内存分配器基本原理 动态内存分配器维护…...
周末总结(2024/06/22)
工作 人际关系核心实践: 要学会随时回应别人的善意,执行时间控制在5分钟以内 坚持每天早会打招呼 遇到接不住的话题时拉低自己,抬高别人(无阴阳气息) 工作上的要点 现状(接受破烂现状,改变状态) - 这周没…...
2024.06.22【读书笔记】丨生物信息学与功能基因组学(第十七章 人类基因组 第二部分)【AI测试版】
第二部分:人类基因组的主要结论与网络资源 摘要: 第二部分深入总结了人类基因组计划的关键发现,并介绍了用于探索人类基因组的网络资源。这些结论不仅为我们理解人类生物学提供了新的视角,而且揭示了人类基因组的复杂性和动态性。 学习目标: 掌握人类基因组计划的主要科…...
SpringCloud-nacos基础
SpringCloud-nacos nacos在微服务种有两大作用: 配置中心服务注册中心 配置中心 维度管理 nacos配置中心可以在三个维度进行管理: spring.profiles.active dev/prod/test,通过这个属性可以配置不同环境下的配置文件。 配置的文件名应该为${spring…...
git的Cherry pick
Cherry pick Git Cherry Pick详解 https://blog.csdn.net/jam_yin/article/details/131594716 目标: 将开发分支A中提交的部分内容合并到B分支(可能是测试分支) 步骤: vscode安装 点击下图标进入graph...
LLC开关电源开发:第四节,LLC软件设计报告
LLC源代码链接 数控全桥LLC开发板软件设计报告 1. LLC硬件及软件框架2. LLC软件设计2.1 工程文件说明2.2 LLC中断设计2.2.1 20us中断2.2.2 5ms中断 2.3 LLC状态机设计2.3.1 初始化状态2.3.2 空闲状态2.3.3 软启动状态2.3.4 正常运行状态2.3.5 故障状态 2.4 环路设计2.4.1 环路…...
力扣85.最大矩形
力扣85.最大矩形 遍历所有行作为底边 做求矩形面积(84. class Solution {public:int maximalRectangle(vector<vector<char>>& matrix) {if (matrix.empty()) return 0;int n matrix.size(),m matrix[0].size();int res0;vector<int> li…...
和琪宝的厦门之旅~
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作),由 李兆龙 确认,转载请注明版权。 引言 承接去年国庆的遗憾,我们将这次的旅行城市定为厦门。 琪宝是下午四点左右到…...
4、MFC:菜单栏、工具栏与状态栏
菜单栏、工具栏与状态栏 1、菜单栏1.1 简介1.2 创建属性设置菜单消息成员函数 1.3 实例 2、工具栏2.1 简介工具栏属性2.2 创建消息CToolBar类的主要成员函数 2.3 实例 3、状态栏3.1 简介3.2 创建CStatusBar类状态栏创建 3.3 实例 1、菜单栏 1.1 简介 菜单在界面设计中是经常使…...
Java中的动态代理:原理与应用
Java中的动态代理:原理与应用 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 在Java开发中,动态代理是一种强大且灵活的技术ÿ…...
DataWhale - 吃瓜教程学习笔记(二)
学习视频:第3章-一元线性回归_哔哩哔哩_bilibili 西瓜书对应章节: 3.1 - 3.2 一元线性回归 - 最小二乘法 - 极大似然估计 - 梯度 多元函数的一阶导数 - 海塞矩阵 多元函数的二阶导数 - 机器学习三要素...
[保姆级教程]uniapp自定义标签页切换组件
文章目录 导文样式改成动态列表切换点击效果加上点击自动滑动scroll-view加上切换组件效果 导文 unaipp自带的标签页和ui设计相差太大,直接修改组件比手写一个还麻烦,下面手写一个。 样式 先用scroll-view做一个滑动,不然多的话滑动不了。 &l…...
4种典型家庭教育方式,无论开始是哪一种,都会过渡到最后一种
家庭教育,是孩子教育的一个重要组成部分,事实上是对孩子影响最大的一种教育方式,绝大部分家庭教育都是由孩子的父母来完成的。 家庭教育的特点 家庭教育具有很明显的启蒙性、长期性、全面性。 1.启蒙性。我们的孩子对外部世界的认识和了解&am…...
[Django学习]查询过滤器(lookup types)
1.exact exact用于精确匹配字段的值。适用于需要精确查找某个字段值的场景。 Book.objects.filter(title__exactHarry Potter) 上面的查询会查找标题完全为“Harry Potter”的书籍。 2.iexact iexact忽略大小写地精确匹配字段的值。适用于需要忽略大小写进行精确匹配的场…...
异步开发的终极答案—协程
我们在之前的文章中讲过,在并发场景下,传统的基于多线程的命令式开发模型虽然比较简单,但并发数高了之后资源占用较高,大量线程会阻塞;而响应式编程模式我们可以通过异步化处理提升系统资源的利用效率,但异步开发有违人的直觉,门槛比较高。作为成年人,我们肯定希望全都…...
构建高效的大数据量延迟任务调度平台
目录 引言系统需求分析系统架构设计 总体架构任务调度模块任务存储模块任务执行模块 任务调度算法 时间轮算法优先级队列分布式锁 数据存储方案 关系型数据库NoSQL数据库混合存储方案 容错和高可用性 主从复制数据备份与恢复故障转移 性能优化 水平扩展缓存机制异步处理 监控与…...
Python武器库开发-武器库篇之ThinkPHP 2.x 任意代码执行漏洞(六十三)
Python武器库开发-武器库篇之ThinkPHP 2.x 任意代码执行漏洞(六十三) PHP代码审计简介 PHP代码审计是指对PHP程序进行安全审计,以发现潜在的安全漏洞和风险。PHP是一种流行的服务器端脚本语言,广泛用于开发网站和Web应用程序。由…...
SQLite数据库(数据库和链表双向转换)
文章目录 SQLite数据库一、SQLite简介1、SQLite和MySQL2、基于嵌入式的数据库 二、SQLite数据库安装三、SQLite的常用命令四、SQLite的编程操作1、SQLite数据库相关API(1)头文件(2)sqlite3_open()(3)sqlite…...
企业网站开发语言/cilimao磁力猫
1. 输入映射(就是映射文件中可以传入哪些参数类型) 1)基本类型 2)pojo类型 3)Vo类型2. 输出映射(返回的结果集可以有哪些类型) 1)基本类型 2)pojo类型 3)List类型3. 动态sql:动态的拼接sql语句,因为sql中where条件有可能多也有可能少 1)where:可以自动添加where关键字,还可以去…...
施甸网站建设/北京seo培训
iamlaosong文原有一套Pro*C程序运行在RedHat5.5Oracle10g环境下,随着数据的增加,原服务器不堪重负,新买了一台服务器。厂家说新服务器不能安装原来的环境,只能安装RedHat6.6Oracle11g,所以原来的那套程序要移植到新服务…...
杭州网站提升排名/软文街官方网站
人们日常熟知的邮政业务包括邮务业务、快递业务、银行业务、保险业务、证券业务、网上商城等,除此之外,还有一项非常重要——电商业务。区别于人们熟知的电商网购,邮政公司电商业务主要是指人们日常生活中的代收费业务(包括水、电…...
网站设计培训机构/杭州seo代理公司
机器视觉可说是工业自动化系统的灵魂之窗,从物件/条码辨识、产品检测、外观尺寸量测到机械手臂/传动设备定位,都是机器视觉技术可以发挥的舞台。 机器视觉长期以来用于工业自动化系统中,以通过取代传统上的人工检查来提高生产质量和产量。视觉…...
凡科网站能在百度做推广吗/建网站找哪个公司
Day 1(冯哲) 今天的内容很杂但却都是基础知识 主要分为下面几个点 枚举 枚举也称作穷举,指的是从问题所有可能的解的集合中一一枚举各元素。用题目中给定的检验条件判定哪些是无用的,哪些是有用的。能使命题成立的即为其解。 有几…...
南昌快速优化排名/免费外链网站seo发布
框架与剪力墙结构有以下区别:一、受力体系不同框架结构是利用梁、柱组成的纵、横两个方向的框架形成的结构体系,它同时承受竖向荷载和水平荷载。框架结构而剪力墙体系是利用建筑物的墙体(内墙或外墙)做成剪力墙来抵抗水平力,同时它也承受垂直…...