根据实际情况自己设计,不是必须的
如果用138译码器
可以三个端口控制8个数码管
也可以用三极管控制位选
8个I/O口控制8个数码管
如果是高级点的单片机
比如AVR
你可以直接拿IO口
驱动数码管(共阴极)
从你写的c编程看出,你的数码管是共阴极的。p2口控制数码管的位选,p0口控制数码管的段选。
一般情况2个io端口分别控制位选和段选,不需要锁存。只有1个io端口控制位选和段选才用锁存器。而且
p0=table[(i/100)%10];可以只写成p0=table[(i/100)];
具体情况,你能不能把你用的单片机的型号发过来,或者发个原理图看一下。还有你编这个程序要达到什么目的。