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

📄 键盘扫描程序(屏蔽了硬件).txt

📁 一个万能的键盘扫描程序
💻 TXT
字号:
#include"iom16.h"
#include <intrinsics.h>

#define uchar unsigned char  
#define uint  unsigned int

/************键盘接口定义*****************/
#define KEY_DDR   DDRB        
#define KEY_PORT  PORTB
#define KEY_PIN   PINB

/***********键盘子程序定义****************/
uchar get_key(void);
uchar key_scan(void);

/************键盘变量定义***************/
uchar temp=0;
uchar key=0;
uchar key_value;

uchar key_scan(void)
{
KEY_DDR= 0xF0;                 //行扫描,高四位输出0,键按下,则对应的值为0

KEY_PORT= 0x0F;                //低四位输入,内部电阻上拉,没有键按下时为高
delay_nms(30);                 //延时等待稳定
temp = KEY_PIN&0x0F;           //屏蔽高四位
if(temp==0x0F)
{
return 0;                      //当低四位全为高则无按键返回
}
else
{
delay_nms(30);
temp = KEY_PIN&0x0F;          //延时去抖后再检测
if(temp==0x0F)
  return 0;
else
  key=temp;
}
//翻转
KEY_DDR = 0x0F;               //列扫描,低四位输出0,键按下,则对应的值为0
KEY_PORT = 0xF0;              //高四位输入,内部电阻上拉,没有键按下时为高
delay_nms(30);                //延时等待稳定

 temp = KEY_PIN&0xF0;         //屏蔽低四位
if(temp==0xF0)
{
return 0;                     //当高四位全为高则无按键返回
}
else                          //这里不再延时再扫描,因为已经确定了不是抖动才会进入本步操作。
{
  key |= temp;                //高低位的键值进入KEY
}
KEY_DDR = 0x00;               /*输出复位*/
KEY_PORT = 0xFF;

return key;
}
/*-----------------------------------
**模块:键值计算
**功能:对获得的键码换算成实际值
**备注:调用key_scan()子程序
------------------------------------*/
uchar get_key()
{
unsigned char i=0;
i=key_scan();
switch (i) 
	{                              /*将按键码转换成键值*/
case 0x00: return 0xc7;
case 0x77: return '1';
case 0xB7: return '4';
case 0xD7: return '7';
case 0xE7: return '*';
case 0x7B: return '2';
case 0xBB: return '5';
case 0xDB: return '8';
case 0xEB: return '0';
case 0x7D: return '3';
case 0xBD: return '6';
case 0xDD: return '9';
case 0xED: return '#';
case 0x7E: return 'A';
case 0xBE: return 'B';
case 0xDE: return 'C';
case 0xEE: return 'D';
default : return 0x21;
}
}

⌨️ 快捷键说明

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