历史上的今天
返回首页

历史上的今天

今天是:2025年08月17日(星期日)

2018年08月17日 | 51单片机功能模块学习笔记 — 数码管

2018-08-17 来源:eefocus

1. 共阳数码管的基本连接方式

这里写图片描述

如上图所示,当数码管的公共段连接到电源时,就被称为共阳数码管。那么,相应的共阴数码管就是公共段连接到地的一类数码管。

2.数码管的显示原理

根据数码管的显示原理:可分为共阴数码管和共阳数码管这里写图片描述

如上图所示,左图所有的二极管的公共段都被连接到地,如果我们想要在a-dp上有所显示,就应该在对应端口送“1”。同理,如果我们想要使得共阳数码管上显示某些特定的字符,就应该在对应位送“0”。

根据这个原理,我们可以算出0-F对应的共阴数码管和共阳数码管显示的十六进制字符。我们可以将所有字符放在一个数组里面,以便查询。


下列是共阴极数码管和共阳数码管段码的常用码表总结:


unsigned char code distab[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71} //共阴数码管段选码表,无小数点


unsigned char code distab[16]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0xf7,0xfc,0xb9,0xde,0xf9,0xf1} //共阴数码管段选码表,有小数点


unsigned char code distab[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}  //共阳数码管段选码表,无小数点


unsigned char code distab[16]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x08,0x03,0x46,0x21,0x06,0x0e} //共阳数码管段选码表,有小数点



3.共阳数码管实验程序



/*利用共阳极数码管显示0-F*/


#define SEGPORT P0      


unsigned char code TableCA[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,

                                0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};  //共阳极数码管码表



/*** 共阳数码管显示0-F  ***/

void ShowSegCA()

{

    unsigned char i;


    //查表显示

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

    {

        SEGPORT = TableCA[i];

        delay_ms(100);

    }


}

4.八位共阴数码管模块连接方式

这里写图片描述


如上图所示,两个74HC573锁存器分别连接到数码管的段码和位码端,分别进行位琐存控制和段琐存控制。那么,锁存器到底是干什么的呢?

4.1锁存器的电路原理图 
这里写图片描述

锁存器百度百科:


锁存器(Latch)是一种对脉冲电平敏感的存储单元电路,它们可以在特定输入脉冲电平作用下改变状态。锁存,就是把信号暂存以维持某种电平状态。锁存器的最主要作用是缓存,其次完成高速的控制器与慢速的外设的不同步问题,再其次是解决驱动的问题,最后是解决一个 I/O 口既能输出也能输入的问题。


以下是我个人对于锁存器的理解:


    锁存器就像是一道门,平时的时候门并不打开。当锁存器的琐存使能有效时,这道们才打开。就举上面八位共阴极数码管的例子来说,我现在想要实现在第一位数码管上显示数字“0”。

    那我应该如何利用锁存器来工作呢?第一步,先选中第一个数码管。

    首先,将选中第一位数码管的数据发送到位锁存器,这时候位琐存的门还没有开;接着,使能位琐存,门开了,数据送到数码管,根据数据选中第一位数码管;最后,关闭门。(为什么一定要关闭门呢?因为段琐存的数据输入端口和位琐存数据的数据输入端口都是连接到同一个P0的。我们必须要让数码管区分到底是发送的是位选数据还是段选数据,所以一个位数据发送完,我们必须把门再关上。)第二部,发送段选信号。即将“0”的十六进制数据发送到段锁存器,段锁存器默认情况下数据是不会变化的。接下来的操作过程和位锁存器一样。完成这两步,即可以使得第一位数码管上显示数字“0”。


5.八位共阴极数码管实验程序


/*使得八位共阴极数码管上依次显示数字0-7 */


#include "bsp.h"


#define SEGPORT P0      

sbit Wei_LATCH = P2^0;   //位琐存信号

sbit Duan_LATCH = P2^1;  //段琐存信号



unsigned char code TableCA[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,

                                0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};  //共阳极数码管码表

unsigned char code TableCC[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,

                                0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};  //共阴极数码管码表

unsigned char code TableSel[] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};  //位选码表


/*** 共阳数码管显示0-F  ***/

void ShowSegCA()

{

    unsigned char i;


    //查表显示

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

    {

        SEGPORT = TableCA[i];

        delay_ms(100);

    }


}


/*** 八位共阴极数码管分别显示0-8  ***/

void ShowSegCC()

{

    unsigned char i;


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

    {

        SEGPORT = TableSel[i];

        Wei_LATCH = 1;

        Wei_LATCH = 0;


        SEGPORT = TableCC[i];

        Duan_LATCH = 1;

        Duan_LATCH = 0;


        delay_ms(200);

    }

}


Ps:若是博客中有问题,欢迎各位提出,大家一起学习,一起进步!

1

2


推荐阅读

史海拾趣

Heatron LED Integration公司的发展小趣事

Heatron LED Integration深知品质对于产品的重要性,因此从原材料采购到生产制造,每一环节都严格把关。公司建立了完善的质量管理体系,确保每一款LED产品都能达到国际最高标准。同时,公司还注重产品的性能优化,通过不断的研发和技术升级,提升产品的发光效率和使用寿命。这种对品质和性能的双重追求,使得Heatron LED Integration的产品在市场上享有极高的声誉。

Dielectric Laboratories公司的发展小趣事

1955年,一家名为Dielectric Laboratories(DLI)的公司正式成立,它以其独特的电子元件研发能力在电子行业中崭露头角。起初,DLI专注于电容器的研发和生产,以其高品质和稳定性赢得了市场的认可。随着业务的逐步扩大,DLI不断投入研发资金,探索新的技术领域,为公司的长远发展奠定了坚实的基础。

Amveco Toroidal Power Products公司的发展小趣事

为了进一步扩大市场份额,Amveco公司积极寻求与行业内外的合作伙伴建立战略合作关系。公司与多家知名的电子设备制造商建立了长期稳定的合作关系,为其提供定制化的环形变压器解决方案。此外,公司还通过参加国际电子展会、建立海外销售网络等方式,积极开拓国际市场,实现了业务的全球化布局。

FERYSTER公司的发展小趣事

在全球环保意识日益增强的背景下,FERYSTER公司积极响应环保号召,推动企业的绿色转型。公司采用环保材料替代传统材料,优化生产工艺减少能源消耗和废弃物排放。此外,公司还积极推广绿色电子产品,引导消费者关注环保问题。这些努力不仅提升了公司的社会形象,也为公司带来了更多的商业机会。

川土(Chipanalog)公司的发展小趣事

2016年,上海川土微电子有限公司(简称“川土微电子”)正式成立,标志着Chipanalog川土微电子的诞生。作为一家专注于模拟芯片产品研发与销售的高科技公司,川土微电子从成立之初就明确了其核心使命——为中国电子信息制造企业提供高品质进口替代模拟芯片。在创始人及团队的共同努力下,公司迅速确定了发展方向,并开始着手研发首款模拟芯片产品。

FCI connector [富加宜连接器]公司的发展小趣事

FCI Connector的前身可以追溯到1937年成立的费城绝缘体公司(Philadelphia Insulation Company)。这家公司最初专注于电子零件的制造和销售。随着时间的推移,公司在1976年被德州仪器(Texas Instruments)收购,并更名为TI Electronic Components(TIEC)。然而,TIEC在1981年做出了一个重大的战略决策:将连接器业务剥离出来,成立了FCI Connector公司。这一决策让FCI能够更专注于电子连接器的研发、生产和销售,为其后续的快速发展奠定了基础。

问答坊 | AI 解惑

Cortex-M3 资料共享

相当好的Cortex-M3 权威指南,而且中文的,共享给大家! uCOS-II在Cortex-M3系列单片机上的移植 1[1].2 ARM Cortex-M3处理器    …

查看全部问答>

大家帮帮我啊 谢谢

为什么我把自己编译的CE镜像文件烧写到我的板子上  看不到NANDFLASH的盘啊  也没法用同步方式写文件到CE里面  但是CE界面是完全的可以显示出来  就是同步了后无法打开我的设备  无响应 &nb ...…

查看全部问答>

tcpmp 怎么关联到自己的窗口播放

   dx们帮帮忙,怎么让tcpmp在自己的窗口中播放啊?按照有篇文章的介绍,把common中的GetDC(NULL)都改成GetDC(Context()->Wnd)了,还是不能关联到窗口句柄。…

查看全部问答>

DM9000在8位机的初始化在32位机上怎么改?

//DM9000初始化 void DM9000_init(void) {   unsigned int i;   IO0DIR |= 1 …

查看全部问答>

OUTLOOK FOR

请问现在有没有能在wince6.0(cpu:S3C6410)上用outlook,如果有请问哪里可以下载到?…

查看全部问答>

我想在虚拟机里做个pci虚拟设备。可行否!

我想在虚拟机里做个pci虚拟设备。可行否!不管用什么虚拟机软件都可以。怎样我可以学习写驱动。也不用添加设备了。而且还可以调试什么的。知道的大家讨论一下了。…

查看全部问答>

【2010年省竞赛】控制类题目大家来预测一下吧

本帖最后由 paulhyde 于 2014-9-15 09:02 编辑 【2010年省竞赛】【山东】 控制类题目大家来猜一下会出什么样的题目,不会是像去年那样吧,模电占了大部分,那么难。。。  …

查看全部问答>

调试

请问各位,我刚做好的板子,上电后,FLASH特热,我查了电源和地,都没有问题,一般是什么问题?…

查看全部问答>

CCS4下C语言使用malloc.h内的函数编译不通过,

您好,我现在遇到一个问题。 我在CCS下C语言使用malloc.h内的函数编译不通过, 代码:#include <malloc.h> 1. could not open source file \"malloc.h\" 2. 若注销掉此行,则其内所有内存操作函数如malloc();等都不能使用了;   ...…

查看全部问答>