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

📄 keyscan.c

📁 本程序是关于按键服务程序
💻 C
📖 第 1 页 / 共 4 页
字号:
/*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 + -