02KEY+SEG 按键控制数码管
一、S7、S6、S5、S4分别控制数字1、2、3、4的显示
#include
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;i0;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
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;i0;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
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);
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
