用proteus进行51单片机仿真的问题。
用proteus进行51单片机仿真,在动态显示的时候,数码隐约能看出来时我要显示的数,但是显示的总是残缺不全,就是缺笔画,请高手们帮忙想想,可能是什么原因?谢谢啦...
用proteus进行51单片机仿真,在动态显示的时候,数码隐约能看出来时我要显示的数,但是显示的总是残缺不全,就是缺笔画,请高手们帮忙想想,可能是什么原因?谢谢啦
展开
2个回答
展开全部
要看你动态先使用的是什么程序,可能延时有问题,不能太短,你可以把你的程序给我看一下。我这有一个动态显示的程序仿真是正确的,你可以对比一下。
#include <REG51.H>
unsigned char code SEG7[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
/*===================================*/
void delay(unsigned int k);
//-----------------------------------------------------------
void main(void)
{
unsigned char val1=0;
long i;
char min=0;
while(1)
{
for(i=0;i<50;i++)
{
P2=0xfe;
P1= SEG7[val1%10];
delay(1);
P2=0xfd;
P1= SEG7[val1/10];
delay(1);
P2=0xfb;
P1= SEG7[min%10];
delay(1);
P2=0xf7;
P1= SEG7[min/10];
delay(1);
}
val1=val1+1;
/*if(val1>59)
val1=0; */
if(val1>59)
{
min++;
val1=0;
}
if(min>59)
min=0;
}
}
//----------------------------------------------------
void delay(unsigned int k)
{
unsigned int i,j;
for(i=0;i<k;i++)
{
for(j=0;j<121;j++)
;
}
}/*四位数码管实现分秒定时
#include <REG51.H>
unsigned char code SEG7[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
/*===================================*/
void delay(unsigned int k);
//-----------------------------------------------------------
void main(void)
{
unsigned char val1=0;
long i;
char min=0;
while(1)
{
for(i=0;i<50;i++)
{
P2=0xfe;
P1= SEG7[val1%10];
delay(1);
P2=0xfd;
P1= SEG7[val1/10];
delay(1);
P2=0xfb;
P1= SEG7[min%10];
delay(1);
P2=0xf7;
P1= SEG7[min/10];
delay(1);
}
val1=val1+1;
/*if(val1>59)
val1=0; */
if(val1>59)
{
min++;
val1=0;
}
if(min>59)
min=0;
}
}
//----------------------------------------------------
void delay(unsigned int k)
{
unsigned int i,j;
for(i=0;i<k;i++)
{
for(j=0;j<121;j++)
;
}
}/*四位数码管实现分秒定时
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询