本帖最后由 laoliang3064 于 2010-9-13 13:54 编辑
这个8位8段数码管是用单片机一路端口驱动,字形驱动和位驱动用74HC373锁存,现在出现问题就是数码管单个位显示数据没有问题,不能同时有2个或2个以上显示,总是有前面的数据叠加到后面的数码管上,问高手如何解决?
这是显示函数:
void led_Display(){
unsigned tmp ;
P4DIR = 0xff; // 设置 p4 输出
P4OUT &= 0x00; // 设置
P1DIR |= 0xc0; // 设置 p1.6,p1.7 输出
P1OUT |= 0x00; // 关闭数据锁存器
tmp = 0x01;
P4OUT = NUM_LED[led_Buf[led_Ctrl]]; // 设置显示值
P1OUT |= 0x40; // 打开数据锁存器
P1OUT &= 0X00; // 关闭数据锁存
P4OUT =~(tmp<<led_Ctrl); // 设置那只LED显示
P1OUT |= 0x80; // 打开控制锁存
P1OUT &= 0X00; // 关闭控制锁存
} |