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

📄 bxfor12c2052.lst

📁 用DS18B20制作的冰箱控制器
💻 LST
📖 第 1 页 / 共 2 页
字号:
 164   1       delay(8);  //稍做延时
 165   1       DQ = 0;    //单片机将DQ拉低
 166   1       delay(230); //精确延时 大于 480us
 167   1       DQ = 1;    //拉高总线
 168   1       delay(30);
 169   1       x=DQ;      //稍做延时后 如果x=0则初始化成功 x=1则初始化失败
 170   1       delay(180);
 171   1              if (x==0)       return 0;
 172   1              else            return 1;
 173   1       }
 174          
 175          //读一个字节
 176          ReadOneChar(void)
 177          {
 178   1      unsigned char i=0;
 179   1      unsigned char dat = 0;
 180   1      for (i=8;i>0;i--)
 181   1       {
 182   2        DQ = 0; // 给脉冲信号
 183   2        dat>>=1;
 184   2        
 185   2        DQ = 1; // 给脉冲信号
 186   2        delay(5);
 187   2        if(DQ)
 188   2         dat|=0x80;//最高位置1;
 189   2        delay(15);
 190   2       }
 191   1       return(dat);
 192   1      }
 193          
 194          //写一个字节
 195          WriteOneChar(unsigned char dat)         //向DS1820      写入一个字节
 196          {
 197   1       unsigned char i=0;
 198   1       for (i=8; i>0; i--)
 199   1       {
 200   2        DQ = 0;
 201   2        delay(3);
 202   2        DQ = dat&0x01;
 203   2        delay(25);
 204   2        DQ = 1;
 205   2        dat>>=1;
 206   2       }
 207   1      delay(4);
 208   1      }
 209          
 210          void ds18b20()  //18b20温度转换程序//
C51 COMPILER V7.50   BXFOR12C2052                                                          09/16/2007 09:15:58 PAGE 5   

 211          {
 212   1      unsigned char a=0, b=0;
 213   1      unsigned int t=0;       
 214   1      bit c;
 215   1              if (zhuanhuan==1&&zhcount==jishitmp)    //如果有温度转换标志且转换时间到则读取温度转换数据//
 216   1              {
 217   2              c=Init_DS18B20();
 218   2                      if (c==0)
 219   2                      {
 220   3                      WriteOneChar(0xCC); //跳过读序号列号的操作
 221   3                      WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度
 222   3                      a=ReadOneChar();
 223   3                      b=ReadOneChar();
 224   3                      t=b;
 225   3                      t<<=8;
 226   3                      t=t|a;
 227   3                      if (t>4096)
 228   3                              {
 229   4                              t=0;
 230   4                              }                       
 231   3                              else t=t*10/16;
 232   3                              
 233   3                      shujuequ=t;
 234   3                      zhuanhuan=0;
 235   3                      zhcount=jishitmp+20;
 236   3                      err=0;
 237   3                      }
 238   2                      else err=1;
 239   2              }
 240   1              else if (zhuanhuan==0&&zhcount==jishitmp) 
 241   1              {
 242   2              zhuanhuan=1;
 243   2              zhcount=jishitmp+40;
 244   2              c=Init_DS18B20();
 245   2                      if (c==0)
 246   2                      {
 247   3                      WriteOneChar(0xCC); // 跳过读序号列号的操作
 248   3                      WriteOneChar(0x44); // 启动温度转换
 249   3                      err=0;
 250   3                      }
 251   2                      else err=1;
 252   2              }
 253   1              else if (zhcount!=jishitmp) 
 254   1              {
 255   2              
 256   2              }
 257   1      }
 258          
 259          
 260          main()
 261          {
 262   1      uchar y,z;      
 263   1      
 264   1      start:
 265   1      y=0x55;
 266   1      z=0x79;
 267   1      ET1=1;
 268   1      EA=1;
 269   1      TMOD=0x10;
 270   1      TH1=0xb8;
 271   1      TL1=0x00;
 272   1      TR1=1;
C51 COMPILER V7.50   BXFOR12C2052                                                          09/16/2007 09:15:58 PAGE 6   

 273   1      reset=1;
 274   1      gaowen=20;
 275   1      diwen=500;
 276   1      qdtime=tjtime=7;
 277   1      jishimin=0;
 278   1      tempset=tempsheding;    //设定温度值存贮位//
*** ERROR C202 IN LINE 278 OF BXFOR12C2052.C: 'tempset': undefined identifier
 279   1      tempodds=tempwenchar;
*** ERROR C202 IN LINE 279 OF BXFOR12C2052.C: 'tempodds': undefined identifier
 280   1      while (y==0x55&&z==0x79)
 281   1              {
 282   2              if      (reset==1)      //第一次开机,达到温度才关机,但不做为求值的数据
 283   2                      {
 284   3                              if (jishimin>2) //第一次开机时延时3分钟
 285   3                                      {
 286   4                                      ctrl=0;
 287   4                                      delay(10);
 288   4                                      if (jishimin>12)        //第一次开机时间不得小于10分钟//
 289   4                                              {
 290   5                                              if (shujuequ<tempset-tempodds)
*** ERROR C202 IN LINE 290 OF BXFOR12C2052.C: 'tempset': undefined identifier
 291   5                                                      {
 292   6                                                      ctrl=1;
 293   6                                                      delay(10);
 294   6                                                      qdtime=jishimin-2;
 295   6                                                      jishimin=0;
 296   6                                                      reset=0;
 297   6                                                      }       
 298   5                                              }
 299   4                                      }
 300   3                      
 301   3                      }
 302   2              else                    //非第一次开机,进入正常运行状态
 303   2                      {
 304   3                              if (ctrl==1)    //关机时温度高于最高温度或时间大于50分钟
 305   3                                 {
 306   4                                              if (jishimin>10)        
 307   4                                                      {
 308   5                                                      if      (shujuequ>tempgao||jishimin>50)
*** ERROR C202 IN LINE 308 OF BXFOR12C2052.C: 'tempgao': undefined identifier
 309   5                                                              {
 310   6                                                              ctrl=0;
 311   6                                                              delay(10);
 312   6                                                              tjtime=jishimin;
 313   6                                                              jishimin=0;
 314   6                                                              tiaozhengbz=1;
 315   6                                                              }
 316   5                                                      }
 317   4                                      }
 318   3                              else            //开机时间必须大于10分钟后降到最低温度值//              
 319   3                                      {
 320   4                                              if (shujuequ<tempdi&&jishimin>10)       
*** ERROR C202 IN LINE 320 OF BXFOR12C2052.C: 'tempdi': undefined identifier
 321   4                                                      {
 322   5                                                      ctrl=1;
 323   5                                                      delay(10);
 324   5                                                      qdtime=jishimin;
 325   5                                                      jishimin=0;
 326   5                                                      
 327   5                                                      }
 328   4              
 329   4                                      }
C51 COMPILER V7.50   BXFOR12C2052                                                          09/16/2007 09:15:58 PAGE 7   

 330   3                      }       
 331   2              
 332   2                      if (tiaozhengbz==1)
 333   2                      {
 334   3                      tiaozhengbz=0;
 335   3                      gaowen=tmpgaowen;
 336   3                      diwen=tmpdiwen;
 337   3                      tmpgaowen=2;
 338   3                      tmpdiwen=500;                           
 339   3                      }                       
 340   2                                              //高低温存贮
 341   2                      if (shujuequ>tmpgaowen) tmpgaowen=shujuequ;
 342   2                      
 343   2                      if (shujuequ<tmpdiwen)  tmpdiwen=shujuequ;
 344   2                                              
 345   2                      
 346   2      
 347   2                      ds18b20();              //温度转换
 348   2                      buff_to_disbuff();              //显示缓冲区
 349   2                      key_dis();                      //检测键盘及显示
 350   2                      tempgao=tempset+tempodds;       
*** ERROR C202 IN LINE 350 OF BXFOR12C2052.C: 'tempgao': undefined identifier
 351   2                      tempdi=tempset-tempodds;
*** ERROR C202 IN LINE 351 OF BXFOR12C2052.C: 'tempdi': undefined identifier
 352   2              }
 353   1      goto start;
 354   1      }
 355          

C51 COMPILATION COMPLETE.  0 WARNING(S),  38 ERROR(S)

⌨️ 快捷键说明

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