这次讲解如何编写8位共阴极数码管的静态扫描。
首先还是看一下数码管和需要用到的锁存器及锁存器连接51芯片的电路图
数码管从高位到低位的段码依次是a,b,c,d,e,f,g,h共八位。
锁存器分为位选锁存器和段选锁存器,位选锁存器顾名思义就是选择第几个数码管亮的,而段选锁存器则是控制你所选的那一位的数码管的哪一段点亮。
从电路图中可以看到位选锁存器的开关接到了51的P2^7IO口上,位选锁存器的开关接在了P2^6IO口上。
两个锁存器的数据输入端都接在了P0的IO口上了。
知道了基本原理,开始编写程序
#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);
}
}
}
666666
优秀