📄 keyboard4.c
字号:
/*************************************************************
* 文件名称:
* keyboard4.c
*文件说明:
四只独立式扫描按键
系统参数定义
系统参数设置
系统参数初始化
**************************************************************/
//#include <msp430x44x.h>
/*******************宏定义************************************/
/*****************外部变量声明*******************************/
extern unsigned char led_show_buf[];
extern unsigned char Dip;
extern unsigned char zhishi_flag;
extern unsigned char YsjRunTime; //压缩机累计工作时间
extern unsigned char YsjStopTime; //压缩机停止时间
extern unsigned char YsjForc_Stuts; //压缩机强制工作状态
extern unsigned char YsjAuto_Stuts; //压缩机自动工作状态
extern unsigned char FreForc_Stuts; //化霜设备强制工作状态
extern unsigned char FreAuto_Stuts; //化霜设备自动工作状态
extern unsigned char YsjJdqStu; //压缩机继电器的状态(实际的硬件控制寄存器)
extern unsigned char FreJdqStu; //化霜继电器的状态(实际的硬件控制寄存器)
extern unsigned char FreStopTime; //化霜停止时间
extern unsigned char FreRunTime; //化霜运行时间
/***************本程序文件使用的变量定义*********************/
unsigned char Key_Bak; //记录的前次按键值
unsigned char Key_Temp; //本次按键值
unsigned char Set_Ok; //说明键值存在
unsigned char Key_Level; //按键电平寄存器
unsigned char Key_Value; //键值寄存器
unsigned int Key_Old; //记录某一按键连续按的时间
unsigned char Key_Delay; //键按下延时标志
unsigned char FCtrl_Delay; //强制控制延时标志
unsigned char UpDown_Bak; //
unsigned char UpDown_Temp; //
unsigned char UpDown_Value; //
unsigned int UpDown_Old=0; //参数设置状态下UP或DOWN键连续按的时间
unsigned char UpDown_Delay=0; //
unsigned char UpDown_Level;
unsigned char ParaCheckCnt=0; //用于第零级菜单下UP或DOWN键的参数显示计数
unsigned char ParaCheckVal=0; //参数查看键值寄存器(UP或DOWN)
unsigned char Key_Ceng=0x00; //层标志(根据此标志确定使按键功能进入具体某一界面)
unsigned char KC1_Cnt=0x00; //第一级菜单内计数标志
unsigned char KC2_Cnt=0x00; //第二级菜单内计数标志
unsigned char NoKey_time=0; //用于定时器的无按键时间计数
/*******************管理者参数全局变量定义**************************/
unsigned char YsjDelay; //压缩机延时 F3 0-9分钟
unsigned char FreshCycl; //化霜周期 F4 0-99小时
unsigned char FreshTime; //化霜时间 F5 0-99分钟
unsigned char FrStopTemp; //化霜终止温度 F6 0℃~35℃
unsigned char ExTempWarn; //超温限报警 F7 0℃~19℃
signed char TempRevise; //温度校正 F8 -5℃~+5℃
unsigned char FreshMode; //化霜模式 F9 0(电热化霜)或1()
/********************用户参数全局变量定义**************************/
signed char TempSet; //温度设定 F1 -39℃~+49℃
unsigned char Huicha; //回差设定 F2 1℃~15℃
/*********************本文件子程序*****************************/
void init_Keyboard(void)
{
P1DIR|=(KEY_K1+KEY_K2+KEY_K3+KEY_K4); //按键端口为输出方式
P1OUT|=(KEY_K1+KEY_K2+KEY_K3+KEY_K4); //按键端口输出高电平
P1DIR&=~(KEY_K1+KEY_K2+KEY_K3+KEY_K4); //按键端口为输入方式
Key_Old=0; //计数清零
}
/******************************************************
名称:KSC1U
描述:按键第一级菜单(用户菜单)UP键所执行(菜单项选择)
*******************************************************/
void KSC1U(void)
{
led_show_buf[0]=0x0c; //不显示
led_show_buf[2]=0x0b; //F
KC1_Cnt++;
KC1_Cnt++;
Dip=0x05; //不显示小数点
Key_Value=0x00;
if(KC1_Cnt==0x05)
KC1_Cnt=0x01;
}
/******************************************************
名称:KSC1U0
描述:按键第一级菜单UP键KC1_Cnt=0所执行(菜单F2的参数设置)
*******************************************************/
void KSC1U0(void)
{
Huicha++;
if(Huicha==16) //1-15℃
{Huicha=1;}
dec_showbuf((int)(Huicha*10)); //处理后放入显存
led_show_buf[0]=0x0c; //清除显存最后一位
Dip=0x05; //不显示小数点
Key_Value=0x00;
}
/******************************************************
名称:KSC1U2
描述:按键第一级菜单UP键KC1_Cnt=2所执行(菜单F1的参数设置)
*******************************************************/
void KSC1U2(void)
{
TempSet++;
if(TempSet==50) //-39~+49℃
{TempSet=-39;}
dec_showbuf((int)(TempSet*10)); //处理后放入显存
led_show_buf[0]=0x0c; //清除显存最后一位
Dip=0x05; //不显示小数点
Key_Value=0x00;
}
/******************************************************
名称:KSC1D
描述:按键第一级菜单(用户菜单)DOWN键所执行(菜单项选择)
*******************************************************/
void KSC1D(void)
{
led_show_buf[0]=0x0c; //不显示
led_show_buf[2]=0x0b; //F
Dip=0x05; //不显示小数点
Key_Value=0x00;
if(KC1_Cnt==0x01)
KC1_Cnt=0x05;
KC1_Cnt--;
KC1_Cnt--;
}
/******************************************************
名称:KSC1D0
描述:按键第一级菜单DOWN键KC1_Cnt=0所执行(菜单F2的参数设置)
*******************************************************/
void KSC1D0(void)
{
if(Huicha==0) //1-15℃
{Huicha=16;}
Huicha--;
dec_showbuf((int)(Huicha*10)); //处理后放入显存
led_show_buf[0]=0x0c; //清除显存最后一位
Dip=0x05; //不显示小数点
}
/******************************************************
名称:KSC1D2
描述:按键第一级菜单DOWN键KC1_Cnt=2所执行(菜单F1的参数设置)
*******************************************************/
void KSC1D2(void)
{
if(TempSet==-39) //-39~+49℃
{TempSet=50;}
TempSet--;
dec_showbuf((int)(TempSet*10)); //处理后放入显存
led_show_buf[0]=0x0c; //清除显存最后一位
Dip=0x05; //不显示小数点
}
/******************************************************
名称:KSC2Set
描述:按键第二级菜单(管理者菜单)SET键所执行(参数查看)
*******************************************************/
void KSC2Set(void)
{
led_show_buf[0]=0x0c; //清除显存最后一位
Dip=0x05; //不显示小数点
Key_Value=0x00; //抬起按键后清零键值同时进入下一项**(关键) //
KC2_Cnt++; //(KC1_Cnt=2)
if(KC2_Cnt==0x0b)
KC2_Cnt=0;
}
/******************************************************
名称:KSC2U
描述:按键第二级菜单(管理者菜单)UP键所执行(菜单项选择)
*******************************************************/
void KSC2U(void)
{
led_show_buf[0]=0x0c; //不显示
led_show_buf[2]=0x0b; //F
KC2_Cnt++;
KC2_Cnt++;
Dip=0x05; //不显示小数点
Key_Value=0x00;
if(KC2_Cnt==0x0d)
KC2_Cnt=0x01;
}
/******************************************************
名称:KSC2U0
描述:按键第二级菜单UP键内KC2_Cnt=0所执行(菜单F8的参数设置)
*******************************************************/
void KSC2U0(void)
{
TempRevise++;
if(TempRevise==6) //-5--+5℃
{TempRevise=-5;}
dec_showbuf((int)(TempRevise*10)); //处理后放入显存
led_show_buf[0]=0x0c; //清除显存最后一位
Dip=0x05; //不显示小数点
}
/******************************************************
名称:KSC2U2
描述:按键第二级菜单UP键KC2_Cnt=2所执行(菜单F3的参数设置)
*******************************************************/
void KSC2U2(void)
{
YsjDelay++;
if(YsjDelay>=10) //0-9分钟
{YsjDelay=0;}
dec_showbuf((int)(YsjDelay*10)); //处理后放入显存
led_show_buf[0]=0x0c; //清除显存最后一位
Dip=0x05; //不显示小数点
}
/******************************************************
名称:KSC2U4
描述:按键第二级菜单UP键KC2_Cnt=4所执行(菜单F4的参数设置)
*******************************************************/
void KSC2U4(void)
{
FreshCycl++;
if(FreshCycl==100) //0-99小时
{FreshCycl=0;}
dec_showbuf((int)(FreshCycl*10)); //处理后放入显存
led_show_buf[0]=0x0c; //清除显存最后一位
Dip=0x05; //不显示小数点
}
/******************************************************
名称:KSC2U6
描述:按键第二级菜单UP键KC2_Cnt=6所执行(菜单F5的参数设置)
*******************************************************/
void KSC2U6(void)
{
FreshTime++;
if(FreshTime==100) //0-99分钟
{FreshTime=0;}
dec_showbuf((int)(FreshTime*10)); //处理后放入显存
led_show_buf[0]=0x0c; //清除显存最后一位
Dip=0x05; //不显示小数点
}
/******************************************************
名称:KSC2U8
描述:按键第二级菜单UP键KC2_Cnt=8所执行(菜单F6的参数设置)
*******************************************************/
void KSC2U8(void)
{
FrStopTemp++;
if(FrStopTemp==36) //0-35℃
{FrStopTemp=0;}
dec_showbuf((int)(FrStopTemp*10)); //处理后放入显存
led_show_buf[0]=0x0c; //清除显存最后一位
Dip=0x05; //不显示小数点
}
/******************************************************
名称:KSC2Ua
描述:按键第二级菜单UP键KC2_Cnt=0x0a所执行(菜单F7的参数设置)
*******************************************************/
void KSC2Ua(void)
{
ExTempWarn++;
if(ExTempWarn==21) //0-21℃(20℃取消超温限报警功能)
{ExTempWarn=0;}
dec_showbuf((int)(ExTempWarn*10)); //处理后放入显存
led_show_buf[0]=0x0c; //清除显存最后一位
Dip=0x05; //不显示小数点
}
/******************************************************
名称:KSC2D
描述:按键第二级菜单DOWN键所执行(菜单项选择)
*******************************************************/
void KSC2D(void)
{
led_show_buf[0]=0x0c; //不显示
led_show_buf[2]=0x0b; //F
Dip=0x05; //不显示小数点
Key_Value=0x00;
if(KC2_Cnt==0x01)
KC2_Cnt=0x0D;
KC2_Cnt--;
KC2_Cnt--;
}
/******************************************************
名称:KSC2D0
描述:按键第二级菜单DOWN键内KC2_Cnt=0所执行(菜单F8的参数设置)
*******************************************************/
void KSC2D0(void)
{
if(TempRevise==-5) //-5--+5℃
{TempRevise=6;}
TempRevise--;
dec_showbuf((int)(TempRevise*10)); //处理后放入显存
led_show_buf[0]=0x0c; //清除显存最后一位
Dip=0x05; //不显示小数点
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -