数码管显示问题总结

2023-05-16

 

1.数码管显示原理
       我们最常用的是七段式和八段式LED数码管,八段比七段多了一个小数点,其他的基本相同。所谓的八段就是指数码管里有八个小LED发光二极管,通过控制不同的LED的亮灭来显示出不同的字形。数码管又分为共阴极和共阳极两种类型,其实共阴极就是将八个LED的阴极连在一起,让其接地,这样给任何一个LED的另一端高电平,它便能点亮。而共阳极就是将八个LED的阳极连在一起。其原理图如下。

 

                   

 

   注:共阳极数码管:低电平点亮

          共阴极数码管:高电平点亮

 

2.段码字节与字节中各位对应关系:

代码位: D7   D6   D5   D4   D3   D2   D1   D0

显示段: dp    g    f     e     d    c     b     a

 

3.重影:IO口从高电平到低电平,有一定的残留的电流在里面。

在数码管动态显示实验中,每次送完段选数据后,在送入位选数据之前,需要一句 
“P0 = 0xff” ,这条语句的专业名称叫做“消影” 
解释如下: 
在刚送完段选数据后,P0口仍然保持着上次的段选数据,若不加“P0 = 0xff”这句话,再执行接下来的打开位锁存器命令后,原来保持在P0口的段选数据将立即通过位选锁存器直接加在数码管上,接下来才是再次通过P0口给位选锁存器送入位选数据,虽然这个过程非常短暂,但是在数码管高速显示状态下,我们仍然可以看到数码管出现显示混乱的现象,加上消影之后,在开启位锁存器后,P0口数据全为高电平,所以哪个数码管都不会亮,因此这个消影的动作是很重要的。

4.关于送数据与送段选位选先后问题:

 /*

 * 函数名:DulaSet

 * 描述  :数码管段选设置

 * 输入  :DP:数码管段选是否为带小数点显示方式 Y:是 / N:否

 *         DU:段选——范围为16个字形码

 * 输出  :无

 * 备注  :先送位选数据,再使能锁存器,(最佳写法)

 *        因为只有P0状态稳定了,锁进去的数据才不会出错

 *        否则显示0x00(即数码管8位全关断)会有亮影

 *        接着关锁存器,一瞬间锁存器即可锁存数据                               

 */                                                                    

void DulaSet(uchar DP,uchar DU)

{

       if(DP == Y)

           P0 = NTDP[DU];    //送段选数据,带小数点段选表示

       else if(DP == N)

           P0 = NT[DU];    //送段选数据

       DULA = 1;    //开U1锁存器端

       DULA = 0;    //关U1锁存器端
     
}



5.数码管静态显示与动态显示的区别:

   (对于单片机上8位的数码管(8段LED)

静态:

  1. 段码线:每一位段码线分别与一个8位I/O锁存器输出相连
  2. 位码线:8个8位I/O口

动态: 

  1. 段码线:一个数码管占用一个8位I/O口
  2. 位码线:8个数码管占用一个8位I/O口

但在实际单片机硬件电路连接中,都把段码线并联,故,静态显示方式下,所有数码管显示相同。

     3. 由于各个数码管的段码线并联,(静态显示下)在同一时刻,8个数码管将显示相同的字符,因此若要各个数码管能够同时显示出与本位相应的显示字符,就必须采用动态扫描的显示方式。即在某一时刻,只让某一位的位选线处于选通状态,同时,段码线上输出相应为要显示的字符。LED不同为显示的时间间隔(扫描间隔)应根据实际情况而定。发光二极管从导通到发光有一定的延时,导通时间太短,发光太弱,人眼无法看清;时间太长,要受限于临界闪烁频率,而且此时间越长,占用单片机的时间越多。另外显示位数增多,也将占用大量的单片机时间,因此动态显示的实质是一些牺牲单片机的时间来换取I/O端口的减少。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数码管显示问题总结 的相关文章

随机推荐

  • 为什么要学习rust

    一 rust的实现 优点 实现 xff1a 明确 xff08 零成本 xff09 抽象 赋能优点 xff1a 兼具高性能 安全性 表达力 明确 xff1a rust不像其他的语言 xff0c 这些编程语言为了照顾初学者 xff0c 它会把很
  • QT 打印目录树

    include 34 dialog h 34 include lt QDebug gt include lt QDir gt include lt iostream gt using namespace std dir是目录 xff0c 不
  • [cmake 3.5]使用自身集成的FindProtobuf来生成并构建proto代码

    使用FindProtobuf xff0c 可以不用手动执行protoc命令 xff0c nmake的时候自动去执行protoc xff0c 然后再编译链接生成静态库 如果proto文件之间有相互引用 xff08 使用了import xff0
  • VNC中Vncconfig配置

    Vncconfig 这个工程里面主要实现的是服务器端的系统配置 xff0c 具体过程如下 xff1a 建立控制台 初始化系统日志表 创建编辑注册表的对象 异常处理程序访问注册表权限 创建读取注册表的键类 建立登陆对话框 xff0c 初始化方
  • Linux下源码安装xrdp并禁止粘贴板交互(附更换yum阿里源)

    vncserver 启动vncserver服务 xrdp配置 1 下载xrdp源码 www xrdp org 2 禁用复制粘贴 xff0c 然后默认这个是可以的 直接把 sesman chansrv clipboard h 里定义的函数 x
  • Windows下Fortran语言的编译环境之CodeBlocks配置

    Fortran编译环境配置 xff08 Windows xff09 CodeBlocks的下载与安装 安装包的下载最新版本的 CodeBlocks 的下载旧版本的 CodeBlocks 的下载 CodeBlocks的安装CodeBlocks
  • QueryWrapper、UpdateWrapper和LambdaWrapper的使用

    mybatis plus条件构造器关系图 介绍 xff1a 1 上图绿色框为抽象类abstract 2 蓝色框为正常class类 xff0c 可new对象 3 黄色箭头指向为父子类关系 xff0c 箭头指向为父类 废话不多说 直接上示例 注
  • Angular-使用ng update命令升级到Angular7.1.4

    Angular 使用ng update命令升级到Angular7 1 4 Angular CLI 是 Angular 的一个命令行工具 xff0c 可以便捷的执行创建项目 创建文件 测试 打包和发布等任务 关于 Angular 版本 Ang
  • 程序设计作业week04

    A DDL 的恐惧 题目 ZJM 有 n 个作业 xff0c 每个作业都有自己的 DDL xff0c 如果 ZJM 没有在 DDL 前做完这个作业 xff0c 那么老师会扣掉这个作业的全部平时分 所以 ZJM 想知道如何安排做作业的顺序 x
  • STM32平台下官方DMP库6.12超详细移植教程

    前记 Motion Driver官方库 xff1a Motion Driver 6 12 STM32工程源码 xff1a STM32F103C8 软件MPU6050 xff08 DMP xff09 MPU6050软件I2C驱动 xff0c
  • 嵌入式Linux系统开发笔记(十四)

    U Boot环境变量 uboot 中有两个非常重要的环境变量 bootcmd 和 bootargs xff0c bootcmd 和 bootagrs 是采用类似 shell 脚本语言编写的 xff0c 里面有很多的变量引用 xff0c 这些
  • 嵌入式Linux系统开发笔记(十五)

    Linux内核启动验证 5 1 编译内核 span class token comment 清除工程 span span class token comment make distclean span span class token co
  • 嵌入式Linux系统开发笔记(十六)

    根文件系统rootfs启动验证测试 接下来我们使用测试一下前面创建好的根文件系统 rootfs xff0c 测试方法使用 NFS 挂载 6 1 检查是否在Ubuntu主机中安装和开启了NFS服务 xff08 特别注意 xff1a nfs 配
  • 安卓5.0以上7.0以下使用Termux

    参考 xff1a https zhuanlan zhihu com p 400507701 说明 xff1a Termux支持5 0以上的安卓系统 Termux7 3版本之后 xff0c 仅支持7 0以上的安卓系统 1 安装Termux 设
  • 关于DSP的CCS6.0平台下的工程搭建(完全可移植)

    本工程以CCS6 0下新建TMS320F28335工程为例 xff0c 其他系列处理器工程搭建类似 xff0c 参考本例即可 工程搭建用到的F2833x TI官方库文件 下载链接 也可直接参考笔者搭建好CCS6 0的工程 下载链接 所建工程
  • STM32Fxx JTAG/SWD复用功能重映射

    问题描述 xff1a 在实验室调车过程中 xff0c 遇到的一个问题 xff1a 为了每次下载程序方便 xff0c 队员们往往会把 Jlink 插在板子上 xff0c 可是在调车过程中发现 xff0c 有时程序会莫名死掉 xff0c 而同样
  • VS2012编译RTKLIB——GNSS定位开源库

    RTKLIB 开源库 有着强大的 GPS 数据实时和后处理功能 xff0c 由于 笔者的毕业设计中需要对GPS 载波相位观测量进行 RTK 解算 xff0c 故而 xff0c 对 RTKLIB 开源库进行了学习与研究 RTKLIB 提供了很
  • 51单片机串行口波特率计算

    1 工作方式介绍 xff1a 方式 0 xff1a 这种工作方式比较特殊 xff0c 与常见的微型计算机的串行口不同 xff0c 它又叫 同步移位寄存器输出方式 在这种方式下 xff0c 数据从 RXD 端串行输出或输入 xff0c 同步信
  • 解决HTTPS证书安全检测时提示 PCI DSS 不合规问题

    解决HTTPS证书安全检测时提示 PCI DSS 不合规问题 今天在进行HTTPS证书安全检测时 xff0c 提示PCI DSS不合规 经查询得知是因为SSL配置时启用了TLS1 0导致的 关于 PCI DSS 自2018年6月30日起 x
  • 数码管显示问题总结

    1 数码管显示原理 我们最常用的是七段式和八段式 LED 数码管 xff0c 八段比七段多了一个小数点 xff0c 其他的基本相同 所谓的八段就是指数码管里有八个小 LED 发光二极管 xff0c 通过控制不同的 LED 的亮灭来显示出不同