51单片机入学第三课——数码管静态与动态显示

2023-11-19

数码管的应用

来自百度

    数码管,也称作辉光管,是一种可以显示数字和其他信息的电子设备。玻璃管中包括一个金属丝网制成
的阳极和多个阴极。大部分数码管阴极的形状为数字。管中充以低压气体,通常大部分为氖加上一些
汞和/或氩。给某一个阴极充电,数码管就会发出颜色光,视乎管内的气体而定,一般都是橙色或绿色。

数码管显示的原理

数码管根据内部连接不同分为共阴极共阳极。八段数码管内部有8颗LED 组成,如果想要显示特定字形只需控制相应的LED亮起,其他LED熄灭即可。

在这里插入图片描述
共阴极数码码表:

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"
0x40,  //"-"
0x00,  //熄灭

静态与动态显示


LED显示器工作方式有两种:静态显示方式和动态显示方式。

静态显示


静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。

动态显示


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

锁存器工作原理


锁存器的作用是将数据输入端与输出端进行隔离或者连接
在这里插入图片描述
在这里插入图片描述
输出口Q要想输出高低电平OE脚必须接GND。
LE脚为高时,输出端Q随输入端D的数据而变化。
LE脚为低时,输出端Q数据保持不变,输入端D数据变化不会改变Q的数据。
因此,通过对锁存器的应用,可以达到数码管动态显示的条件

实践编程

静态显示


所有注释放在代码块中

#include <reg52.h>
#include <intrins.h>

#define uint unsigned int   //自定义两个变量名称
#define uchar unsigned char

sbit we = P2^7;//将两个锁存器对应的芯片端口重命名,方便记忆
sbit du = P2^6;//we表示位选,选择要点亮的数码管组,du表示段选,选择要点亮的单个数码管

void delay(uint z)//延时函数,暂时无用
{
	uint x,y;
	for(x = z; x > 0; x--)
		for(y = 114; y > 0 ; y--); 		
} 

void main()
{
 	we=1;//we位选锁存器打开,选择要显示的数码管组
	P0=0xee;//1110 1110,表示第4,8数码管被点亮
	we=0;//关闭锁存器,保持电流输出

	du=1;//du段选锁存器打开
	P0=0x06;//0000 0110,点亮八根数码管的两根,组成数字1
	du=0;//关闭锁存器

	while(1)
	{
	}
}

代码效果如下:
在这里插入图片描述

动态显示


在动态显示中,由于display函数使用unsigned char传递参数,导致调用函数来显示三位数时,只能显示0-255的数字,而使用double进行传参的话,无法将个·十·百三个数位分离。目前仍未找到解决方法。

#include <reg52.h>
#include <intrins.h>

#define uint unsigned int
#define uchar unsigned char

uchar  code table[]= {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};

sbit we = P2^7;
sbit du = P2^6;

void delay(uint z)
{
	uint x,y;
	for(x = z; x > 0; x--)
		for(y = 114; y > 0 ; y--); 		
} 

void display(uchar i)
{
	 uchar bai,shi,ge;
	 bai=i/100;
	 shi=i%100/10;
	 ge=i%10;

	P0=0xff;
	we=1;
	P0=0xfe;
	we=0;

	du=1;
	P0=table[bai];
	du=0;
	delay(5);

	P0=0xff;
	we=1;
	P0=0xfd;
	we=0;

	du=1;
	P0=table[shi];
	du=0;
	delay(5);
	
	P0=0xff;
	we=1;
	P0=0xfb;
	we=0;

	du=1;
	P0=table[ge];
	du=0;
	delay(5);
}

void main()
{
	while(1)
	{
	   display(255);
	}
}

效果如下:
在这里插入图片描述

总结


总的来说写笔记是很有用的,我之前并未发现显示数字超过255后会显示错误的现象,而通过记笔记我找到了这个错误。并且,在学习过程中我知道了为什么需要添加延时函数,他的作用是防止电路中电流变化过快,导致数码管显示混乱。
比较失败的是,我还没有找到将double类型数据进行数位分离的方法。如果能够找到,我会在文章末尾贴出。

补充


Holy Shit!!
我居然忘了int,我下意识以为intchar都支持到127,然鹅int实际上大的多,那么显示不全面的问题就得到了解决。只需将传递参数的类型改为int即可完美解决

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

51单片机入学第三课——数码管静态与动态显示 的相关文章

  • Nodejs版本管理工具mvn部署

    部署mvn curl o https raw githubusercontent com creationix nvm v0 34 0 install sh bash 添加环境变量 vim zshrc export NVM DIR HOME
  • Webpack中的tree-shaking

    文章目录 Webpack中的tree shaking 简单实践 副作用sideEffects sideEffects配置项 false 数组 结论 Webpack中的tree shaking tree shaking就是把js文件中无用的模
  • 【编程题】——求链表的中间节点

    题目 求链表的中间结点 如果链表中结点总数为奇数 返回中间结点 如果结点总数是偶数 返回中间两个结点的任意一个 思路 定义两个指针 一个指针一次走一步 另一个指针一次走两步 当走得快的指针到达链表末尾的时候 走得慢的指针刚好达到链表的中间节

随机推荐

  • 文件管理系统(操作系统)——9张思维导图

    文件管理系统 1 文件管理 1 1 一个文件的逻辑结构 比如一个文本txt文件 又或者Excel文件 在我们用户看来 它是长什么样的 这个就是逻辑结构 几个概念 逻辑结构 就是指在用户看来 单个文件内部的数据应该是如何组织起来的 物理结构
  • 黑马SpringBoot笔记

    基础篇 把Tomcat服务器更换成Jetty服务器 排除Tomcat依赖更换为Jetty
  • 【Java面试题汇总】Redis篇(2023版)

    导航 黑马Java笔记 踩坑汇总 JavaSE JavaWeb SSM SpringBoot 瑞吉外卖 SpringCloud 黑马旅游 谷粒商城 学成在线 牛客面试题 目录 1 说说你对Redis的了解 2 说说Redis的单线程架构 3
  • 7.java类中的方法

    1 类中的方法 1 实例方法 格式 访问限制修饰符 方法的返回值数据类型 方法名称 参数列表 方法体 解释 访问限制修饰符 public 缺省的 方法的返回值数据类型 就是方法的执行结果类型 有返回值时 方法的返回值数据类型一定是方法执行结
  • FPGA硬件工程师Verilog面试题(基础篇二)

    作者简介 大家好我是 嵌入式基地 是一名嵌入式工程师 希望一起努力 一起进步 个人主页 嵌入式基地 系列专栏 FPGA Verilog 习题专栏 微信公众号 嵌入式基地 FPGA硬件工程师Verilog面试题 二 习题一 多功能数据处理器
  • 大数据hive篇--常用操作

    文章目录 hive常用操作 一 建表 1 自定义分隔符 2 JSON分隔符 3 正则分隔符 将查询的结果导入新表 表的类别 外部表 内部表 分区表 导入数据 使用分区表 声明存储格式 二 常用函数 开窗函数 开窗函数常用的函数 炸裂函数 列
  • Android RecyclerView最全使用详解

    本文目录 RecyclerView概述 RecyclerView使用 基础篇 第一步 添加RecyclerView 第二步 添加布局文件 第三步 添加逻辑代码 运行效果 RecyclerView使用 进阶篇 布局管理器 线性布局管理器 网格
  • Go语言学习4-数组类型

    数组类型 引言 1 数组 1 1 类型表示法 1 2 值表示法 1 3 属性和基本操作 总结 引言 上篇我们了解 Go语言的基本数据类型 现在开始介绍数组类型 主要如下 1 数组 在Go语言中 数组被称为Array 就是一个由若干相同类型的
  • 2020-10-24 大数据面试问题

    上周面试数据开发职位主要从公司的视角讲一下记录下面试流水 1 三面技术一轮hr 面到了cto 整体来看是这一周技术含量最高信息量最大的一个 1到4轮过了4个小时 技术上的问题主要问的对数据分层的理解 1 一面自我介绍 目前团队的规模多大 2
  • IDEA 启动失败(因为修改了vmoptions后无法启动)

    本人亲历 找过好多方法 才解决的 包括但不限于 找 vmoption文件的时候 说是在C盘 死活找不到 不过已经解决了 也成功了 还成功添加了破解码 后面出文 想添加破解码 要修改vmpotion 结果直接启动不了了 然后重启IDEA的时候
  • Gstreamer的编译以及配置要点[初次总结]

    前言 Gstreamer是一个与ffmpeg齐名的音视频处理库 不过国内一般用的是ffmpeg 其实 gstreamer也蛮好用的 这篇文章主要说明一下如何编译gstreamer以及安装配置插件 起码不会报 插件not found的错误吧
  • 安装mysql8.0以上版本,java配置需要注意

    1 驱动使用8 0以上版本 https mvnrepository com artifact mysql mysql connector java 8 0 27
  • Redis连接池参数配置

    转载自 http www cnblogs com softidea p 5759457 html redis之如何配置jedisPool参数 JedisPool的配置参数很大程度上依赖于实际应用需求 软硬件能力 JedisPool的配置参数
  • 准确率(Accuracy)、精确率(Precision)、召回率(Recall)、F值(F-Measure)、AUC、ROC的理解

    一 准确率 精确率 召回率和 F 值 是选出目标的重要评价指标 不妨看看这些指标的定义先 1 若一个实例是正类 但是被预测成为正类 即为真正类 True Postive TP 2 若一个实例是负类 但是被预测成为负类 即为真负类 True
  • Win11微软账号登录不上?Win11登录Microsoft账户出错的解决方法

    Win11微软账号登录不上 近期有部分Win11用户反映在登录微软账号会出现一直转圈 无法登录的情况 这样导致部分功能都不能正常使用了 为此十分令人头疼 那么对于这一情况 有没有什么方法可以有效的解决呢 下面小编教给大家操作方法 大家可以去
  • 谷歌I/O大会重磅发布:Bard编码能力优化后仍不支持中文,开发者选择CodeGeeX更佳

    谷歌I O大会今天凌晨发布 打出系列AI组合拳 除了发布升级版语言模型PaLM2之外 Bard能力也要起飞 凭借改进的数学 逻辑和推理技能 Bard 现在可以帮助生成 解释和调试 20 多种编程语言的代码 开发者们需要输入prompt 来得
  • 总结Altium PCB中更改线宽的技巧

    总结Altium PCB中更改线宽的技巧 1 设置altium designer的默认pcb线宽 在布线前直接在设计规则中设置 Design Rules Routing Width 修改这个里面的Preferred Width即可 还可以进
  • [C++11 std::thread] 使用C++11 编写 Linux 多线程程序

    From http www ibm com developerworks cn linux 1412 zhupx thread index html 本文讲述了如何使用 C 11 编写 Linux 下的多线程程序 如何使用锁 以及相关的注意
  • 多线程快速处理List集合(结合线程池的使用)

    有一个大List集合 遍历进行一些耗时操作 不能达到性能要求 查询日志 单个任务虽然有不少数据库和第三方API请求 比较耗时 但返回效率尚可 所以优先采用多线程方式进行处理并行请求数据库和第三方API 因为处理完还要对list所属的数据进行
  • 51单片机入学第三课——数码管静态与动态显示

    文章目录 数码管的应用 数码管显示的原理 静态与动态显示 静态显示 动态显示 锁存器工作原理 实践编程 静态显示 动态显示 总结 补充 数码管的应用 来自百度 数码管 也称作辉光管 是一种可以显示数字和其他信息的电子设备 玻璃管中包括一个金