历史上的今天
返回首页

历史上的今天

今天是:2025年06月14日(星期六)

2020年06月14日 | 51单片机入门教程(3)——数码管显示

2020-06-14 来源:eefocus

一、LED数码管简介

LED数码管(LED Segment Displays)是由多个发光二极管封装在一起组成的器件。常见的LED数码管为“8”字型的,共计8段。每一段对应一个发光二极管。

在这里插入图片描述

数码管有共阳极和共阴极两种


共阴极: 数码管的发光二极管的阴极连在一起,通常公共阴极接地。当阳极为高电平时,发光二极管点亮。

共阳极: 数码管的发光二极管的阳极连在一起,公共阳极接正电压,当某个发光二极管的阴极接低电平时,发光二极管被点亮,相应的段被显示。

在这里插入图片描述

二、数码管静态显示

数码管静态显示就是无论多少位LED数码管,同时处于显示状态。


为了使数码管显示不同的符号或数字,只需要把某些段发光二极管点亮就可以了。

假设在共阴极的数码管上显示字符'0',需要将a、b、c、d、e、f置为高电平,即数码管八位输入为0011 1111,对应的16进制数为0X3F。所以我们只需要在程序中将0X3F赋值给对应的端口,如下:


//假设数码管与P0端口相连接

P0 = 0X3F;//显示字符‘0’


按照上述方法,显示各种字符的8段LED数码管的段码如下:

在这里插入图片描述

搭建仿真电路如下

在这里插入图片描述

例程如下:


/******************************************************************************

* 名称:单只数码管循环显示0~9

* 说明:主程序中的循环语句反复将0~9的段码送至P0口,使数字0~9循环显示

******************************************************************************/

#include

#define uchar unsigned char

#define uint unsigned int


//共阳数码管编码表

uchar code table1[] =

{0xc0,0xf9,0xa4,0xb0,

0x99,0x92,0x82,0xf8,

0x80,0x90,0x88,0x83,

0xc6,0xa1,0x86,0x8e};


//共阴数码管编码表

uchar code table2[] =

{0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};


//延时

void DelayMS(uint x)

{

uchar t;

while(x--) 

  for(t=0;t<120;t++);

}


//主程序

void main()

{

uchar i=0;

P0=0x00;

for(; i < 10; ++i)

  {


    P0 = table2[i];

    if(i == 9)

      i = 0;

DelayMS(300);

  }

  while(1);

}


三、数码管动态显示

如果有两位的数码管,每个数码管要显示不同的字符,那么电路该怎么搭建呢?

像这样???

在这里插入图片描述

可以是可以,但是占用了太多端口,如果要同时显示4位、8位数码管,单片机的端口显然就不够用了。


因此,对于多位数码管,经常使用动态扫描的方法来显示:

无论在任何时刻只有一个LED数码管处于显示状态,利用人的视觉暂留效应,依次显示每个不同的数码管。某一时刻,只有一位LED数码管被选通显示,其余位则是熄灭的,人眼看到的是若干位稳定的同时显示的字符。


搭建仿真电路如图:

在这里插入图片描述

例程如下:


/******************************************************************************

* 名称:8只数码管动态显示多个不同字符

* 说明:数码管动态扫描显示0~7。

******************************************************************************/

#include

#include

#define uchar unsigned char

#define uint unsigned int

//共阳数码管编码表

uchar code table1[] =

{0xc0,0xf9,0xa4,0xb0,

0x99,0x92,0x82,0xf8,

0x80,0x90,0x88,0x83,

0xc6,0xa1,0x86,0x8e};


//共阴数码管编码表

uchar code table2[] =

{0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

//延时

void DelayMS(uint x)

{

  uchar t;

  while(x--) 

    for(t=0;t<120;t++);

}

//主程序

void main()

{

  uchar i,wei=0x80;

  while(1)

  {

    for(i=0;i<8;i++)

    {

  P0=0xff;

  P0=table1[i];  //发送段码

  wei=_crol_(wei,1);

  P2=wei;    //发送位码

  DelayMS(2);

    }

  }

}


编译、烧录,实验效果如图:

在这里插入图片描述

推荐阅读

史海拾趣

DEVCON公司的发展小趣事

在1950年代,电子工业正处于蓬勃发展的初期。阿尔·克瑞顿,一位富有创新精神的化学家,在美国马萨诸塞州丹佛斯市的一个实验室里,经过无数次的试验,终于研发出了一种名为Devcon可塑钢修补剂的新型材料。这种材料经济实惠、不易燃,且能够作为焊接的替代品,迅速在电子制造和维修领域引起了广泛关注。这就是DEVCON公司的起点,一个由创新精神和市场需求共同点燃的火花。

Display Engineering Services公司的发展小趣事

在1950年代,电子工业正处于蓬勃发展的初期。阿尔·克瑞顿,一位富有创新精神的化学家,在美国马萨诸塞州丹佛斯市的一个实验室里,经过无数次的试验,终于研发出了一种名为Devcon可塑钢修补剂的新型材料。这种材料经济实惠、不易燃,且能够作为焊接的替代品,迅速在电子制造和维修领域引起了广泛关注。这就是DEVCON公司的起点,一个由创新精神和市场需求共同点燃的火花。

ETC1公司的发展小趣事

埃特斯是一家在ETC技术创新和市场应用方面均表现出色的企业。公司拥有一支高素质的研发团队,不断推出具有创新性的ETC产品和解决方案。同时,埃特斯还注重将创新技术应用于实际场景中,为客户提供高效、便捷的ETC服务。通过技术创新和市场应用的有机结合,埃特斯在ETC行业中树立了良好的口碑和品牌形象。

Hi-Tech Resistors Pvt Ltd公司的发展小趣事

成谷科技是一家专注于ETC技术在区域市场应用的企业。公司根据不同地区的交通特点和需求,量身定制ETC解决方案,并在当地市场进行深耕细作。通过深入了解当地市场和客户需求,成谷科技成功打造了一系列具有地方特色的ETC应用案例,赢得了当地政府和客户的广泛赞誉。

CMD公司的发展小趣事

CMD技术公司成立于1986年,当时的市场正处于计算机技术的飞速发展时期。公司初期主要聚焦于为DEC计算机系统开发SCSI主机适配器,这一决策在当时看来是富有远见的。随着个人电脑的普及,CMD的产品迅速获得了市场的认可,为后续的发展奠定了坚实的基础。

骅讯(Cmedia)公司的发展小趣事

为了进一步提升品牌影响力和市场竞争力,骅讯积极寻求与知名品牌的合作。通过与音频市场上的主要品牌建立合作关系,骅讯成功将其先进的音频技术应用于各种音频产品中,为消费者带来了更为优质的音频体验。这种合作模式不仅促进了骅讯技术的推广和应用,也为其带来了更为广阔的市场空间。

问答坊 | AI 解惑

最强大的串口桥式转换芯片

本帖最后由 jameswangsynnex 于 2015-3-3 19:57 编辑 我公司是JM系列IC的一级代理商,下面是JM IC的功能型号简介: JMicron智微科技主要产品研发方向为高速串行式连结(High Speed Serial Link)的相关技术,该技术现已广泛应用于Serial ATA、PCI E ...…

查看全部问答>

3.3 伏至 5 伏互联技巧

本帖最后由 paulhyde 于 2014-9-15 08:58 编辑 概述 我们对处理速度的需求日益增长,伴随着这种增长,用来构建单片机的晶体管尺寸则在持续减小。以更低的成本实现更高的集成度,也促进了对更小的几何尺寸的需求。随着尺寸的减小,晶体管击穿电压 ...…

查看全部问答>

喷气式甲克虫汽车

喷气式战斗机看到过,可经过改装的喷气式甲克虫汽车必定没看到过吧,看着这样的车必定有飞的感到。想看看发动引擎后的效果?请看下面的图片…

查看全部问答>

有没有开发过【软plc】的朋友

有没有开发过【软plc】的朋友 麻烦留下联系方式,谢谢~…

查看全部问答>

请教怎样实现路径选择界面

E:\\mobile.bmp 如图,请教高手怎么实现这样的文件打开时的路径选择界面, 最上面一行显示当前路径, 下面可以点选,进入或返回上一级路径, 多谢高手指教。 …

查看全部问答>

谁知道PROTEUS的第三方元件库怎么添加

有谁知道PROTEUS的第三方元件库怎么添加啊,我用的是7.5sp3的版本,我把.lib文件加到元件库里面但是还是以前那些元件,这是怎么回事啊?请大家帮帮忙!!!谢谢…

查看全部问答>

如何在窗口最下面那条(输入法旁边)上添加按钮?

Wince对话框程序 需要在最下面的蓝色条上添加个按钮 我加了ToolBar却显示在了窗口里面 高手快来啊 …

查看全部问答>

真的没人用upsd了吗

                                  …

查看全部问答>

TI的M3/M4能用作工业控制用么

请问TI的M3/M4能用作工业控制用么?…

查看全部问答>