单片机学习记录——数码管

静态数码管

硬件连接
这里写图片描述
图中为共阳极数码管,数码管的8个段就是8个LED,LED的阳极接在一起,接高电平。当某一段的阴极接低电平时,该段就会点亮。

软件设计
把0~F的段码放入数组中,依次显示0~F。

unsigned char DIG_CODE[16]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07,0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71};

/***************************************************************
* 函 数 名         : static_dig
* 函数功能         : 静态数码管依次显示
* 输    入         : 无
* 输    出         : 无
***************************************************************/
void static_dig(void)
{
    unsigned char i = 0;

    for (i=0; i<16; i++)
    {
        DIG = ~DIG_CODE[i];
        delay1s();
    }


}

动态数码管

硬件连接
这里写图片描述
数码管的位选段接38译码器的输出。段选端接74573跟随器的输出。
在某一时刻,只能某一个数码管被点亮。可以把各个数码管点亮的间隔缩短,利用人眼的余辉效应。看起来像是,各个数码管同时点亮,显示不同的码值。

软件设计

unsigned char DIG_CODE[16]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07,0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71};
/*********************************************************
* 函 数 名         : dongtai_all
* 函数功能         : 各个数码管依次显示不同的内容
* 输    入         : 无
* 输    出         : 无
**********************************************************/
void dongtai_all(void)
{
    unsigned char i = 0;

    for (i=0; i<8; i++)
    {
        WEI = i;                //位选,决定哪个数码管亮
        DUAN = DIG_CODE[i+1];   //段选,决定数码管的哪段亮(亮什么数字)
        delay1s();
    }
}

猜你喜欢

转载自blog.csdn.net/jiaruitao777/article/details/80705782