📄 key.c.bak
字号:
#include <reg52.h>
#include "key.h"
#define KEY_SET 0x0e//设置键
#define KEY_UP 0x0b//向上键
#define KEY_DOEN 0x0d//向下键
#define KEY_RUN 0x07//运行键
#define EAKER 0x09//上下键同时按下
#define KEY_P1 P1
extern void AT24C02_Write_Byte(unsigned char Device,unsigned char Addr, unsigned char Data);
/***************************************************************************************************
函数名称:Read_Temperature()
函数入口:空
函数出口:返回拨码开关的值
功能描述:读取拨码开关并返回设定值
****************************************************************************************************/
sbit gh=P3^4;
sbit low=P3^3;
unsigned int Read_Temperature(void)
{
unsigned int vioud,tmp[4];
unsigned char m,n;
gh=0;
P0=0xff;
m=P0;
m=~m;
n=(m&0x0f);
m=m>>=4;
tmp[0]=n*1000;
tmp[1]=m*100;
gh=1;
low=0;
P0=0xff;
m=P0;
m=~m;
n=(m&0x0f);
m=m>>=4;
tmp[2]=n*10;
tmp[3]=m;
low=1;
vioud=tmp[0];
vioud+=tmp[1];
vioud+=tmp[2];
vioud+=tmp[3];
return vioud;
}
/***************************************************************************************************
函数名称:KEY_JIEXI(unsigned int Variable)
函数入口:
unsigned int Variable :采集到的键盘值,就是P2、P3口的数值。
函数出口:
功能描述:键盘解析,通过采样的数值分析出当前按下的是那个键。(包括复合键)并针对键进行相应的操作
关键点描述:无
****************************************************************************************************/
KEY_JIEXI(unsigned int Variable)
{
switch(Variable)
{
//单键。。。。
case KEY_RUN: //0x0e运行键
set=0;
break;
case KEY_DOEN: //0x0d向下键
if(set)
set--;
else
set=5;
break;
case KEY_UP: //0x0b向上键
if(set<5)
set++;
else
set=0;
break;
case KEY_SET: //0x07设置键
switch(set)
{
case 1:
upper_limit.X=Read_Temperature();
AT24C02_Write_Byte(0xA0, 0x01, upper_limit.c[0]);
AT24C02_Write_Byte(0xA0, 0x02, upper_limit.c[1]);
break;
case 2:
lower_limit.X=Read_Temperature();
AT24C02_Write_Byte(0xA0, 0x03, lower_limit.c[0]);
AT24C02_Write_Byte(0xA0, 0x04, lower_limit.c[1]);
break;
case 3:
difference.X=Read_Temperature();
AT24C02_Write_Byte(0xA0, 0x05, difference.c[0]);
AT24C02_Write_Byte(0xA0, 0x06, difference.c[1]);
break;
case 3:
set=0;
break;
default:
break;
}
break;
case EAKER: //上下键同时按下进行采集通道选择
break;//复合键。。。。
//未定义键
default:
break;
}
}
/***************************************************************************************************/
/***************************************************************************************************
函数名称:KEY()
函数入口:空
函数出口:空
功能描述:键盘消抖
设计思想:
建立一个键盘值保存缓冲区KEY_Variable[3],能够连续保存最近的三次采样到的键盘值。当最后两次采
样到的值相等并且和倒数第三次的值不相等时,说明有按键按下。进行确认。当三次的采样值都相等时,说
明此按键已经确认过了,不进行确认。
****************************************************************************************************/
KEY()
{
unsigned char key_buf;
KEY_Variable[2]=KEY_Variable[1];
KEY_Variable[1]=KEY_Variable[0];
EA = 0;
key_buf=KEY_P1;
KEY_Variable[0] =(key_buf&0xc0);
KEY_Variable[0] >>=4;
KEY_Variable[0]|=(key_buf&0x03);
if(KEY_Variable[0] == KEY_Variable[1])
{
if(KEY_Variable[1] == KEY_Variable[2])
{
SPEAKER=0;
return;
}
else
{
SPEAKER=1;
KEY_JIEXI(KEY_Variable[0]); //分析按下的是什么键,并做相应的处理。
}
}
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -