如何用单片机AT89C51控制六位数码管,可以显示出不同的六个数字(123456)急需相关Proteus仿真图和源程序

2024-11-11 13:53:49
推荐回答(3个)
回答(1):

#include

#define uchar unsigned char

uchar distab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};

uchar number=0;

void t0isr() interrupt 1

{

TH0=0xf4;

TL0=0x48;

switch(number)

{

case 0:P2=0x01;P0=distab[1];break;

case 1:P2=0x02;P0=distab[2];break;

case 2:P2=0x04;P0=distab[3];break;

case 3:P2=0x08;P0=distab[4];break;

case 4:P2=0x10;P0=distab[5];break;

case 5:P2=0x20;P0=distab[6];break;

default:break;

temp=now_time[2]/16*10+now_time[2]%16;

temp++;

if(temp>=24)

temp=0;

now_time[2]=temp/10*16+temp%10;

write_data_ds1302(0x84,now_time[2]);

}

while(!key2);

}

}

wei=1;

d[2]=0;

for(r=0;r<50;r++)

disp();

while(key1 )

{ disp();

if(key2==0)

{

disp();

if(key2==0)

{

temp=now_time[1]/16*10+now_time[1]%16;

temp++;

if(temp>=60)

temp=0;

now_time[1]=temp/10*16+temp%10;

write_data_ds1302(0x82,now_time[1]);

}

while(!key2);

}

}

wei=0;

d[1]=0;

for(r=0;r<50;r++)

disp();

while(key1 )

{

disp();

if(key2==0)

{

now_time[0]=0;

write_data_ds1302(0x80,now_time[0]);

}

} TR1=0;

d[0]=0;

for(r=0;r<30;r++)

disp();

}

扩展资料:

(1)单片机的体积比较小, 内部芯片作为计算机系统,其结构简单,但是功能完善,使用起来十分方便,可以模块化应用。

(2)单片机有着较高的集成度,可靠性比较强,即使单片机处于长时间的工作也不会存在故障问题。

(3) 单片机在应用时低电压、低能耗,是人们在日常生活中的首要选择, 为生产与研发提供便利。

(4)单片机对数据的处理能力和运算能力较强,可以在各种环境中应用,且有着较强的控制能力。

参考资料来源:百度百科-单片机

回答(2):

#include

#define uchar unsigned char

uchar distab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};

uchar number=0;

void t0isr() interrupt 1

{

TH0=0xf4;

TL0=0x48;

switch(number)

{

case 0:P2=0x01;P0=distab[1];break;

case 1:P2=0x02;P0=distab[2];break;

case 2:P2=0x04;P0=distab[3];break;

case 3:P2=0x08;P0=distab[4];break;

case 4:P2=0x10;P0=distab[5];break;

case 5:P2=0x20;P0=distab[6];break;

default:break;

}

number++;

if(number>5)number=0;

}

main()

{

TMOD = 0x01;

number = 0;

TH0=0xf4;

TL0=0x48;

TR0=1;

ET0=1;

EA=1;

while(1);

}

回答(3):

我有