proteus 数码管动态显示,只能显示高3位,最后一位显示不出来
#include"reg51.h"unsignedchari,j,k,l;unsignedcharm=0;unsignedcharcount=0;bitflag=1;un...
#include"reg51.h"
unsigned char i,j,k,l;
unsigned char m=0;
unsigned char count=0;
bit flag=1;
unsigned char a[]={0x0C0,0x0F9,0x0A4,0x0B0,0x99,0x92,0x82,0x0F8,0x80,0x90};
sbit hour1=P3^0;
sbit hour2=P3^1;
sbit min1=P3^4;
sbit min2=P3^5;
void delay()
{
for(m=0;m<200;m++);
}
void time (void) interrupt 1 using 1
{
TH0=0x3C;
TL0=0xB0;
count++;
if(count==20)
{
flag=0;
count=0;
}
}
void main()
{
TMOD=0x01;
TH0=0x3C;
TL0=0xB0;
EA=1;
ET0=1;
TR0=1;
P0=a[0];
hour1=0;
hour2=0;
min1=0;
min2=0;
while(1)
{
for(i=0;i<2;i++)
{
for(j=0;j<10;j++)
for(k=0;k<6;k++)
{
for(l=0;l<10;l++)
{
while(flag)
{
hour1=1; hour2=0; min1=0; min2=0; /*显示小时高位*/
P0=a[i];
delay();
hour1=0; hour2=1; min1=0; min2=0; /*显示小时低位*/
P0=a[j];
delay();
hour1=0; hour2=0; min1=1; min2=0; /*显示分钟高位*/
P0=a[k];
delay();
hour1=0; hour2=0; min1=0; min2=1; /*显示分钟低位*/
P0=a[l];
delay();
}
flag=1;
}
}
}
for(i=2;i<3;i++)
{
for(j=0;j<4;j++)
for(k=0;k<6;k++)
{
for(l=0;l<10;l++)
{
while(flag)
{
hour1=1; hour2=0; min1=0; min2=0; /*显示小时高位*/
P0=a[i];
delay();
hour1=0; hour2=1; min1=0; min2=0; /*显示小时低位*/
P0=a[j];
delay();
hour1=0; hour2=0; min1=1; min2=0; /*显示分钟高位*/
P0=a[k];
delay();
hour1=0; hour2=0; min1=0; min2=1; /*显示分钟低位*/
P0=a[l];
delay();
}
flag=1;
}
}
}
}
}
但是我把最高位的线断开,或者说在软件里把p3.0关掉的话就能显示最后一位,而且是正常运行?求高手帮忙 展开
unsigned char i,j,k,l;
unsigned char m=0;
unsigned char count=0;
bit flag=1;
unsigned char a[]={0x0C0,0x0F9,0x0A4,0x0B0,0x99,0x92,0x82,0x0F8,0x80,0x90};
sbit hour1=P3^0;
sbit hour2=P3^1;
sbit min1=P3^4;
sbit min2=P3^5;
void delay()
{
for(m=0;m<200;m++);
}
void time (void) interrupt 1 using 1
{
TH0=0x3C;
TL0=0xB0;
count++;
if(count==20)
{
flag=0;
count=0;
}
}
void main()
{
TMOD=0x01;
TH0=0x3C;
TL0=0xB0;
EA=1;
ET0=1;
TR0=1;
P0=a[0];
hour1=0;
hour2=0;
min1=0;
min2=0;
while(1)
{
for(i=0;i<2;i++)
{
for(j=0;j<10;j++)
for(k=0;k<6;k++)
{
for(l=0;l<10;l++)
{
while(flag)
{
hour1=1; hour2=0; min1=0; min2=0; /*显示小时高位*/
P0=a[i];
delay();
hour1=0; hour2=1; min1=0; min2=0; /*显示小时低位*/
P0=a[j];
delay();
hour1=0; hour2=0; min1=1; min2=0; /*显示分钟高位*/
P0=a[k];
delay();
hour1=0; hour2=0; min1=0; min2=1; /*显示分钟低位*/
P0=a[l];
delay();
}
flag=1;
}
}
}
for(i=2;i<3;i++)
{
for(j=0;j<4;j++)
for(k=0;k<6;k++)
{
for(l=0;l<10;l++)
{
while(flag)
{
hour1=1; hour2=0; min1=0; min2=0; /*显示小时高位*/
P0=a[i];
delay();
hour1=0; hour2=1; min1=0; min2=0; /*显示小时低位*/
P0=a[j];
delay();
hour1=0; hour2=0; min1=1; min2=0; /*显示分钟高位*/
P0=a[k];
delay();
hour1=0; hour2=0; min1=0; min2=1; /*显示分钟低位*/
P0=a[l];
delay();
}
flag=1;
}
}
}
}
}
但是我把最高位的线断开,或者说在软件里把p3.0关掉的话就能显示最后一位,而且是正常运行?求高手帮忙 展开
111
2024-12-20 广告
2024-12-20 广告
作为合肥鑫义达科技有限公司的工作人员,我认为工业级LCD显示屏之所以被广泛使用,主要归因于其高可靠性、耐用性和多功能性。在工业环境中,设备需长时间运行并面临恶劣条件,如温度变化、震动和尘埃,而工业级LCD显示屏采用特殊材料和工艺,能有效抵御...
点击进入详情页
本回答由111提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询