本帖最后由 lg_forever 于 2013-5-4 18:30 编辑
程序贴上,就是用IO模拟时序的。请大家帮忙
通过主程序连续两次调用sendbyte(6);显示的十位是正确的6,而个位却是全亮,挠头。
void seg_h(void) //IO模拟时序,在上升沿送个高电平信号。
{
Low_CLK;
Delay(1);
High_DATA;
Delay(1);
High_CLK;
Delay(1);
}
void seg_l(void) //在上升沿时。送个低电平信号进入164
{
Low_CLK;
Delay(1);
Low_DATA;
Delay(1);
High_CLK;
Delay(1);
}
void sendbyte(uchar byte) // 显示相应数字,连续调用2次该函数去显示66或者00时,十位显示正确,但 是个位显示全亮
{
uchar num,i;
num=tab[byte];
for(i=0;i<8;i++)
{
Delay(1);
if(tab[byte]&0x01)
seg_h();
else
seg_l();
tab[byte]>>=1;
Low_LED;
}
Delay(1);
}
|