微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 我是新手 请大仙指点一下i代表那个变量?

我是新手 请大仙指点一下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);
       }
}

就是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;  
这是两个锁存器的使能端定义

谢谢你的讲解 让我理解了好久 现在基本懂了

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top