1、#include “reg51.h“#include#define uint unsigned char#define uchar unsigned char#define THCO 0xee#define TLCO 0x0uchar i,n;uint H,L;void delay(uint);uchar code table=0xfd,0x09,0x04,0xfd,0x09,0x04,0xfd,0x34,0x04,0xfd,0x83,0x04,0xfd,0x83,0x04,0xfd,0x34,0x04,0xfd,0x09,0x04,0xfc,0xad,0x04,0xfc,0x44,0x04,
2、0xfc,0x44,0x04,0xfc,0xad,0x04,0xfd,0x09,0x04,0xfd,0x09,0x04,0xfc,0xad,0x04,0xfc,0xad,0x08,0xfd,0x09,0x04,0xfd,0x09,0x04,0xfd,0x34,0x04,0xfd,0x83,0x04,0xfd,0x83,0x04,0xfd,0x34,0x04,0xfd,0x09,0x04,0xfc,0xad,0x04,0xfc,0x44,0x04,0xfc,0x44,0x04,0xfc,0xad,0x04,0xfd,0x09,0x04,0xfc,0xad,0x04,0xfc,0x44,0x04,
3、0xfc,0x44,0x08;unsigned char code Duan=0x3F, 0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F;/共阴极数码管,0-9 段码表unsigned char Data_Buffer10=0,1,2,3,4,5,6,7,8,9;/四个数码管显示数值,数组变量定义static unsigned char Bit=0; /静态变量,退出程序后,值保留static unsigned char Bit1=0;static unsigned char Bit2=0;static unsigned char Bit3=0;sta
4、tic unsigned char Bit4=0;static unsigned char Bit5=0;static unsigned char Bit6=0;static unsigned char Trouch=0;sbit P10=P10; /四个数码管的位码口定义sbit P27=P27;sbit P26=P26;sbit P25=P25;sbit P24=P24;sbit P23=P23;sbit P20=P20;sbit P21=P21; sbit P3_2=P32;sbit P11=P11;sbit P12=P12;sbit P13=P13;sbit P14=P14; /四个数
5、码管的位码口定义sbit P15=P15;sbit P16=P16;sbit P17=P17;void delay(int i)unsigned int a,b;for(a=i;a0;a-);for(b=100;b0;b-);void change6() P26=0;P25=0;delay(150000) ;doif(P21=0)Bit6+;if(Bit6=2)Bit6=0;P0=DuanData_BufferBit1; /开段码P1=0xdf; delay(50);P0=DuanData_BufferBit2;P1=0xef; delay(50); /先关位码P0=DuanData_Buff
6、erBit3; /开段码P1=0xf7;delay(50);P0=DuanData_BufferBit4;P1=0xfb; delay(50); /先关位码P0=DuanData_BufferBit5; /开段码P1=0xfd;delay(50);P0=DuanData_BufferBit6;P1=0xfe;delay(50); while(P20=1);P26=1;P25=1;delay(25000);void change5() P24=0; P26=0;delay(150000) ;doif(P21=0)Bit5+;if(Bit5=4)Bit5=0;P0=DuanData_BufferB
7、it1; /开段码P1=0xdf; delay(50);P0=DuanData_BufferBit2;P1=0xef; delay(50); /先关位码P0=DuanData_BufferBit3; /开段码P1=0xf7;delay(50);P0=DuanData_BufferBit4;P1=0xfb; delay(50); /先关位码P0=DuanData_BufferBit5; /开段码P1=0xfd;delay(50);P0=DuanData_BufferBit6;P1=0xfe;delay(50); while(P20=1);P24=1; P26=1;delay(25000);cha
8、nge6();void change4() P24=0;delay(150000) ;doif(P21=0)Bit4+;if(Bit4=6)Bit4=0;P0=DuanData_BufferBit1; /开段码P1=0xdf; delay(50);P0=DuanData_BufferBit2;P1=0xef; delay(50); /先关位码P0=DuanData_BufferBit3; /开段码P1=0xf7;delay(50);P0=DuanData_BufferBit4;P1=0xfb; delay(50); /先关位码P0=DuanData_BufferBit5; /开段码P1=0xf
9、d;delay(50);P0=DuanData_BufferBit6;P1=0xfe;delay(50); while(P20=1); P24=1;delay(25000); change5();void change3() P25=0;P26=0;delay(150000) ;doif(P21=0)Bit3+;if(Bit3=10)Bit3=0;P0=DuanData_BufferBit1; /开段码P1=0xdf; delay(50);P0=DuanData_BufferBit2;P1=0xef; delay(50); /先关位码P0=DuanData_BufferBit3; /开段码P1
10、=0xf7;delay(50);P0=DuanData_BufferBit4;P1=0xfb; delay(50); /先关位码P0=DuanData_BufferBit5; /开段码P1=0xfd;delay(50);P0=DuanData_BufferBit6;P1=0xfe;delay(50); while(P20=1);P25=1;P26=1; ;delay(25000); change4();void change2() P25=0;delay(150000) ;doif(P21=0)Bit2+;if(Bit2=6)Bit2=0;P0=DuanData_BufferBit1; /开段
11、码P1=0xdf; delay(50);P0=DuanData_BufferBit2;P1=0xef; delay(50); /先关位码P0=DuanData_BufferBit3; /开段码P1=0xf7;delay(50);P0=DuanData_BufferBit4;P1=0xfb; delay(50); /先关位码P0=DuanData_BufferBit5; /开段码P1=0xfd;delay(50);P0=DuanData_BufferBit6;P1=0xfe;delay(50); P2=0xdf; while(P20=1);P25=1;delay(25000); change3(
12、);void change1() P26=0;delay(150000) ;doif(P21=0)Bit1+;if(Bit1=10)Bit1=0;P0=DuanData_BufferBit1; /开段码P1=0xdf; delay(50);P0=DuanData_BufferBit2;P1=0xef; delay(50); /先关位码P0=DuanData_BufferBit3; /开段码P1=0xf7;delay(50);P0=DuanData_BufferBit4;P1=0xfb; delay(50); /先关位码P0=DuanData_BufferBit5; /开段码P1=0xfd;de
13、lay(50);P0=DuanData_BufferBit6;P1=0xfe;delay(50); while(P20=1);P26=1; delay(25000); change2();void main()PX0=1;EX0=1; /沿触发方式IT0=1;TMOD=0x01; /定时器 0 初始化TH0=THCO;TL0=TLCO;TR0=1;ET0=1;EA=1;TMOD=0x10;EA=1;/开总中断ET1=1;/开 T1 中断for(i=0;i=100)Bit=0;Bit1+;if(Bit1=9)Bit1=0;Bit2+;if(Bit2=6)Bit2=0;Bit3+;if(Bit3=
14、9)Bit3=0;Bit4+;if(Bit4=6) Bit4=0;Bit5+;if(Bit5=4)Bit5=0;Bit6+;if(Bit6=2)Bit6=0; /先关位码P1=0xff; /先关位码P0=DuanData_BufferBit1; /开段码P1=0xdf;delay(50);P0=DuanData_BufferBit2;P1=0xef; delay(50); /先关位码P0=DuanData_BufferBit3; /开段码P1=0xf7;delay(50);P0=DuanData_BufferBit4;P1=0xfb; delay(50); /先关位码P0=DuanData_B
15、ufferBit5; /开段码P1=0xfd;delay(50);P0=DuanData_BufferBit6;P1=0xfe; delay(50); void time1() interrupt 3TH1=H;TL1=L;P3_2=P3_2;void int0() interrupt 0doP27=!P27; delay(50);P1=0xff; /先关位码P0=DuanData_BufferBit1; /开段码P1=0xdf;delay(50);P0=DuanData_BufferBit2;P1=0xef; delay(50); /先关位码P0=DuanData_BufferBit3; /开段码P1=0xf7;delay(50);P0=DuanData_BufferBit4;P1=0xfb; delay(50); /先关位码P0=DuanData_BufferBit5; /开段码P1=0xfd;delay(50);P0=DuanData_BufferBit6;P1=0xfe; while(P20=1); P27=1;change1();