📄 keyscan.c
字号:
/*copyright(c)泰永科技股份有限公司电源事业部
*All rights reserved
*
*文件名称:keyscan.c
*文件标示:见配置管理计划书
*摘 要:简要描述文件内容
*
*当前版本:
*作 者:
*完成日期:
*
*取代版本:
*原作者 :
*完成日期:
*/
#include <pic18.h>
#include "inc.h"
//===========define keyoperate=================
unsigned int return_cnt = default_return_cnt;
unsigned int refer_cnt = default_refer_cnt;
unsigned int bak_cnt=default_bak_cnt;
unsigned int spk_cnt=0;//蜂鸣器响时间
unsigned int sle_4hz=0;
unsigned int sle_2hz=0;//选择字幕闪动时间
unsigned int sle_1hz=0;
unsigned int sle_5s=0;
unsigned int dis_4hz = 0;
unsigned int dis_3hz = 0;
unsigned int dis_2hz = 0;
unsigned int dis_1hz = 0;
unsigned char f4hz_flag=0;//4hzflag
unsigned char f2hz_flag=0;//2hzflag
unsigned char f1hz_flag=0;//1hz
unsigned char f5s_flag=0;//5s
unsigned char flag_1s=0;//初始化界面闪动的标志
unsigned char flag_2s=0;
unsigned char flag_3s=0;
unsigned char tm1s=tm_1s;
unsigned char tm2s=tm_2s;
unsigned char tm3s=tm_3s;
unsigned char key_tmp=0;//按键是否按下标志
unsigned char scr_id=0;//屏幕数
unsigned char pw_cnt=0;//参数位数
unsigned char menu_id=0;//设置项数
unsigned char wr_flag=0;//输入状态,如PASSWORD输入显示数字,否则显示*
unsigned char pw_tmp[6]={0,0,0,0,0,0};
unsigned char pw_rd[6]={0,0,0,0,0,0};//eeprom password
unsigned char input_cnt=0;//密码输入次数
unsigned char amper_cnt=0;//电流校正次数
unsigned char air_cnt=0;//气体校正次数
unsigned char smoke_cnt=0;//烟雾校正次数
unsigned char temper_cnt=0;//温度校正次数
unsigned char alam_flag = 0;//声报警标志,0为开启声音,1为关闭声音
unsigned char refer_flag = 0;//1为查询信息界面
unsigned char amper_tmp[4]={0,0,0,0};//漏电流参数值
unsigned char amper_rd[4]={0,0,0,0};//eeprom
unsigned char tmprdly_tmp[2]={0,0};
unsigned char tmprdly_rd[2]={0,0};
unsigned char airdly_tmp[4]={0,0,0,0};
unsigned char airdly_rd[4]={0,0,0,0};
unsigned char amprdly_tmp[2]={0,0};
unsigned char amprdly_rd[2]={0,0};
unsigned char smkdly_tmp[2]={0,0};
unsigned char smkdly_rd[2]={0,0};
unsigned char temper_tmp[3]={0,0,0};//温度参数
unsigned char temper_rd[3]={0,0,0};//eeprom
unsigned char smoke_tmp[4]={0,0,0,0};//烟雾参数
unsigned char smoke_rd[4]={0,0,0,0};//eeprom
unsigned char air_tmp[4]={0,0,0,0};//气体参数
unsigned char air_rd[4]={0,0,0,0};//eeprom
unsigned char amper0_tmp[3]={0,0};//漏电校正参数
unsigned char amper0_rd[3]={0,0}; //50ma
unsigned char amper1_tmp[3]={0,0,0};
unsigned char amper1_rd[3]={0,0,0};//100ma
unsigned char amper2_tmp[3]={0,0,0};
unsigned char amper2_rd[3]={0,0,0};//300ma
unsigned char amper3_tmp[3]={0,0,0};
unsigned char amper3_rd[3]={0,0,0};//600ma
unsigned char amper4_tmp[3]={0,0,0};
unsigned char amper4_rd[3]={0,0,0};//900ma
unsigned char temper0_tmp[2]={0,0};//温度校正参数
unsigned char temper0_rd[2]={0,0};//20k
unsigned char temper1_tmp[2]={0,0};
unsigned char temper1_rd[2]={0,0};//40k
unsigned char temper2_tmp[2]={0,0};
unsigned char temper2_rd[2]={0,0};//60k
unsigned char temper3_tmp[2]={0,0};
unsigned char temper3_rd[2]={0,0};//80k
unsigned char temper4_tmp[3]={0,0};
unsigned char temper4_rd[3]={0,0};//100k
unsigned char smoke0_tmp[4]={0,0,0,0};//烟雾校正参数
unsigned char smoke0_rd[4]={0,0,0,0};//0.12%ob/m
unsigned char smoke1_tmp[4]={0,0,0,0};
unsigned char smoke1_rd[4]={0,0,0,0};//0.50%ob/m
unsigned char air0_tmp[3]={0,0,0};//气体校正参数
unsigned char air0_rd[3]={0,0,0};//500ppm
unsigned char air1_tmp[4]={0,0,0,0};
unsigned char air1_rd[4]={0,0,0,0};//1000ppm
/*
*函数介绍:
*输入参数:
*输出参数:
*返回值:
*/
void keyscan(void)
{
/*去抖动*/
unsigned char i,j;
i=kyp&0X1F;
if(i==0x1F)
{
key_tmp=0;
return; //没有按键按下返回
}
delay(2000); //delay 10ms
j=kyp&0X1F;
if(i!=j)
{
key_tmp=0;
return;
}
/*确认有按键按下*/
if(key_tmp==0)
{
//spk=1;
lcd_blk=1;
bak_cnt=default_bak_cnt;
spk_cnt=10;//speaking 100ms
return_cnt = default_return_cnt;
sle_2hz=0;
key_tmp=1;
if(i==0x1b) //key1
{
key_up();
return;
}
else if(i==0x1d)//key2
{
key_right();
return;
}
else if(i==0x0f)//key3
{
key_enter();
return;
}
else if(i==0x1e) //key4
{
key_left();
return;
}
else if(i==0x17) //key5
{
key_down();
return;
}
}
}
/*
*函数介绍:
*输入参数:
*输出参数:
*返回值:
*/
void key_down()
{
if(scr_id==1)
{
wr_flag=1;
if(pw_cnt<6)
{
pw_tmp[pw_cnt]++;
if(pw_tmp[pw_cnt]==0xa)
pw_tmp[pw_cnt]=0;
}
}
if(scr_id==2)//menul_1
{
menu_id=menu_id-1;
if(menu_id==0xff)
menu_id=4;
}
if(scr_id==3)//menul_2
{
menu_id=menu_id-1;
if(menu_id==0xff)
menu_id=4;
}
if(scr_id==4)//menul_3
{
menu_id=menu_id-1;
if(menu_id==0xff)
menu_id=4;
}
if(scr_id==5)//menul_4
{
menu_id=menu_id-1;
if(menu_id==0xff)
menu_id=2;
}
if(scr_id==7)
{
if(pw_cnt<3)
{
temper_tmp[pw_cnt]++;
if(temper_tmp[pw_cnt]==0xa)
temper_tmp[pw_cnt]=0;
}
}
if(scr_id==8)
{
if(pw_cnt<4)
{
air_tmp[pw_cnt]++;
if(air_tmp[pw_cnt]==0xa)
air_tmp[pw_cnt]=0;
}
}
if(scr_id==9)
{
if(pw_cnt<4)
{
amper_tmp[pw_cnt]++;
if(amper_tmp[pw_cnt]==0xa)
amper_tmp[pw_cnt]=0;
}
}
if(scr_id==10)//如何处理小数点
{
if(pw_cnt<4)
{
smoke_tmp[pw_cnt]++;
if(smoke_tmp[pw_cnt]==0xa)
smoke_tmp[pw_cnt]='.';
}
}
if(scr_id==11)
{
wr_flag=1;
if(pw_cnt<6)
{
pw_tmp[pw_cnt]++;
if(pw_tmp[pw_cnt]==0xa)
pw_tmp[pw_cnt]=0;
}
}
if(scr_id==12)
{
if(pw_cnt<2)
{
tmprdly_tmp[pw_cnt]++;
if(tmprdly_tmp[pw_cnt]==0xa)
tmprdly_tmp[pw_cnt]=0;
}
}
if(scr_id==13)
{
if(pw_cnt<4)
{
airdly_tmp[pw_cnt]++;
if(airdly_tmp[pw_cnt]==0xa)
airdly_tmp[pw_cnt]=0;
}
}
if(scr_id==14)
{
if(pw_cnt<2)
{
amprdly_tmp[pw_cnt]++;
if(amprdly_tmp[pw_cnt]==0xa)
amprdly_tmp[pw_cnt]=0;
}
}
if(scr_id==15)
{
if(pw_cnt<2)
{
smkdly_tmp[pw_cnt]++;
if(smkdly_tmp[pw_cnt]==0xa)
smkdly_tmp[pw_cnt]=0;
}
}
if(scr_id==16)
{
if(temper_cnt==0)
{
if(pw_cnt<2)
{
temper0_tmp[pw_cnt]++;
if(temper0_tmp[pw_cnt]==0xa)
temper0_tmp[pw_cnt]=0;
}
}
if(temper_cnt==1)
{
if(pw_cnt<2)
{
temper1_tmp[pw_cnt]++;
if(temper1_tmp[pw_cnt]==0xa)
temper1_tmp[pw_cnt]=0;
}
}
if(temper_cnt==2)
{
if(pw_cnt<2)
{
temper2_tmp[pw_cnt]++;
if(temper2_tmp[pw_cnt]==0xa)
temper2_tmp[pw_cnt]=0;
}
}
if(temper_cnt==3)
{
if(pw_cnt<2)
{
temper3_tmp[pw_cnt]++;
if(temper3_tmp[pw_cnt]==0xa)
temper3_tmp[pw_cnt]=0;
}
}
if(temper_cnt==4)
{
if(pw_cnt<3)
{
temper4_tmp[pw_cnt]++;
if(temper4_tmp[pw_cnt]==0xa)
temper4_tmp[pw_cnt]=0;
}
}
}
if(scr_id==17)
{
if(air_cnt==0)
{
if(pw_cnt<3)
{
air0_tmp[pw_cnt]++;
if(air0_tmp[pw_cnt]==0xa)
air0_tmp[pw_cnt]=0;
}
}
if(air_cnt==1)
{
if(pw_cnt<4)
{
air1_tmp[pw_cnt]++;
if(air1_tmp[pw_cnt]==0xa)
air1_tmp[pw_cnt]=0;
}
}
}
if(scr_id==18)
{
if(amper_cnt==0)
{
if(pw_cnt<3)
{
amper0_tmp[pw_cnt]++;
if(amper0_tmp[pw_cnt]==0xa)
amper0_tmp[pw_cnt]=0;
}
}
if(amper_cnt==1)
{
if(pw_cnt<3)
{
amper1_tmp[pw_cnt]++;
if(amper1_tmp[pw_cnt]==0xa)
amper1_tmp[pw_cnt]=0;
}
}
if(amper_cnt==2)
{
if(pw_cnt<3)
{
amper2_tmp[pw_cnt]++;
if(amper2_tmp[pw_cnt]==0xa)
amper2_tmp[pw_cnt]=0;
}
}
if(amper_cnt==3)
{
if(pw_cnt<3)
{
amper3_tmp[pw_cnt]++;
if(amper3_tmp[pw_cnt]==0xa)
amper3_tmp[pw_cnt]=0;
}
}
if(amper_cnt==4)
{
if(pw_cnt<3)
{
amper4_tmp[pw_cnt]++;
if(amper4_tmp[pw_cnt]==0xa)
amper4_tmp[pw_cnt]=0;
}
}
}
if(scr_id==19)
{
if(smoke_cnt==0)
{
if(pw_cnt<4)
{
smoke0_tmp[pw_cnt]++;
if(smoke0_tmp[pw_cnt]==0xa)
smoke0_tmp[pw_cnt]='.';
}
}
if(smoke_cnt==1)
{
if(pw_cnt<4)
{
smoke1_tmp[pw_cnt]++;
if(smoke1_tmp[pw_cnt]==0xa)
smoke1_tmp[pw_cnt]='.';
}
}
}
}
/*
*函数介绍:
*输入参数:
*输出参数:
*返回值:
*/
void key_up(void)
{
if(scr_id==0)//调试时注意
{
if(refer_flag==0)
{
refer_flag = 1;
refer_cnt = default_refer_cnt;
}
}
if(scr_id==1)
{
wr_flag=1;
if(pw_cnt<6)
{
pw_tmp[pw_cnt]--;
if(pw_tmp[pw_cnt]==0xff)
pw_tmp[pw_cnt]=9;
}
}
if(scr_id==2)//menul_1
{
menu_id=menu_id+1;
if(menu_id==5)
menu_id=0;
}
if(scr_id==3)//menul_2
{
menu_id=menu_id+1;
if(menu_id==5)
menu_id=0;
}
if(scr_id==4)//menul_3
{
menu_id=menu_id+1;
if(menu_id==5)
menu_id=0;
}
if(scr_id==5)//menul_4
{
menu_id=menu_id+1;
if(menu_id==5)
menu_id=0;
}
if(scr_id==6)//menul_5
{
menu_id=menu_id+1;
if(menu_id==3)
menu_id=0;
}
if(scr_id==7)
{
if(pw_cnt<3)
{
temper_tmp[pw_cnt]--;
if(temper_tmp[pw_cnt]==0xff)
temper_tmp[pw_cnt]=9;
}
}
if(scr_id==8)
{
if(pw_cnt<4)
{
air_tmp[pw_cnt]--;
if(air_tmp[pw_cnt]==0xff)
air_tmp[pw_cnt]=9;
}
}
if(scr_id==9)
{
if(pw_cnt<4)
{
amper_tmp[pw_cnt]--;
if(amper_tmp[pw_cnt]==0xff)
amper_tmp[pw_cnt]=9;
}
}
if(scr_id==10)//如何处理小数点
{
if(pw_cnt<4)
{
smoke_tmp[pw_cnt]--;
if(smoke_tmp[pw_cnt]=='-')
smoke_tmp[pw_cnt]=9;
}
}
if(scr_id==11)
{
wr_flag=1;
if(pw_cnt<6)
{
pw_tmp[pw_cnt]--;
if(pw_tmp[pw_cnt]==0xff)
pw_tmp[pw_cnt]=9;
}
}
if(scr_id==12)
{
if(pw_cnt<2)
{
tmprdly_tmp[pw_cnt]--;
if(tmprdly_tmp[pw_cnt]==0xff)
tmprdly_tmp[pw_cnt]=9;
}
}
if(scr_id==13)
{
if(pw_cnt<4)
{
airdly_tmp[pw_cnt]--;
if(airdly_tmp[pw_cnt]==0xff)
airdly_tmp[pw_cnt]=9;
}
}
if(scr_id==14)
{
if(pw_cnt<2)
{
amprdly_tmp[pw_cnt]--;
if(amprdly_tmp[pw_cnt]==0xff)
amprdly_tmp[pw_cnt]=9;
}
}
if(scr_id==15)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -