这是我自己的电路图,你提到的问题应该这样理解:
1)显示函数里面是需要先打开位锁存,送入位码,然后关闭位锁存,这样要显示的位码就被保存在了控制位那一个74HC573芯片中了。要先给wela(pwei)送入1的原因是接下来需要关闭wela(pwei)端才能保存数据,但是当你再次调用显示函数的时候,如果不打开位锁存的话(wela=1或者pwei=1)是不能送入新的位码的。
2)送入位选是不会影响到段选的。因为你送入的位选信号已经进入到74HC573中,并且因为你关闭了位锁存(wela=0或者我的pwei=0),这是573的数据是不会因为输入端改变而改变输出端的。觉得满意请采纳。谢谢!也可以交流qq:983254
sbit pduan=P2^0;
sbit pwei=P2^1;
void display(uchar FirstBit,uchar Bit)
{
static uchar i;
pwei=1;
P3=WEICC[i+FirstBit];
pwei=0;
pduan=1;
P0=DATA[i];
pduan=0;
i++;
if(i==Bit)
i=0;
}
74HC573有两个输出控制端口,一个是1脚(OE),为1时,输出为高阻,为0时,输出0或1。另一个是11脚(LE),为0时,输出不改变,为1时,输出随输入状态变化。
像你说的这种情况,应该是这两个端口没有给对电位,所以数码管显示没有变化吧,所以程序里才有“wela=1”。不过这一句是否是控制74HC573的语句,要看到电路图和程序才能确定。