数码管显示原理:共阴极和共阳极的区别,静态显示程序。

数码管显示原理:共阴与共阳

LED发光原理是PN结光电二极管将电能转化为光能的结果。当半导体芯片两端加正反向电压时,当电子从n区域注入p区域时,它们与p区的空穴结合并释放能量,这些能量以光子的形式发射出来,从而实现了光的发光。

为了使LED点亮,需要在电路中建立一个电流通路,以使电流通过LED。在电路中,LED通常连接在电流限制电阻或电流源电路中。电阻选择的大小应该足够大,以限制LED通过的电流,从而保护LED免受过电流的损害。此外,为了确保LED始终工作在安全的电流范围内,通常使用电路来控制LED的电流,如常见的恒流源电路。

数码管是一种常见的数字显示器件,它可以将数字以及一些特定的字符显示在屏幕上。数码管有两种类型:共阴数码管和共阳数码管。

共阴数码管

共阴数码管是指数码管中所有的LED阳极均连接在一起,而且是接地的。在共阴数码管中,阴极是独立控制的,当阴极接受到高电平信号时,对应的数码管段会发光。因此,在共阴数码管中,需要通过控制阴极来控制数码管的显示。

共阳数码管

共阳数码管是指数码管中所有的LED阴极均连接在一起,而且是接地的。在共阳数码管中,阳极是独立控制的,当阳极接受到低电平信号时,对应的数码管段会发光。因此,在共阳数码管中,需要通过控制阳极来控制数码管的显示。

共阴与共阳的区别

共阴数码管与共阳数码管的区别在于它们的控制信号是相反的。共阴数码管需要控制阴极,而共阳数码管需要控制阳极。此外,它们的外观也有所不同:共阴数码管通常显示为黑色数字,而共阳数码管通常显示为红色数字。

总的来说,共阴数码管和共阳数码管的原理都是基于LED的发光原理实现的,二者的区别在于控制信号的相反。了解共阴与共阳的原理,有助于我们正确控制数码管的显示。

使用万用表检测数码管的引脚排列需要先了解数码管的类型。通常数码管有7位和8位两种,在7位数码管中,每一位代表一个数字或字母,而8位数码管则多了一个小数点。

对于共阳数码管,将万用表电池极性设置为正极,将黑色表笔连接到GND,然后逐一将红色表笔连接到数码管的引脚上。当连接到某个引脚时,该引脚会被点亮,同时在数码管上显示相应的数字或字母。

对于共阴数码管,则需要将万用表电池极性设置为负极,将红色表笔连接到VCC,然后逐一将黑色表笔连接到数码管的引脚上。当连接到某个引脚时,该引脚会被点亮,同时在数码管上显示相应的数字或字母。

需要注意的是,使用万用表检测数码管时需要确定数码管的极性,避免错误连接导致数码管损坏。同时,对于不确定数码管类型的情况,可以通过测试不同的电压以确定其类型。

静态显示的原理是通过依次控制数码管的每一位来显示数字或字符。在静态显示中,每个数码管的七段LED显示器仅显示一个数字或字符,因此需要通过多个数码管的组合来显示更多的数字或字符。

在程序中,通过循环控制每个数码管的显示,依次显示数字0~9。使用延时函数来控制数码管的显示时间和闪烁频率。

需要注意的是,该程序只是一个简单的示例,实际应用中需要根据具体需求进行修改和优化。

以下是一个简单的51单片机静态显示程序的示例:

#include <reg51.h>

//定义数码管共阳连接的引脚
sbit dig1 = P1^0;
sbit dig2 = P1^1;
sbit dig3 = P1^2;
sbit dig4 = P1^3;

//定义数码管每个段的引脚
sbit segA = P0^0;
sbit segB = P0^1;
sbit segC = P0^2;
sbit segD = P0^3;
sbit segE = P0^4;
sbit segF = P0^5;
sbit segG = P0^6;
sbit segDP = P0^7;

//定义需要显示的数字或字符
unsigned char code num[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

void delay(unsigned int t) //延时函数
{
    unsigned int i,j;
    for(i=0;i<t;i++)
        for(j=0;j<120;j++);
}

void display(unsigned char dat) //数码管显示函数
{
    segA = dat & 0x01;
    segB = (dat>>1) & 0x01;
    segC = (dat>>2) & 0x01;
    segD = (dat>>3) & 0x01;
    segE = (dat>>4) & 0x01;
    segF = (dat>>5) & 0x01;
    segG = (dat>>6) & 0x01;
    segDP = (dat>>7) & 0x01;
}

void main()
{
    while(1)
    {
        //循环显示数字0~9
        for(int i=0;i<10;i++)
        {
            dig1 = 1; //选通第一位数码管
            display(num[i]); //显示数字
            delay(10); //延时一段时间
            dig1 = 0; //关闭第一位数码管

            dig2 = 1; //选通第二位数码管
            display(num[i]); //显示数字
            delay(10); //延时一段时间
            dig2 = 0; //关闭第二位数码管

            dig3 = 1; //选通第三位数码管
            display(num[i]); //显示数字
            delay(10); //延时一段时间
            dig3 = 0; //关闭第三位数码管

            dig4 = 1; //选通第四位数码管
            display(num[i]); //显示数字
            delay(10); //延时一段时间
            dig4 = 0; //关闭第四位数码管
        }
    }
}

该程序使用了P0口来控制数码管的每个段,使用P1口来控制数码管的每一位。程序中使用了一个循环,依次显示数字0~9。使用延时函数来控制数码管的显示时间和闪烁频率。需要注意的是,该程序只是一个简单的示例,实际应用中需要根据具体需求进行修改和优化。

猜你喜欢

转载自blog.csdn.net/weixin_51624736/article/details/129944369