当前位置: 代码迷 >> 单片机 >> 关于51数码管的有关问题
  详细解决方案

关于51数码管的有关问题

热度:103   发布时间:2016-04-28 16:03:39.0
关于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亮

}
}
共阳极的
  相关解决方案