今天用实验版做个动态数码管显示的小实验,发现显示有问题,debug跟实际差别很大。
大家帮忙看看吧,谢谢了。。。
/*********************************************************
P2.6接段选锁存器74LS573 LE脚,锁存器Q0~7接8个数码管的a~f
P2.7接位选锁存器74LS573 LE脚,锁存器Q0~7接各个数码管的共阴极
P0口接两个锁存器D0~7。
-----------------------------
我想让它动态显示数值8个2,程序烧写进去之后,发现只有最后一个
数码管显示2,其他都不显示,大家帮忙看看。问题出现在哪?
**********************************************************/
#include <REG52.H>
#include <intrins.h>
sbit D_SEG = P2^6;
sbit D_BIT = P2^7;
static unsigned char LED = 0x7f;
void main(void)
{
unsigned char i;
while(1)
{
for(i = 0; i<9; i++)
{
LED = _crol_(LED, 1); //位选左移一位
D_BIT = 1; //位选锁存器锁存
P0 = LED; //选择8个数码管中的一个
D_BIT = 0; //位选锁存器输出
D_SEG = 1; //段选锁存器锁存
P0 = 0X5B; //输出段码显示
D_SEG = 0; //段选锁存器输出
delay(500); //延时
}
}
}
//发现段选和位选锁存器D_BIT ,D_SEG 先置1只会显示最后一个数码管,先置0会显示三个数码管
//延时程序双层for循环
|