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

📄 main.c

📁 自己写的测试程序,调试已通过,可以直接使用, 而且有的还有详细的注释.红外采集器软件
💻 C
📖 第 1 页 / 共 5 页
字号:
		//		           else  write_byte(1,2,12,&number[25]);
                        
//next1:  

  write_word(0,6,4,&chinese[7]);           // 温度上限
  write_word(0,6,20,&chinese[8]);         
  write_word(0,6,36,&chinese[43]);            
  write_word(0,6,52, &chinese[44]); 
  write_byte(1,6,4,&number[22]); 
                                                  write_byte(1,6,32,&number[26]);
                                                  write_byte(1,6,40,&number[12]);
    z=iic_read[2]/100;
     write_byte(1,6,12,&number[z]);
      x=(iic_read[2]-z*100)/10;

       write_byte(1,6,20,&number[x]); 
    y=(iic_read[2]-z*100-x*10)%10;
     write_byte(1,6,28,&number[y]); 
      
  
                 if(iic_read[4]==1){write_byte(1,6,12,&number[25]);}
			//	  else if(z==0&x==0){write_byte(1,6,20,&number[25]);}
			//	       else  write_byte(1,6,12,&number[25]);

  
//next2:      
 
                  ES=1;
  delay_1s(1000);
                  ES=0;
}           

/**********************   found new  ****************************************/

void found_new(void)
{
   unsigned char num[8];
   unsigned char n,i,z;
   bit h;

   delay_iic();
  read_iic_data(1,&iic_read,0,6);
  n=iic_read[0];
  delay_iic();
   if(iic_read[0]==64)                  //  系统超限!
      {          clear_lcd_screen();
	          
			  write_word(0,3,26,&chinese[11]);           
              write_word(0,3,42,&chinese[12]);
              write_word(0,3,58,&chinese[50]);
              write_word(1,3,10,&chinese[44]);
			  write_byte(1,3,26,&number[23]);
            delay_1s(30000);

	         goto xx;
	    }
  if(iic_read[0]<0|iic_read[0]>64)
                    {
					    read_iic_data(1,&iic_read,0,6);
                        if(iic_read[0]<0|iic_read[0]>64){error();}
						}   //系统故障!
     

 

	 for(;n>0;n--)
	  { z=0;    
	   read_iic_data(0,&iic_read,n*8-8,8);
        delay_iic();
	 if(iic_write[0]==iic_read[0]){ z++;}
     if(iic_write[1]==iic_read[1]){ z++;}
     if(iic_write[2]==iic_read[2]){ z++;}
     if(iic_write[3]==iic_read[3]){ z++;}     
	 if(iic_write[4]==iic_read[4]){ z++;}
     if(iic_write[5]==iic_read[5]){ z++;}
     if(iic_write[6]==iic_read[6]){ z++;}
     if(iic_write[7]==iic_read[7]){ z++;}			 
					     if(z==8)
		                        {        clear_lcd_screen();    
                                     write_word(0,3,20,&chinese[17]);//器件已存在! 
                                     write_word(0,3,36,&chinese[41]);
                                     write_word(0,3,52,&chinese[42]);
                                     write_word(1,3,4,&chinese[27]);
                                     write_word(1,3,20,&chinese[57]);
			                         write_byte(1,3,36,&number[23]);
                              x:     delay_1s(30000);
								   while(1){
								           ds18b20_number(&num[0]);
										   if(num[0]==0x28|num[0]==0x26)
										     {goto x;}  
										    else	   
											   {break;}    // if you not bright ds18b20,do while  
										  }
											    
					            goto xx;
								 }
                      
	                  
	  
	    }

  		  read_iic_data(1,&iic_read,0,6);        //写IIC 总数加1
		  delay_iic();
          write_iic_data(0,&iic_write,iic_read[0]*8,8);   
                                                  
		                                 
     	  iic_read[0]++;
          delay_iic();
		  write_iic_data(1,&iic_read[0],0,1); 

                 clear_lcd_screen();
        write_word(0,0,28,&chinese[53]);           
        write_word(0,0,44,&chinese[54]);                   //  添加成功 序列
        write_word(0,0,60,&chinese[55]);                            //  ::当前总数 
        write_word(1,0,12,&chinese[56]);
        write_byte(1,0,28,&number[23]);
        
	    z=0;n=0;h=0;
       for(i=0;i<8;i++)
	      {    if(i<4)h=0;else h=1;
		       if(h==0&z>60){z=0;}
		    n=iic_write[i]&0xf0;
			n>>=4;
                  write_byte(h,2,z,&number[n]);  //:
                  z+=8;
				  
			n=iic_write[i]&0x0f;
			      write_byte(h,2,z,&number[n]);
               z+=8;
				
            }
 
				 

        write_word(0,4,0,&chinese[11]);    //系统编号 
        write_word(0,4,16,&chinese[12]);
        write_word(0,4,32,&chinese[20]); 
        write_word(0,4,48,&chinese[21]);
        write_byte(1,4,0,&number[22]);  //:
          read_iic_data(1,&iic_read[0],0,1);     
        n=iic_read[0]/8;
		z=iic_read[0]%8;



       write_byte(1,4,8,&number[n+10]);
	   write_byte(1,4,16,&number[25]); // -
       write_byte(1,4,24,&number[z]);  
  
  
         
       write_word(0,6,0,&chinese[25]);     //  传感器总数:      
       write_word(0,6,16,&chinese[26]); 
       write_word(0,6,32,&chinese[17]);    
       write_word(0,6,48,&chinese[58]);    
       write_word(1,6,0,&chinese[59]);    
       write_byte(1,6,16,&number[22]);
       n=iic_read[0]/10;
 	   z=iic_read[0]%10;
	   write_byte(1,6,24,&number[n]);
	   write_byte(1,6,32,&number[z]);
   gg:     delay_1s(30000);
   
       ds18b20_number(&num);
	    delay_iic();
	  if(num[0]==0x28|num[0]==0x26) goto gg;
      xx: delay_1s(100);
     }
   
//************** finding *********************************************/
  bit finding(void)
    {
	 unsigned int hhhh;
	 unsigned char y;
	 int w,r,u,n;
	
	 bit f;                             ES=0;
	 f=0; hhhh=0;
	 w=0;r=0;n=0;
	         ds18b20_number(&iic_write);
        for(y=0;y<8;y++)
		    {
  	          u=(int)iic_write[y];n+=u;
            }
			                            ES=1;
			   
		           delay_1s(4000);      ES=0;
         ds18b20_number(&iic_write);
		 for(y=0;y<8;y++)
		    {
  	          u=(int)iic_write[y];w+=u;
            }                                  ES=1;
		                    delay_1s(1000);    ES=0;
							ds18b20_number(&iic_write);
         for(y=0;y<8;y++)
		    {
  	          u=(int)iic_write[y];r+=u; 
            }                                ES=1;
	                        delay_1s(1000);
                                             ES=0;
			  
        if((n==w&w==r&(iic_write[0]==0x28|iic_write[0]==0x26))&(n<1028))
			{ f=1;
			                             
			   
			 clear_lcd_screen();
			                   //  找到新硬件
			   
			  
			  write_word(0,3,16,&chinese[37]);           
              write_word(0,3,32,&chinese[38]);
              write_word(0,3,48,&chinese[39]);
              write_word(1,3,0,&chinese[40]);
              write_word(1,3,16,&chinese[41]);
			  write_byte(1,3,32,&number[23]);
			                       ES=0;
		  delay_1s(30000);         ES=1;
			    
			 }  
			 
    return f;
             }

// ***************   error ************************************//
void error(void)
{             clear_lcd_screen();
              write_word(0,3,26,&chinese[11]);           
              write_word(0,3,42,&chinese[12]);
              write_word(0,3,58,&chinese[51]);
              write_word(1,3,10,&chinese[52]);
			  write_byte(1,3,26,&number[23]);
       while(1);
     
		     
			  
 }
void memery_error(void)
 {
 clear_lcd_screen();
write_word(0,3,16,&chinese[27]);
write_word(0,3,32,&chinese[28]);
write_word(0,3,48,&chinese[17]);
write_word(1,3,0,&chinese[51]);
write_word(1,3,16,&chinese[52]);
write_byte(1,3,32,&number[23]);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   while(1); 
}

/*************    display temperature  *********************************/
void display_temp(unsigned i,unsigned char j,short int temp)
{
 unsigned char y,z,h,w0,w1;
 signed char up,down;
 bit err,qq;
 err=0;
 qq=0;
 w0=28;w1=31;
  
 z=0;
 if(j==1|j==5){y=0;}
 if(j==2|j==6){y=2;}
 if(j==3|j==7){y=4;}
 if(j==4|j==8){y=6;}
                      
   if(temp<-880|temp>2000|temp==-1)
                     {if(j<=4){write_word(0,y,28,&chinese[51]);
				          write_word(0,y,44,&chinese[52]);}
					 else{write_word(1,y,28,&chinese[51]);
				          write_word(1,y,44,&chinese[52]);}	 
					      err=1;                     
					    }
   if(temp<0){temp*=(-1);qq=1;}
   temp*=0.0625;                   
                                             if(~err)
											    {
												 read_iic_data(1,&iic_read,0,8);        //继电器
												   if(iic_read[3]==1){down=iic_read[1]*(-1);}
												       else down=iic_read[1];
												    if(iic_read[4]==1){up=iic_read[2]*(-1);}
												        else {up=iic_read[2];}
                                                 if(temp<=down|temp>=up)
												   {
												    call=0;
												   }
											     }
     h=temp/100;                     
  if(j<=4){ if(h==0){w0-=7;}  

   write_byte(0,y,7,&number[25]);
   write_byte(0,y,18,&number[22]);

   
 
 if(~err){if(qq){write_byte(0,y,23,&number[25]);}   //负号!
          write_byte(0,y,w0+18,&number[26]);
          write_byte(0,y,w0+26,&number[12]);}
  
  write_byte(0,y,0,&number[i+10]);                               //light this setup 
  write_byte(0,y,12,&number[j]);    
   if(~err){               
  if(h==1)
     {
   write_byte(0,y,w0,&number[h]);}
  z=(temp-(h*100))/10;
   write_byte(0,y,w0+7,&number[z]);
  z=temp%10;
   write_byte(0,y,w0+14,&number[z]);
   }}
  else
  {
     if(h==0){w1-=7;}
  write_byte(1,y,10,&number[25]);
  write_byte(1,y,21,&number[22]);    //:
  if(~err){if(qq){write_byte(1,y,26,&number[25]);}   //负号!
          write_byte(1,y,w1+26,&number[12]);  
          write_byte(1,y,w1+18,&number[26]);
          }


 
  write_byte(1,y,3,&number[i+10]);                     //right this
  write_byte(1,y,15,&number[j]);

  if(~err)
    {                         
  
  if(h==1){
   write_byte(1,y,w1,&number[h]);}
  z=(temp-(h*100))/10;
   write_byte(1,y,w1+7,&number[z]);
  z=temp%10;
   write_byte(1,y,w1+14,&number[z]);
   }}

      // SEND RS485
   if(err){t_buf[(i*8+j)*2-1]=i*8+j; t_buf[(i*8+j)*2]=0xfe;}

⌨️ 快捷键说明

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