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

📄 key.c

📁 是一个关于键盘的程序
💻 C
字号:
#include "AT89X52.H"
#define uchar unsigned char
#define uint  unsigned int


void delay(uint delay)     //延时
{
uint i;
for(;delay>0;delay--)
{
  for(i=0;i<124;i++)
  {;}
 }
}



uchar key1 ()            //读数
{
 uchar fhz,j=0;

do
{
P3=0X7F;
if (P3!=0x7f) break;
P3=0XbF;
if (P3!=0xbf) break;

P3=0XEF;
if (P3!=0xEf) break;P3=0XdF;
if (P3!=0xdf) break;
}
while (0);

 switch(P3)
{
     case 0x77:fhz=7;break;  
     case 0x7b:fhz=8;break;  
     case 0x7d:fhz=9;break;  
     case 0x7e:fhz='j';break;                 //减
     case 0xb7:fhz=4;break;  
     case 0xbb:fhz=5;break;  
     case 0xbd:fhz=6;break;  
     case 0xbe:fhz='c';break;                //乘
     case 0xd7:fhz=1;break;  
     case 0xdb:fhz=2;break;  
     case 0xdd:fhz=3;break;  
     case 0xde:fhz='s';break;                //减
     case 0xe7:fhz='o';break;                //on
     case 0xeb:fhz=0;break;                
     case 0xed:fhz='d';break;                //等于
     case 0xee:fhz='a';break;                //add
     default : fhz=0xff;break;               //没键按下时
  
 }

return (fhz);

}



//*******检查按键,消抖***************//

uchar key2()
{
 uchar key;
 do                      //按下前先检查是否放开前面的按键
   {
    key=key1();
    delay(30);
    }
while((key!=key1())||(key!=0xff)) ;

do                               //预读,看按键是否按下或是否有错,
  {                              //消抖
   key=key1();                  
    delay(30);
   }
while((key!=key1())||(key==0xff)); 

}  
  
   




/**************************************************
放开键盘后再读数**************************************/

uchar key()       
{
 uchar i,j;
 i=j=key1();
while(i!=0xff)
 i=key1();

 return(j);
 } 

/**********************
三个键的密码*************
*********************************/

uint sanjian()
//void main()
{
 uchar i,j=1;

do
 {
  i=key();
  if(i==7)
 {                              //第一级
    do
      {
	  P1=3;
	   i=key();
      }
    while(i==0xff);
   if(i==8)
   {                               //第二级
    do
      {
	 P1=4;
	   i=key();
      }
    while(i==0xff);
	if(i==9)
	{
	j=1;
	break;
 //return(789);
     }
	 else {j=0;break;}
    }                                 //第二级
   else {j=0;break;}
  }                              //第一级
 else {j=0;break;}
 }
while(1);
if (j==0) return (0);
if (j==1) return (789);
}


uint sanjian1()
//void main()
{
 uchar i,j=1;

do
 {
  i=key();
  if(i==4)
 {                              //第一级
    do
      {
	  P1=0x45;
	   i=key();
      }
    while(i==0xff);
   if(i==5)
   {                               //第二级
    do
      {
	 P1=0x67;
	   i=key();
      }
    while(i==0xff);
	if(i==6)
	{
	P1=0X11;
	j=1;
	break;
 //return(789);
     }
	 else {j=0;break;}
    }                                 //第二级
   else {j=0;break;}
  }                              //第一级
 else {j=0;break;}
 }
while(1);
if (j==0) return (0);
if (j==1) return (456);
}









void main()
{ 
  int i,j,k,q;
  
  
  q=key();
 // if(q!=0xff)
//{
  do
 {
  j=key();
  i=sanjian();
  k=sanjian1();
  if(i==789)
  while(j==0xff)
  {
  j=key();
  P1=1;
  }
  else
  P1=0xee;

  if(k==456)
  while(j==0xff)
  {
  j=key();
  P1=1;
  }
//  else
 // P1=0x89;
 }
 while(1);
//}



  }
 

⌨️ 快捷键说明

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