51单片机的静态和动态数码管的显示

最新更新时间:2022-04-23来源: eefocus关键字:51单片机  静态  动态  数码管 手机看文章 扫描二维码
随时随地手机看文章

一、数码管显示原理:


数码管其实就是有8个LED构成,分为a、b、c、d、e、f、g、dp,而数码管又分为共阴极(左边,高电平点亮)和共阳极(右边,低电平点亮),点亮对应的LED即可显示对应的数字,共阴极编码表如下:


0x3f  , 0x06 , 0x5b , 0x4f , 0x66 , 0x6d 、0x7d , 0x07 , 0x7f  , 0x6f , 0x77 , 0x7c,0x39 , 0x5e , 0x79 , 0x71 , 0x00


分别对应0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,而0x00则不显示。


注意:比如显示0,则要abcdef都为1,即是0011 1111,转为16进制就是0x3f,依次类推

为了显示数字或字符,必须对数字或字符进行编码。七段数码管加上一个小数点,共计8段。因此为LED显示器提供的编码正好是一个字节。LED显示器工作方式有两种:静态显示方式和动态显示方式。


二、静态显示原理


静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。这种方法的优点是占用CPU时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高。

八位数码管及74HC573原理图

D74HC138译码器原理图


3、74H573锁存器的使用(控制段选)

OE为使能端,当他为低电平的时候, 锁存器开始工作

VCC和GND为电源和地端

LE为锁存端,当LE为高电平的时候,Q0~Q7都跟D0~D7状态一样,处于直连状态。

当LE为低电平的时候,Q0~Q7都锁存数据,无论D0~D7怎么变化,Q0~Q7都保持锁存之前的那个状态。


代码如下:


sbit LSA=P2^2;

sbit LSB=P2^3;

sbit LSC=P2^4;

 

u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示0~F的值

 

void main()

{

LSA=0;

LSB=0;

LSC=0; //控制38译码器的Y0输出低电平

P0=smgduan[0];

while(1);

}


三、动态数码管


动态显示的特点是将所有数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。


3-8译码器---D74HC138(控制位选)

74HC138D 是一种三通道输入、八通道输出译码器,简称为3-8译码器,主要应用于消费类电子产品

从真值表可以看出:

image.png

反过来的规律其实就是八进制,000对应Y0,001对应Y1,010对应Y2,依次类推,这样就能实现对应数码管的位选操作。


代码如下:


sbit LSA=P2^2;

sbit LSB=P2^3;

sbit LSC=P2^4;

 

u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示0~F的值

 

/*******************************************************************************

* 函 数 名         : delay

* 函数功能    : 延时函数,i=1时,大约延时10us

*******************************************************************************/

void delay(u16 i)

{

while(i--);

}

 

/*******************************************************************************

* 函 数 名         : DigDisplay

* 函数功能    : 数码管动态扫描函数,循环扫描8个数码管显示

*******************************************************************************/

void DigDisplay()

{

u8 i;

for(i=0;i<8;i++)

{

switch(i) //位选,选择点亮的数码管,

{

case(0):

LSA=0;LSB=0;LSC=0; break;//显示第0位

case(1):

LSA=1;LSB=0;LSC=0; break;//显示第1位

case(2):

LSA=0;LSB=1;LSC=0; break;//显示第2位

case(3):

LSA=1;LSB=1;LSC=0; break;//显示第3位

case(4):

LSA=0;LSB=0;LSC=1; break;//显示第4位

case(5):

LSA=1;LSB=0;LSC=1; break;//显示第5位

case(6):

LSA=0;LSB=1;LSC=1; break;//显示第6位

case(7):

LSA=1;LSB=1;LSC=1; break;//显示第7位

}

P0=smgduan[i];//发送段码

delay(100); //间隔一段时间扫描

P0=0x00;//消隐

}

}

 

void main()

{

while(1)

{

DigDisplay();  //数码管显示函数

}

}

关键字:51单片机  静态  动态  数码管 编辑:什么鱼 引用地址:51单片机的静态和动态数码管的显示

上一篇:C51/C52单片机的串口原理及参考代码
下一篇:C51/C52单片机的中断(EXTI)介绍及实现(二)

推荐阅读

51单片机知识重点汇总一,学单片机必须要了解的知识。
主要性能:  与MCS-51单片机产品兼容 、8K字节在系统可编程Flash存储器、 1000次擦写周期、全静态操作:0Hz~33Hz 、三级加密程序存储器 、 32个可编程I/O口线、三个16位定时器/计数器八个中断源、全双工UART串行通道、 低功耗空闲和掉电模式 、掉电后中断可唤醒 、看门狗定时器 、双数据指针、掉电标识符 。一、STC89C51单片机外部引脚简介电源及时钟引脚:Vcc(40脚)、GND(20脚)、XTAL1(19脚)、XTAL2(18脚)。Vcc、GND——单片机电源引脚,不同的型号单片机接入对应电压电源,常压为+5V,低压为+3.3V。XTAL1、XTAL2——外接时钟引脚。XTAL1为片内震荡电路的输入端
发表于 2022-11-17
单片机led灯闪烁实验总结_玩转51单片机(1):点亮led灯
01新建工程与点亮LED小灯,LED小灯即发光二极管,它具有单向导电性,对于发光二极管而言,需要根据它的压降与额定电流来选择合适的限流电阻,打开Keil4软件,选择Project,New uVision Project选定工程的保存路径,并给工程命名,保存类型默认.uvproj,点击保存出现如下对话框,点击下拉按钮,选择STC MCU Database,点击OK选择STC89C52RC,点击OK选择否点击New,生成一个Text1文件点击 File, Save, 出现如下对话框,将文件命名为后缀为.c的文件,默认保存类型,点击保存点击Target 1前面的加号,在Source Group 1上右击,选择Add Files to Gr
发表于 2022-11-14
单片机led灯闪烁实验总结_玩转<font color='red'>51单片机</font>(1):点亮led灯
51单片机】1602自定义字符原理及示例(”汉“、爱心及摄氏度示例)
原理设置1602屏幕的对比度的时候我们能够看到5*8的点阵,其实液晶显示的都是字符的字模(下图),而CGROM里面都是已经定义好的,只能读不能写,而RAM是可以读写的所以我们只要将我们自定义的字符字模写入对应的CGRAM中就好,CGRAM一共有8个对应的地址分别为(0x40,0x48,0x50,0x58,0x60,0x68,0x70,0x78),因为每个字模对应8行所以每写完一个字模以后要加8,按照指令写入CGRAM时需要加0x40所以对应地址就如上了,然而其实CGRAM的实际地址是0x00-0x07所以在后面写入数据的时候需要按照实际地址来写入。CGROM中的字模也是同样的原理 字模代码:1602显示模式为5*7点阵型,字模代码
发表于 2022-11-12
【<font color='red'>51单片机</font>】1602自定义字符原理及示例(”汉“、爱心及摄氏度示例)
51单片机】1602 CGRAM、CGROM及DDRAM的作用
CGRAM : 允许用户自建字模区的空间。从CGROM表上可以看到,在表的最左边是一列可以允许用户自定义的CGRAM,从上往下看着是16个,实际只有8个字节可用。它的字符码是00000000-00000111这8个地址,表的下面还有8个字节,但因为这个CGRAM的字符码规定0-2位为地址,3位无效,4-7全为零(表上的高位)。因此CGRAM的字符码只有最后三位能用也就是8个字节了。等效为0000X111,X为无效位,最后三位为000-111共8个。CGROM : 字模存储用空间。你要显示某个ASCII字符时,要显示字符的字模就存在这里。DDRAM : 显示用RAM。直接和屏幕上的点相对应。屏幕上的一个点和DDRAM中的一个位对应。1
发表于 2022-11-12
【<font color='red'>51单片机</font>】1602 CGRAM、CGROM及DDRAM的作用
51单片机】 数据管显示HELLO
软件准备+硬件准备软件:1.Keil软件v6.12(与书中版本保持一致方便学习,如果喜欢别的版本也可以下载别的)2. STC-ISP(将十六进制代码写到单片机上)硬件:TX-1C(书本推荐,并非本人广告)【学习单片机,你起码得有块单片机的板子吧…也不一定是自己的,借别人的也可以】HELLO.程序#include <reg52.h>#define uchar unsigned char#define uint unsigned intsbit dula=P2^6; //申明U1锁存器的锁存端sbit wela=P2^7; //申明U2锁存器的锁存端void delayms(u
发表于 2022-11-12
【<font color='red'>51单片机</font>】 数据管显示HELLO
51单片机】数据管的消影问题
数码管的消影未消影代码#include<reg52.h>sbit wela=P2^7; //位选sbit dula=P2^6; //段选void main(){ while(1) { //一直显示 dula=1; P0=0x06; //显示1 dula=0; wela=1; P0=0xfe; //选择第一个数码管 wela=0; } }运行结果原因第一个数码管的1显示较亮但是同时伴随着另外较弱一点段位的显示,可以看出是下面位选的影响(0xfe),然后几个未选择的数码管亮了,可以看出是前面段选带来的影响(0x06->对应位
发表于 2022-11-12
【<font color='red'>51单片机</font>】数据管的消影问题

推荐帖子

verilog generate模块中的参数定义问题?
parameterDQS_IO_COL=0;parameterDQ_IO_MS=0;.......genvardq_i;generatefor(dq_i=0;dq_i<DQ_WIDTH;dq_i=dq_i+1)begin:gen_dqddr2_phy_dq_iob#//参数定义(.DQ_COL(DQS_IO_COL[2*(dq_i/DQ_PER_DQS)+1:2*(dq_i/DQ_PER_DQS)]),.DQ_MS(DQ_IO_M
eeleader FPGA/CPLD
CycloneV板子使用心得一
设计方案 CycloneV板子使用心得一本设计方案旨在搭建一个地面移动智能机器人平台,并利用这个平台设计地面移动多智能的各种群集行为(Flocking、Formation、Swarm等等)。早期我们先并设计一种路径规划算法实现移动机器人可以在复杂的环境中避开障碍物而到达指定的目的地。小车平台我们采用飞思卡尔的B车模,搭载我们自己的各种传感器和控制电路。控制电路板采用FPGA,将整个系统集成在一块芯片上。路径规划的控制算法我们采用改进的人工势场函数。系统结构图如下:
garyhappy4 FPGA/CPLD
关于无线通信不同应用中,通信层协议的问题求助!
各位大神,本人主要是做应用层设计开发的。暂时没有打算直接对无线低层芯片进行开发。计划采购现成的无线模块(UHF、Zigbee、Lora等),配合自家的采集模块,构成无线传感网的不同应用。 现在的问题就是,有线传感网的软件层协议通常有的选择,如标准的(485-ModbusRTU协议)、SDI-12协议,属于应答模式。 当实现无线传感网应用时,如果沿用上面两种协议有个缺点就是传感端必须保持常供电,实时等待主站端发过来的命令,这在户外应用要求低功耗的情况下显然不行。 如果考虑到低功耗问题,比较好
yunyinliu RF/无线
赚分帖~~~
0赚分帖~~~
afeibfp 嵌入式系统
【空调精灵】STM32F7-Disco首次运行 RT-Thread RTOS
本帖最后由liuluqqzj于2015-10-3015:13编辑 STM32F7-DISCO评估板极简介STM32F7-DISCO评估板基于STM32F746NG微控制器,板载资源丰富。板子的供电接口有四种选择:外部5v供电、5vst-link供电、USB-FS及USB-HS供电。通过反面的JP1跳帽选择供电方式,此处选择5vst-link即可。烧写官方demo从官网下载最新的st-link烧写工具,安装之后打开烧写工具,打开要烧写的hex文件(位于官方cube库的STM32C
liuluqqzj stm32/stm8
安立信T12焊台拆解,看看国产焊台里的国产芯片
本帖最后由littleshrimp于2022-11-1317:24编辑 拆一个安立信T12焊台,我之前买过他家的T12烙铁芯,比较抗用,有几次烧红过都不影响使用,这回买一个他家的焊台看看效果。我买这款是升级款的T100,238元一套,其实就是用了点阵屏,可以多一些设置,实际使用感觉用处不大。基础款的T12A价格168元,只有温度显示。这款烙铁包括一个控制器、一个手柄和一个烙铁架,到货后感觉做工一搬,手柄做工有些粗糙,不过二百多的价格估计也就这质量了。主机使用上下两
littleshrimp 国产芯片交流
小广播
设计资源 培训 开发板 精华推荐

何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved