数码管的消影
未消影
代码
#include<reg52.h>
sbit wela=P2^7; //位选
sbit dula=P2^6; //段选
void main()
{
while(1)
{ //一直显示
dula=1;
P0=0x06; //显示1
dula=0;
wela=1;
P0=0xfe; //选择第一个数码管
wela=0;
}
}
运行结果
原因
第一个数码管的1显示较亮但是同时伴随着另外较弱一点段位的显示,可以看出是下面位选的影响(0xfe),然后几
个未选择的数码管亮了,可以看出是前面段选带来的影响(0x06->对应位选的就是1,4,5,6位数码管)。
其实消除影响就是把选择过的状态重新置为没有选择过的状态,段选是置为1才选中所以消除影响应该置为0,位选是
置为0才选中所以消除影响全部置为1 。
如何消影
为了消除段选对位选的影响:应该在两者之间加上P0=0xff;
为了消除位选对段选的影响:应该在两者之间加上 P0=0x00;
消影
代码
#include<reg52.h>
sbit wela=P2^7; //位选
sbit dula=P2^6; //段选
void main()
{
while(1)
{ //一直显示
dula=1;
P0=0x06; //显示1
dula=0;
P0=0xff; //消除段选对位选的影响
wela=1;
P0=0xfe; //选择第一个数据管
wela=0;
P0=0x00; //消除位选对段选的影响
}
}