51单片机,共阴数码管显示问题。
烧录到单片板上没显示,蜂鸣器反而会叫。。。而仿真的时候却显示不出8023,而是3802。。是不是哪里错了?程序如下。#include<reg52.h>voiddelay(...
烧录到单片板上没显示,蜂鸣器反而会叫。。。而仿真的时候却显示不出8023,而是3802。。是不是哪里错了?程序如下。
#include<reg52.h>
void delay(unsigned int t);
unsigned char code lun[]={0x7F,0X3F,0X5B,0X4F};
void main()
{
unsigned char aa,i;
while(1)
{
aa=0x01;
for(i=0;i<4;i++)
{
P2=aa;
P3=lun[i];
delay(5);
aa=aa<<1;
}
}
}
void delay(unsigned int t)
{
unsigned int j,k;
for(j=t;j>0;j--)
for(k=100;k>0;k--);
} 展开
#include<reg52.h>
void delay(unsigned int t);
unsigned char code lun[]={0x7F,0X3F,0X5B,0X4F};
void main()
{
unsigned char aa,i;
while(1)
{
aa=0x01;
for(i=0;i<4;i++)
{
P2=aa;
P3=lun[i];
delay(5);
aa=aa<<1;
}
}
}
void delay(unsigned int t)
{
unsigned int j,k;
for(j=t;j>0;j--)
for(k=100;k>0;k--);
} 展开
展开全部
首先,你的数码管是共阴极的,那么位选为0时点亮
所以是
while(1)
{
aa=0x01;
for(i=0;i<4;i++)
{
P2=aa;
P3=lun[i];
delay(5);
P3=0x00; //关掉段选,防止显示混乱,即消影
aa=~(aa<<1);
}
}
另外你这只是仿真,实际电路中,驱动电流够不够还不一定
再者,你拿万用表测,看你的板子上的接线和你仿真图中的接线是一样的吗
更多追问追答
追问
p3=0x00,让数码管工作低电平???0000-0000??才能亮??
追答
0x7F,0X3F,0X5B,0X4F 都是高电平点亮的
那么P3=0x00就是让数码管不亮,只是这一瞬间关掉数码管
下次循环再重新设定段选码和位选码
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询