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

📄 key.c.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 + -