各位大哥大姐:
小弟目前写一个软件,数码管显示6个阿拉伯数字。我使用的是cd4094来扩展io口,软件仿真是正常的,但一到实验板上,按一下加的时,数字从1变到6,而按一下减时,数字从6变到1,中间怎么按按键数字都不会变化。不知这时为什么?
void led_8display(uchar k)
{
//uchar dis_data;
switch(k)
{
case 1: dis_data=0xf9;break;
case 2: dis_data=0xa3;break;
case 3: dis_data=0xb0;break;
case 4: dis_data=0xaa;break;
case 5: dis_data=0xa2;break;
case 6: dis_data=0x82;break;
default: break;
}
delay_10ms( );
dis_play( );
}
void dis_play( )
{
uchar j,i;
i=dis_data;
for(j=0;j<8;j++)
{
if((i<<j)&0x80)
SDA=1;
else
SDA=0;
_nop_();
_nop_();
CLK=1;
_nop_();
_nop_();
_nop_();
_nop_();
CLK=0;
}
STR=1;
_nop_();
_nop_();
STR=0;
} |