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

📄 wkq.lst

📁 单片机智能产品c语言设计实例详解?テ悄懿穋语言设计实例详解单片机智能产品c语言设计实例详解
💻 LST
📖 第 1 页 / 共 2 页
字号:

 241   1      WriteCommandLCM(0x0f,1);//显示屏打开,光标显示、闪烁,检测忙信号
 242   1      DisplayOneChar(6,0,min/10+0x30);
 243   1      DisplayOneChar(7,0,min%10+0x30);
 244   1      }
 245          /***************************************/
 246          void fun3(void)                 //液晶显示子函数3
 247          {
 248   1      WriteCommandLCM(0x0c,1);//显示屏打开,光标不显示、不闪烁,检测忙信号
 249   1      DisplayListChar(0,0,str0);
 250   1      DisplayListChar(0,1,str1);
 251   1      //=========================
 252   1      DisplayOneChar(3,0,hour/10+0x30);
 253   1      DisplayOneChar(4,0,hour%10+0x30);
 254   1      //===============================
 255   1      DisplayOneChar(6,0,min/10+0x30);
 256   1      DisplayOneChar(7,0,min%10+0x30);
 257   1      //=================================
 258   1      DisplayOneChar(9,0,sec/10+0x30);
 259   1      DisplayOneChar(10,0,sec%10+0x30);
 260   1      //=================================
 261   1      DisplayOneChar(11,1,temp1/10+0x30);
 262   1      DisplayOneChar(12,1,temp1%10+0x30);
 263   1      DisplayOneChar(14,1,temp2+0x30);
 264   1      //=================================
 265   1      WriteCommandLCM(0x0f,1);//显示屏打开,光标显示、闪烁,检测忙信号
 266   1      DisplayOneChar(4,1,T/10+0x30);
 267   1      DisplayOneChar(5,1,T%10+0x30);
 268   1      }
 269          /************************************/
 270          void key(void)                                          //扫描键盘
 271          {uchar xx;// 局部变量
 272   1      P2=0xff;
 273   1              if(P2!=0xff)
 274   1              {delay(10);
 275   2                      if(P2!=0xff)
 276   2                      {xx=P2;
 277   3                              switch(xx)// 根据按键状态,调用不同的子函数
 278   3                              {
 279   4                              case 0xfe:set_adj();break; //"MS"键按下,调用set_adj()子函数
 280   4                              case 0xfd:inc_key();break; //"+"键按下,调用inc_key()子函数
 281   4                              case 0xfb:dec_key();break; //"-"键按下,调用dec_key()子函数
 282   4                              case 0xf7:ON_OFF=!ON_OFF;break;// "ON/OFF"键按下,ON_OFF标志取反
 283   4                              default:break;
 284   4                              }
 285   3                      }
 286   2              }
 287   1      }
 288          /************************************/
 289          void set_adj(void)                                      //设定工作模式子函数
 290          {
 291   1              if(cnt==5)
 292   1              {set++;
 293   2              if(set>=4)set=0;
 294   2              }
 295   1      }
 296          /***************************************/
 297          void inc_key(void)                                      //按键加法子函数
 298          {
 299   1              if(cnt==5)
 300   1              {
 301   2                      switch(set)
 302   2                      {
C51 COMPILER V7.06   WKQ                                                                   11/18/2005 20:51:25 PAGE 6   

 303   3                      case 0:if(P2==0xf7)ON_OFF=!ON_OFF;break;
 304   3                      case 1:hour++;if(hour>=23)hour=23;break;
 305   3                      case 2:min++;if(min>=59)min=59;break;
 306   3                      case 3:T++;if(T>=99)T=99;       break;
 307   3                      default:break;
 308   3                      }
 309   2              }
 310   1      }
 311          /***************************************/
 312          void dec_key(void)                                              //按键减法子函数
 313          {
 314   1              if(cnt==5)
 315   1              {
 316   2                      switch(set)
 317   2                      {
 318   3                      case 0:if(P2==0xf7)ON_OFF=!ON_OFF;break;
 319   3                      case 1:hour--;if(hour<=0)hour=0;break;
 320   3                      case 2:min--;if(min<=0)min=0;break;
 321   3                      case 3:T--;if(T<=1)T=1;break;
 322   3                      default:break;
 323   3                      }
 324   2              }
 325   1      }
 326          /***************************************/
 327          /*****************************************/
 328          void delay15us(void)                                            //延时15微秒子函数
 329          {
 330   1      uchar i;
 331   1      for(i=0;i<4;i++);
 332   1      }
 333          //*************************************************
 334          void delay60us(void)                                            //延时60微秒子函数
 335          {
 336   1      uchar i;
 337   1      for(i=0;i<15;i++);
 338   1      }
 339          //***************************************************
 340          void write0TS(void)                                             //写DS18B20数据位0
 341          {
 342   1      TSOR=1;
 343   1      TSOR=0;
 344   1      delay15us();delay15us();delay15us();delay15us();
 345   1      TSOR=1;
 346   1      _nop_();
 347   1      _nop_();
 348   1      }
 349          //********************************************************
 350          void write1TS(void)                                     //写DS18B20数据位1
 351          {
 352   1      TSOR=1;
 353   1      TSOR=0;
 354   1      _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
 355   1      TSOR=1;
 356   1      _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
 357   1      delay15us();delay15us();delay15us();
 358   1      }
 359          //******************************
 360          bit readTS(void)                                                //读DS18B20数据位
 361          {
 362   1      bit b;
 363   1      TSOR=1;
 364   1      TSOR=0;
C51 COMPILER V7.06   WKQ                                                                   11/18/2005 20:51:25 PAGE 7   

 365   1      _nop_();_nop_();_nop_();_nop_();
 366   1      TSOR=1;
 367   1      _nop_();_nop_();_nop_();_nop_();_nop_();
 368   1      b=TSOR;
 369   1      delay15us();delay15us();delay15us();
 370   1      _nop_();_nop_();
 371   1      return b;
 372   1      }
 373          //*************************************
 374          void resetTS(void)                                              //复位DS18B20
 375          {uchar i;
 376   1      TSOR=1;
 377   1      TSOR=0;
 378   1      for(i=0;i<8;i++)delay60us();
 379   1      TSOR=1;
 380   1      while(TSOR);
 381   1      for(i=0;i<8;i++)delay60us();
 382   1      }
 383          //***************************************
 384          void writeBTS(uchar byte)                               //写1字节
 385          {uchar i;
 386   1      for(i=0;i<8;i++)
 387   1      {
 388   2      if(byte&0x01)
 389   2      write1TS();
 390   2      else
 391   2      write0TS();
 392   2      byte=byte>>1;
 393   2      }
 394   1      }
 395          //****************************************
 396          uchar readBTS(void)                                             //读1字节
 397          {uchar i,j;
 398   1      bit b;
 399   1      j=0;
 400   1      for(i=0;i<8;i++)
 401   1      {
 402   2      b=readTS();
 403   2      if(b)j+=1;
 404   2      j=_cror_(j,1);
 405   2      }
 406   1      return j;
 407   1      }
 408          //************************************************
 409          void initTS(void)                                       //初始化DS18B20
 410          {
 411   1      resetTS();
 412   1      writeBTS(0xcc);
 413   1      writeBTS(0x4e);
 414   1      writeBTS(0x64);
 415   1      writeBTS(0x8a);
 416   1      writeBTS(0x1f);
 417   1      }
 418          //******************************************************
 419          void gettempTS(void)                                    //读取测得的环境温度
 420          {
 421   1      resetTS();
 422   1      writeBTS(0xcc);
 423   1      writeBTS(0x44);
 424   1      delay(200);
 425   1      resetTS();
 426   1      writeBTS(0xcc);
C51 COMPILER V7.06   WKQ                                                                   11/18/2005 20:51:25 PAGE 8   

 427   1      writeBTS(0xbe);
 428   1      temp2=readBTS();
 429   1      temp1=readBTS();
 430   1      readBTS();readBTS();readBTS();readBTS();
 431   1      readBTS();readBTS();readBTS();
 432   1      temp1=temp1<<4;
 433   1      temp1+=(temp2&0xf0)>>4;
 434   1      temp2=(temp2&0x0f)?5:0;
 435   1      }
 436          
 437          //********主函数*********
 438          void main(void)
 439          {
 440   1      delay(500);                      //延时500ms,等电源稳定
 441   1      InitLcd();                        //LCM初始化
 442   1      init_timer0();//初始化定时器T0
 443   1      DisplayListChar(0,0,str0);// 显示预定行
 444   1      DisplayListChar(0,1,str1);
 445   1      initTS();//初始化DS18B20
 446   1      reset()
 447   1      for(;;)
 448   1      {
 449   2      //========================
 450   2      switch(set)                             //LCD根据工作模式进行显示
 451   2      {
 452   3      case 0:fun0();break;// 正常工作显示
 453   3      case 1:fun1();break; //调整时显示
 454   3      case 2:fun2();break;// 调整分显示
 455   3      case 3:fun3();break; //设置控温值显示
 456   3      default:break;
 457   3      }
 458   2      delay(300);
 459   2      gettempTS();                    //读取测得的环境温度
 460   2      if(ON_OFF==1)                   // 若控温标志为1,控制压缩机动作
 461   2      {
 462   3              if(temp1>=T+1){delay(1000);//
 463   4                              if(temp1>=T+1){outflag=1;OUT=0;}//测得的温度大于等于控温值+1度时,
 464   4      //压缩机启动致冷
 465   4                                      }
 466   3              if(temp1<T){delay(1000);
 467   4                              if(temp1<T){outflag=0;OUT=1;} //测得的温度小于控温值时,
 468   4      //压缩机停止工作
 469   4                                      }
 470   3      }
 471   2      else // 否则控温标志为0,压缩机停止工作
 472   2      {outflag=0;OUT=1;}
 473   2      }
 474   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1947    ----
   CONSTANT SIZE    =     51    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      9       8
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2       2
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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