如何用单片机AT89C51控制六位数码管,可以显示出不同的六个数字(123456)急需相关Proteus仿真图和源程序
#include<reg51.h>
#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)单片机对数据的处理能力和运算能力较强,可以在各种环境中应用,且有着较强的控制能力。
参考资料来源:百度百科-单片机
#include<reg51.h>
#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);
}
2014-05-23