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

📄 key.c

📁 使用Mega128单片机编写的液晶、串口、菜单的C程序。
💻 C
字号:
#include <macros.h>
#include "stdtypes.h"
#include "port.h"
#include "key.h"
//#include "led.h"
#include "timer.h"


UNS8 down_cnt; 
UNS8 up_cnt;
UNS8 key_read_temp;
UNS8 g_ReceiveKeyFlag;
UNS8 g_KeyValue;

UNS8 key_num;
//void delay(UNS16 num)
//{
//	while(num--);
//}

void KeyProcess(void)
{        
if(g_ReceiveKeyFlag)
 {	
	g_ReceiveKeyFlag = 0; 
	

switch(g_KeyValue)
  {
	 case KEY_NUM0://KEY_NUM
	 case KEY_NUM1:
	 case KEY_NUM2:
	 case KEY_NUM3:
	 case KEY_NUM4:
	 case KEY_NUM5:
	 case KEY_NUM6:
	 case KEY_NUM7:
	 case KEY_NUM8:
	 case KEY_NUM9:
	 case KEY_NUMA:
	 case KEY_NUMB:
	 case KEY_NUMC:
	 case KEY_NUMD:
	 case KEY_NUME:
	 case KEY_NUMF:
	 
	if(g_KeyValue<='9'&&g_KeyValue>='0')
	 {
	 key_num=g_KeyValue-'0';
	 }
	 else
	 {
	 key_num=g_KeyValue-'A'+10;
	 }
	 break;
  }  
 }	
}



/*键盘扫描函数 读取当前键盘的状态 有按键按下返回相应按键值 无按键按下返回"0x00"*/
unsigned char key_read(void)
{
 unsigned char i;
  //获取列地址
  KEYPAD = 0x0F;
  KEYPADDec = 0xF0;
  delay(5);   //延时10ms,否则可能因为低电平时间太短,出现单片机无法识别按键!重要!
  i = KEYPADCon;

  //获取行地址
  KEYPAD = 0xF0;
  KEYPADDec = 0x0F;
  delay(5);
  i |= KEYPADCon;

  //输出复位
  KEYPADDec = 0x00;
  KEYPAD = 0xFF; 
  switch (i) {
  //将按键码转换成键值
  case  0xEE: return '1';
  case  0xDE: return '2';
  case  0xBE: return '3';
  case  0x7E: return '4';
  case  0xED: return '5';
  case  0xDD: return '6';
  case  0xBD: return '7';
  case  0x7D: return '8';
  case  0xEB: return '9';
  case  0xDB: return 'A';
  case  0xBB: return 'B';
  case  0x7B: return 'C';
  case  0xE7: return 'D';
  case  0xD7: return 'E';
  case  0xB7: return 'F';
  case  0x77: return '0';
  default : return 0x00;
  } 
} 










⌨️ 快捷键说明

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