//this source file develop for mersurement temper in refigerent
//temperature control betaween  15-20 degree
//we can setpoint temperture 


#include <AT89x051.H>

void delay1(unsigned char time1);
void delay(unsigned int time);
void h_b_v2(unsigned char dec);
void sp(void);
void bring(void);
void check_bord(void);
//================function access i^2c bus=====

void display(void);
code  char num1[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};
sbit ry=P3^2;
sbit up=P3^0;
sbit down=P3^1;
sbit en1=P3^5;
sbit en2=P3^4;
sbit en3=P3^7;
sbit sw_sp=P1^0;
unsigned char k,d;
unsigned char sp_value;
unsigned char bdata v_sp;
sbit led=v_sp^0;
bit flg_sp;
//========================extern ds1820=================
void resive_dq(void);
extern unsigned char DISBUF[8];

extern unsigned char TEMBUF[2];
//======================================================
unsigned char average[10];
unsigned char inp_dat;
unsigned int stor_data; 
unsigned int data_1;
//======================================
unsigned char n1,n2,n3,n4,n5,p;


void main(void)
{  v_sp=0xff;
   sp_value=37;
   sw_sp=1;
   up=1;
   down=1;
   flg_sp=1;

   p=0;
   h_b_v2(100);
   display();
   //=====================iic_function=================

   delay(200);

   //==================================================
    en1=0;
    en2=0;
    en3=0;
    n1=0;
    n2=0;
    n3=0;
  // ref=0;
    
    check_bord();
   delay(1000);
   ry=0;
   while(d<70)
   {
   delay(50000);
    d++;
   }    
   d=0;
   while(1)
   {

    resive_dq();
    h_b_v2(TEMBUF[0]);
    if(TEMBUF[1]==0X01)n3=5;
    if(TEMBUF[1]==0X00)n3=0;
	if((TEMBUF[0]<=(sp_value-1))&&(TEMBUF[1]==0X01))ry=0;
    if(TEMBUF[0]>=(sp_value))ry=1;
    if((!up)&&(!down))
    { 
    flg_sp=0;
    
    sp();
    
    }
    display();

    
   }
}
void h_b_v2(unsigned char dec)
{unsigned char x;
 n1=0;n2=0;n3=0; 
 x=0;
  while(x<dec)
  {
   
      n1++;
      if(n1>9)
      {
        n2++;
        n1=0;
        if(n2>9)
        {
          n3++;
          n2=0;
          if(n3>9)
          {
           n4++;
           n3=0;
          }
        }
      } 
   
    x++;
      
  }
 
}


void check_bord(void)
{
  while(k<=9)
  {
      P1=num1[k];
     en1=1;
     delay(200);
     en1=0;
     //----------------
     P1=num1[k];
     en2=1;
     delay(200);
     en2=0;
     //----------------
     P1=num1[k];
     en2=1;
     delay(200);
     en2=0;
     //---------------
     P1=num1[k];
     en3=1;
     delay(200);
     en3=0;

     //----------------
     delay(10000);
     k++;
     
  }
  k=0;

}


void display(void)
{

       //===============
        //num1[n3]=num1[n3]|v_sp;        
        P1=num1[n3]&v_sp;
        en2=1;
        delay(100);
        en2=0;
        //===============
        //num1[n1]=num1[n1]|v_sp; 
        P1=num1[n1]&v_sp;
        en3=1;
        delay(100);
        en3=0;
       //===============
        //num1[n2]=num1[n2]|v_sp; 
        P1=num1[n2]&v_sp;;
        en1=1;
        delay(100);
        en1=0;
       //===============
}
void sp(void)
{   led=0;
    sw_sp=0;
    bring();
   h_b_v2(sp_value);
   display();
    while(!flg_sp)
	{ 
      if((!up)&&(down))
	  {delay(10000);
       if((!up)&&(down))
       {
        sp_value++;
	    if(sp_value>=40)sp_value=40;
        h_b_v2(sp_value);
        display();
        delay(10000);
        }
      }
      else if((up)&&(!down))
      {delay(10000);
       if((up)&&(!down))
       {
        sp_value--;
	    if(sp_value<=1)sp_value=1;
        h_b_v2(sp_value);
        display();
        delay(10000);
       }
      }
	  else if((!up)&&(!down))
      {
       bring();
       flg_sp=1;
       while((!up)&&(!down));
	  }
	  else
	  {

	  }
    }
  sw_sp=1;
  led=1; 
}
void bring(void)
{
      //===============
        
        P1=num1[9];
        en1=1;
        delay(100);
        en1=0;
        //===============
        P1=num1[9];
        en2=1;
        delay(100);
        en2=0;
       //===============
        P1=num1[9];
        en3=1;
        delay(100);
        en3=0;
       //===============
	   delay(10000);
	         //===============
        
        P1=num1[0];
        en1=1;
        delay(100);
        en1=0;
        //===============
        P1=num1[0];
        en2=1;
        delay(100);
        en2=0;
       //===============
        P1=num1[0];
        en3=1;
        delay(100);
        en3=0;
       //===============
       delay(10000);
	    //===============
        
        P1=num1[9];
        en1=1;
        delay(100);
        en1=0;
        //===============
        P1=num1[9];
        en2=1;
        delay(100);
        en2=0;
       //===============
        P1=num1[9];
        en3=1;
        delay(100);
        en3=0;
       //===============
	   delay(10000);
	   
	   //===============
        
        P1=num1[0];
        en1=1;
        delay(100);
        en1=0;
        //===============
        P1=num1[0];
        en2=1;
        delay(100);
        en2=0;
       //===============
        P1=num1[0];
        en3=1;
        delay(100);
        en3=0;
       //===============
}
