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

51学习之键盘应用(矩阵键盘)

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

动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。

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

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

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;
while(1)
{
for(i = 0;i < 8;i++)
{
P0 = 0xFF;//消影(必须有)
wela = 1;//位选端锁存器置高,打开位选锁存器
P0 = table1[i];//送入数据
wela = 0;// 位选端锁存器置低,保存数据

dula = 1;// 段选端锁存器置高,打开段选所存器
P0 = table[i];//送入数据
dula = 0;// 段选端锁存器置低,保存数据

delayms(1);
}
}
}

添加新评论