📄 key.c.c
字号:
#include <reg52.h>
#include<intrins.h>
#define lis_f 0x02//累计时分1
#define lis_s 0x04//累计时时2
#define wendu_bj 0x06//温度报警1@
#define zasu_bj 0x08//转速报警2
sbit gn_key=P2^0;
sbit sezi_key=P2^1;
sbit sjj_key=P2^2;
sbit sjan_key=P2^3;
sbit jisi_key=P2^5;
sbit zozi_key=P2^4;
sbit xsn_key=P0^2;
sbit s1=P2^6;
extern void led1_str(unsigned char led_streat1);
extern void led2_str(unsigned char led_streat2);
void datey(unsigned int i);
bit gn();
bit sezi();
bit sjj(bit g);
bit sjan(bit g);
bit jisi();
bit zozi();
bit xiaosen();
void bojinsu_zj();
unsigned char gnstr;//功能键状态
///0-正常测量显示 1-累计时显示 2-转速报警设置 3-温度报警设置
bit jswdstr;//计时温度状态显示 0-温度 1-记时
bit wesan;//位闪启动
bit set;//设置标志
extern unsigned char wsws;//位闪位数0-4
unsigned char set_ws;//设置位
extern unsigned char leiji_minf;//累计时间 -分
extern unsigned int leiji_mins;//累计时间- 小时
extern bit jisiqido1;//启动后计时
extern unsigned int zs_bj;//转速报警值
extern char wd_bj;//温度报警值
extern unsigned char mine1;//启动计时后 定时20次数 *50m秒为1秒
extern unsigned char minm1;//启动计时后-秒
extern unsigned char minf1;//启动计时后-分
extern unsigned char mins1;//启动计时后-时
extern bit i2c_write(unsigned char address,unsigned int fb);
void k_gnkey();//功能
void k_sezi();//设置
void k_jajn();//设置加减
void jswd();//计时温度切换显示
void stratcbf();//显示数据刷新
void set_gnstr();//设置显示状态
extern unsigned char strat_gn;//退出设置状态
void k_gnkey()//功能
{
if(gn())
{
gnstr++;
if(gnstr>3)
gnstr=0;
set_gnstr();
strat_gn=0;
}
}
void bojinsu_zj()
{
unsigned int i;
led1_str(2); led2_str(1);
i=0;
while(!(gn()|sezi()|sjj(1)|sjan(1)|zozi()| jisi()))
{
i++;
if(i>5000)
return;
}
}
void set_gnstr()
{
switch(gnstr)
{
case 0: led1_str(0);wesan=0;set=0;break;
case 1: led1_str(1);wesan=0;set=0;break;
case 2: led1_str(2);wesan=1;wsws=3;//转速报警设置 位闪启动
set=0; set_ws=3; break;
case 3: led1_str(0); led2_str(2);wesan=1;
set=1; wsws=4;//温度报警设置 位闪启动
break;
default: ;
}
}
void k_sezi()
{
if((gnstr==2)&sezi())
{
set_ws--;//设置位移
if(set_ws>3)
set_ws=3;
wsws=set_ws;
wesan=1;
strat_gn=0;
}
}
void k_jajn()
{
unsigned char ya0;
unsigned char ya1;
unsigned char ya2;
unsigned char ya3;
if(sjj(1)&((gnstr==2)|(gnstr==3)))//+
{ strat_gn=0;
switch(gnstr)
{
case 2: { ya3=zs_bj/1000;
ya2=(zs_bj%1000)/100;
ya1=(zs_bj%100)/10;
ya0=zs_bj%10;
switch(set_ws)
{
case 0: ya3++;
if(ya3>9)
ya3=0; break;
case 1: ya2++;
if(ya2>9)
ya2=0;break;
case 2: ya1++;
if(ya1>9)
ya1=0;break;
case 3: ya0++;
if(ya0>9)
ya0=0;break;
default: ;
}
zs_bj=ya0+ya1*10+ya2*100+ya3*1000;
i2c_write(zasu_bj, zs_bj);
led1_str(2);
wesan=0;
}
break;
case 3:
{
wd_bj++;
if(wd_bj>150)
wd_bj=150;
led2_str(1);
i2c_write(wendu_bj, wd_bj);
wesan=0;
}
break;
default: ;
}
}
if(sjan(1)&((gnstr==2)|(gnstr==3)))//-
{ strat_gn=0;
switch(gnstr)
{
case 2: {
ya3=zs_bj/1000;
ya2=(zs_bj%1000)/100;
ya1=(zs_bj%100)/10;
ya0=zs_bj%10;
switch(set_ws)
{
case 0: ya3--;
if(ya3>9)
ya3=9; break;
case 1: ya2--;
if(ya2>9)
ya2=9;break;
case 2: ya1--;
if(ya1>9)
ya1=9;break;
case 3: ya0--;
if(ya0>9)
ya0=9;break;
default: ;
}
zs_bj=ya0+ya1*10+ya2*100+ya3*1000;
i2c_write(zasu_bj, zs_bj);
led1_str(2);
wesan=0;
}
break;
case 3:
{
wd_bj--;
if(wd_bj<-100)
wd_bj=-100;
led2_str(1);
i2c_write(wendu_bj, wd_bj);
wesan=0;
}
break;
default: ;
}
}
}
void jswd()//计时温度切换显示
{
if(jisi())
jswdstr=!jswdstr;
if(zozi())
{
jisiqido1=!jisiqido1;
if(!jisiqido1)
{
mine1=0;
minm1=0;
minf1=0;
mins1=0;
}
}
}
void stratcbf()
{
switch(gnstr)
{
case 0: led1_str(0);
if(jswdstr)
led2_str(0);
else led2_str(2); break;
case 1: led1_str(1);
if(jswdstr)
led2_str(0);
else led2_str(2); break;
case 2: led1_str(2);
if(jswdstr)
led2_str(0);
else led2_str(2); break;
case 3: led1_str(0);led2_str(1);break;
default: ;
}
}
bit gn()//功能按键
{
if(!gn_key)
{
datey(30);
if(!gn_key)
{
datey(30);
while(!gn_key);
return(1);
}
}
return(0);
}
bit sezi()//设置按键
{
if(!sezi_key)
{
datey(30);
if(!sezi_key)
{
datey(30);
while(!sezi_key);
return(1);
}
}
return(0);
}
bit sjj(bit g)//+
{
unsigned char i;
if(!sjj_key)
{
datey(30);
if(!sjj_key)
{
i=0;
datey(30);
while(!sjj_key)
{
i++;
if((i>30)&g)
{
i=0;
return(1);
}
}
return(1);
}
}
return(0);
}
bit sjan(bit g)//-
{
unsigned char i;
if(!sjan_key)
{
datey(30);
if(!sjan_key)
{
i=0;
datey(30);
while(!sjan_key)
{
i++;
if((i>30)&g)
{
i=0;
return(1);
}
}
return(1);
}
}
return(0);
}
bit jisi()//计时
{
if(!jisi_key)
{
datey(30);
if(!jisi_key)
{
datey(30);
while(!jisi_key);
return(1);
}
}
return(0);
}
bit zozi()
{
unsigned long i;
if(!zozi_key)
{
datey(30);
if(!zozi_key)
{
datey(30);
i=0;
while(!zozi_key)
{ i++;
if(i>10000)
{
leiji_mins=0;
i2c_write(lis_s,leiji_mins);
break;
}
}
return(1);
}
}
return(0);
}
bit xiaosen()
{
if(!xsn_key)
{
datey(30);
if(!xsn_key)
{
datey(30);
while(!xsn_key);
return(1);
}
}
return(0);
}
void datey(unsigned int i)
{
for(;i>0;i--)
_nop_();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -