一、S7、S6、S5、S4分别控制数字1、2、3、4的显示
#include<stc15.h>
unsigned char code
tab[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0XBF,0XFF};
unsigned char S7_Flag=0;S6_Flag=0;S5_Flag=0;S4_Flag=0;
void Delay_MS(unsigned int MS);
void KeyScan(void);
void main(void)
{
P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;
P2=0XC0;P0=0X01;P2=0XFF;P0=0XFF;//打开第一个数码管
while(1)
{
KeyScan();
if(S7_Flag==1){S7_Flag=0;P0=tab[1];}
if(S6_Flag==1){S6_Flag=0;P0=tab[2];}
if(S5_Flag==1){S5_Flag=0;P0=tab[3];}
if(S4_Flag==1){S4_Flag=0;P0=tab[4];}
}
}
void Delay_MS(unsigned int MS)
{
unsigned i,j;
for(i=0;i<MS;i++)
for(j=853;j>0;j--);
}
void KeyScan(void)
{
if(P30==0)
Delay_MS(10);
if(P30==0)S7_Flag=1;
while(!P30);
if(P31==0)
Delay_MS(10);
if(P31==0)S6_Flag=1;
while(!P31);
if(P32==0)
Delay_MS(10);
if(P32==0)S5_Flag=1;
while(!P32);
if(P33==0)
Delay_MS(10);
if(P33==0)S4_Flag=1;
while(!P33);
}
二、按键控制正计时(S7 0-9)和倒计时(S6 9-0)
#include<stc15.h>
unsigned char code
tab[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0XBF,0XFF};
unsigned char S7_Flag=0;S6_Flag=0;
unsigned char SEG=0;
unsigned int DT=500;
void Delay_MS(unsigned int MS);
void KeyScan(void);
void main(void)
{
P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;
P2=0XC0;P0=0X01;P2=0XFF;P0=0XFF;//打开第一个数码管
while(1)
{
KeyScan();
if(S7_Flag==1)
{
S7_Flag=0;
for(SEG=0;SEG<9;SEG++)
{
P0=tab[SEG];
Delay_MS(DT);
}
}
if(S6_Flag==1)
{
S6_Flag=0;
for(SEG=9;SEG>0;SEG--)
{
P0=tab[SEG];
Delay_MS(DT);
}
}
}
}
void Delay_MS(unsigned int MS)
{
unsigned i,j;
for(i=0;i<MS;i++)
for(j=853;j>0;j--);
}
void KeyScan(void)
{
if(P30==0)
Delay_MS(10);
if(P30==0)S7_Flag=1;
while(!P30);
if(P31==0)
Delay_MS(10);
if(P31==0)S6_Flag=1;
while(!P31);
}
三、打开其他位数码管进行显示
#include<stc15.h>
void main(void)
{
P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;
// P2=0XC0;P0=0X01;P2=0XFF;P0=0XFF;//打开第1个数码管
// P2=0XC0;P0=0X02;P2=0XFF;P0=0XFF;//打开第2个数码管
// P2=0XC0;P0=0X03;P2=0XFF;P0=0XFF;//打开第1、2个数码管
// P2=0XC0;P0=0X04;P2=0XFF;P0=0XFF;//打开第3个数码管
P2=0XC0;P0=0X0F;P2=0XFF;P0=0XFF;//打开第1、2、3、4个数码管
P0=0XF9;
while(1);
}