//===================================
//按键处理程序 按键为P6口
//===================================
void key_scan()
{
static uchar i;
//static uchar k;
uchar Mkey=P6;
if(BGset《2)
{
if((Mkey&0xFF)!= 0xFF) //有键按下先开启背光
{
delayms(200);
if((Mkey&0xFF)!= 0xFF)
{
BGset++;
if(BGset》1)
{
BGset = 2;
}
}
}
}
if(BGset ==2 )
{
if(!(Mkey&0x08)) //ESC按下吗? P63
{
delayms(200); //消抖
if(!(Mkey&0x08)) //再判断
{
BGset =2; //开背光
//if(k《1) {Page = 0;} //页面0:显示版本信息状态
//k++;
//if(k》1) {k =0;Page = 1; } //再按后退出
Page = 1;
set = 0;
}
}
if(!(Mkey&0x10)) //DATA按下吗? P64
{
delayms(200); //消抖
if(!(Mkey&0x10)) //再判断
{
BGset =2; //开背光
//if(k《1) {Page = 0;} //页面0:显示版本信息状态
//k++;
//if(k》1) {k =0;Page = 1; } //再按后退出
Page = 0;
set = 0;
}
}
if(!set)
{
if(!(Mkey&0x80)) //---》按下吗?下翻
{
delayms(200);
if(!(Mkey&0x80))
{
if(Page !=0)
{
Page++;
BGset =2;
if(Page》7) //如果超过7界面回到1画面
{
Page = 1;
}
}
}
}
if(!(Mkey&0x20)) //《---按下吗?上翻
{
delayms(200);
if(!(Mkey&0x20))
{
if(Page !=0)
{
Page--;
BGset =2;
if(Page《1) //小于1画面后不显示0画面,显示7画面
{
Page = 7;
}
}
}
}
}
//************************************************
//设置参数
//************************************************
if(Page ==0)
{
if(!(Mkey&0x02)) //SET按下吗?设定SET在0画面设置参数
{
delayms(200);
if(!(Mkey&0x02))
{
BGset =2;
set = 1; //如果按下SET键表示开始设置时间,置设置标志位;
}
}
if(set == 1)
{
if(!(Mkey&0x20)) //《- 按下吗?左移《- 在0画面修改参数
{
delayms(200);
if(!(Mkey&0x20))
{
BGset =2;
direction1++;
if(direction1 》 14)
{
direction1 = 1; //本界面14个数字要修改
}
}
}
if(!(Mkey&0x80)) //-》按下吗?右移-》只在0画面修改时间
{
delayms(200);
if(!(Mkey&0x80))
{
BGset =2;
direction1--;
if(direction1 《 1)
{
direction1 = 14;
}
}
}
switch(direction1)
{
case 1: //第一位修改
{
//number_disp (0x97,1,TAB[SZH0],TAB[SZL0]); //把前面的显示了
number_disp (0x96,1,TAB[SZH1],TAB[SZL1]);
number_disp (0x95,1,TAB[SZH2],TAB[SZL2]);
number_disp (0x8f,1,TAB[SZH3],TAB[SZL3]);
number_disp (0x8e,1,TAB[SZH4],TAB[SZL4]);
number_disp (0x9f,1,TAB[SZH5],TAB[SZL5]);
number_disp (0x9e,1,TAB[SZH6],TAB[SZL6]);
if(!(Mkey&0x01)) //+按下吗?
{
delayms(200);
if(!(Mkey&0x01))
{
BGset =2;
SZL0++;
if(SZL0》9) //设置,不超过9
{
SZL0 = 0;
}
}
}
/*if(!(Mkey&0x10)) //-按下吗?
{
delayms(200);
if(!(Mkey&0x10))
{
BGset =2;
if(SZL0《=0) //小于1画面后不显示0画面
{
SZL0 = 9;
}
SZL0--;
}
}*/
if(Tset 《 2)
{
number_disp (0x97,1,TAB[SZH0],TAB[SZL0]);
}
if(Tset》2)
{
number_disp (0x97,1,TAB[SZH0],0x20); //定时送灭状态,实现闪烁
}
}break;
case 2://第二位修改
{
number_disp (0x97,1,TAB[SZH0],TAB[SZL0]); //把前面的显示了
if(!(Mkey&0x01)) //+按下吗?
{
delayms(200);
if(!(Mkey&0x01))
{
BGset =2;
SZH0++;
if(SZH0》9) //设置,不超过9
{
SZH0 = 0;
}
}
}
if(Tset 《 2)
{
number_disp (0x97,1,TAB[SZH0],TAB[SZL0]);
}
if(Tset》2)
{
number_disp (0x97,1,0x20,TAB[SZL0]); //定时送灭状态,实现闪烁
}
}break;
case 3://第三位修改
{
number_disp (0x97,1,TAB[SZH0],TAB[SZL0]); //把前面的显示了
if(!(Mkey&0x01)) //+按下吗?
{
delayms(200);
if(!(Mkey&0x01))
{
BGset =2;
SZL1++;
if(SZL1》9) //设置,不超过9
{
SZL1 = 0;
}
}
}
if(Tset 《 2)
{
number_disp (0x96,1,TAB[SZH1],TAB[SZL1]);
}
if(Tset》2)
{
number_disp (0x96,1,TAB[SZH1],0x20); //定时送灭状态,实现闪烁
}
}break;
case 4://第4位修改
{
number_disp (0x97,1,TAB[SZH0],TAB[SZL0]); //把前面的显示了
number_disp (0x96,1,TAB[SZH1],TAB[SZL1]);
if(!(Mkey&0x01)) //+按下吗?
{
delayms(200);
if(!(Mkey&0x01))
{
BGset =2;
SZH1++;
if(SZH1》9) //设置,不超过9
{
SZH1 = 0;
}
}
}
if(Tset 《 2)
{
number_disp (0x96,1,TAB[SZH1],TAB[SZL1]);
}
if(Tset》2)
{
number_disp (0x96,1,0x20,TAB[SZL1]); //定时送灭状态,实现闪烁
}
}break;
case 5://第5位修改
{
number_disp (0x97,1,TAB[SZH0],TAB[SZL0]); //把前面的显示了
number_disp (0x96,1,TAB[SZH1],TAB[SZL1]);
if(!(Mkey&0x01)) //+按下吗?
{
delayms(200);
if(!(Mkey&0x01))
{
BGset =2;
SZL2++;
if(SZL2》9) //设置,不超过9
{
SZL2 = 0;
}
}
}
if(Tset 《 2)
{
number_disp (0x95,1,TAB[SZH2],TAB[SZL2]);
}
if(Tset》2)
{
number_disp (0x95,1,TAB[SZH2],0x20); //定时送灭状态,实现闪烁
}
}break;
case 6://第6位修改
{
number_disp (0x97,1,TAB[SZH0],TAB[SZL0]); //把前面的显示了
number_disp (0x96,1,TAB[SZH1],TAB[SZL1]);
if(!(Mkey&0x01)) //+按下吗?
{
delayms(200);
if(!(Mkey&0x01))
{
BGset =2;
SZH2++;
if(SZH2》9) //设置,不超过9
{
SZH2 = 0;
}
}
}
评论
查看更多