基于51单片机实现静态数码管显示

发布时间:2023-07-18  

前言

前面我们已经介绍了如何控制51 单片机的IO 口输出高低电平,本教程我们通过另外一个实验来讲述51 单片机IO 口的输出。通过单片机的IO 口控制板载数码管显示。可以参考前面的实验章节内容。


一、数码管介绍

1.数码管简介

数码管是一种半导体发光器件,其基本单元是发光二极管。数码管也称LED数码管,不同行业人士对数码管的称呼不一样,其实都是同样的产品。数码管按段数可分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元,也就是多一个小数点(DP),这个小数点可以更精确的表示数码管想要显示的内容;按能显示多少个(8)可分为1 位、2 位、3 位、4 位、5 位、6 位、7 位等数码管。按发光二极管单元连接方式可分为共阳极数码管和共阴极数码管。


共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共阳数码管在应用时应将公共极COM 接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。


共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴数码管在应用时应将公共极COM 接到地线GND 上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。


2.数码管显示原理

不管将几位数码管连在一起,数码管的显示原理都是一样的,都是靠点亮内部的发光二极管来发光,下面我们就来讲解一个数码管是如何亮起来的。数码管内部电路如下图所示:

图片

从上图可看出,一位数码管的引脚是10 个,显示一个8 字需要7 个小段,另外还有一个小数点,所以其内部一共有8 个小的发光二极管,最后还有一个公共端,多数生产商为了封装统一,单位数码管都封装10 个引脚,其中第3 和第8 引脚是连接在一起的。而它们的公共端又可分为共阳极和共阴极,图中间为共阳极内部原理图,右图为共阴极内部原理图。


对共阴极数码来说,其8 个发光二极管的阴极在数码管内部全部连接在一起,所以称“共阴”,而它们的阳极是独立的,通常在设计电路时一般把阴极接地。当我们给数码管的任意一个阳极加一个高电平时,对应的这个发光二极管就点亮了。如果想要显示出一个8 字,并且把右下角的小数点也点亮的话,可以给8个阳极全部送高电平,如果想让它显示出一个0 字,那么我们可以除了给第“g,dp” 这两位送低电平外,其余引脚全部都送高电平,这样它就显示出0 字了。


如果使用共阴数码管,需要注意增加单片机IO 口驱动电流,因为共阴数码管是要靠单片机IO 口输出电流来点亮的,但单片机I/O 口难以输出稳定的、如此大的电流,所以数码管与单片机连接时需要加驱动电路,可以用上拉电阻的方法或使用专门的数码管驱动芯片,比如74HC573、74HC245 等,其输出电流较大,电路接口简单。


共阳极数码管其内部8 个发光二极管的所有阳极全部连接在一起,电路连接时,公共端接高电平,因此我们要点亮哪个发光管二极管就需要给阴极送低电平,此时显示数字的编码与共阴极编码是相反的关系,数码管内部发光二极管点亮时,也需要5mA 以上的电流,而且电流不可过大,否则会烧坏发光二极管。因此不仅要防止数码管电流过大,同时要防止流经数码管的电流集中到单片机时电流不能过大,否则会损坏主芯片。


一般共阳极数码管更为常用,为什么呢?这是因为数码管的非公共端往往接在IC 芯片的I/O 上,而IC 芯片的驱动能力往往是比较小的,如果采用共阴极数码管,它的驱动端在非公共端, 就有可能受限于IC 芯片输出电流不够而显示昏暗,要外加上拉电阻或者是增加三极管加大驱动能力。但是IC 芯片的灌电流,即输入电流范围比较大。所以使用共阳极数码管的好处是:将驱动数码管的工作交到公共端(一般接驱动电源),加大驱动电源的功率自然要比加大IC 芯片I/O口的驱动电流简单许多。另一方面,这样也能减轻主芯片的负担。


我们开发板上使用了一个共阳数码管作为静态数码管显示,本章实验也是在该数码管上实现单个的静态显示。如果要让共阴数码管显示数字0,即对应的段ABCDEF 要点亮即给它高电平,其他的段熄灭即给它低电平。其他的数字显示方式一样,这里就不多说。下面给出共阴和共阳数码管的0-F 段码数据表,如下所示:

图片

①共阴数码管码表


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     无显示

②共阳数码管码表


0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92,

0     1     2     3     4     5

0x82, 0xF8, 0x80, 0x90, 0x88, 0x83,

6     7     8     9     A     B

0xC6, 0xA1, 0x86, 0x8E, 0xFF,

C     D     E     F     无显示


从上述共阳和共阴码表中不难发现,它们的数据正好是相互取反的值。比如共阴数码管数字0 段码:0x3f,其二进制是:0011 1111,取反后为:1100 0000,转换成16 进制即为0XC0。其他段码依此类推。该段码数据由来,是将a 段作为最低位,b 段作为次低位,其他按顺序类推,dp 段为最高位,共8 位,正好和51 单片机的一组端口数一样,因此可以直接使用某一组端口控制数码管的段选数据口,比如P0 口。


3.数码管静态显示原理

LED 数码管显示器工作方式有两种:静态显示方式和动态显示方式。静态显示的特点是每个数码管的段选必须接一个8 位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。这种方法的优点是占用CPU 时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高,比如使用4 个静态数码管,那么就得32 个IO 来控制,这对51 单片机来说是无法承受的,正因为如此才会有后面章节动态数码实验的讲解。


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


本章实验主要介绍静态数码管的控制,有关动态数码管控制将在下一章节介绍。有关静态数码管的详细介绍,大家可以在百度上查找了解。


二、硬件设计

开发板上的静态数码管模块电路如下图所示:

图片

上图电路是静态数码管电路,模块独立,使用的是1 个共阳数码管组成,即8 位数码管的段选数据a-dp 全部一起引出,数码管的位选即公共端直接接VCC,根据共阳数码管显示特点可知,只要保证数码管a-dp 段输入电平为低电平即可点亮。由于使用的是共阳数码管,公共极接VCC,所以在数码管控制端可加一个限流电阻,阻值为470 欧(471)。本实验使用P0 口连接J8 端子。


二、软件设计

我们所要实现的功能是:控制静态数码管显示数字0,即让P0 端口输出数字0 的段码0x3f(共阴)。

#include "reg52.h"

typedef unsigned int u16;  //对系统默认数据类型进行重定义

typedef unsigned char u8;

#define SMG_A_DP_PORT  P0  //使用宏定义数码管段码口

//共阴极数码管显示0~F的段码数据

u8 gsmg_code[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,

void main()

{  

  SMG_A_DP_PORT=~gsmg_code[0];//将数组第1个数据赋值给数码管段选口

  while(1){ 

  }    

}


main.c 文件内代码非常少也很简单,首先将51 单片机的头文件包含进来,然后定义一个全局数组变量gsmg_code 存放共阴数码管0-F 段码数据。主函数功能也很简单,首先将数组的第1 个数据赋值给SMG_A_DP_PORT,因为数组内定义的是共阴数码管段码,数组角标为0 存储的就是第一个数据0X3F,然后按位取反变为0XC0,即共阳数码管段码0 的数据。然后进入while 循环,单片机此时一直在while 内循环操作。当然该条语句也可以放在while 循环语句内,同样会让静态数码管显示0。


数码管依次显示源码如下:

#include< reg52.h >

typedef unsigned int u16;

typedef unsigned char u8;

#define SMG_A_DP_PORT  P0



u8 gsmg_code[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};



void delay_10us(u16 time_us){

  while(time_us--);

}



void main()

{

  u16 i;

  while(1)

  {      

    for(i=1;i< 17;i++){

      SMG_A_DP_PORT=~gsmg_code[i];

      delay_10us(50000);

      delay_10us(50000);

    }

  }

}


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    器锁存00111111,用十六进制表示为0x3f。以此类推,我么可以把数码管显示的数字以数组形式存储在单片机程序储存其中,数组下标即为对应的显示数字,方便使用。 数码管静态显示由锁存器输出端将I/O电平......
    时,CPU被显示程序占用,无法在动态显示的同时扫描键盘。所以需要开中断,实现有键按下扫描键盘,无键按下动态显示的效果。 二、键盘线反转法+数码管动态显示 1、硬件仿真 首先......
    入门实验;/************************************************************************************** *               静态数码管显示实验   * 实现现象:下载程序后数码管静态显示0。 注意事项:如果不想让点阵模块显示,可以将74HC595模块上的JP595短接......
    扫描速率足够快,由于视觉暂留现象就会给人以恒定显示的表现。动态显示可以减少硬件的使用,但是需要微处理器一直为它工作。 二、数码管显示程序 1、静态显示 静态显示用到的元件有:74LS273(锁存......
    51单片机数码管静态显示和动态显示原理及实验 夜猫子;数码管 多位数码管,即是两个或两个以上单个数码管并列集中在一起形成一体的数码管。当多位一体时,它们内部的公共端是独立的,而负责显示......
    28H,7EH,0a4H,64H,72H,61H,21H,7CH,20H,60H END 从上面的单片机程序能看出,动态显示和静态显示相比,程序稍有点复杂,不过,这是值得的。这个程序有一定的通用性,只要改变端口的值及计数器的值就能显示更多位数了。 ......
    基于51单片机实现静态数码管显示;前言 前面我们已经介绍了如何控制51 单片机的IO 口输出高低电平,本教程我们通过另外一个实验来讲述51 单片机IO 口的输出。通过单片机的IO 口控制板载数码管显示......
    为主控核心,与矩阵键盘、晶振、LED 显示管模块一起组合而成。其工作过程为:首先存储单元初始化,显示初始值和键盘扫描,判断按键位置,得出按键值,单片机则对数据进行储存与相应的处理转换,之后送入数码管动态显示......
    ,读出温度子程序,计算温度子程序数码管显示程序以及按键控制程序等。 一、温度显示系统总设计原理 系统设计总框架如图1. 1.控制模块:通过应用单片机,对系统进行初始化,主要完成对数码管显示......
    光二极管的阴极都连在一起的,称之为共阴极LED数码管显示器。本次设计采用共阳极LED数码管。 在单片机应用系统中,数码管显示器显示常用两种办法:静态显示和动态扫描显示。所谓静态显示,就是每一个数码管显示......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>