点阵为啥不听话啊,心都碎了。写个最简单的程序也不听话,就是全屏都亮。。
求大神帮忙,指点迷经
#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;
}
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
#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;
}
}
把PO=0;去掉就可以显示“0”如果你共阴共阳没接反的话。
一周热门 更多>