数码管显示原理

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

静态与动态显示

静态显示:

LED显示器工作方式有两种:静态显示方式和动态显示方式。静态显示的特点是每个数码管的段选必须接一个9位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。
缺点:使用的IO口比较多。

动态显示

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

74HC573锁存器的工作原理

芯片文档查询网址: https://www.alldatasheet.com/

上拉电阻的作用

上拉就是将不确定的信号通过一个电阻钳位在高电平,电阻同时起限流作用。下位同理,也是将不确定的信号通过一个电阻钳位在低电平。

当P0口作为输入、输出口时,上电复位后处于开漏模式。P0口内部无上拉电阻,所以作I/0口必须外接10K-4.7K的上拉电阻。

点亮一位数字"1"

#include <reg52.h>
#include <intrins.h>#define uint unsigned int
#define uchar unsigned charsbit DU = P2^6;//数码管段选
sbit WE = P2^7;//数码管段选void main(){ // main函数自身会循环WE = 1; // 打开位选锁存器P0 = 0XFE;   // 1111 1110  选通第一位数码管
//  P0 = 0X00;  // 0000 0000  表示选通所有位数码管WE = 0; // 锁存位选数据DU = 1;  // 打开段选锁存器P0 = 0X06;  // 0000 0110  显示“1”DU = 0;   // 锁存段选数据while(1){// P0 = 0X01; // 当锁存器中的数值被锁定后,无法直接修改数码管的值,需要打开位选锁存器才能进行修改}
}

点亮两位数字"2"

#include <reg52.h>
#include <intrins.h>#define uint unsigned int
#define uchar unsigned charsbit DU = P2^6;//数码管段选
sbit WE = P2^7;//数码管段选void main(){ // main函数自身会循环WE = 1; // 打开位选锁存器P0 = 0XFC;   // 1111 1100  选通第一位和第二位数码管
//  P0 = 0X00;  // 0000 0000  表示选通所有位数码管WE = 0; // 锁存位选数据DU = 1;  // 打开段选锁存器P0 = 0X5B;  // 0101 1011  显示“2”DU = 0;   // 锁存段选数据while(1){// P0 = 0X01; // 当锁存器中的数值被锁定后,无法直接修改数码管的值,需要打开锁存器才能进行修改}
}

点亮三位数字"3"

#include <reg52.h>
#include <intrins.h>#define uint unsigned int
#define uchar unsigned charsbit DU = P2^6;//数码管段选
sbit WE = P2^7;//数码管段选void main(){ // main函数自身会循环WE = 1; // 打开位选锁存器P0 = 0XF8;   // 1111 1000  选通第一位、第二位和第三位数码管
//  P0 = 0X00;  // 0000 0000  表示选通所有位数码管WE = 0; // 锁存位选数据DU = 1;  // 打开段选锁存器P0 = 0X4F;  // 0100 1111  显示“3”DU = 0;   // 锁存段选数据while(1){// P0 = 0X01; // 当锁存器中的数值被锁定后,无法直接修改数码管的值,需要打开锁存器才能进行修改}
}

点亮数码管最后一位数字"8"

#include <reg52.h>
#include <intrins.h>#define uint unsigned int
#define uchar unsigned charsbit DU = P2^6;//数码管段选
sbit WE = P2^7;//数码管段选void main(){ // main函数自身会循环WE = 1; // 打开位选锁存器P0 = 0X7F;   // 1111 1000  选通第八位数码管
//  P0 = 0X00;  // 0000 0000  表示选通所有位数码管WE = 0; // 锁存位选数据DU = 1;  // 打开段选锁存器P0 = 0X7F;  // 0111 1111  显示“8”DU = 0;   // 锁存段选数据while(1){// P0 = 0X01; // 当锁存器中的数值被锁定后,无法直接修改数码管的值,需要打开锁存器才能进行修改}
}

使第三个(从左至右)数码管显示数字 6

#include <reg52.h>
#include <intrins.h>#define uint unsigned int
#define uchar unsigned charsbit DU = P2^6;//数码管段选
sbit WE = P2^7;//数码管段选void main(){ // main函数自身会循环P0 = 0X00;   //清除断码WE = 1; // 打开位选锁存器P0 = 0X03;   // 0000 0011  选通第3位、第4位、第5位、第6位、第7位、第8位数码管
//  P0 = 0X00;  // 0000 0000  表示选通所有位数码管WE = 0; // 锁存位选数据DU = 1;  // 打开段选锁存器P0 = 0X7D;  // 0111 1101 对应的数码管字母 acdefg  显示“6”DU = 0;   // 锁存段选数据
}

STC89C52单片机 数码管静态显示相关推荐

  1. 【STC89C52】数码管静态显示和动态显示

    今天我跟大家分享的是数码管静态显示和动态显示实验的学习笔记,希望对你有所帮助!!!如果有什么错误欢迎评论区留言指正!!! 目录 一.原理图分析 二.静态显示 ​编辑 三.动态显示 一.原理图分析 1) ...

  2. STC89C52单片机数码管介绍以及代码示例

    目录 一,数码管介绍 二,数码管引脚定义 我们首先对单个引脚进行说明: 其次,我们对多个引脚管进行说明: 最后我们来详细说说如何进行位选还有段选 接着是段选 三,数码管段码表 四,数码管驱动方式 五, ...

  3. 51单片机怎么显示当前时间_51单片机数码管静态显示和动态显示原理及实验

    数码管 多位数码管,即是两个或两个以上单个数码管并列集中在一起形成一体的数码管.当多位一体时,它们内部的公共端是独立的,而负责显示什么数字的段线全部是连接在一起的,独立的公共端可以控制多位一体中的哪一 ...

  4. STC89C52单片机 数码管动态显示

    数码管动态显示 静态与动态显示 动态显示 动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效.选亮数码管采用动态扫描显示.所谓动态扫描显示即轮流向各位数码管送出字形码和相 ...

  5. c语言7段码静态显示 dula,51 数码管静态显示 [李园7舍_404]

    对于单片机的学习我一般不按照资料的顺序学习.我是照这个步骤将新知识掌握: 1.学习过程:阅读C语言程序,查看控制变量被赋予的值-->查看跟控制变量对应的相关的电路图-->被控制电路所接收到 ...

  6. 51单片机之数码管静态显示

    在对单片机编程以实现数码管静态显示数字之前,我们先来了解一下数码管的结构以及一些常识,对于数码管,有称八段数码管的,也有称七段数码管的,其实无非就是多在一个小数点h , 如上图所示,  我们就拿带小数 ...

  7. 小白上路之51单片机(STC89C52)--数码管

    目录 数码管介绍 显示器及其接口(本文主要针对LED显示器来介绍) 开发板原理图 数码管是如何显示出字符的 静态数码管 数码管静态显示原理 74HC573锁存器芯片的使用 源程序--静态数码管 动态数 ...

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

    文章仅为本人学习记录,如有引用部分会另加说明引用出处 代码部分 #include<reg52.h> #include<intrins.h> #define uint unsig ...

  9. 基于STC15W4K32S4单片机仿真《74HC595驱动数码管静态显示》

    1. 编 程 软 件:keil5版本. 2.仿 真 软 件:Proteus8.12 3.单片机选型:STC15W4K32S4 4.学 习 目 标:1.学习74HC595芯片工作方式           ...

最新文章

  1. MySQL 数据备份与同步
  2. 周报速递丨北交所 SaaS 首股将出;央行等印发《金融标准化“十四五”发展规划》
  3. NgRx Store createSelector 返回的 selector 执行取数逻辑的单步调试
  4. mysql库与oracle库的区别_开源数据库Oracle与MySQL的SQL语法区别
  5. python批量命名文件_用python实现批量重命名文件的代码
  6. 毕设项目 - 基于SSM的音乐网站(含源码+论文)
  7. nas文件服务器 迁移,换新机器啦,超简单NAS数据迁移方法
  8. css立体翻页,[原创]纯CSS3打造的3D翻页翻转特效
  9. 365天深度学习训练营-第P5周:运动鞋识别
  10. 西南大学网络教育行政管理计算机答案,西南大学网络教育1056计算机基础春考试大作业答案.doc...
  11. 华为云MVP周峥:气象预报是个技术活,大数据、超算、AI,缺一不可
  12. 图像极坐标变换的研究
  13. 用python批量下载网络图片_使用python批量下载图片吗?怎么做?
  14. 27岁从业软件测试5年的我被无情的辞退了
  15. cf四大战区合区列表?
  16. VS 断点不会命中的情况
  17. 管道程序c语言,怎么创建管道
  18. 诸葛java_java - 诸葛_子房的个人空间 - OSCHINA - 中文开源技术交流社区
  19. 清华系ChatGPT发布!唐杰团队打造,专对中文优化,还能把握最新新闻动态
  20. SpringBoot修改静态资源映射

热门文章

  1. CHIL-ORACLE-主外键约束(primary key / foreign key)
  2. F# 4.0于全平台发布
  3. [转]MVC实用架构设计(三)——EF-Code First(3):使用T4模板生成相似代码
  4. 一句话评论设计模式六大原则--转
  5. javascript向表中添加行--浏览器兼容性问题
  6. 浅析Microsoft .net PetShop程序中的购物车和订单处理模块(Profile技术,异步MSMQ消息)转...
  7. document.getElementsByTagName()方法的返回值
  8. Android在Shell环境下运行Linux命令
  9. 底层经典书籍-编译原理
  10. 什么是schema?