51单片机数据管的消影问题
Posted wait_for_that_day5
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了51单片机数据管的消影问题相关的知识,希望对你有一定的参考价值。
数码管的消影
未消影
代码
#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; //消除位选对段选的影响
运行结果
以上是关于51单片机数据管的消影问题的主要内容,如果未能解决你的问题,请参考以下文章