⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 key_numnew.c

📁 经典行列矩阵的密码锁~~~~~很多注解~~~很实用
💻 C
字号:
//xiaoyudz@tom.com
#include <reg51.h>
#define uchar  unsigned  char 
#define uint   unsigned  int
uchar key_times=0;
sbit led=P2^0;
uint  key_oldnum=0,key_num,t200;
uchar day_last=28;
uchar tab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
/////////////display   start//////////////////////////////////
disp()
 {  
    uchar i,sbuffer[4];
	SCON=0;
	sbuffer[0]=key_num%10;
	sbuffer[1]=(key_num/10)%10;
	sbuffer[2]=(key_num/100)%10;
	sbuffer[3]=key_num/1000;
    for (i=0;i<4;i++) 
     {
	   SBUF= tab[sbuffer[i]];
       while (!TI);
	   TI=0;
	 }
 }
/*
//////////display end///////////////////////////////////
key()
{
uchar clmn_pat,old,new,push,rel,temp;

for(clmn_pat=0xef;clmn_pat!=0xf0;clmn_pat=clmn_pat<<1)
  {
    
  	P1=P1&clmn_pat;//high   4  bit  one  zero
	P1=P1|0x0f;///low  4  bit  setb
	new=P1&0x0f;
  }
if((temp=new^old)>0)
  {
    push=temp&new;
	rel=temp&old;
	old=new;
  }

key_num=new;


}*/
uchar key()
{   char num=0,num_tem,num_rl,left=3;
	uchar scode;
	P1=0xf0;
	if((P1&0xf0)!=0xf0)
	  {scode=0xfe;
	   while((scode&0x10)!=0)
	     { P1=scode;
		   if((P1&0xf0)!=0xf0)
		     { num_rl=(~P1)>>4;
			   num_tem=num_rl<<3;
               num_tem=num_tem>>3;
               while(num_tem)
                { num++;
                  left--;
                 num_tem=num_rl<<left;
                 num_tem=num_tem>>3;
				 
                }
               left=3;
			   key_oldnum=key_oldnum*10;
               key_oldnum=key_oldnum+num;
               key_times++;
               
               if(key_times>=5){key_times=0;key_oldnum=0;}
			 
              return(num);
			 }
		   else
		    { scode=(scode<<1)|0x01;
             num=num+4;}
		  }
	   }

     return(key_oldnum);
}


main()
{
	uint j;
	t200=20;
	key_num=0;
	disp();
    while (1)
	 {
	 key_num=key();
	 if(key_num!=key_oldnum){key_num=key_oldnum;	 disp();}
	 if(key_num==1234)led=0;
	 if(key_num==16)
	   { 
	     key_oldnum=0;
	     led=1;
	   }
	 for(j=0;j<50000;j++);	
 	 //key_num++;
	 }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -