当前位置: 代码迷 >> 单片机 >> 关于8*8LED点阵 算法的有关问题
  详细解决方案

关于8*8LED点阵 算法的有关问题

热度:50   发布时间:2016-04-28 16:09:18.0
关于8*8LED点阵 算法的问题
今天 使用keil 编写8*8LED点阵, 想实现 一个亮点 从左到右,然后接着从上到下, 从右到左,最后再从下到上,刚好绕走一圈, 请问 各位高手,是否也写过这种算法 ?

为什么 我 的算法 无法实现:最后再从下到上

#include<reg52.h>
//P0口与J12 连接 P2与J19绿色连接
//在内部DPa-DPh段 与J19绿色连接  
//RE1-RE8 GR1-GR8 控制该行显示哪个点 
//P2 控制行 P0高电平 选择行
//P0控制该行里显示哪个点 P0低电平 点亮

unsigned char code table0[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //P0
unsigned char code table2[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //P2

void Delay()
{
  unsigned char j;
  unsigned int i;
  for(i=300; i>0; i--)
  for(j=110; j>0; j--);
}
 

void main()
{
  unsigned char i=0, j=0; 
  while(1)
  {
 
  //从左到右
   
  j=0;
  P2=table2[j];
   
  while(i<8)
  {  
  P0=table0[i];
  Delay();
  i++;
  }
   
  //从上到下
   
  i=7; 
  j=1;  
  P0=table0[i];
  while(j<8)
  {
  P2=table2[j];
  Delay();  
  j++;
  }
   

  //从右到左
   
  i=6;
  j=7;
  P2=table2[j];
  while(i>=0)
  {  
  P0=table0[i]; 
  Delay();  
  i--; 
  }  
   
 
  //从下到上
   
  i=0;
  j=7;
  P0=table0[i]; 
  while(j>=0)
  {
  P2=table2[j];
  Delay();
  j--;
  }

  哪位高手指点下, 为什么在开发板上无法看到效果:从下到上 , 但是可以看到效果: 从左到右,然后接着从上到下, 从右到左,  
  }

谢谢了。
 
}

------解决方案--------------------
i是unsigned的,所以从右到左的那个while循环永远不会退出
  相关解决方案