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

📄 key_scan for led.h

📁 C语言单片机编程的代码及教程文献
💻 H
字号:
//Filename:key_scan.h
//Device:At89S52
//Finished:2007-5-10

#include<reg52.h>
//定义数据口
#define DAT P1

/*常用数据类型的重命名*/
#ifndef __uchar_
#define uchar unsigned char 
#endif

#ifndef __uint_
#define uint unsigned int
#endif

#ifndef __ulong_
#define ulong unsigned long int
#endif


//延时函数
void Delay(uint cnt)
{
 while(cnt--);
}


/***********************************************
     该函数实现对4*4键盘的扫描并返回对应的键值
************************************************/
uchar Get_keynum()
 {
   uchar cnt,temp=0xff,keynum=0xff; 
   DAT=0xfe;             //初始化数据口 
     
   for(cnt=0;cnt<4;cnt++)
     {
	   if((DAT&0xf0)!=0xf0)
	     {
		   temp=DAT;
		   Delay(500);     //延时消抖
		   if(temp!=DAT)
		     continue;
		   else		   
		     break;
		 }
	   else 
	     DAT=(DAT<<1)+1;
	 }

    while((DAT&0xf0)!=0xf0&&cnt<4)
       DAT=0xf0;

   switch(temp)
     {
	   case 0xe7:keynum=1;break;
	   case 0xeb:keynum=2;break;
	   case 0xed:keynum=3;break;
	   case 0xee:keynum=4;break;
	   case 0xd7:keynum=5;break;
	   case 0xdb:keynum=6;break;
	   case 0xdd:keynum=7;break;
	   case 0xde:keynum=8;break;
	   case 0xb7:keynum=9;break;	 
	   case 0xbb:keynum=0;break;
	   case 0xbd:keynum=10;break;
	   case 0xbe:keynum=11;break;	
	   case 0x77:keynum=12;break;	
	   case 0x7b:keynum=13;break;
	   case 0x7d:keynum=14;break;
	   case 0x7e:keynum=15;break;	
	   default:keynum=0xff;break;         
	 }
   return keynum;
}

⌨️ 快捷键说明

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