数码管显示原理与驱动方式

news/2025/1/8 19:09:10/

目录

一、数码管内部结构

二、数码管的显示方式

三、数码管显示编程思想   


一、数码管内部结构

1、内部结构有八个发光二极管,一个8字只需要显示7段,但是有一个小数点,dp,所以有八个发光二极管。

2、单个数码管封装十个引脚。3、8引脚是连在一起的,组成公共端。八个发光二极管分别与一个限流电阻串联后再并联,有一个公共端,公共端可以分为共阳或共阴极。

共阴极是公共端接地,然后给高电平让想让亮的字段亮起来。想让显示几,就给对应的字段高电平;

共阳极需要给需要的字段低电平,注意发光二极管本身需要通过5毫安以上的电流才可以发光,且电流不得过大。但是单片机的I/O口送不了这么大的电流,所以需要驱动电路。可以用上拉电阻的方式也可以直接使用专门的驱动芯片,可以使用74HC573锁存器芯片、74HC138译码器,也可以使用专门的数码管驱动芯片LM1640。

3、当多位一体的数码管时内部的公共端是独立的,而负责显示什么数字的段选线是全部连接在一起的。

公共端控制哪个位亮,称为“位选线”,控制单个数码管哪一段亮的叫做“段选线”。

一般单位数码管和二位数码管都有10个引脚,四位数码管有12个引脚。

二、数码管的显示方式

        数码管有两种显示方式:静态显示和动态显示。

       位选去选哪几个数字亮,而由于段选是连在一起的所以显示的数字是相同的,这称为静态显示。静态显示就是选中不同的数码管显示相同的数字。

        数码管动态显示又叫做动态扫描显示,就是选中几个数码管同时显示不同的数字。

        数码管的动态是以扫描的方式轮流向数码管送出段选码和位选,利用发光管的余辉和人眼的视觉暂留作用,使人感觉各位数码管同时都在显示,而实际上是多为数码管一位一位的轮流显示,只是轮流的速度非常快,人眼已经无法分辨。

        由于数码管动态显示的特性,动态显示时,我们要在每次送完段选数据后、送入位选数据前,加上语句P0 = 0xff或P0=0x00,看采用的是共阳极还是共阴极的数码管。这个操作叫做消影。如果不执行消影操作,语句再接下来的打开位选命令后,仍保持着上次的段选数据,该段选数据将立刻加在数码管上,接下来才是再次通过IO口给位选送入位选数据,数码管上会出现混乱的现象。

三、数码管显示编程思想   

     数码管显示步骤:1、送段码 2、送位选 3、延时一下,不要超过10ms(不是必须的) 4、消隐

        数码管显示时,最好将段码数据和位选数据按顺序放到各自的数组中,这样调用各自的数组,便可以用数字的方式给数码管送入位选和段选数据,更加方便直观。

我们只需将代表不同数字的段码和位选地址放入数组中,便可以直接调用

unsigned char code leddata[] = {//数码管段码表0x3f,//"0"0x06,//"1"0x5b,//"2"0x4f,//"3"0x66,//"4"0x6d,//"5"0x7d,//"6"0x07,//"7"0x7f,//"8"0x6f,//"9"0x77,//"A"0x7c,//"B"0x39,//"C"0x5e,//"D"0x79,//"E"0x71,//"F"0x76,//"H"0x38,//"L"0x37,//"n"0x3e,//"u"0x73,//"P"0x5c,//"o"0x40,//"-"0x00,//"熄灭"};
unsigned char LEDBUF[] = {22,22,22,22};//数据显示缓冲区
unsigned char code PLACE_CODE[] = {0xfe, 0xfd, 0xfb, 0xf7};//位选信号

我们可以在我们设置的数据缓冲区数组中填入我们想要显示的内容,就可以通过数组之间的相互调用的实现显示。

void Display()//因为有数据显示缓冲区,就不用带参数的函数
{static unsigned char i = 0;//静态变量只在第一次时初始化,再次调用就不会被初始化//1、送段码GPIO_DIG = leddata[LEDBUF[i]];//2、送位选GPIO_PLACE = PLACE_CODE[i];//3、延时 1ms,所有数码管整体延时时间不要超过10msDelayXms(1);//4、消隐GPIO_DIG = 0x00;i++;if(i == N)i = 0;		
}

http://www.ppmy.cn/news/519704.html

相关文章

各种锁的概念

我们学习多线程相关知识的时候都会涉及到各种锁,自旋锁、乐观锁、悲观锁、可重入锁、互斥锁、排它锁、独占锁、 共享锁。。等等 其实很多锁的概念都是来源与数据库,java中的锁也有这些特性,因此我们在学习多线程的时候就会接触这些概念 sync…

单片机实验--单片机控制数码管

实验目的 学习单片机程序开发软件Keil uVision的使用方法学习单片机控制数码管动态显示的方法学习模块化程序设计的方法 实验仪器 硬件:X86型兼容计算机,单片机开发板;软件:Keil uVision和烧录软件 实验内容 设计程序控制数码管动…

进化吧,MySQL锁!无锁->偏向锁->轻量级锁->重量级锁(请自动脑补数码宝贝进化音)

写在前边 走到哪都有各种琐事,在MySQL中咱已经聊透了各种琐事 ->MySQL锁机制&&事务,今天来看看Java里边的锁升级过程,以及各种锁之间的比较,悲观乐观,粗化消除~ 四种锁的Markword 优先程度 偏向锁->轻…

数码管和573锁存器的细节问题

今天在QQ群上一个初学单片机的人提了一个关于数码管的问题,主要是程序的问题,由于对基础知识掌握不够,花了比较长的时间才解决,现总结一下其中的细节。 电路中8位数码管是由两个74HC573锁存器分别控制位选和段选的。 原程序大致如…

蓝桥杯单片机——锁存器、数码管、定时器的基本操作

锁存器 蓝桥杯的锁存器可以直接背,这里就不再赘述 数码管的基本原理 共阳数码管:将所有发光二极管的阳极接到一起形成公共阳极的数码管,且公共极接VCC 共阴数码管:将所有发光二极管的阴极接到一起形成公共阴极的数码管&#xff…

51单片机(三)数码管(超详细、必会!)

数码管详细总结 一、数码管电路1、单个数码管2、多个数码管3、数码管与芯片的连接3.1 为什么要使用锁存器?3.2 锁存器的电路连接 二、数码管显示数字时芯片引脚的状态值三、数码管实现动态显示1、一个数码管从0到F动态显示2、多个数码管从0到F动态显示3、一个经典例…

51单片机学习篇-- --静态数码管的显示(74HC138译码器,74HC245锁存器,74HC573锁存器)

开篇先说一句废话 本旺名字叫萨摩耶,,Please 叫我旺财,,,哈哈,招财进宝嘛! 数码管的介绍 啥是个数码管呢?先来看一些数码管的照片。 其实数码管就是通过点亮里面的发光二极管来发…

单片机——C51实验含Proteus仿真(锁存器,流水灯,继电器,数码管静态显示,蜂鸣器)

文章仅为本人学习记录&#xff0c;如有引用部分会另加说明引用出处 代码部分 #include<reg52.h> #include<intrins.h> #define uint unsigned int #define uchar unsigned charsbit LED_LEP2^0; //LED锁存器控制端 sbit FMP2^1; //蜂鸣器控制端 sbit RLP2^2; /…