美文网首页
51单片机之数码管静态显示,锁存器的使用

51单片机之数码管静态显示,锁存器的使用

作者: David_Rao | 来源:发表于2019-09-26 12:34 被阅读0次

    八段数码管显示原理

    八段数码管由8颗LED组成,根据LED的接法,数码管可分为共阴极共阳极

    共阴极是指每一颗LED的阴极都接在低电平0V上
    共阳极是指每一颗LED的阳极都接在高电平5V上

    对于共阴极数码管,单片机“控制”LED的阳极。想要谋颗LED亮,单片机就应该给对应LED的支路送高电平。

    对于共阳极数码管,单片机“控制”LED的阴极。想要谋颗LED亮,单片机就应该给对应LED的支路送低电平。

    锁存器的使用

    为什么要用锁存器?你想,一个数码管就对应8个IO口。但是如果要用好多个数码管呢?单片机的引脚根本不够用。
    先放上原理图(相同的标号代表是连在一起的,即电位相同。如红色圈中的D0电位都是相同的)

    P27高电位,锁存器的“锁”打开,新数据传进去

    P27低电位,锁存器的“锁”锁住,新数据传不进去,依然输出旧的数据


    下面的芯片使用方法相同

    位选,段选

    比如要第三个数码管的a段亮起来
    位选WE3=0,段选A=1,就能形成如图回路

    如果位选WE3=1,WE4=0,段选A=1,就能形成如图回路


    #include <reg52.h>
    
    sbit DU = P2^6;  //数码管段选
    sbit WE = P2^7;  //数码管位选
    
    void delay(unsigned int z)
    {
        unsigned int x, y;
        for(x = z; x > 0; x--)
            for(y = 114; y >0; y--);
    }
    
    //第一个数码管显示1
    void main()
    {
        P0 = 0xff;  //1111 1111不选择任何一个数码管
        WE = 1;  //打开位选
        P0 = 0XFE;  //1111 1110 即WE1 = 0
        WE = 0;  //锁住位选数据,即保持1111 1110
        //这样之后单片机P0数据的改变不会影响位选数据
        
        DU = 1;  //打开段选
        P0 = 0x06;  //这里虽然改变了P0,但不影响位选,因为位选关闭了。
        DU = 0;  //锁住段选数据
        delay(5);  //别切换太快了
    }
    

    相关文章

      网友评论

          本文标题:51单片机之数码管静态显示,锁存器的使用

          本文链接:https://www.haomeiwen.com/subject/amfeyctx.html