动态显示要点:
1.轮流单个点亮需要的数码管
2.点亮的时间间隔要短
3.需要消隐(每单独点亮一位后,就把所有数码管关一次。)
动态显示(让8个数码管显示0~7的数字)
void SMG_dynamic ()
{
unsigned char i;
for(i=0; i<8 ; i++)
{
P2 = (P2 & 0x1f)| 0xe0;
P0 = 0xff; //先消隐,关段码
P2 &= 0x1f;
P2 = (P2 & 0x1f)| 0xc0;
P0 = 0x01 << i; //位码左右移
{
unsigned char i;
for(i=0; i<8 ; i++)
{
P2 = (P2 & 0x1f)| 0xe0;
P0 = 0xff; //先消隐,关段码
P2 &= 0x1f;
P2 = (P2 & 0x1f)| 0xc0;
P0 = 0x01 << i; //位码左右移
P2 &= 0x1f;
P2 = (P2 & 0x1f)| 0xe0;
P0 = tab[i];
P2 &= 0x1f;
delay(20);
}
}
P2 = (P2 & 0x1f)| 0xe0;
P0 = tab[i];
P2 &= 0x1f;
delay(20);
}
}
静态显示的思路是
先使能com端,再选择数码管。只是对于这个开发板的过程相对复杂一点。
void SMG_static (unsigned char BIT,unsigned char value)
{
unsigned char i=BIT,j=value;
iniHC138(6);
P0 = 0x01 << i; //确定com端
P2 &= 0X1F;
iniHC138(7);
P0 = j; //确定显示字
P2 &= 0x1f;
{
unsigned char i=BIT,j=value;
iniHC138(6);
P0 = 0x01 << i; //确定com端
P2 &= 0X1F;
iniHC138(7);
P0 = j; //确定显示字
P2 &= 0x1f;
}