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

📄 realmain.c

📁 用pic单片机做的一个温度计 实现实时时钟显示和存储
💻 C
📖 第 1 页 / 共 3 页
字号:
       hour=temptime[0]; minute=temptime[1]; second=temptime[2];        //键盘上的输入数据存入time寄存器
       year=temptime[3]; month=temptime[4];  date=temptime[5];
 
       ds1302_initial(year,  month,  date, 0x01, hour, minute,second);           //时间设值
        break;
      }
     if(key==escape)
      {     
                  clearlcd(); 
                  clearlcd();   
                  writecmdlcd(0x0c);                                 // 光标关  
                  writecmdlcd(0x0c);                                 // 光标关           
                  lcd_set_cursor(2,2);
                  lcd_set_cursor(2,2);
                  putslcd(settime10);
                  delays(10000,500);                //延迟2.5秒
                  break;
      }
   }
  
}

/*****************************************************************************
 ******函 数 名 称 : temperaturerestrct()
 ******函 数 功 能 : 进入温度限制界面
 ******输       入 :  
 ******输       出 :  
 ******************************************************************************/ 
void temperaturerestrct()
{
   char restrct1[]="温度限制设定";
   char restrct2[]="上限";
   char restrct3[]="下限";
   char restrct4[]="控制声光报警";
   
   clearlcd();                                        //清屏 
   lcd_set_cursor(1,2);
   lcd_set_cursor(1,2);
   putslcd(restrct1);
  
   lcd_set_cursor(2,1);
   putslcd(restrct2);
  
   lcd_set_cursor(3,1);
   putslcd(restrct3);

   lcd_set_cursor(4,2); 
   putslcd(restrct4);
   
   lcd_set_cursor(2,8);   
   writedatalcd(0xA1); //温度标识 
   writedatalcd(0xE6);  

   
   lcd_set_cursor(3,8);
   writedatalcd(0xA1); //温度标识 
   writedatalcd(0xE6); 
   

    
  
   lcd_set_cursor(2,3);
   writedatalcd(58);
   if(read_i2c_date(at2416,uprestrctflag ))  writedatalcd(45);                      //-
   else                                      writedatalcd(43);                      //+

   display_float(stof(at2416,at2416temup));                                         //读出上线温度绝对值

   lcd_set_cursor(3,3);
   writedatalcd(58);
   if(read_i2c_date(at2416,downrestrctflag))  writedatalcd(45);                     //-
   else                                      writedatalcd(43);                      //+
 
   display_float(stof(at2416,at2416temdown));                    //读出下线温度绝对值

   lcd_set_cursor(2,3);

   temperaturerestrcttemp();

}

/*****************************************************************************
 ******函 数 名 称 : temperaturerestrcttemp()
 ******函 数 功 能 : 温度限制设定
 ******输       入 :  
 ******输       出 :  
 ******************************************************************************/
void temperaturerestrcttemp()
{
  char   restrct5[]="输入错误";
  char   restrct6[]="输入成功";
  char   restrct7[]="您取消了输入";                        
  float  tempetureread[2]={50,10};
  char   chooseflag=1;
  char   m=0;  
  char   pos=0; 
  char   tempflag[2]={0,1} ;
  char   number[7];
 
  writecmdlcd(0x0f);                                 
  while(1)
  {    
       readkey();
             if(chooseflag)
              {
                    if(key==just) 
                       {
                         tempflag[m]=0; 
                         lcd_set_cursor(m+2,3); 
                         writedatalcd(58); 
                         writedatalcd(43); //+
                         chooseflag=0;
                         continue;
                        }
     		         else if(key==bear)
      		           {
        	        	tempflag[m]=1; 
          	            lcd_set_cursor(m+2,3); 
         	            writedatalcd(58); 
         		        writedatalcd(45); //-
                        chooseflag=0;
         	            continue;   
         	           }
               }
      
      if((key>=key0)&&(key<=key_m))
       {
          
           if((key==key_m)&&(pos==0))                  //输入错误
              {
                  clearlcd();   
                  writecmdlcd(0x0c);                                 // 光标关  
                  writecmdlcd(0x0c);                                 // 光标关           
                  lcd_set_cursor(2,3);
                  lcd_set_cursor(2,3);
                  putslcd(restrct5);
                  delays(10000,500);                //延迟2.5秒
                  break;
               }
     	 if(pos<7)   
         {
          number[pos++]=key;
          number[pos]=0;   
          if(number[pos-1]==key_m)     writedatalcd(46);                         //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
          else                         writedatalcd(number[pos-1]+48); 
         }  
       
       }
     
        if(key==down)
      {   if(number[1]==key_m)  tempetureread[m]=number[0]+number[2]*0.1+number[3]*0.01+number[4]*0.001+number[5]*0.0001+number[6]*0.00001; 
          if(number[2]==key_m)  tempetureread[m]=number[0]*10+number[1]+number[3]*0.1+number[4]*0.01+number[5]*0.001+number[6]*0.0001; 
          if(number[3]==key_m)  tempetureread[m]=number[0]*100+number[1]*10+number[2]+number[4]*0.1+number[5]*0.01+number[6]*0.001; 
                  
          if(m==1) {  lcd_set_cursor(m+1,3); 
                      m=0;                      continue ;
                   }  
          if(m==0)  lcd_set_cursor(m+3,3); 
          m++;       
          pos=0;
          chooseflag=1;
      }
        if(key==up)
      {    
          if(number[1]==key_m)  tempetureread[m]=number[0]+number[2]*0.1+number[3]*0.01+number[4]*0.001+number[5]*0.0001+number[6]*0.00001; 
          if(number[2]==key_m)  tempetureread[m]=number[0]*10+number[1]+number[3]*0.1+number[4]*0.01+number[5]*0.001+number[6]*0.0001; 
          if(number[3]==key_m)  tempetureread[m]=number[0]*100+number[1]*10+number[2]+number[4]*0.1+number[5]*0.01+number[6]*0.001; 
       
           if(m==1)  lcd_set_cursor(m+1,3); 
           if(m==0) {  
                      lcd_set_cursor(m+3,3); 
                      m=1;                      continue;
                     }
           m--;
           pos=0; 
           chooseflag=1; 
                
      }
        if(key==enter)
      {
          if(number[1]==key_m)  tempetureread[m]=number[0]+number[2]*0.1+number[3]*0.01+number[4]*0.001+number[5]*0.0001+number[6]*0.00001;  
          if(number[2]==key_m)  tempetureread[m]=number[0]*10+number[1]+number[3]*0.1+number[4]*0.01+number[5]*0.001+number[6]*0.0001; 
          if(number[3]==key_m)  tempetureread[m]=number[0]*100+number[1]*10+number[2]+number[4]*0.1+number[5]*0.01+number[6]*0.001; 
                  clearlcd(); 
                  clearlcd();   
                  writecmdlcd(0x0c);                                 // 光标关  
                  writecmdlcd(0x0c);                                 // 光标关           
                  lcd_set_cursor(2,3);
                  lcd_set_cursor(2,3);
                  putslcd(restrct6);
                  delays(10000,500);                //延迟2.5秒
        write_i2c_data(at2416,uprestrctflag ,tempflag[0]);
        write_i2c_data(at2416,downrestrctflag ,tempflag[1]);     
   
   
        ftos( tempetureread[0],at2416,at2416temup);
        ftos( tempetureread[1],at2416,at2416temdown);
        break;
      }

           if(key==escape)
      {     
                  clearlcd(); 
                  clearlcd();   
                  writecmdlcd(0x0c);                                 // 光标关  
                  writecmdlcd(0x0c);                                 // 光标关           
                  lcd_set_cursor(2,2);
                  lcd_set_cursor(2,2);
                  putslcd(restrct7);
                  delays(10000,500);                //延迟2.5秒
                  break;
      }
  
  }
 
   writecmdlcd(0x0c);                                 // 光标关
}
/*****************************************************************************
 ******函 数 名 称 : replaytemperature()
 ******函 数 功 能 : 历史温度显示界面
 ******输       入 :  
 ******输       出 :  
 *****************************************************************************/
void replaytemperature()
{  

   char i=19;                                         //存储总数
   char replaytem1[]="历史温度回显";
   char replaytem2[]="温度";
   char replaytem3[]="时刻:";
   char replaytem4[]="上翻";
   char replaytem5[]="下翻";
   char replaytem6[]="秒";


   clearlcd();                                        //清屏 

   lcd_set_cursor(1,2);
   lcd_set_cursor(1,2);
   putslcd(replaytem1);
  
   lcd_set_cursor(2,1);
   putslcd(replaytem2);
   

   lcd_set_cursor(2,8);   
   writedatalcd(0xA1);                                     //温度标识 
   writedatalcd(0xE6); 

   

   lcd_set_cursor(3,1);
   putslcd(replaytem3);
 
   lcd_set_cursor(3,8);                                    //秒
   putslcd(replaytem6);
   
   lcd_set_cursor(4,2);
   writedatalcd(24);                                       //上翻
   lcd_set_cursor(4,3);
   putslcd(replaytem4);

   lcd_set_cursor(4,5);
   writedatalcd(25);                                        //下翻
   lcd_set_cursor(4,6);
   putslcd(replaytem5);

   while(1)
   { 
     int j;
     union {
            char c[4];
            float f;
            }temp;  
     char readeepomtemp[12];
     read_i2c_pagedate(at2416, i*12+20,12,readeepomtemp);                //读出数据
   
     lcd_set_cursor(3,4);     
     h_to_number( readeepomtemp[4]);  
     if(y==48) writedatalcd(32); 
     else    writedatalcd(y);   writedatalcd(z);writedatalcd(58);  //:

     h_to_number(readeepomtemp[5]);  
     if(y==48) writedatalcd(32); 
     else    writedatalcd(y);   writedatalcd(z); writedatalcd(58);  //:

     h_to_number(readeepomtemp[6]); 
     if(y==48) writedatalcd(32); 
     else    writedatalcd(y);   writedatalcd(z);
     
     lcd_set_cursor(2,3);
     writedatalcd(58);
     if(readeepomtemp[7])  writedatalcd(45); //-
     else                  writedatalcd(43); //+  

     for(j=0;j<4;j++)   {temp.c[j]=readeepomtemp[j+8];}

     lcd_set_cursor(2,4);
     display_float(temp.f);

     lcd_set_cursor(4,1);
     h_to_number(i);  
     if(y==48) writedatalcd(32); 
     else    writedatalcd(y);   writedatalcd(z);
    
     readkey();
     if(key==escape) {break;}
     if(key==down) {
                    if(i==19)   i=0;
                    else i++;
                    continue;
                   }


     if(key==up) {
                  if(i==0)   i=19;
                  else  i--;
                  continue;
                }


       }

}

⌨️ 快捷键说明

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