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

📄 主机.c

📁 利用AD7705与热敏电阻来检测实际的温度
💻 C
📖 第 1 页 / 共 5 页
字号:
       /*case 0x7d://0
            word='0';
            flag1=0;
            break;*/
       case 0xee://1
            word='1';
             sendbuf[1]=1;
            break;
       case 0xed://2
            word='2';
            sendbuf[1]=2;
            break;
       case 0xeb://3
            word='3';
            sendbuf[1]=3;
            break;
       case 0xe7://4
            word='4';
            sendbuf[1]=4;
            break;
       case 0xde://5
            word='5';
            sendbuf[1]=5;
            break;
       case 0xdd://6
            word='6';
            sendbuf[1]=6;
            break;
       case 0xdb://7
            word='7';
            sendbuf[1]=7;
            break;
       case 0xd7://8
            word='8';
            sendbuf[1]=8;
            break;
       case 0xbe://9
            word='9';
            sendbuf[1]=9;
            break;
     }
       }
       sendbuf[3]=union_variary.byte.hand;
       sendbuf[4]=union_variary.byte.ten;
       sendbuf[5]=union_variary.byte.several;
       sendbuf[6]=union_variary.byte.point;
       sendbuf[8]=sendbuf[1]+sendbuf[2]+sendbuf[3]+sendbuf[4]+sendbuf[5]+sendbuf[6]+sendbuf[7];
       send();
       //send_buf(0xaa ,0,0,union_variary.byte.hand,union_variary.byte.ten,union_variary.byte.several,union_variary.byte.point,0)  ;

      }
      /////////////////////////////////////////////
   }
   for(i=0;i<1000;i++)
       for(j=0;j<10;j++);
   send_byte(0xf4);
   flag=0;
   P1=0xff;
}
dis_lim()//显示上,下限
{
   uchar z=0,x=0,xx=0,b1=0;
   float y=0;
   k=3;
   P1=tab[m][n];
   xx=P1;
  if(P1==0xe7)
  {
    uchar code w1[]={"请输入子机号"};
    uchar code w2[]={"按二显示二号上限"};
    uchar code w3[]={"超时"};
    send_byte(0xf4);
    for(i=0,j=0;i<11;i=i+2,j++)
    {
      word=256*(w1[i]-0xa0)+w1[i+1]-0xa0;
      dis_word(j+2,0,0xf0);
    }
    /*for(i=0,j=0;i<15;i=i+2,j++)
    {
      word=256*(w2[i]-0xa0)+w2[i+1]-0xa0;
      dis_word(j+2,1,0xf0);
    }  */
    P1=0xff;
    for(i=0;i<1000;i++)
       for(j=0;j<10;j++);
    while(P1!=0xee&&P1!=0xed&&P1!=0xeb&&P1!=0xe7&&P1!=0xde&&P1!=0xdd&&P1!=0xdb&&P1!=0xd7&&P1!=0xbe)
       check_key();
     b1=P1;
     send_byte(0xf4);
     switch(b1)
     {
       /*case 0x7d://0
            word='0';
            flag1=0;
            break;*/
       case 0xee://1
            word='1';
             sendbuf[1]=1;
            break;
       case 0xed://2
            word='2';
            sendbuf[1]=2;
            break;
       case 0xeb://3
            word='3';
            sendbuf[1]=3;
            break;
       case 0xe7://4
            word='4';
            sendbuf[1]=4;
            break;
       case 0xde://5
            word='5';
            sendbuf[1]=5;
            break;
       case 0xdd://6
            word='6';
            sendbuf[1]=6;
            break;
       case 0xdb://7
            word='7';
            sendbuf[1]=7;
            break;
       case 0xd7://8
            word='8';
            sendbuf[1]=8;
            break;
       case 0xbe://9
            word='9';
            sendbuf[1]=9;
            break;
     }
    sendbuf[2]=3;//读上限命令
    sendbuf[8]=sendbuf[1]+sendbuf[2]+sendbuf[3]+sendbuf[4]+sendbuf[5]+sendbuf[6]+sendbuf[7];
    send();
    j=0;
    while((RI==0)&&(j<1000))
         {
          j++;
         }
    if(j>=1000)
      overtime=1;
    else
    {
      overtime=0;
      RI=0;
    }
    if(overtime==0)
    {
      for(i=0;i<7;i++)
	    {
	       j1=0;
	       while(RI==0)
	            {
	               j1++;
	                  if(j1>1000)
	                    {
	                      break;				//超时退出
	                    }
	            }
	       RI=0;
	       if(j1>1000)
	         {
	          break;				//超时退出
	         }
	       buff[i]=SBUF;
	    }
       }
     if(j1>1000||overtime==1)
     {
       send_byte(0xf4);
       P1=0xff;
       for(i=0,j=0;i<3;i=i+2,j++)
        {
         word=256*(w3[i]-0xa0)+w3[i+1]-0xa0;
         dis_word(j+2,0,0xf0);
        }
       for(i=0;i<1000;i++)
         for(j=0;j<10;j++);
     }
   if(j1<1000&&overtime==0)
    {
     union_variary.byte.hand=buff[1];
     union_variary.byte.ten=buff[2];
     union_variary.byte.several=buff[3];
     union_variary.byte.point=buff[4];
     if(union_variary.word<0)
     {
        y=-union_variary.word;
        uplim[0]=(int)y/100;
        uplim[1]=(int)(y-uplim[0]*100)/10;
        uplim[2]=(int)(y-uplim[0]*100-uplim[1]*10);
        uplim[3]=(int)(y*10-uplim[0]*1000-uplim[1]*100-uplim[2]*10);
     }
     uplim[0]=(int)union_variary.word/100;
     uplim[1]=(int)(union_variary.word-uplim[0]*100)/10;
     uplim[2]=(int)(union_variary.word-uplim[0]*100-uplim[1]*10);
     uplim[3]=(int)(union_variary.word*10-uplim[0]*1000-uplim[1]*100-uplim[2]*10);
    if(sendbuf[1]==1)//存一号子几子机上限
    {
     for(i=0;i<4;i++)
       uplim1[i]=uplim[i];
    }
    if(sendbuf[1]==2)//存二号子几子机上限
    {
     for(i=0;i<4;i++)
       uplim2[i]=uplim[i];
    }
    limm=uplim;
   }
  }
   if(P1==0xde)
   {
     uchar code w1[]={"请输入子机号"};
     uchar code w2[]={"按二显示二号下限"};
     uchar code w3[]={"超时"};
     send_byte(0xf4);
     for(i=0,j=0;i<11;i=i+2,j++)
     {
       word=256*(w1[i]-0xa0)+w1[i+1]-0xa0;
       dis_word(j+2,0,0xf0);
     }
  /*  for(i=0,j=0;i<15;i=i+2,j++)
    {
      word=256*(w2[i]-0xa0)+w2[i+1]-0xa0;
      dis_word(j+2,1,0xf0);
    } */
     P1=0xff;
     delay(1000,1000);
    while(P1!=0xee&&P1!=0xed&&P1!=0xeb&&P1!=0xe7&&P1!=0xde&&P1!=0xdd&&P1!=0xdb&&P1!=0xd7&&P1!=0xbe)
       check_key();
     b1=P1;
     send_byte(0xf4);
     switch(b1)
     {
       /*case 0x7d://0
            word='0';
            flag1=0;
            break;*/
       case 0xee://1
            word='1';
             sendbuf[1]=1;
            break;
       case 0xed://2
            word='2';
            sendbuf[1]=2;
            break;
       case 0xeb://3
            word='3';
            sendbuf[1]=3;
            break;
       case 0xe7://4
            word='4';
            sendbuf[1]=4;
            break;
       case 0xde://5
            word='5';
            sendbuf[1]=5;
            break;
       case 0xdd://6
            word='6';
            sendbuf[1]=6;
            break;
       case 0xdb://7
            word='7';
            sendbuf[1]=7;
            break;
       case 0xd7://8
            word='8';
            sendbuf[1]=8;
            break;
       case 0xbe://9
            word='9';
            sendbuf[1]=9;
            break;
     }
    sendbuf[2]=4;//读下限命令
    sendbuf[8]=sendbuf[1]+sendbuf[2]+sendbuf[3]+sendbuf[4]+sendbuf[5]+sendbuf[6]+sendbuf[7];
    send();
    j=0;
    while((RI==0)&&(j<100))
         {
          j++;
         }
    if(j>=100)
      overtime=1;
    else
    {
      overtime=0;
      RI=0;
     }
    if(overtime==0)
    {
      for(i=0;i<7;i++)
	    {
	       j1=0;
	       while(RI==0)
	            {
	               j1++;
	                  if(j1>1000)
	                    {
	                      break;				//超时退出
	                    }
	            }
	       RI=0;
	       if(j1>1000)
	         {
	          break;				//超时退出
	         }
	       buff[i]=SBUF;
	    }
       }
     if(j1>1000||overtime==1)
     {
       send_byte(0xf4);
       P1=0xff;
       for(i=0,j=0;i<3;i=i+2,j++)
        {
         word=256*(w3[i]-0xa0)+w3[i+1]-0xa0;
         dis_word(j+2,0,0xf0);
        }
       for(i=0;i<1000;i++)
         for(j=0;j<10;j++);
     }
    if(j1<1000&&overtime==0)
    {
     union_variary.byte.hand=buff[1];
     i=union_variary.byte.hand;
     union_variary.byte.ten=buff[2];
     union_variary.byte.several=buff[3];
     union_variary.byte.point=buff[4];
     if(union_variary.word<0)
     {
        y=-union_variary.word;
        downlim[0]=(int)y/100;
        downlim[1]=(int)(y-downlim[0]*100)/10;
        downlim[2]=(int)(y-downlim[0]*100-downlim[1]*10);
        downlim[3]=(int)(y*10-downlim[0]*1000-downlim[1]*100-downlim[2]*10);
     }
     else
     {
      downlim[0]=(int)union_variary.word/100;
      downlim[1]=(int)(union_variary.word-downlim[0]*100)/10;
      downlim[2]=(int)(union_variary.word-downlim[0]*100-downlim[1]*10);
      downlim[3]=(int)(union_variary.word*10-downlim[0]*1000-downlim[1]*100-downlim[2]*10);
     }
    if(sendbuf[1]=1)//存一号子机下限
    {
     for(i=0;i<4;i++)
       downlim1[i]=downlim[i];
    }
    if(sendbuf[1]=2)//存二号子几子机下限
    {
     for(i=0;i<4;i++)
       downlim2[i]=downlim[i];
    }
    limm=downlim;
   }
  }
   if(j1<1000&&overtime==0)
   {
    if(xx==0xe7)
    {
      send_byte(0xf4);
     for(i=0,j=0;i<9;i=i+2,j++)
     {
      word=256*(ll[i]-0xa0)+ll[i+1]-0xa0;
      dis_word(j+3,0,0xf0);
     }
    }
    if(xx==0xde)
    {
      send_byte(0xf4);
      for(i=0,j=0;i<9;i=i+2,j++)
     {
      word=256*(mm[i]-0xa0)+mm[i+1]-0xa0;
      dis_word(j+3,0,0xf0);
     }
    }
    if(union_variary.word<0)
     {
       word='-';
       dis_word(0x05,15,0xf9);
     }
   for(z=0;z<4;z++)
   {
     switch(*(limm+z))
     {
       case 0:
            word='0';
            break;
       case 1:
            word='1';
            break;
       case 2:
            word='2';
            break;
       case 3:
            word='3';
            break;
       case 4:
            word='4';
            break;
       case 5:
            word='5';
            break;
       case 6:
            word='6';
            break;
       case 7:
            word='7';
            break;
       case 8:
            word='8';
            break;
      case 9:
            word='9';
            break;
     }
     switch(z)
     {
       case 0:
            x=0x06;
            break;
       case 1:
            x=0x07;
            break;
       case 2:
            x=0x08;
            break;
      case 3:
            x=0x0a;
            xx=word;
            word='.';
            dis_word(0x09,15,0xf9);
            word=xx;
            break;
     }
     dis_word(x,15,0xf9);
   }
   for(i=0;i<1000;i++)
       for(j=0;j<100;j++);
  }
  //delay(1000,1000);
   overtime=0;
   send_byte(0xf4);
   P1=0xff;
}
//////////////////////////////////////////////////////////////////////

getT(uchar yy)//取温度
{
    uchar code w3[]={"超时"};
    uchar data z,x,xx;
    float y;
    k=3;
    send_byte(0xf4);
    sendbuf[1]=yy;//子机号
    sendbuf[2]=5;//读温度命令
    sendbuf[8]=sendbuf[1]+sendbuf[2]+sendbuf[3]+sendbuf[4]+sendbuf[5]+sendbuf[6]+sendbuf[7];
    send();
    j=0;
    while((RI==0)&&(j<100))
         {
          j++;
         }
    if(j>=100)
      overtime=1;
    else
    {
      overtime=0;
      RI=0;
     }
     if(overtime==0)
     {
      for(i=0;i<7;i++)
	    {
	       j1=0;
	       while(RI==0)
	            {
	               j1++;
	                  if(j1>1000)
	                    {
	                      break;				//超时退出
	                    }
	            }
	       RI=0;
	       if(j1>1000)
	         {
	          break;				//超时退出
	         }
	       buff[i]=SBUF;
	    }
       }
     if(j1>1000||overtime==1)
     {
       send_byte(0xf4);
       P1=0xff;
       for(i=0,j=0;i<3;i=i+2,j++)
        {
         word=256*(w3[i]-0xa0)+w3[i+1]-0xa0;
         dis_word(j+2,0,0xf0);
        }
       for(i=0;i<1000;i++)
         for(j=0;j<10;j++);
     }
    if(j1<1000&&overtime==0)
    {
     union_variary.byte.hand=buff[1];
     union_variary.byte.ten=buff[2];
     union_variary.byte.several=buff[3];
     union_variary.byte.point=buff[4];
     union_variary.word=union_variary.word/10;
     if(union_variary.word<0)
     {
        y=-union_variary.word;
        firstT[0]=(int)y/100;
        firstT[1]=(int)(y-firstT[0]*100)/10;
        firstT[2]=(int)(y-firstT[0]*100-firstT[1]*10);
        firstT[3]=(int)(y*10-firstT[0]*1000-firstT[1]*100-firstT[2]*10);
     }
     else
     {
       firstT[0]=(int)union_variary.word/100;
       firstT[1]=(int)(union_variary.word-firstT[0]*100)/10;
       firstT[2]=(int)(union_variary.word-firstT[0]*100-firstT[1]*10);
       firstT[3]=(int)(union_variary.word*10-firstT[0]*1000-firstT[1]*100-firstT[2]*10);
     }
     limm=firstT;
    for(i=0,j=0;i<9;i=i+2,j++)
    {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -