(2)数码管

article/2025/8/21 8:21:48

LED数码管:数码管是一种简单、廉价的显示器,是由多个发光二极管封装在一起组成"8"字器件

请添加图片描述

请添加图片描述

51单片机是共阴极连接

请添加图片描述

请添加图片描述

请添加图片描述

74HC245这个芯片有什么作用呢?解:这个芯片被称之为双向数据缓冲器这个芯片的作用,用来进行数据缓冲(提高驱动能力)的。那么缓冲这个是什么意思?

假设我们给上二进制,就从A0到达B0这是连接的关系,DIR如果接的是高电平(1)那么就能把左边的数据接到我们右边的数据上。电容(100nf)在这里的作用是:芯片的供电更加稳定叫做电源滤波

静态数码管显示:

确定阴码(选择第几个数字):根据译码器的CBA表示

确定阳码(具体哪个段亮):通过abcdefg(dp)组合出01序列,经过双向数据缓冲器后高位对高位(逆序)

选择第六个数字:
LED3 -> Y2 -> 010 -> P2_4=0;P2_3=1;P2_2=0;
显示"6":
abcdefg(dp) -> 10111110 -逆序-> 0111 1101 -> P0=0x7d;
#include <REGX52.H>unsigned char NixieTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};void Nixie(unsigned char location, Number){switch(location){case 1: P2_4 = 1;P2_3 = 1;P2_2 = 1;break;case 2: P2_4 = 1;P2_3 = 1;P2_2 = 0;break;case 3: P2_4 = 1;P2_3 = 0;P2_2 = 1;break;case 4: P2_4 = 1;P2_3 = 0;P2_2 = 0;break;case 5: P2_4 = 0;P2_3 = 1;P2_2 = 1;break;case 6: P2_4 = 0;P2_3 = 1;P2_2 = 0;break;case 7: P2_4 = 0;P2_3 = 0;P2_2 = 1;break;case 8: P2_4 = 0;P2_3 = 0;P2_2 = 0;break;}P0 = NixieTable[Number];
}
void main(){Nixie(2, 2);while(1){}
}

动态数码管显示:

消影:

当我们要显示数码管的时候首先要:位选 段选、还要显示的话就还要 位选、段选,循环。

那么这样就会出现问题:首先是选择"位选端"给上低电平,然后是段选给上数据,然后给上下一位位选的数据。但是:由于我们单片机的速度是很快的,在段选到下一个位选之间就会出现问题。我们选中下一位这个时刻很短的时间内,上一个数据就会串到下一个数据。因为它们是挨着一起的,我在选中下一位之后 上一位的数据自然是会直接过来的。这样就会显示出数据的串位的问题了!

那么我们应该怎么避免这个问题?那我们就需要在上一个段选端给清零,这样即使到下一位它也不会对上一位产生影响!因为以及清零了。所以在子函数上需要优化下,显示完之后我们首先要延迟1ms这个是为了能让程序更加稳定显示,并且 进行清零!

#include <REGX52.H>unsigned char NixieTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
void Delay(unsigned int xms)
{unsigned char i, j;i = 2;j = 239;while(xms--){do{while (--j);} while (--i);}
}void Nixie(unsigned char location, Number, short dp){switch(location){case 1: P2_4 = 1;P2_3 = 1;P2_2 = 1;break;case 2: P2_4 = 1;P2_3 = 1;P2_2 = 0;break;case 3: P2_4 = 1;P2_3 = 0;P2_2 = 1;break;case 4: P2_4 = 1;P2_3 = 0;P2_2 = 0;break;case 5: P2_4 = 0;P2_3 = 1;P2_2 = 1;break;case 6: P2_4 = 0;P2_3 = 1;P2_2 = 0;break;case 7: P2_4 = 0;P2_3 = 0;P2_2 = 1;break;case 8: P2_4 = 0;P2_3 = 0;P2_2 = 0;break;}P0 = dp ? NixieTable[Number] | 0x80 : NixieTable[Number]; // 可以显示小数点Delay(1);P0 = 0;
}void main(){while(1){Nixie(1, 1, 1);Nixie(2, 2, 0);Nixie(3, 3, 1);Nixie(4, 4, 0);}
}

数码管驱动方式:

  • 单片机直接扫描:硬件设备简单,但会耗费大量的单片机CPU时间
  • 专用驱动芯片:内部自带显存、扫描电路,单片机只需告诉她显示什么即可(TM1640)

静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个的单片机I/O口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。

  • 静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多。

数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是哪个数码管会显示出字形,取决于单片机对位选通COM端电路的控制。

所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的。

流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的。

  • 动态驱动的优点是能够节省大量的I/O端口,而且功耗更低。缺点是花费cpu占用时间,编程较为复杂。

http://chatgpt.dhexx.cn/article/XqSQGplG.shtml

相关文章

蓝桥杯单片机备战(四)共阳数码管的静态显示

1.共阳数码管原理实现 这是共阳数码管&#xff0c;所谓共阳的意思就是共阳极&#xff0c;每一个LED共用一个阳极&#xff0c;当控制LED的阴极为低电平时被点亮&#xff0c;如下图&#xff1a; 这里com1到com8为共阳口&#xff0c;例&#xff1a; 当com1设置为高电平时&#xff…

共阳极数码管显示

1.目的&#xff1a;8个数码管从0到9现实8次&#xff08;M38译码器输出端&#xff09; 2.考点&#xff1a; &#xff08;1&#xff09;数码管段码与数值之间的关系&#xff0c;com口与显示码的关系。 &#xff08;2&#xff09;段码端与接口&#xff1a; 段码端与锁存器&…

共阴数码管与共阳数码管工作原理有什么不同

数码管简介 数码管是一种半导体发光器件&#xff0c;其基本单元是发光二极管。数码管按段数可分为七段数码管和八段数码管&#xff0c;八段数码管比七段数码管多一个发光二极管单元&#xff0c;也就是多一个小数点&#xff08;DP&#xff09;这个小数点可以更精确的表示数码管…

共阳数码管和共阴数码管用法区别

共阳数码管和共阴数码管用法区别 学习单片机将近一年半了,今天突然发现,我学习东西只是单纯的去记忆知识,并不涉及什么推理,基本上也没有什么思考.学得不真,学得也不深.长此以往,自己的思维将会变得越来越呆滞……. 总结能梳理自己的思绪,所以从今天起开始写博客来记录自己的…

共阴数码管段码-共阳数码管段码

单片机系统中常用的显示器有&#xff1a;发光二极管LED(Light Emitting Diode)显示器、液晶LCD(Liquid Crystal Display)显示器、CRT显示器等。LED、LCD显示器有两种显示结构&#xff1a;段显示&#xff08;7段、米字型等&#xff09;和点阵显示&#xff08;58、88点阵等&#…

共阴极和共阳数码管详解

文章图片来源于互联网 共阴极&#xff1a;公共端为阴极&#xff0c;加阳极数码管点亮。即当真值为1时&#xff0c;数码管点亮&#xff1b;真值为0时&#xff0c;数码管不亮。共阳极&#xff1a;公共端为阳极&#xff0c;加阴极数码管点亮。即当真值为0时&#xff0c;数码管点亮…

共阳和共阴数码管详细段码(带图)

今天带大家了解数码管的详细段码&#xff0c;数码管主要分共阳数码管和共阴数码管。区别在于其公共端是接电源还是接地。这里我们讲解共阴(共阳)数码管的0-F不带小数点段码和0-F带小数点段码。 共阴数码管 1.共阴不带小数点0-F段码为&#xff1a;{0x3f,0x06,0x5b,0x4f,0x66,0…

共阳(共阴)LED数码管编码交互演示

LED数码管原理 LED数码管有两大类,一类是共阴极接法,另一类是共阳极接法,共阴极就是各段的显示字码共用一个电源的负极,是高电平点亮,共阳极就是各段的显示字码共用一个电源的正极,是低电平点亮。只要控制其中各段LED的亮灭即可显示相应的数字、字母或符号。 共阴和共阳…

共阴和共阳数码管编码表详解

1、共阳数码管是数码管中所有的正极连接在一起&#xff0c;这个端口被称之为位选端口&#xff1b; 其余的数码管引脚 a-h 都为段选端口 。 2、共阳极数码管的编码&#xff08;CA&#xff09;&#xff1a; char code table[]{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x…

【蓝桥杯-单片机学习笔记(三)】共阳数码管的静态显示

一、要求 在CT107D单片机综合训练平台上&#xff0c;8个数码管分别单独依次显示0~9的值&#xff0c;然后所有数码管一起同时显示0~F的值&#xff0c;如此往复。 二、数码管 1.七段数码管 七段数码管&#xff0c;其实内部由8个发光二极管构成&#xff0c;其中七个为长条形状&…

[蓝桥杯单片机]学习笔记——共阳数码管的静态与动态显示

一、理论部分 共阳数码管引脚可以分为两个部分&#xff0c;一是段码&#xff0c;一个是位码。段码指的是一个数码管的7个段加dp小数点&#xff0c;一共8个&#xff0c;通过P0控制其亮灭使得数码管显示出不同效果。譬如亮afedcg表示的是6形状。位码指的多个数码管显示的时候&…

共阴/共阳数码管 ----- 学习笔记

一、数码管的动态显示原理 动态显示的特点是将所有数码管的段选线并联在一起&#xff0c;由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示&#xff0c;所谓动态扫描显示即轮流向各位数码管送出字形码和相应的选位&#xff0c;利用发光管的余晖和人眼视觉暂留作用…

LED 数码管共阴共阳的区别+静态/动态显示

51单片机——数码管动态显示 1、共阴共阳定义 LED 共阴极指的是LED共同的接点是GND&#xff08;接地&#xff09;&#xff0c;而共阳极指的是LED共同的接点是电源。LED亮灯的条件是两端有电势差。 最后一段h/dp小数点在高位&#xff0c;第一段a在低位 hgfedcbaxxxxxxxx 1.共…

python单例模式selenium driver实现单例

一、使用装饰器实现单例 def Singleton(cls):_instance {}def _singleton(*args, **kargs):if cls not in _instance:_instance[cls] cls(*args, **kargs)return _instance[cls]return _singletonSingleton class A(object):a 1def __init__(self, x0):self.x xa1 A(2) a2…

python单例模式有什么用_python单例模式是什么

在python中&#xff0c;单例模式是一种常用的软件设计模式&#xff0c;该模式的主要目的是确保某一个类在内存中只能有一个实例对象&#xff1b;通过单例模式的方法创建的类在当前进程中只有一个实例对象。单例模式分为&#xff1a;1、懒汉式&#xff0c;类一加载就创建对象&am…

Python设计模式-单例模式

设计思想 通过上面的介绍&#xff0c;我们可以知道单例模式最重要的就是要保证一个类只有一个实例并且这个类易于被访问&#xff0c;那么要怎么做才能保证一个类具有一个实例呢&#xff1f;一个全局变量使得一个对象可以被访问&#xff0c;但是这样做却不能防止你实例化多个对…

redis常用命令

redis常用命令 服务端客户端 服务端 1.使用help查看帮助文档 redis-server --help2.启动redis服务 sudo service redis start3.停止redis服务 sudo service redis stop4.重启redis服务 sudo service redis restart如果上面命令不行&#xff0c;用下面的命令&#xff1a; …

运维维护服务器redis常用命令

查看服务器是否有redis ps -ef | grep redis知道有redis存在了&#xff0c;查看下redis状态 systemctl status redis知道redis状态是运行态和只能本机访问后&#xff0c;想查看redis配置文件位置 cat /etc/systemd/system/redis.service知道redis配置在哪里&#xff0c;修改…

redis启动,停止,重启

1、查看redis是否在运行&#xff1a; ps aux | grep redis 2、启动redis&#xff1a; /etc/init.d/redis start 3、关闭redis&#xff1a;redis-cli shutdown 4、当设置密码后&#xff0c; 上面的关闭命令无效&#xff1a;带密码输入&#xff1a;redis-cli -a [password] 回…

centos中常用与redis相关的命令

该篇指令只针对完全不懂Linux&#xff0c;但是却不得不配置redis的同学&#xff08;没错就是我&#xff09; 安装过程就不阐述了&#xff0c;默认都安好了嗷。 启动redis 首先进入到redis安装位置的bin目录下&#xff0c;路径因人而异&#xff0c;这里用本人的路径作为示例 …