main()
{
unsigned int i,k,j;
unsigned char s;
while(1)
{
j++;
if(j==20)
{
j=0;
if(0==k)
{
for(s=0;s<8;s++) //完全循环完成后清零所有缓冲区
TempData=0;
}
TempData[8-i]=dofly_DuanMa[k]; //把需要显示的字符依次送缓冲区
TempData[9-i]=0; //不需要显示的区域清零
if(i==(8-k))
{
i=0;
k++;
if(k==8)
k=0;
}
i++;
}
Display(0,8);//从第一位显示,共显示8位
}
}
(TempData[8-i]=dofly_DuanMa[k]; //把需要显示的字符依次送缓冲区)这个语句我不明白,为什么不是7-i,
void Display(unsigned char FirstBit,unsigned char Num)
{
unsigned char i;
for(i=0;i<Num;i++)
{
DataPort=0; //清空数据,防止有交替重影
LATCH1=1; //段锁存
LATCH1=0;
DataPort=dofly_WeiMa[i+FirstBit]; //取位码
LATCH2=1; //位锁存
LATCH2=0;
DataPort=TempData[7-i]; //取显示数据,段码 这里只需要 把扫描方向更换一下即可
LATCH1=1; //段锁存
LATCH1=0;
Delay(200); // 扫描间隙延时,时间太长会闪烁,太短会造成重影
这个为什么不是8-i··
总是想不明白·但是程序是对的·如果上边那个变成8-i就会出现从第二位移动·0无法保存·
} |