历史上的今天
返回首页

历史上的今天

今天是:2025年04月05日(星期六)

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

2020-04-05 来源: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);

    }

  }

}


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

在这里插入图片描述

推荐阅读

史海拾趣

富瀚(Fullhan)公司的发展小趣事
检查保护器的各项设置参数是否正确,如过载保护阈值、逆相保护设置等。
ETL semiconductor公司的发展小趣事

三星(Samsung)原本是一家以家电和电子产品为主的综合性企业。然而,在半导体行业快速发展的背景下,三星决定加大在半导体领域的投入。经过数十年的努力,三星不仅在存储芯片领域取得了显著成就,还在逻辑芯片和代工业务方面取得了重要进展。如今,三星已成为全球领先的半导体企业之一。

德索五金(dosinconn)公司的发展小趣事

发展历程:2015年,德索五金电子国际控股有限公司在香港注册成立,为公司拓展海外市场提供了有力支持。通过不断优化产品和服务,德索五金电子逐渐在国际市场上赢得了客户的信任和认可。

成果与影响:海外市场的拓展使德索五金电子的业务范围更加广泛,也为公司的国际化发展奠定了坚实的基础。

First Switchtech公司的发展小趣事

为了应对原材料成本上涨和市场竞争加剧的挑战,First Switchtech公司(或类似公司)实施了供应链优化策略。公司通过与上游供应商建立长期合作关系,实现了原材料的稳定供应和成本的有效控制。同时,公司还引入了先进的生产管理系统,提高了生产效率和产品质量。这些措施不仅降低了产品的生产成本,还增强了公司的市场竞争力。

台湾君耀(Brightking)公司的发展小趣事

君耀(Brightking)公司于1996年在台湾新竹高科技园区创立,初期专注于防雷元器件的研发和生产。凭借对技术的深入研究和市场需求的敏锐洞察,君耀逐步在台湾的电子器件市场上占得一席之地。随着产品质量和技术含量的提升,君耀的产品开始受到国内外客户的青睐,销售网络逐渐拓展至全球。

Andigilog公司的发展小趣事

君耀(Brightking)公司于1996年在台湾新竹高科技园区创立,初期专注于防雷元器件的研发和生产。凭借对技术的深入研究和市场需求的敏锐洞察,君耀逐步在台湾的电子器件市场上占得一席之地。随着产品质量和技术含量的提升,君耀的产品开始受到国内外客户的青睐,销售网络逐渐拓展至全球。

问答坊 | AI 解惑

《精通开关电源设计》经典教材

精通开关电源设计 【内容简介】本书基于作者多年从事开关电源设计的经验,从分析开关变换器最基本器件——电感的原理入手,由浅入深系统地论述了宽输入电压DC-DC变换器(含离线式正、反激电源)及其磁件设计、MOSFET导通和开关损耗、PCB布线技术、三 ...…

查看全部问答>

【藏书阁】正弦电磁场

目录: 第一章 基本概念 第二章 波的简介 第三章 若干定理和概念 第四章 平面波函数 第五章 柱面波函数 第六章 球面波函数 第七章 微扰法及变分法 第八章 微波网络 详细信息: 理科、工程技术:正弦电磁场     * 图书出 ...…

查看全部问答>

大家好

广告 ti DSP芯片,电力,视频,通信等领域开发板卡,仿真器供应,公司为国内最大的DSP产品和解决方案提供商,负责北方(含北京)地区,可提供技术支持,服务。(主要是2000、5000、6000系列)需要咨询请联系:13810463731,010-51518855-825 EMIL: ...…

查看全部问答>

程序运行其间自动进入resethander,求解

                                 不知道为什么,每一两秒钟就会复位一次.求hint.…

查看全部问答>

MSP430F2001怎么不了驱动电子纸广告牌?

最近弄了一个用MSP430F2001加两个HEF4904BT来驱动电子纸广告牌,从市面上买了一个MSP430F2001的ic回来,可是却驱动不了,不知道是怎么了,可以确定其它的东西都没问题,是不是里面要再写入一些程序进去呢?请高手指教!谢谢!…

查看全部问答>

基于51单片机的函数信号发生器资料总汇

基于51单片机的函数信号发生器资料总汇…

查看全部问答>

如何实现每个灯泡一个IP地址?

如何实现每个灯泡一个IP地址?请见附件。…

查看全部问答>

launchpad 连接报错

使用 msp430 launchpad,感觉连接电脑下载程序的时候,总是连接不上,包器件初始化错误,论坛有一篇关于 “手把手教你launchpad.pdf”介绍说给板子断电然后在重新编译,给板子上电就好了,但是我连续弄了好几次,包括重新关闭IAR再开,都是不行,不 ...…

查看全部问答>

穷学生仿制的USB虚拟示波器

      本人穷学生一枚,很想购买一台自己的示波器,但是苦于没有银子, 所以就动了贼心。自己DIY一个,反正我又不要求有多高的精度,能简单的显示波形就行,不但能省钱还能锻炼自己的动手能力呢!所以我就在各大论坛上寻找啊寻 ...…

查看全部问答>

TI工程师的视频课程,既学知识又学英语!快来看!

WEBENCH 在线设计软件的视频video platformvideo managementvideo solutionsvideo player复制代码…

查看全部问答>