目录

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

数码管介绍

显示器及其接口(本文主要针对LED显示器来介绍)

  单片机系统中常用的显示器有:发光二极管LED显示器、液晶LCD显示器、TFT液晶显示器等。
  LED显示器的显示结构分为:段显示(7段、米字型等)和点阵显示(5×8、8×8点阵等)。
  LED数码管根据LED的不同接法可以分为共阴和共阳:
   共阴极数码管:将8个LED的阴极接到同一管脚上(开发板使用)
   共阳极数码管:将8个LED的阳极接到同一管脚上

  若想在数码管中显示数字或字符,则需在数码管上点亮对应的LED。通常采用的是8段显示,正好凑成8位,也就是一个字节。
  根据电路连接图数码管显示常用的16进制编码如下:
      0x3f 0x06 0x5b 0x4f 0x66 0x6d
       0  1   2  3   4  5
      0x7d 0x07 0x7f 0x6f 0x77 0x7c
       6  7   8  9   A  B
      0x39 0x5e 0x79 0x71 0x00
       C  D   E  F  无显示

开发板原理图

数码管是如何显示出字符的

此处就举例说明8~~以显示数字0为例:
  要想显示数字0,则需对应同时点亮数码管中的a,b,c,d,e、f 这6个LED;通过开发板原理图可以看出a~dp分别对应74HC245芯片上的P00-P07这8个管脚,因此要点亮abcdef这6个LED则需将P00-P05置为高电平‘1’,而g和dp则为低电平‘0’;最后将对应的电平从P0口的高位写向低位,即从P07对应的dp开始写,并转为十六进制。应为:0011 1111–>0x3f

静态数码管

特点
  每个数码管的段选必须接一个8位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新的字形码。
优点
  占用CPU时间少、显示便于监测和控制。
缺点
  硬件电路复杂、成本高。(若要用到8个静态数码管,也就是说这8个数码管都是独立的,让其实现静态显示,即要把这8个数码管各自的8段全部接入单片机来控制,显然,单片机的管脚是不够的:单片机只有32个口,而要控制这8个的话,则需8×8个IO口,就需要对单片机的IO口来进行扩展…)

数码管静态显示原理

  回到开发板原理图,若只需LED1静态显示,则位选时将LED1置为低电平‘0’(因为开发板上为共阴极数码管)即P22-P24口都为‘0’–>LED1口输出‘0’(原理参见三八译码器),在段选时根据要显示的值将对应的P0口置为高/低电平即可。若只让LED4静态显示,则P24、P23、P22口分别为‘1’、‘0’、‘0’–>LED4则输出为‘0’,即位选选中LED4。
  补充:P0口为漏极开路(即高阻状态,可独立输入/输出低电平和高阻状态,若需要产生高电平,则需使用外部上拉电阻或电平转换芯片),若不加上拉电阻,想对其单独输出高低电平是无法实现的。

74HC573锁存器芯片的使用

  参见开发板原理图,OE为使能端,当其为低电平时,锁存器开始工作,因此在开发板中已经默认让其接地。LE为锁存端,当其为高电平时,Q0-Q7与D0-D7的状态一样,也就是说芯片内部是打通的,即Q0-Q7随着D0-D7变化而变化;为低电平时,Q0-Q7都锁存数据,无论D0-D7如何变化,Q0-Q7都保持锁存的值不变。
  此处使用573来锁存和驱动,将单片机的P00-P07分别接在D0-D7,LE默认让其短接到VCC,即LE为高电平,也就是P00-P07怎么改变,则段选就怎么改变,因此可以通过P0口直接给数码管发送段选数据。

源程序–静态数码管

#include "reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;sbit LA=P2^2;
sbit LB=P2^3;
sbit LC=P2^4;u8 code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};void delay(u16 i)
{while(i--);
}void main()
{u16 i;LA=0;LB=0;LC=0;//LED1-->0 位选为LED1//P0=smgduan[0];//段选for(i=0;i<16;i++){P0=smgduan[i];delay(50000);}while(1);
}

动态数码管

特点
  将所有数码管的段选线并联在一起,由位选线来控制哪一位数码管有效。同开发板原理图中,两个四位一体的数码管,它们的段选都是并联在一起,通过单片机P0口来进行控制。而显示哪一位数码管则是通过位选(LED1…)来控制。

数码管动态显示原理

  所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余晖和人眼视觉暂留作用,让人感觉各位数码管“同时”都在显示(实际并非同时,有先后顺序,只不过间隔时间非常短,视觉感受不到)。

注:动态显示的亮度比静态显示要差一些(静态显示是直接通过单片机的IO口连到数码管的段选数据上;而动态显示是将每一个数码管的段选并联,则电流分流),故在选择限流电阻时应略小于静态显示电路中的。

74HC138芯片的使用

真值表:

  三八译码器的A2为高位,对应开发板上的P24也就是C管脚。即A2 A1 A0分别代表的高/低电平(用1/0表示)的值转化为十进制(用m表示)则对应的输出就为Ym,也就对应了位选值。

源程序–动态数码管

#include "reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;sbit LA=P2^2;
sbit LB=P2^3;
sbit LC=P2^4;u8 code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};void delay(u16 i)
{while(i--);
}
void display()
{u8 i;for(i=0;i<8;i++){switch(i)//对应位选 点亮哪个数码管{case 0:LA=0;LB=0;LC=0;break;case 1:LA=1;LB=0;LC=0;break;case 2:LA=0;LB=1;LC=0;break;case 3:LA=1;LB=1;LC=0;break;case 4:LA=0;LB=0;LC=1;break;case 5:LA=1;LB=0;LC=1;break;case 6:LA=0;LB=1;LC=1;break;default:LA=1;LB=1;LC=1;break;}//对应段选 显示什么值P0=smgduan[i];//第一个数码管显示0;第二个显示1...delay(100);//时间越长 循环点亮越明显;时间越短 动态显示越稳定P0=0x00;//消隐 防止上一次P0口的数据显示过快而产生重影}
}
void main()
{while(1){display();}
}

小白上路之51单片机(STC89C52)--数码管相关推荐

  1. 51单片机学习 数码管 倒计时

    51单片机学习 数码管 倒计时 简介 1.硬件部分 普中单片机 开发板 (138译码器控制)数码管 2.软件部分 keil软件 硬件部分 138译码器 简介 74LS138 为3 线-8线译码器,共有 ...

  2. 51单片机八位数码管1到F动态滚动显示仿真及程序

    51单片机八位数码管1到F动态滚动显示仿真及程序 动态滚动显示仿真及程序 #include<reg51.h> #define uchar unsigned char #define uin ...

  3. 51单片机+DS18B20+数码管显示+串口通讯+Proteus仿真

    51单片机+DS18B20+数码管显示+串口通讯+Proteus仿真 本实验通过51单片机读取DS18B20温度传感器的温度,然后通过数码管显示,并通过串口,将读取到的温度数据发送出去. 本案例需要使 ...

  4. 51单片机实现数码管显示小数

    51单片机实现数码管显示小数 要求 1 Proteus 面向编程的模型搭建 2 代码实现 2.1. 实现数码管刷新 2.2 对小数进行分解的函数 3 测试用例 4 仿真结果 要求 要求1:根据整数部分 ...

  5. 【51单片机STC89C52】IO口模拟PWM控制SG90舵机

    一.PWM PWM ,英文名 Pulse Width Modulation ,是脉冲宽度调制缩写,它是通过对一系列脉冲的宽度进 行调制,等效出所需要的波形(包含形状以及幅值),对模拟信号电平进行数字编 ...

  6. 单片机学习笔记————51单片机实现数码管中的倒计时程序

    一.使用proteus绘制简单的电路图,用于后续仿真 二.编写程序 /***************************************************************** ...

  7. 51单片机七段数码管显示时钟无按键控制—①—74HC595版

    参考链接: 51单片机七段数码管显示时钟加按键控制-③-74HC595版 51单片机七段数码管显示时钟加按键控制-②-74HC595版 文章目录 一.实验内容: 二.实验分析: 三.仿真图: 四.源代 ...

  8. 51单片机控制数码管显示

    前言 今天学习51单片机的数码管模块 我的学习板上面的数码管是4为一体由12个引脚控制的模块. 今天就编程控制它显示我们想要的输出. 数码管本质上是由8个LED拼接而成的,他们分别叫做a,b,c,d, ...

  9. 51单片机——动态数码管实验,小白讲解,相互学习

    多位数码管介绍: 多位数码管,即两个或两个以上单个数码管并列集中在一起形成一体的数码管.当多位一体时,他们内部的公共端是独立的,二负责显示什么数字的段线(a-dp)全部是连接在一起的,独立的公共端可以 ...

最新文章

  1. 一个用于录制用户输入操作并实时回放的小工具
  2. C#中Dispose和Close的区别
  3. 基于LM567制作的反射式红外检测电路,用于节能信标检测电路
  4. DOMContentLoaded与load的区别
  5. Python-Evoked地形图可视化
  6. VC批量拷贝,移动,删除文件---SHFileOperation
  7. linux中iptable中端口,Linux如何打开iptables中的端口
  8. 电脑中毒的表现有哪些?电脑中毒了怎么办?
  9. 技术人员如何"正确"的浪费时间?
  10. java中必检异常有哪些_Java面试题经典面试题220道(附答案)
  11. android textview 背景图片,Android—TextView 背景颜色与背景图片设置
  12. linux配置utf-8环境
  13. Android JNI学习(四)——JNI的常用方法的API
  14. python安装依赖比较慢的解决方法
  15. ab753变频器参数怎么拷贝到面板_20款常用变频器密码,想成为电工老师傅你一定需要,纯干货分享!...
  16. 自动化运维工具 Ansible ,SaltStack,Salt,Puppet
  17. win7计算机病毒制作教程,怎么制造计算机病毒
  18. 2021安装VSCode教程并创建第一个项目,同时设置成中文语言(超详细)
  19. 移动硬盘备份linux系统盘,Ubuntu 系统备份到移动硬盘(tar) 还原到另一台电脑
  20. 第一届腾讯社交广告高校算法大赛经验分享

热门文章

  1. Verilog ACC 子程序列表
  2. Concis组件库封装——Badge徽标
  3. Android基础笔记(十七)- 多媒体编程
  4. 中南大学计算机学院竞赛,2019 CCSP华中分赛区竞赛在湖南大学举办,中南大学苏志华夺冠...
  5. 计算机发展红火,为何女性却越来越少?一场圣诞夜的反思
  6. Python爬虫:Scrapy的Crawler对象及扩展Extensions和信号Signals
  7. CVPR 2022 | 超越RepVGG!浙大阿里提出OREPA:在线卷积重参数化
  8. 使用uni-poup制作日历弹出框
  9. matlab软件与科学计算,MATLAB与科学计算教程
  10. 许嵩安徽蚌埠安徽财经大学歌友会