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

📄 t.c

📁 ds18b20多点测温,单片机为AT89s52,液晶显示,实时时钟显示.
💻 C
📖 第 1 页 / 共 4 页
字号:
	//writeB(0xcc);
    writeB(0xbe);
    temper[0][i]=readB();
    temper[1][i]=readB();
    readB();
    readB();
    readB();
    readB();
    readB();
    readB();
    readB();
	key_clk=1;

   }

  void dectemper(uchar i)  //温度转换程序//	
 { 	 
    uchar m=0;
   if(temper[1][i]>=0xf8)
    {
     if(temper[0][i]==0){temper[0][i]=0xff;temper[1][i]=temper[1][i]-1;}
     else temper[0][i]=temper[0][i]-1;
     temper[0][i]=~temper[0][i];
     temper[1][i]=~temper[1][i];
     temper[1][i]=temper[1][i]<<4;
     temper[1][i]+=(temper[0][i]&0xf0)>>4;
     temper[0][i]=(temper[0][i]&0x0f);
     if((temper[0][i]&0x01)==1)m=6;
     if((temper[0][i]&0x02)==2)m+=13;
     if((temper[0][i]&0x04)==4)m+=25;
     if((temper[0][i]&0x08)==8)m+=50;
     temper[0][i]=m;
     flag[i]=0;
    }
   else
    {
     m=0;
     temper[1][i]=temper[1][i]<<4;
     temper[1][i]+=(temper[0][i]&0xf0)>>4;
     temper[0][i]=(temper[0][i]&0x0f);
     if((temper[0][i]&0x01)==1)m=6;
     if((temper[0][i]&0x02)==2)m+=13;
     if((temper[0][i]&0x04)==4)m+=25;
     if((temper[0][i]&0x08)==8)m+=50;
     temper[0][i]=m;
     flag[i]=1;
    }
	rodcounter=i;
 }
//**************************************************键盘读取程序**************************** 
 void keyread(void) interrupt 0 
  {
   uchar i;
   key=0;					
   for(i=0;i<33;i++)
     { 
      while(key_clk){};
      if(i>0&&i<9)
        {
         key=key>>1;
         if(key_data)key=key|0x80; 
         }
      while(!key_clk){};
       }
   if(key==0xe0){
     key=0;
     while(key_clk){};
	 for(i=0;i<22;i++)
	   {while(key_clk){};
	    if(i>11&&i<20)
        {
         key=key>>1;
         if(key_data)key=key|0x80; 
         } 
	  while(!key_clk){};}
	 }
   if(keycounter==0)keycounter=1;
   else keycounter=0;
   }

  


uchar keydec(void)      //键盘键值处理程序//
   {
   uchar key_value;
   switch(key)
    {
      case 0x70:key_value=0;
       break;
      case 0x69:key_value=1;
       break;
      case 0x72:key_value=2;
       break;
      case 0x7a:key_value=3;
       break;
      case 0x6b:key_value=4;
       break;
      case 0x73:key_value=5;
       break;
      case 0x74:key_value=6;
       break;
      case 0x6c:key_value=7;
       break;
      case 0x75:key_value=8;
       break;
      case 0x7d:key_value=9;
     }
   return(key_value);
   }
 //**************************************************************************************//
  
void inputbyte(unsigned char ucda)
{unsigned char i;
ACC=ucda;
t_rst=1;
for(i=8;i>0;i--)
{
t_io=bit0;
t_clk=0;
t_clk=1;
ACC=ACC>>1;
}
}
unsigned char outputbyte(void)
{ unsigned char i;
t_rst=1;
for(i=8;i>0;i--)
{ACC=ACC>>1;
t_io=1;
t_clk=1;
t_clk=0;
bit7=t_io;
}
return (ACC);
}
void wr_1302( unsigned char add,unsigned char ucda)
{t_rst=0;
t_clk=0;
t_rst=1;
inputbyte(add);
delay();
inputbyte(ucda);
delay();
t_rst=0;
t_clk=1;
}
unsigned char re_1302(unsigned char add)
{unsigned char ucda;
t_rst=0;
t_clk=0;
t_rst=1;
inputbyte(add);
delay();
ucda=outputbyte();
t_rst=0;
return(ucda);
}
void set_1302(unsigned char *pda)
{unsigned char i,j=0;
unsigned char add=0x80;
wr_1302(0x8e,0x00);
delay();
for(i=0;i<7;i++)
{wr_1302(add,*pda);
pda++;
add+=2;
}
wr_1302(0x8e,0x80);
}

void get_sec()
{ 
unsigned char sec;
sec=re_1302(0x81);
time[10]=sec>>4;
time[11]=sec&0x0f;
}
void get_min()
{unsigned char min;
min=re_1302(0x83);
time[8]=min>>4;
time[9]=min&0x0f;
}
void get_hr()
{unsigned char hr;
hr=re_1302(0x85);
time[6]=hr>>4;
time[7]=hr&0x0f;
}
void get_day()
{unsigned char day;
day=re_1302(0x87);
time[4]=day>>4;
time[5]=day&0x0f;
}
void get_moth()
{unsigned char mon;
mon=re_1302(0x89);
time[2]=mon>>4;
time[3]=mon&0x0f;
}
void get_week()
{unsigned char week;
week=re_1302(0x8b);
time[12]=week>>4;
time[13]=week&0x0f;
}
void get_year()
{unsigned char year;
year=re_1302(0x8d);
time[0]=year>>4;
time[1]=year&0x0f;
}
 
 void  liftpage1()		 //左面固定画面//
 {
   CS1=0;CS2=1;
   lcdwrite_cmd(0xb8);
   lcdwrite_cmd(0x58);
   display(&NO[0][0]);
   display(&NO[1][0]);
   display(&NO[2][0]);
   display(&number[1][0]);
   
   lcdwrite_cmd(0xb9);
   lcdwrite_cmd(0x58);
   display(&NO[0][8]);
   display(&NO[1][8]);
   display(&NO[2][8]);
   display(&number[1][8]); 
    
   lcdwrite_cmd(0xba);
   lcdwrite_cmd(0x58);
   display(&NO[0][0]);
   display(&NO[1][0]);
   display(&NO[2][0]);
   display(&number[2][0]);
   
   lcdwrite_cmd(0xbb);
   lcdwrite_cmd(0x58);
   display(&NO[0][8]);
   display(&NO[1][8]);
   display(&NO[2][8]);
   display(&number[2][8]); 
     
   lcdwrite_cmd(0xbc);
   lcdwrite_cmd(0x58);
   display(&NO[0][0]);
   display(&NO[1][0]);
   display(&NO[2][0]);
   display(&number[3][0]);
   
   lcdwrite_cmd(0xbd);
   lcdwrite_cmd(0x58);
   display(&NO[0][8]);
   display(&NO[1][8]);
   display(&NO[2][8]);
   display(&number[3][8]); 
  }
  
 void liftpage2(void)			//左面变动画面//
 {
   uchar i,j,counter;
   CS1=0;CS2=1;
   counter=2*rodcounter;
  for(j=0;j<6;j++)
  { 
    lcdwrite_cmd(0xb8+j);
    lcdwrite_cmd(0x50);  
    for(i=0;i<8;i++)lcdwrite_dat(0x00);
    }
  
 
    lcdwrite_cmd(0xb8+counter);
    lcdwrite_cmd(0x78);  
    for(i=0;i<8;i++)lcdwrite_dat(0x00);
    lcdwrite_cmd(0xb9+counter);
	lcdwrite_cmd(0x78);
	for(i=0;i<8;i++)lcdwrite_dat(0x00);
  if(flag[rodcounter]==0)
    {
	lcdwrite_cmd(0xb8+counter);
    lcdwrite_cmd(0x78);  
    display(&set[31][0]);
    lcdwrite_cmd(0xb9+counter);
	lcdwrite_cmd(0x78);
	display(&set[31][8]);
   	 }
  lcdwrite_cmd(0xb8+counter);
  lcdwrite_cmd(0x50);   
  display(&flag_HL[2][0]);
  lcdwrite_cmd(0xb9+counter);
  lcdwrite_cmd(0x50);
  display(&flag_HL[2][8]); 
   
  lcdwrite_cmd(0xbe);
  lcdwrite_cmd(0x58);
  display(&number[time[2]][0]);
  display(&number[time[3]][0]);   
  display(&set[31][0]); 
  display(&number[time[4]][0]); 
  display(&number[time[5]][0]);
  
  lcdwrite_cmd(0xbf);
  lcdwrite_cmd(0x58);
  display(&number[time[2]][8]);
  display(&number[time[3]][8]);   
  display(&set[31][8]); 
  display(&number[time[4]][8]); 
  display(&number[time[5]][8]); 
  }

 void rightpage()//右面画面//
  {
    uchar m,i,counter=0;
	CS1=1;CS2=0;
	counter=2*rodcounter;
	if(temper[1][rodcounter]>=100)
	{
	  lcdwrite_cmd(0xb8+counter);
      lcdwrite_cmd(0x40);
	  display(&number[1][0]);
	  lcdwrite_cmd(0xb9+counter);
      lcdwrite_cmd(0x40);
	  display(&number[1][8]);
	  m=temper[1][rodcounter]-100;
	  }
	else 
	 {
     m=temper[1][rodcounter];
	 lcdwrite_cmd(0xb8+counter);
     lcdwrite_cmd(0x40);  
     for(i=0;i<8;i++)lcdwrite_dat(0x00);
     lcdwrite_cmd(0xb9+counter);
	 lcdwrite_cmd(0x40);
	 for(i=0;i<8;i++)lcdwrite_dat(0x00);
	 }

	 lcdwrite_cmd(0xb8+counter);
     lcdwrite_cmd(0x48);
	 display(&number[m/10][0]);
	 display(&number[m%10][0]);
	 display(&NO[2][0]);
	 display(&number[temper[0][rodcounter]/10][0]);
	 display(&set[32][0]);

	 lcdwrite_cmd(0xb9+counter);
     lcdwrite_cmd(0x48);
	 display(&number[m/10][8]);
	 display(&number[m%10][8]);
	 display(&NO[2][8]);
	 display(&number[temper[0][rodcounter]/10][8]);
	 display(&set[32][8]);
	 
	  lcdwrite_cmd(0xbe);
      lcdwrite_cmd(0x48);
      display(&number[time[6]][0]);
      display(&number[time[7]][0]);   
      display(&set[33][0]); 
      display(&number[time[8]][0]); 
      display(&number[time[9]][0]);
  
      lcdwrite_cmd(0xbf);
      lcdwrite_cmd(0x48);
      display(&number[time[6]][8]);
      display(&number[time[7]][8]);   
      display(&set[33][8]); 
      display(&number[time[8]][8]); 
      display(&number[time[9]][8]);  
  }

 void  alarmcontorl()
  {	
    uchar i,counter;
	CS1=1;CS2=0;
	counter=2*rodcounter;
	lcdwrite_cmd(0xb8+counter);
    lcdwrite_cmd(0x78);
	for(i=0;i<8;i++)lcdwrite_dat(0x00);
	lcdwrite_cmd(0xb9+counter);
    lcdwrite_cmd(0x78);
	for(i=0;i<8;i++)lcdwrite_dat(0x00);

   if(THL[0][rodcounter]<temper[1][rodcounter])
   {alarmflag[rodcounter][0]=rodcounter;
    for(i=0;i<8;i++)alarmflag[rodcounter][i]=time[4+i];
	alarmflag[rodcounter][8]=THL[0][rodcounter];
	alarmflag[rodcounter][9]=THL[1][rodcounter];
	alarmflag[rodcounter][10]=temper[1][rodcounter];
	lcdwrite_cmd(0xb8+counter);
    lcdwrite_cmd(0x78);
	display(&flag_HL[0][0]);
	lcdwrite_cmd(0xb9+counter);
    lcdwrite_cmd(0x78);
	display(&flag_HL[0][8]);
	}

   if(THL[1][rodcounter]>temper[1][rodcounter])
   	{alarmflag[rodcounter][0]=rodcounter;
    for(i=0;i<8;i++)alarmflag[rodcounter][i]=time[4+i];
	alarmflag[rodcounter][8]=THL[0][rodcounter];
	alarmflag[rodcounter][9]=THL[1][rodcounter];
	alarmflag[rodcounter][10]=temper[1][rodcounter];
	lcdwrite_cmd(0xb8+counter);
    lcdwrite_cmd(0x78);
	display(&flag_HL[1][0]);
	lcdwrite_cmd(0xb9+counter);
    lcdwrite_cmd(0x78);
	display(&flag_HL[1][8]);
	}
  }

  void set_time()
  {
    uchar m,n;
   CS1=0;CS2=1;

⌨️ 快捷键说明

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