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

📄 key.c

📁 0-30v
💻 C
字号:
#include "reg52.h"
#include<intrins.h>
#include"IOCfg.c"
#include"Config.h"
#include"KEY.h"

#define DBUS P0


/************************************************************************************
  
         刷新按键574数据
   
************************************************************************************/
void DBUS2(uchar i)
{
	DBUS = i;
	clk_574_2 = 0;	
    clk_574_2 = 1;	
}


/************************************************************************************
*按键扫描 
*返回键值  
************************************************************************************/
uchar key_sm()
{
	uchar key_data;
	RS  =  1;			
	RW  =  0;	//--------避免液晶屏干扰数据总线 
	key1 = 1;
	key2 = 1;	//--------按键置高电平  
	key_data = 0xff;
	DBUS2(0xfe);
	if(key1 == 0){key_data = key_9;}
	if(key2 == 0){key_data = key_dian;}
	DBUS2(0xfd);
	if(key1 == 0){key_data = key_6;}
	if(key2 == 0){key_data = key_3;}
	DBUS2(0xfb);
	if(key1 == 0){key_data = key_5;}
	if(key2 == 0){key_data = key_2;}
	DBUS2(0xf7);
	if(key1 == 0){key_data = key_8;}
	if(key2 == 0){key_data = key_0;}
	DBUS2(0xef);
	if(key1 == 0){key_data = key_4;}
	if(key2 == 0){key_data = key_1;}
	DBUS2(0xdf);
	if(key1 == 0){key_data = key_7;}
	if(key2 == 0){key_data = key_esc;}
	DBUS2(0xbf);
	if(key1 == 0){key_data = key_you;}
	if(key2 == 0){key_data = key_xia;}
	DBUS2(0x7f);		
	if(key1 == 0){key_data = key_zuo;}
	if(key2 == 0){key_data = key_shang;}
	DBUS2(0xff);
	if(key1 == 0){key_data = key_enter;}

	return 	key_data;    	
}

/******************************************************************
//	函数名:delayms
//	功  能:精确延时10mS
//	参  数:
//	返回值:
使用22.1184MHz 晶振的时候 ,循环次数是229  ;
******************************************************************/
void delay10ms(void)
{
	unsigned char j;
	unsigned char i;
	for(i = 10; i != 0; i--)
	{
		for(j = 0; j < 229; j++);
	}
}
/************************************************************************************
*按键扫描去抖动  
*返回键值     
************************************************************************************/
uchar key_num()
{	
    uchar key_bz;
    key_bz = key_sm();
	if(key_bz != 0xff)
	{
	    delay10ms();
		delay10ms();
		if(key_bz == key_sm())
		{
			while(key_sm() != 0xff);
			delay10ms();
			delay10ms();
			while(key_sm() != 0xff);
		}
	    else{key_bz = 0xff;}
	}		
	return key_bz;
}




⌨️ 快捷键说明

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