关于51数码管的问题
程序1:
#include<reg51.h>
sbit we=P2^7;
sbit du=P2^6;
void main()
{
P0=0xfe;
we=0;
P0=0x4f;
du=0;
}
程序2:
#include<reg51.h>
sbit we=P2^7;
sbit du=P2^6;
void main()
{ we=1;
P0=0xfe;
we=0;
du=1;
P0=0x4f;
du=0;
}
很简单的两个程序,在硬件上测试,第一个程序在1号数码管上面显示3,第二个程序在数码管1,5,6号数码管显示3,请问下这两个程序有区别吗?(共阴极数码管,P2_6段选,P2^7位选)
本人刚学单片机,求解,谢谢
[解决办法]
(1)首先这两个程序都有问题。main函数里面没有类似while(1)的无限循环,main函数推出了,不知道会出什么问题。
(2)你应该是用静态方式用373、573之类的芯片驱动的,这个芯片是高电平锁存输出,所以必须先设置段和位的数值,再将we或者du变成H。你用下面的试试
#include<reg51.h>
sbit we=P2^7;
sbit du=P2^6;
void main()
{
while(1)
{
P0=0xfe;
we=1;
we=0;
P0=0x4f;
du=1;
du=0;
}
}
[解决办法]
我跟楼主刚学的,我是这样写的
#include<reg51.h>
void delay()
{
unsigned long int a;
for(a=0;a<20000;a++);
}
void main()
{
unsigned char i;
while(1)
{
i=0xc0;
P0=i;
delay(); // 0亮
i=0xf9;
P0=i;
delay(); // 1亮
i=0xa4;
P0=i;
delay();//2亮
i=0xb0;
P0=i;
delay(); //3亮
i=0x99;
P0=i;
delay();//4亮
i=0x92;
P0=i;
delay(); // 5亮
i=0x82 ;
P0=i;
delay(); // 6亮
i=0xf8;
P0=i;
delay(); //7亮
i=0x80;
P0=i;
delay(); //8亮
i=0x90;
P0=i;
delay(); //9亮
}
}
共阳极的