今天用实验版做个动态数码管显示的小实验,发现显示有问题,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循环
|