附件
1:硬件原理图
硬件PCB图
附件2:完整程序
#include
#define#define#define#define
LED1LED2LED3LED4
0x020x010x080x04
//数码管1的地址//数码管2的地址//数码管3的地址//数码管4的地址
#define#define
uintuchar
unsignedintunsignedchar
uintkey[4]={0,0,0,0};//存储显示内容
uchartab[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//数值七段码uintnum_min=0;uintnum_sec=0;uintT0_counter=0;
//1s内计数次数//1分钟内计数次数//T0中断的循环次数
voiddelay_Nms(uintN){inti,j;for(i=0;i
for(j=0;j
//延时子程序
voidinit(void){
//初始化过程
TMOD=0x15;置
TH1=0;TL1=0;TH0=0;TL0=0;TR0=1;ET0=1;TR0=1;TR1=1;ET1=1;TR1=1;EA
=1;
}
voiddisplay(void){uintk;P2=LED1;k=key[0];P0=tab[k];delay_Nms(1);P2=LED2;k=key[1];P0=tab[k];delay_Nms(1);P2=LED3;k=key[2];
//T0,T1控制字设
//初始值设置
//开中断
//片选中数码管1
//显示需显示的内容//延时
P0=tab[k];delay_Nms(1);P2=LED4;k=key[3];P0=tab[k];delay_Nms(1);}
timer1(void)interrupt3{
TR1=0;TL1=0;TH1=0;if(T0_counter==15){
TR0=0;
num_sec=TH0*256+TL0;num_min=num_sec*60;
钟的转速
key[0]=num_min%10;
key数组
//*T1中断服务程序*/
//设置循环,1s
//读取T0计数寄存器的值//将1s的值乘以60作为一分
//将所读值取各个位的值赋给
key[1]=num_min/10%10;key[2]=num_min/100%10;key[3]=num_min/1000;
TH0=0;TL0=0;TR0=1;
T0_counter=0;
}TR1=1;T0_counter++;}
voidmain(void){
init();while(1){
display();}
}
//调用系统初始化
//显示子程序
附件
1:硬件原理图
硬件PCB图
附件2:完整程序
#include
#define#define#define#define
LED1LED2LED3LED4
0x020x010x080x04
//数码管1的地址//数码管2的地址//数码管3的地址//数码管4的地址
#define#define
uintuchar
unsignedintunsignedchar
uintkey[4]={0,0,0,0};//存储显示内容
uchartab[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//数值七段码uintnum_min=0;uintnum_sec=0;uintT0_counter=0;
//1s内计数次数//1分钟内计数次数//T0中断的循环次数
voiddelay_Nms(uintN){inti,j;for(i=0;i
for(j=0;j
//延时子程序
voidinit(void){
//初始化过程
TMOD=0x15;置
TH1=0;TL1=0;TH0=0;TL0=0;TR0=1;ET0=1;TR0=1;TR1=1;ET1=1;TR1=1;EA
=1;
}
voiddisplay(void){uintk;P2=LED1;k=key[0];P0=tab[k];delay_Nms(1);P2=LED2;k=key[1];P0=tab[k];delay_Nms(1);P2=LED3;k=key[2];
//T0,T1控制字设
//初始值设置
//开中断
//片选中数码管1
//显示需显示的内容//延时
P0=tab[k];delay_Nms(1);P2=LED4;k=key[3];P0=tab[k];delay_Nms(1);}
timer1(void)interrupt3{
TR1=0;TL1=0;TH1=0;if(T0_counter==15){
TR0=0;
num_sec=TH0*256+TL0;num_min=num_sec*60;
钟的转速
key[0]=num_min%10;
key数组
//*T1中断服务程序*/
//设置循环,1s
//读取T0计数寄存器的值//将1s的值乘以60作为一分
//将所读值取各个位的值赋给
key[1]=num_min/10%10;key[2]=num_min/100%10;key[3]=num_min/1000;
TH0=0;TL0=0;TR0=1;
T0_counter=0;
}TR1=1;T0_counter++;}
voidmain(void){
init();while(1){
display();}
}
//调用系统初始化
//显示子程序