マトリックスキーボードコントロールストップウォッチ

マトリックスキーボードコントロールストップウォッチ
代码

#include<reg51.h>
#define uchar unsigned char
//声明七节显示器驱动信号阵列(共阳)
uchar code tab[10]={
    
    0xc0, 0xf9, 0xa4, 0xb0, 0x99,	// 数字0-4
			0x92, 0x83, 0xf8, 0x80, 0x98 };	// 数字5-9
uchar  key1,key3,temp;
//延时子程序
void delay(int x){
    
    	
	int i,j;		      
	for (i=0;i<x;i++)	        
		for (j=0;j<120;j++);   
}
void  MatrixKey()
{
    
    
	P1=0xff;				
	P1=0xfe;		  //开始扫描第1行
	temp=P1;		  //读P1口按键
	temp=temp & 0xf0;  //判断高4位是否有0,
		if (temp!=0xf0)	 //若temp不等于0x0f,说明确实有键按下
		{
    
    
			temp=P1;	 //读取P1口按键,开始判断键值
			switch(temp)
			{
    
    
				case 0xde:key1=0;break;
				case 0x7e:key3=0;break;
			}
	}
}
void main(){
    
    
	P0=0xff;
	P1=0xff;
	P2=0xff;
	key1=1;
	key3=1;
	while(1)
  	{
    
     
		uchar i;
		key1=1;
		key3=1;
  		MatrixKey();		          //调矩阵按键扫描函数
		if(key1==0){
    
    
			for(i = 0; i < 100; i++){
    
    
				P0 = tab[i/10];
				P2 = tab[i%10];
				delay(100);
				if(P1==0xbe)break; 
			}
		}
		if(key3 == 0){
    
    
			P0 = tab[0];
			P2 = tab[0];
		}   	                                           
   	}
}

おすすめ

転載: blog.csdn.net/weixin_48450741/article/details/112463096