江协科技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
10000 01100x06
20101 10110x5b
30100 11110x4f
40110 01100x66
50110 11010x6d
60111 11010x7d
70000 01110x07
80111 11110x7f
90110 11110x6f
A0111 01110x77
b0111 11000x7c
c0101 10000x58
d0101 11100x5e
E0111 10010x79
F0111 00010x71
G--
H0111 01100x76
I0011 00000x30
J0000 11100x0e
K--
L0011 10000x38
M--
n0101 01000x54
o0101 11000x5c
p0111 00110x73
q0110 01110x67
r0101 00000x50
s0110 11010x6d
t--
U0011 11100x3e
v0001 11000x1c
w--
x--
y0110 11100x6e
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译码器使能输出。

G11
G2A0
G2B0

 74HC138译码器芯片上 Y0Y1Y2Y3Y4Y5Y6, 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){}
}

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

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

相关文章

35.简易远程数据框架的实现

上一个内容&#xff1a;34.构建核心注入代码 34.构建核心注入代码它的调用LoadLibrary函数的代码写到游戏进程中之后无法调用&#xff0c;动态链接库的路径是一个内存地址&#xff0c;写到游戏进程中只把内存地址写过去了&#xff0c;内存地址里的内容没写过去&#xff0c;导致…

Netty ByteBuf 使用详解

文章目录 1.概述2. ByteBuf 分类3. 代码实例3.1 常用方法3.1.1 创建ByteBuf3.1.2 写入字节3.1.3 扩容3.1.2.1 扩容实例3.1.2.2 扩容计算新容量代码 3.1.4 读取字节3.1.5 标记回退3.1.6 slice3.1.7 duplicate3.1.8 CompositeByteBuf3.1.9 retain & release3.1.9.1 retain &a…

Jmeter5.X性能测试【完整版】

目录 一、Http基础协议和解析 1、浏览器的B/S架构和C/S架构 &#xff08;1&#xff09;CS架构 &#xff08;2&#xff09;BS架构 &#xff08;3&#xff09;URL理解 2、Http超文本传输协议 &#xff08;1&#xff09;含义 # 协议 # json协议 # xml协议 &#xff08;…

分布式锁(Redission)

分布式锁&#xff1a; 使用场景&#xff1a; 通常对于一些使用率高的服务&#xff0c;我们会进行多次部署&#xff0c;可能会部署在不同的服务器上&#xff0c;但是他们获取和操作的数据仍然是同一份。为了保证服务的强一致性&#xff0c;我们需要对线程进行加锁&#xff0c;…

WRONGPASS invalid username-password pair or user is disabled

连接redis客户端的时候报错&#xff1a;WRONGPASS invalid username-password pair or user is disabled 当前redis版本为7.2.4 一、问题分析 默认情况下&#xff0c;Redis 7.0 使用默认用户名 default 和空密码进行身份验证。如果未设置 requirepass&#xff0c;则默认用户名…

C++实现自动生成c++类中的属性的get和set方法

目录 应用场景 运行准备 代码展示 结果显示 应用场景 当我们在编写类的属性时&#xff0c;需要对该属性进行封装&#xff0c;需要一系列的get和set的方法。例如下面是天气类的成员属性。可以看到属性很多&#xff0c;而写get和set都是一些固定的操作&#xff0c;因此可以直…

任务4.8.4 利用Spark SQL实现分组排行榜

文章目录 1. 任务说明2. 解决思路3. 准备成绩文件4. 采用交互式实现5. 采用Spark项目实战概述&#xff1a;使用Spark SQL实现分组排行榜任务背景任务目标技术选型实现步骤1. 准备数据2. 数据上传至HDFS3. 启动Spark Shell或创建Spark项目4. 读取数据5. 数据转换6. 创建临时视图…

哈夫曼树及其应用

目录 一、哈夫曼树 1.1基本概念 1.2构造方法 1.3构造算法的实现 二、哈夫曼树的应用 2.1哈夫曼编码 2.2文件的编码和解码 2.2.1编码 2.2.2解码 一、哈夫曼树 1.1基本概念 哈夫曼树又称为最优树&#xff0c;是一类带权路径长度最短的树。 最优二叉树&#xff1a;带权…

Android内核编译

前言 本文描述使用Ubuntu 编译Android内核刷入pixel4一些心得和流程。 PC信息&#xff1a; ./o- jackjackyyyyy- -yyyyyy OS: Ubuntu 22.04 jammy:////-yyyyyyo Kernel: x86_64 Linux 6.5.0-35-generic. .://-.sss/ Uptime: 1d 5h 4m.:o: //:--:/- …

C++入门 vector部分模拟实现

目录 vector大致框架 vector常见接口模拟实现 begin迭代器 & end迭代器 capacity( ) & size( ) reserve operator[ ] push_back( ) & pop_back( ) sort vector大致框架 vector的内部的成员变量大概有三部分构成&#xff1a; namespace bit {template<c…

【Java算法】滑动窗口 上

&#x1f525;个人主页&#xff1a; 中草药 &#x1f525;专栏&#xff1a;【算法工作坊】算法实战揭秘 &#x1f456;一. 长度最小的子数组 题目链接&#xff1a;209.长度最小的子数组 算法原理 滑动窗口 滑动窗口算法常用于处理数组/字符串等序列问题&#xff0c;通过定义一…

Java赋值运算符

Java赋值运算符分为以下&#xff1a; 符号 作用 说明 赋值 int a 10,把10赋值给变量a 加后赋值 ab,将ab的值赋值给变量a - 减后赋值 a-b,将a-b的值赋值给变量a* 乘后赋值 a*b,将a*b的值赋值给变量a / 除后赋值 a/b,将a/b的值赋值给变量a % 取余赋值 a%b,将a%b的值赋值给变量…

贪心算法—

贪心算法是一种在每一步选择中都采取在当前状态下最好或最优&#xff08;即最有利&#xff09;的选择&#xff0c;从而希望导致结果是全局最好或最优的算法。这种算法并不总是能找到全局最优解&#xff0c;但在某些问题上能提供足够好的解决方案。贪心算法的关键特性包括&#…

JR-8000系列机架式多路4K超高清光端机

集中式 4K超高清光传输设备 1 产品特性 ⚫ 支持高达 8 通道 SMPTE 全格式 SDI 信号输入 ⚫ 发送端带有 LOOPOUT 环出端口&#xff0c;具备消抖动功能&#xff0c;可作为信号调理或级联信号源使用 ⚫ 接收端支持双输出端口 ⚫ 支持传输速率&#xff1a;143Mbps-11.88Gbps ⚫…

Intel太无耻,跟着玩数字游戏还揭台积电的老底,工艺都是假的

在台积电的3纳米逐渐获得芯片企业认可的情况下&#xff0c;近日Intel却再次指出台积电的3纳米工艺并非真正的3纳米&#xff0c;与Intel的7纳米工艺差不多&#xff0c;这显示出Intel在芯片工艺研发方面日益落后的情况下确实有点慌了。 Intel指出它的7纳米工艺的晶体管密度达到1.…

python watchdog 配置文件热更新

目录 一、Watchdog示例 二、aiohttp服务配置热更新 在同事的golang代码中学习到了config.json热更新的功能&#xff0c;这里自己也学习了一下python写web服务的时候怎么来实现配置的热更新。主要是利用Watchdog这个第三方python库&#xff0c;来监控文件系统的改变&#xff0…

学习使用venv创建“python虚拟环境”

前言 使用python开发会经常面临的问题是&#xff1a;你会需要不同版本的python&#xff0c;而且就算同一个版本的python&#xff0c;不同的项目有很大可能会需要不同版本的包。而 “Python虚拟环境” 就是为了解决这个问题的。 目标 结合官方文档&#xff0c;自己动手实践来…

开启声音的奇幻之旅:AI声音变换器的魔法秘籍与创意应用

AI视频生成&#xff1a;小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频https://aitools.jurilu.com/这个充满科技魔力的时代&#xff0c;AI Voice Changer 就像一把神奇的钥匙&#xff0c;能为我们打开声音的魔法之门。今天&#xff0c;就让我带你…

JetBrains PyCharm 2024 mac/win版编程艺术,智慧新篇

JetBrains PyCharm 2024是一款功能强大的Python集成开发环境(IDE)&#xff0c;专为提升开发者的编程效率和体验而设计。这款IDE不仅继承了前代版本的优秀特性&#xff0c;还在多个方面进行了创新和改进&#xff0c;为Python开发者带来了全新的工作体验。 JetBrains PyCharm 20…

腰背肌筋膜炎怎么治疗最有效

腰背肌筋膜炎的治疗方法主要包括以下几种&#xff1a; 1、休息和物理治疗&#xff1a; 确保充足的休息&#xff0c;避免过度劳累&#xff0c;减少腰背部肌肉的负担。 物理治疗&#xff0c;如热敷或冷敷&#xff0c;可以缓解疼痛和肌肉紧张。热敷可以使用热水袋、热毛巾或电热垫…