江协科技51单片机学习- p11 静态数码管显示

2024-06-23 00:44

本文主要是介绍江协科技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){}
}

这篇关于江协科技51单片机学习- p11 静态数码管显示的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1085859

相关文章

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

MyBatis-Plus中静态工具Db的多种用法及实例分析

《MyBatis-Plus中静态工具Db的多种用法及实例分析》本文将详细讲解MyBatis-Plus中静态工具Db的各种用法,并结合具体案例进行演示和说明,具有很好的参考价值,希望对大家有所帮助,如有... 目录MyBATis-Plus中静态工具Db的多种用法及实例案例背景使用静态工具Db进行数据库操作插入

Linux虚拟机不显示IP地址的解决方法(亲测有效)

《Linux虚拟机不显示IP地址的解决方法(亲测有效)》本文主要介绍了通过VMware新装的Linux系统没有IP地址的解决方法,主要步骤包括:关闭虚拟机、打开VM虚拟网络编辑器、还原VMnet8或修... 目录前言步骤0.问题情况1.关闭虚拟机2.China编程打开VM虚拟网络编辑器3.1 方法一:点击还原VM

CSS模拟 html 的 title 属性(鼠标悬浮显示提示文字效果)

《CSS模拟html的title属性(鼠标悬浮显示提示文字效果)》:本文主要介绍了如何使用CSS模拟HTML的title属性,通过鼠标悬浮显示提示文字效果,通过设置`.tipBox`和`.tipBox.tipContent`的样式,实现了提示内容的隐藏和显示,详细内容请阅读本文,希望能对你有所帮助... 效

Apache伪静态(Rewrite).htaccess文件详解与配置技巧

《Apache伪静态(Rewrite).htaccess文件详解与配置技巧》Apache伪静态(Rewrite).htaccess是一个纯文本文件,它里面存放着Apache服务器配置相关的指令,主要的... 一、.htAccess的基本作用.htaccess是一个纯文本文件,它里面存放着Apache服务器

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

解读静态资源访问static-locations和static-path-pattern

《解读静态资源访问static-locations和static-path-pattern》本文主要介绍了SpringBoot中静态资源的配置和访问方式,包括静态资源的默认前缀、默认地址、目录结构、访... 目录静态资源访问static-locations和static-path-pattern静态资源配置

如何设置vim永久显示行号

《如何设置vim永久显示行号》在Linux环境下,vim默认不显示行号,这在程序编译出错时定位错误语句非常不便,通过修改vim配置文件vimrc,可以在每次打开vim时永久显示行号... 目录设置vim永久显示行号1.临时显示行号2.永www.chinasem.cn久显示行号总结设置vim永久显示行号在li

电脑显示hdmi无信号怎么办? 电脑显示器无信号的终极解决指南

《电脑显示hdmi无信号怎么办?电脑显示器无信号的终极解决指南》HDMI无信号的问题却让人头疼不已,遇到这种情况该怎么办?针对这种情况,我们可以采取一系列步骤来逐一排查并解决问题,以下是详细的方法... 无论你是试图为笔记本电脑设置多个显示器还是使用外部显示器,都可能会弹出“无HDMI信号”错误。此消息可能

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert