目录

  • 1.数码管
    • 1.1.什么是数码管?
    • 1.2.数码管的种类
    • 1.3.分段式发光二极管数码管
      • 1.3.1八段和七段数码管笔画分布
      • 1.3.2.TTL 门驱动半导体数码管电路
      • 1.3.3.识图方法
    • 1.4.荧光数码管
    • 1.5.辉光数码管
  • 2.数码管仿真
    • 2.1. BCD-七段显示译码器 7448
    • 2.2. 数码管静态显示
      • 2.2.1. 轻触开关与按键消抖
      • 2.2.2.原理图与代码
    • 2.3. 数码管的动态显示

1.数码管

1.1.什么是数码管?

数码显示器简称数码管,是一种可以显示数字和其他信息的电子设备。它在数字式显示系统中是不可缺少的器件,应用极其广泛,发展速度很快,数码管朝着小型化、 平面化、多功能化和低耗电方面发展。

1.2.数码管的种类

数码管主要有下列三大类。

  1. 字形重叠式数码管。这种数码管的特点是将不同的数字、字母等符号的电极重叠起来,当需要哪一个符号显示时,就驱动该符号的电极,使之发光显示,此时其他符号电极不发光。 这种数码管有辉光放电管和边光显示管等。
  2. 分段式数码管。这种数码管的特点是将一个数字分成若干个笔画,通过驱动相应的笔画发光来显示某一个数字,如荧光数码管就是这种类型的。 分段式数码管有八段式和七段式两种。在数字显示方面,分段式数码管是主要显示器件。
  3. 点矩阵式数码显示器件。这种显示器由一些可发光的点阵排列而成,利用发光点不同排列和组合显示数字或字符,如场致发光数字板就是这种显示器件。

如果按照数码管发光物质不同,数码管可以分成下列 4 种类型。

  1. 半导体数码管。这种数码管由半导体 发光二极管(LED)构成,所以又称为发光二极管数码管,或发光二极管显示器。按发光二极管单元连接方式可分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。如图:

    这种数码管也是最常用的数码管

  2. 荧光数码管。这是一种电真空器件,荧光数码管、场致发光数字板等就是这种显示器件。

  3. 液体数码管。如液晶显示器、电泳显示器等就是这种显示器件。

  4. 气体放电数码管。例如辉光数码管、 等离子体显示板等就是这种显示器件。

1.3.分段式发光二极管数码管

在进行数字显示时,分段式数码管显示电路最常用。

1.3.1八段和七段数码管笔画分布

下图左边所示是八段数码管各段分布示意图,图中共有a~dp这8段笔画,右边所示是这种数码管显示 0 ~ 9 这 10 个数字时的笔画示意图。

下图为七段数码管各段分布图,与八段的唯一区别是没有右下角的小数点“dp”

1.3.2.TTL 门驱动半导体数码管电路

下图所示是用 TTL 门驱动半导体数码管的电路,这一电路中只画出它的一段驱动电路,其他各段的驱动电路与此相同。
当译码器输出高电平 1 时,与非门 A 输出低电平 0,这样发光二极管 VD1 导通发光。当译码器输出低电平 0 时,与非门输出高电平 1, 这样 VD1 不能导通发光。 电路中,VD1 是数码管中的任一段发光二极管,R1 为限流保护电阻。数码管中的哪几段发光二极管导通发光与不发光由译码器控制。 半导体数码管的工作电压较低,一般为 1.5~ 3V, 所以可以用集成门电路直接驱动。这种半导体数码管的段电流比较大,为几至十几毫安。

1.3.3.识图方法

关于发光二极管数码显示电路主要说明下列几点。

  1. 下图(a)所示是由发光二极管构成的分段式数码显示器件,这是一个七段式数 码显示器,a ~ g 分别是七段笔画,TP 是小数点。 (b)所示是显示电路,A、B、C 和 D 是二进制数码输入端,该数码首先输入到七段式译码器电路中,其输出信号分别从 7 个输出端 a ~ g 输出,加到各自的驱动三极管基极,由导通的三极管来驱动笔画段发光二极管发光显示。
  2. 这种显示电路中的显示器件采用发光二极管,发光二极管的驱动电路比较简单,电路分析时要分成输入驱动管的高电平 1 和低电 平 0 两种情况,通过 1 或 0 对驱动管的偏置状态来判断驱动管是否导通。在输入信号给驱动管正向偏置时,驱动管导通,发光二极管发光显示;在输入信号给驱动管反向偏置时,驱动管截止,发光二极管不能发光显示。
  3. 发光二极管数码管中有许多个单个的发光二极管或 PN 结,它们都有一个相同的驱动电路,分别驱动各自的发光二极管,进行电路分析时只要对其中一个驱动电路分析就行。
  4. 发光二极管数码管具有亮度强、清晰度高、低电压(1.5 ~ 3V)、 可靠性好、体积小、 寿命长(大于 1000h)等优点,其缺点是工作电流还是比较大了一些,一般加入一个470~800Ω的限流电阻。

1.4.荧光数码管

荧光数码管是分段式的数码管。下图所示是 YS-18-3 型荧光数码管外形和引脚排列示意图。这是一个八段式荧光数码管,图(a)所示是外形示意图,图(b)所示是引脚排列示意图。

荧光数码管是一种电真空器件,其工作原理与普通的电子管相似,它的灯丝就是阴极(为直热式阴极),当灯丝通电后灯丝就会发热(即阴极发热),由于在阴极表面涂有一层逸出功很小的氧化物,于是在阴极发热后会发射大量的电子。 荧光数码管内设置有一个栅极,在栅极上加有 +20V 直流电压,栅极电压相对阴极而言为正电压,这样阴极发射出来的大量电子受到栅极正电场的吸收而得到加速。 荧光数码管的阳极也是接 +20V 直流电压(实际电路中栅极与阳极在外电路中直接相连), 这样受到电场加速的绝大多数电子冲过网状的栅极,高速轰击阳极表面。在阳极表面涂有一 层荧光粉(为氧化锌材料),荧光粉在受到高速轰击的电子作用下而发出光。

荧光数码管内的笔画就是阳极,所以八段式荧光数码管就有 8 个阳极。当某一个或某几个阳极受到高速电子轰击后发光,就能显示出某一个数字。具体有哪几个阳极发光,这是需要译码器输出的信号来控制。 荧光数码管的优点是工作电压低,驱动电流小,显示清晰悦目,视角大,工作可靠性好, 寿命长,但是机械强度差,使用安装不方便。

由于在单片机中不经常使用,所以不再此详述。

1.5.辉光数码管

辉光数码管是一种字形重叠式气体放电显示器件。这种数码管与分段式数码管不同,它 将各种不同的数字或字符直接置于玻璃壳内, 通过译码器和驱动器电路直接将某一数字或字 符点亮即可显示。

下图所示是辉光数码管示意图,图(a)所示是 SZ-1 型辉光数码管的引脚排 列示意图,图 (b)所示是该管显示十进制数 8 时的示意图。辉光数码管外壳为透明的玻璃材料,体形矮胖,管内充有惰性气体,不需要灯丝加热,靠辉光放电来显示数码。

辉光数码管内有一个阳极 a(②脚),另有 10 个阴极 k0 ~ k9,它们分别是数字 0 ~ 9,它们各有一根引脚接到管壳外部。在辉光数码管工作时,阳极上接有 +180V 直流电压,当某一个阴极在外电路中接地时,该阴极与阳极之间有 +180V 直流电压,这样阳极与该阴极之间进行气体放电,此时该接地阴 极就能发出橘红色辉光数字,达到显示目的。在某一个阴极接地时,其他各阴极处于悬空或高电位状态,它们的阴极不能发光显示。

由于在单片机中不经常使用,所以不再此详述。

2.数码管仿真

2.1. BCD-七段显示译码器 7448

7448芯片的内部逻辑图(a)与逻辑框图(b):

该芯片的主要控制电路工作状态和扩展功能。对数码管主要起简化逻辑的功能,在1.3.3.中的驱动芯片即为7448。在Proteus 8 Professional中的 7SEG-BCD 数码管就是普通共阴数码管和7448封装在一起。如图:

四个引脚从左至右分别为 7448 的 A3 ~ A0 .

在Proteus 8 Professional中建立如图所示的原理图:
上述原理图的仿真视频链接

2.2. 数码管静态显示

2.2.1. 轻触开关与按键消抖


轻触开关为机械弹性开关,当机械触点断开、闭合时由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开的时候也不会一下子断开。因为在闭合及断开的瞬间均伴随有一连串的抖动(如下图),这种抖动可能会引起我们芯片进行错误的判断,为了不产生这种现象而作的措施我们称之为按键消抖。
为了解决按键抖动我们有软件消抖和硬件消抖两种方法。
硬件消抖:顾名思义,在电路中添加元器件来达到消抖的目的,例如复位电路的电容,或RS触发器,如图:

软件消抖:我们在使用开关的时候加一个延迟函数,跳过电平的不稳定时间即可:

void delay(){uint i;for(i = 0 ; i < 123 ; i ++);}void key(){if(KEY0 == 0){delay();if(KEY0 == 0){...........}}}

或者使用下面的方法,在开关按下的时候a加一,再判断a和开关的状态,这个方法适用于短按,不适用于长按多少秒之类的。

void key(){if(key0 == 0 && a == 0){a = 1;}if(a == 1 && key0 == 1){a = 0;sum++;}}

2.2.2.原理图与代码


在Proteus 8 Professional中绘制上图所示的原理图。

然后开始写程序。

#include<reg52.h>           //此文件中定义了单片机的一些特殊功能寄存器
#define uint unsigned int    //对数据类型进行声明定义
#define uchar unsigned char  //对数据类型进行声明定义
sbit key0 = P1^0;          // 位地址的声明 ,注意:sbit 必须小写 ,P必须大写
uint s[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40,0x40,0x80,0x00};  //共阴数码管0~9 、 A~F 、 - 、 . 熄灭
uint sum = 0;      //定义无符号的整型变量  unsigned int 的数据范围为0~65535(2^16 - 1)
uchar a=0;         //定义无符号的字符型变量  unsigned char 的数据范围为0~255(2^8 - 1)void delay(uint n)       // 延时函数,大约延时 n ms{uint i,j;for(i = 0 ; i < n ; i ++){for(j = 0 ; j < 123 ; j ++);}}void key()   // 按钮函数 ,按下开关数码管变换{if(key0 == 0 && a == 0){a = 1;}if(a == 1 && key0 == 1){a = 0;sum++;}}void seg()    // 数码管的显示函数{P2 = s[sum];if(sum == 18){sum = 0;}}void main(){while(1){key();seg();}}

上述程序仿真视频链接

2.3. 数码管的动态显示

多个数码管显示数字的时候,实际上是轮流点亮数码管(即一个时只有一个数码管是亮的),利用人眼的视觉暂留现象(也叫余辉效应),就可以做到看起来是所有数码管都同时亮了,这就是动态显示,也叫动态扫描。

假如有两个数码管,要显示“12”这个数字,先让高位的数码管导通,然后控制单片机I/O口让其显示“1”,延时到一定时间后再让低位的数码管导通,控制单片机的I/O口让其显示“2”。把这个流程以一定的速度循环运行就可以让数码管显示出“12”,由于交替速度非常快,人眼识别到的就是“12”这两个数字同时亮了。
如图:

代码:


#include<reg51.h>
#define uchar unsigned char
#define uint unsigned intuchar s[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};       //共阴数码管0~9
uchar t0 = 0 ,t1 = 0 , t2 = 0 , t3 = 0 , t4 = 0 , t5 = 0 ;
uchar b = 0 , c = 0 , d = 0;void delay(uint n)              //延时函数(运行空项目以达到延迟时间的效果)
{uint i,j;for(i = 0 ; i < n ; i ++){for(j = 0 ; j < 120 ; j ++);}
}void display1()                           //在数码管上显示
{P2 = 0x7f ;                 //P2^7低电平  0111 1111   控制第一个数码管 P0 = s[t0] ;         delay(1) ;                //延时大约1msP2 = 0xbf ;               //P2^6低电平  1011 1111   控制第二个数码管 P0 = s[t1] ;          delay(1) ;P2 = 0xdf ;               //P2^5低电平  1101 1111   控制第三个数码管 P0 = 0x40 ;              delay(1) ;P2 = 0xef ;                //P2^4低电平  1110 1111   控制第四个数码管 P0 = s[t2] ;          delay(1) ;P2 = 0xf7 ;               //P2^3低电平  1111 0111   控制第五个数码管 P0 = s[t3] ;           //用来显示“分”的个位delay(1) ;P2 = 0xfb ;                  //P2^2低电平  1111 1011   控制第六个数码管 P0 = 0x40 ;               delay(1) ;P2 = 0xfd ;               //P2^1低电平  1111 1101   控制第七个数码管 P0 = s[t4] ;          delay(1) ;P2 = 0xfe ;               //P2^0低电平  1111 1110   控制第八个数码管 P0 = s[t5] ;          delay(1) ;
}void main()                      //主函数
{while(1){display1();}
}

51单片机入门——数码管相关推荐

  1. 51单片机入门————数码管显示

    我们在马路上看到的红绿灯,就是由数码管来实现的,就是其中可能加入了一些延时和转换 数码管是通过控制138译码器与74HC245来控制数码管的亮灭与数字的显示 电路原理图 我们先讨论一个数码管 数码管有 ...

  2. 51单片机入门——矩阵按键

    文章目录 1.按键 1.1.独立按键 1.2.矩阵按键 2.按键的扫描与抖动 2.1.独立按键的扫描 2.2.按键抖动与消抖 2.3.矩阵按键的扫描 3.简易计算器 1.按键 1.1.独立按键 常用的 ...

  3. 51单片机入门学习小结(流水灯与数码管)

    51单片机入门学习小结(流水灯与数码管) 对原理图的分析 以下是我所用单片机的原理图 这块51单片机一共有4个I/O口(意思为input/output),也代表着如果我们后续都要用到这四个的话那么功能 ...

  4. 51单片机入门教程(3)——数码管显示

    51单片机入门教程(3)--数码管显示 一.LED数码管简介 二.数码管静态显示 三.数码管动态显示 特别鸣谢:HFUTer-朱聪强 一.LED数码管简介 LED数码管(LED Segment Dis ...

  5. 51单片机入门教程(6)——外部中断

    51单片机入门教程(6)--外部中断 一.外部中断 1.1 中断 1.2 外部中断 二.中断优先级 一.外部中断 1.1 中断 关于中断的概念在上一篇博客中已经提到了.(传送门:51单片机入门教程(5 ...

  6. 51单片机入门教程(5)——定时器中断

    51单片机入门教程(5)--定时器中断 一.中断的概念 二.定时器中断 2.1 软件延时的不足 2.2 中断寄存器 2.2.1 中断允许控制寄存器 IE 2.2.2 定时器工作方式寄存器 TMOD 2 ...

  7. 51单片机入门——16路抢答器

    文章目录 设计要求 电路原理图 硬件原理 时钟信号(晶振) 矩阵按键与独立按键 代码解析 设计要求 同时为16支参赛队提供抢答功能,抢答成功后应能通过数码管显示出参赛队号数,同时点亮发光二极管示意抢答 ...

  8. 51单片机入门基础介绍

    51单片机入门基础介绍 文章目录 51单片机入门基础介绍 前言 常用元器件 发光二极管 数码管 LED数码管的显示方式 按键 定时计数器 串行口控制寄存器SCON 中断系统 中断源及中断请求 中断允许 ...

  9. 51单片机入门——数字时钟

    文章目录 1. 前言 1.1. 设计要求 2. 硬件原理 2.1. 时钟信号(晶振) 2.2. 按键开关 2.3. 数码管显示 3. 原理图 3.1. 仿真原理图 3.2. AD原理图 3.3. PC ...

  10. 51单片机入门学习笔记(上)

    笔记整理自B站UP主江科大自化协教程<51单片机入门教程-2020版 程序全程纯手打 从零开始入门> 所用单片机为普中51 STC89C52单片机2022新款,文中所提到的调试现象及结果也 ...

最新文章

  1. 百度大脑发挥AI“头雁效应” 王海峰:在AI时代共同推动社会智能化升级
  2. (一)检测浏览器是否支持websocket
  3. 快速排序的实现及优化
  4. #define与const的差别
  5. memcmp()库函数实现
  6. bootstrap table 分页_Java入门007~springboot+freemarker+bootstrap快速实现分页功能
  7. LeetCode 173. 二叉搜索树迭代器(中序遍历)
  8. 数字化转型知识方法系列之:数字化转型的基本认识与参考架构
  9. Vue报错'Do not use built-in or reserved HTML elements as component id:解决方法
  10. 孙鑫VC学习笔记:第十五讲 (三) 增加互斥条件实现线程同步
  11. Objective-C写出Json文件(可作配置文件)
  12. matlab查表svpwm,SVPWM的MATLAB仿真实现
  13. 可解释人工智能XAI
  14. Unity 之 发布 WebGl 遇到的问题
  15. 英语语法形容词的顺序
  16. Jboot整合MySQL
  17. 关于币圈炒币 你必须要知道的风险
  18. 【Mysql】SQL语句学习
  19. Android人脸识别和证件识别
  20. 利用python进行体重指数计算

热门文章

  1. java 解析cron_Quartz 源码解析(六) —— 解析Cron表达式
  2. STC官方软件波特率计算器使用方法
  3. java整人代码大全_整人代码vbs大全分享
  4. VB6.0鼠标注册详细教程
  5. PDFLIB C++修改及使用说明
  6. poi导出excel 损坏_poi导出excel解决方法
  7. windows下MATLAB2016a安装配置
  8. 【HTML简易版“冒险岛”小游戏】(游戏效果展示+全部源代码分享)
  9. 身份证读取设备开发解决方案:3、单片机读取身份证信息的demo
  10. 管家婆显示服务器没有加密狗,管家婆软件阿拉丁狗找不到加密狗