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

📄 ɨ

📁 4*4的扫描键盘的C语言编程算法,请参考
💻
字号:
unsigned char judge_hitkey()                    //判断是否有键按下,有返回1,没有返回0
{
unsigned char scancode,keycode;
scancode=0xf0;                    //P1.4~P1.7输出全1全1则无键闭合
KEY=scancode;
keycode=KEY;                      //读P1.0~P1.3的状态
if(keycode==0xf0)
return(0);                        //全1则无键闭合
else 
return(1);                        //否则有键闭合
}
//--------------------------------------------------------------------------------------------------
// 函数名称: scan_key
// 函数功能: //扫描键盘,返回键值(高四位代表行,低四位代表列)
//--------------------------------------------------------------------------------------------------
unsigned char scan_key()             //扫描键盘,返回键值(高四位代表行,低四位代表列)
  {
   unsigned char scancode,keycode;
   scancode=0xef;                    //键盘扫描码,采用逐行扫描的方法
   while(scancode!=0xff)
   {
	KEY=scancode;                       //输入扫描码,扫描P1.4对应的行
	keycode=KEY;                       //读出数据,看是否在此行上的某列键盘被按下   
	if((keycode&0x0f)!=0x0f)   
	break;                             //扫描到按下的键,则退出  
	scancode=(keycode<<1)|0x0f;        //否则,更新扫描码继续扫描  
   }  
   keycode=~keycode; 
   return keycode;
   }
//-------------------------------- ------------------------------------------------------------------
// 函数名称: program_SCANkey
// 函数功能: 程序扫描键盘,
//            有键按下完成按键处理,无键按下直接返回
//--------------------------------------------------------------------------------------------------
 unsigned char get_keyborad_value()
{
	unsigned char key_code;
	while(!judge_hitkey()) ; 
	if(judge_hitkey())             //判断是否有键按下
	{
	delay_20ms();delay_20ms();delay_20ms();                   //延时20ms左右,消除抖动干扰
	if(judge_hitkey())             //判断是否有效按键
		{
		key_code=scan_key();
		while(judge_hitkey());//等待按键释放
    //key_manage(key_code);     //键盘扫描、键盘散转、按键处理
		switch(key_code)
			{
			case 0x11:return 10;break;//小数点
			case 0x12:return 0;break;//
			case 0x14:return 11;break;//确认键
			case 0x18:return 12;break;//取消键
			
			case 0x21:return 7;break;
			case 0x22:return 8;break;
			case 0x24:return 9;break;
			case 0x28:return 15;break;//待定
			
			case 0x41:return 4;break;
			case 0x42:return 5;break;
			case 0x44:return 6;break;
			case 0x48:return 14;break;//待定
			
			case 0x81:return 1;break;
			case 0x82:return 2;break;
			case 0x84:return 3;break;
			case 0x88:return 13;break;//待定
	// default:   
			}
		}
	}
}

⌨️ 快捷键说明

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