一个专注于计算机编程和硬件学习的博客主
3/12
2018

51学习之8位共阴数码管静态扫描

这次讲解如何编写8位共阴极数码管的静态扫描。

首先还是看一下数码管和需要用到的锁存器及锁存器连接51芯片的电路图

数码管.png

数码管从高位到低位的段码依次是a,b,c,d,e,f,g,h共八位。

数码管锁存器.png

锁存器分为位选锁存器和段选锁存器,位选锁存器顾名思义就是选择第几个数码管亮的,而段选锁存器则是控制你所选的那一位的数码管的哪一段点亮。

从电路图中可以看到位选锁存器的开关接到了51的P2^7IO口上,位选锁存器的开关接在了P2^6IO口上。
两个锁存器的数据输入端都接在了P0的IO口上了。

共阴管是“1”表示亮,“0”表示灭。

知道了基本原理,开始编写程序

#include%lt;reg52.h>
sbit dula = P2^6;//定义段选
sbit wela = P2^7;//定义位选
unsigned char table[18] = {
                0x3f, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F,
                0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71, 0x80, 0x00
};

void delayms(unsigned int k)//延时函数
{
    unsigned int i , j;
    for(i = 0;i < k;i++)
    for(j = 0;j < 125;j++)
}
void main()
{
    int i;
    //位选
    wela = 1;//位选端锁存器置高,打开位选锁存器
    P0 = 0x00;//送入数据,全部打开(低电平有效)
    wela = 0;// 位选端锁存器置低,保存数据
    while(1)
    {
        for(i = 0;i < 18;i++)
        {
            //段选
            dula = 1;// 段选端锁存器置高,打开段选所存器
            P0 = table[i];//送入数据
            dula = 0;// 段选端锁存器置低,保存数据

            delayms(500);
        }
    }
}

已有 2 条评论

  1. 理论无敌 理论无敌

    666666

添加新评论