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

news/2025/1/9 13:07:35/

今天在QQ群上一个初学单片机的人提了一个关于数码管的问题,主要是程序的问题,由于对基础知识掌握不够,花了比较长的时间才解决,现总结一下其中的细节。

 

电路中8位数码管是由两个74HC573锁存器分别控制位选和段选的。



原程序大致如下(省去了include和sbit定义),目的是要实现第一个数码管显示“1",但是后面有几个数码管也有显示:

程序1

void main()
{WELA=1;//1P1=0xFE;//2WELA=0;//3DULA=1;//4P1=0x06;//5DULA=0;//6
}

由于程序没有while(1)循环,导致单片机不断循环重新执行程序
执行1时,段选锁存器为0x06,P1为0x06,位选刚打开时,位选锁存器值为0x06,所以六个数码管显示数字“1”
执行2时,位选锁存器值变为0xFE,第一个数码管显示“1”
执行3时,位选值0xFE锁存起来,第一个数码管显示“1”
执行4时,位选锁存器为0xFE,P1为0xFE,段选刚打开时,段选锁存器值为0x06,所以第一个数码管显示如图1形状
执行5时,段选锁存器值变为0x06,第一个数码管显示“1”
执行6时,段选值0xFE锁存起来,第一个数码管显示“1”




我原本是想让他在程序结尾加一个while(1)空循环,结果加错了,成了这样:

程序2

void main()
{while(1) {WELA=1;        //1P1=0xFE;        //2WELA=0;        //3DULA=1;        //4P1=0x06;        //5DULA=0;        //6}
}

程序2和1效果相近,由于while(1)的原因,切换更快,显示亮度更高



后来有人说中间加一个P1=0xFF,看上去好了一些,后面几个数码管不亮了,实际上第一个数码管显示不正常,还是没有完全解决问题:
程序3

void main()
{DULA=1;        //1P1=0x06;        //2DULA=0;        //3P1=0xFF;        //4WELA=1;        //5P1=0xFE;        //6WELA=0;        //7
}

执行1时,位选锁存器为0xFE,P1为0xFE,段选刚打开时,段选锁存器值为0xFF,所以第一个数码管显示如图1形状(时间很短,所以亮度低)
执行2时,段选锁存器值变为0x06,第一个数码管显示“1”
执行3时,段选值0xFE锁存起来,第一个数码管显示“1”
执行4时,P1变为0xFF
执行5时,段选锁存器为0x06,P1为0xFF,位选刚打开时,位选锁存器值为0xFF,所以八个数码管都不显示
执行6时,位选锁存器值变为0xFE,第一个数码管显示“1”
执行7时,位选值0xFE锁存起来,第一个数码管显示“1”



如果按照我原先的理解,结尾处加一个while(1)空循环,最后是可以正常显示的:

程序4

void main()
{WELA=1;        //1P1=0xFE;        //2WELA=0;        //3DULA=1;        //4P1=0x06;        //5DULA=0;        //6while(1);        //7
}

执行到3时,位选锁存器为0xFE
执行到6时,段选锁存器为0x06
执行到7时,锁存值不再改变,第一个数码管显示“1”,显示正确


为了使程序更加完善,以下写法更加可靠:

程序5

void main()
{P1=0xFE;        //1WELA=1;        //2WELA=0;        //3P1=0x06;        //4DULA=1;        //5DULA=0;        //6while(1);        //7
}

执行2、3时,位选锁存值为0xFE
执行5、6时,段选锁存值为0x06
执行到7时,锁存值不再改变,第一个数码管显示“1”


附注:
573的 LE锁存使能引脚 高电平时输出和输入相同,低电平时 输出不再改变,即下降沿锁存,也就是低电平锁存。



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

相关文章

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

锁存器 蓝桥杯的锁存器可以直接背,这里就不再赘述 数码管的基本原理 共阳数码管:将所有发光二极管的阳极接到一起形成公共阳极的数码管,且公共极接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; /…

51单片机小白零基础教程——数码管的静态显示,以及数码管拓展程序(含74HC573锁存器的介绍)

数码管的静态显示 一、数码管的显示原理二、74HC573锁存器工作原理2.1 原理图分析2.2 真值表 三、74HC573锁存器在数码管中的应用四、实际静态数码管程序的设计 一、数码管的显示原理 数码管&#xff1a;是一种可以显示数字和其他信息的电子设备&#xff0c;可以看成是多个二极…

bios常见中英文对照

Time/System Time 时间/系统时间 Date/System Date 日期/系统日期 Level 2 Cache 二级缓存 System Memory 系统内存 Video Controller 视频控制器 Panel Type 液晶屏型号 Audio Controller 音频控制器 Modem Controller 调制解调器&#xff08;Modem) Primary Hard Drive 主硬盘…

【2023】Redis常用命令

目录 1.键操作命令1.1.判断键是否存在1.2.用keys命令查找键1.3.用scan命令查找键1.4.重命名键1.5.删除键1.5.关于键存活时间命令 2.HyperLogLog相关命令2.1.用pfadd添加键2.2.用pfcount统计基数值2.3.用pfmerge进行合并操作2.4.统计网站访问人数 3.排序相关命令3.1.用sort命令进…

Prompt Engineering 面面观

作者&#xff1a;紫气东来 项目地址&#xff1a;https://zhuanlan.zhihu.com/p/632369186 一、概述 提示工程&#xff08;Prompt Engineering&#xff09;&#xff0c;也称为 In-Context Prompting&#xff0c;是指在不更新模型权重的情况下如何与 LLM 交互以引导其行为以获得…