关于LED点阵显示的问题,会的大神希望您能帮着解答下啊!

2019-07-16 03:58发布

我是51单片机的初学者,刚学到了8*8点阵的显示这一块,然后我就想在点阵上显示一个中国的“中”字,写完程序运行后发现点阵上除了显示“中”的二极管亮之外,其他的灯也是微亮,想了好多办法消影,但是都没有成功
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table1[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
uchar code table2[]={0xf7,0xf7,0xf7,0xc1,0xd5,0xc1,0xf7,0xf7};
uchar num,temp,BL;
sbit wela=P2^5;
sbit dula=P2^6;
void delay(uint);
void main()
{
int num;
while(1)
{
  
  for(num=0;num<8;num++)
   {
    wela=1;
    P0=0x80;
    wela=0;
    P0=table1[num];
    delay(1);
    dula=1;
    P0=table2[num];
    dula=0;
    delay(1);
   }
}

}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
  for(y=50;y>0;y--);
}

这是我写的程序,大家帮忙改一下,谢谢了,哦,对了,我的那个点阵模块是用两个74HC573控制的,也就是一个控制行,一个控制列。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
我有个梦
2019-07-16 17:57
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table1[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
uchar code table2[]={0xf7,0xf7,0xf7,0xc1,0xd5,0xc1,0xf7,0xf7};
uchar num,temp,BL;
sbit wela=P2^5;
sbit dula=P2^6;
void delay(uint);
void main()
{
int num;
while(1)
{
  
  for(num=0;num<8;num++)
   {
    wela=1;
      P0=table1[num];
    wela=0;
  
    delay(1);
    dula=1;
    P0=table2[num];
    dula=0;
    delay(1);

    dula=1;
    P0=0xff;
    dula=0;
   }
}

}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
  for(y=50;y>0;y--);
}


试试

一周热门 更多>