LED点阵程序,点亮一个0都点不亮。。

2019-07-16 05:33发布

点阵为啥不听话啊,心都碎了。写个最简单的程序也不听话,就是全屏都亮。。
求大神帮忙,指点迷经
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar  table1[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
uchar  table2[]={0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00};
void delay(uint a)
{
   while(a--);
}

void main()
{
  uchar i;
  while(1)
  {
  for(i=0;i<8;i++)
  {
   P0=table1[i];
   P1=table2[i];
   
   delay(40);
   P0=0X00;
   }
  }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
18条回答
↗旋风
2019-07-17 20:20
显示0    仅供参考  
#include <reg52.h>
sbit DU = P2^0; //数码管段选及点阵行选
sbit WE = P2^1; //数码管位选
sbit CS88 = P2^2; //8X8点阵使能及点阵列选
sbit LCDEN=P2^5;//LCD 1602
unsigned char  table1 []={0x7c,0x82};// 行亮
unsigned char table2 []={0xbb,0xc7};//分别对应相应的段亮
void delay(unsigned int t)
{
while(t--);
}
main()
{
unsigned char i;
    LCDEN=0;//关掉LCD1602 以免影响点阵管IO口电评
    WE=1;  
    P0=0Xff;
    WE=0;        //关掉数码管显示
while(1)
      {
           DU=1;
       P0=table1[i];//取显示数据
           DU=0;
           CS88=1;
           P0=table2[i];  //取段码
           CS88=0;
           delay(300); //扫描间隙延时
           i++;
           if(2==i)
             i=0;
       
                 

       
      }
}

一周热门 更多>