?? 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 + -