我是新手 请大仙指点一下i代表那个变量?
时间:10-02
整理:3721RD
点击:
#include<reg52.h>
#define DataPort P0
sbit LATCH1=P2^2;
sbit LATCH2=P2^3;
unsigned char code dofly_DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char code dofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsigned char TempData[8];
void Delay(unsigned int t);
void Display(unsigned char FirstBit,unsigned char Num);
main()
{
unsigned int num=9999;
unsigned int j;
while(1)
{
j++;
if(j==10)
{
j=0;
if(num>0)
num--;
else
num=9999;
}
TempData[0]=dofly_DuanMa[num/1000];
TempData[1]=dofly_DuanMa[(num%1000)/100];
TempData[2]=dofly_DuanMa[((num%1000)%100)/10];
TempData[3]=dofly_DuanMa[((num%1000)%100)%10];
Display(2,4);
}
}
void Delay(unsigned int t)
{
while(--t);
}
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[i];
LATCH1=1;
LATCH1=0;
Delay(200);
}
}
#define DataPort P0
sbit LATCH1=P2^2;
sbit LATCH2=P2^3;
unsigned char code dofly_DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char code dofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsigned char TempData[8];
void Delay(unsigned int t);
void Display(unsigned char FirstBit,unsigned char Num);
main()
{
unsigned int num=9999;
unsigned int j;
while(1)
{
j++;
if(j==10)
{
j=0;
if(num>0)
num--;
else
num=9999;
}
TempData[0]=dofly_DuanMa[num/1000];
TempData[1]=dofly_DuanMa[(num%1000)/100];
TempData[2]=dofly_DuanMa[((num%1000)%100)/10];
TempData[3]=dofly_DuanMa[((num%1000)%100)%10];
Display(2,4);
}
}
void Delay(unsigned int t)
{
while(--t);
}
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[i];
LATCH1=1;
LATCH1=0;
Delay(200);
}
}
就是i啊
你的意思是
就是不太明白i是哪个变量 难道是显示数码管的个位吗 就是不太明白怎么理解都理解不了 为什么i<Num;还要++,这是一个9999减的循环,如果Num代表的是四位 ,i<Num 为什么i++呢 9往下减 就没有看到什么++
i是用来位选的 你这是用两个锁存器进行段选和位选的吧
在进入
void Display(unsigned char FirstBit,unsigned char Num)
的时候
FirstBit=2;Num=4;
DataPort=dofly_WeiMa[i+FirstBit];是选择位选信号
DataPort=TempData[i];输入段选信号
而且 你说的9999是被赋值给num的 不是Num 大小写要区分开
sbit LATCH1=P2^2;
sbit LATCH2=P2^3;
这是两个锁存器的使能端定义
谢谢你的讲解 让我理解了好久 现在基本懂了