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

📄 shtxx_self.lst

📁 这是单片机驱动温湿度传感器SHT11温湿度传感器的源代码
💻 LST
📖 第 1 页 / 共 5 页
字号:
 282   1              i = IRcvStr_8(0xd0,0x05);
 283   1              i = ((i&0x10)>>4)*10+(i&0x0f);
 284   1              lcd_add(2,4);
 285   1              lcd_dis_num(i);
 286   1              i = IRcvStr_8(0xd0,0x06);
 287   1              i = ((i&0xf0)>>4)*10+(i&0x0f);
 288   1              lcd_add(2,1);
 289   1              lcd_dis_num(i);
 290   1      }
 291          
 292          void lcd_read_time(void)                //时钟显示函数
 293          {
 294   1              uchar i=0;
 295   1              i = IRcvStr_8(0xd0,0x00);
 296   1              i = ((i&0x70)>>4)*10+(i&0x0f);
 297   1              b_data.second = i;
 298   1      //      lcd_add(3,7);
 299   1      //      lcd_dis_num(i);
 300   1              i = IRcvStr_8(0xd0,0x01);
 301   1              i = ((i&0x70)>>4)*10+(i&0x0f);
 302   1              b_data.minute = i;
C51 COMPILER V7.07   SHTXX_SELF                                                            06/14/2007 21:21:35 PAGE 6   

 303   1      //      lcd_add(3,4);
 304   1      //      lcd_dis_num(i);
 305   1              i = IRcvStr_8(0xd0,0x02);
 306   1              i = ((i&0x30)>>4)*10+(i&0x0f);
 307   1              b_data.hour = i;
 308   1      //      lcd_add(3,1);
 309   1      //      lcd_dis_num(i);
 310   1              i = IRcvStr_8(0xd0,0x03);
 311   1              i = i&0x07;
 312   1              b_data.day = i;
 313   1      //      lcd_add(4,1);
 314   1      //      lcd_dis_num(i);
 315   1              i = IRcvStr_8(0xd0,0x04);
 316   1              i = ((i&0x30)>>4)*10+(i&0x0f);
 317   1              b_data.date = i;
 318   1      //      lcd_add(2,7);
 319   1      //      lcd_dis_num(i);
 320   1              i = IRcvStr_8(0xd0,0x05);
 321   1              i = ((i&0x10)>>4)*10+(i&0x0f);
 322   1              b_data.month = i;
 323   1      //      lcd_add(2,4);
 324   1      //      lcd_dis_num(i);
 325   1              i = IRcvStr_8(0xd0,0x06);
 326   1              i = ((i&0xf0)>>4)*10+(i&0x0f);
 327   1              b_data.year = i;
 328   1      //      lcd_add(2,1);
 329   1      //      lcd_dis_num(i);
 330   1      }
 331          void set_time(uchar sec, uchar min, uchar hr, uchar dy, uchar dt,uchar mn,uchar yr)             //时钟设置sec, min, h
             -r, dy, dt, mn, yr
 332          {
 333   1              uchar i;
 334   1              lcd_add(4,1);
 335   1              i = ISendStr_8(0xd0,0x00,0);
 336   1              lcd_wrd(0x30+(uchar)i);
 337   1              sec = ((sec/10)<<4)+(sec%10);
 338   1              i = ISendStr_8(0xd0,0x00,sec);
 339   1              lcd_wrd(0x30+(uchar)i);
 340   1              min = ((min/10)<<4)+(min%10);
 341   1              i = ISendStr_8(0xd0,0x01,min);
 342   1              lcd_wrd(0x30+(uchar)i);
 343   1              hr = ((hr/10)<<4)+(hr%10);
 344   1              i = ISendStr_8(0xd0,0x02,hr);
 345   1              lcd_wrd(0x30+(uchar)i);
 346   1      
 347   1              i = ISendStr_8(0xd0,0x03,dy);
 348   1              lcd_wrd(0x30+(uchar)i);
 349   1              dt = ((dt/10)<<4)+(dt%10);
 350   1              i = ISendStr_8(0xd0,0x04,dt);
 351   1              lcd_wrd(0x30+(uchar)i);
 352   1              mn = ((mn/10)<<4)+(mn%10);
 353   1              i = ISendStr_8(0xd0,0x05,mn);
 354   1              lcd_wrd(0x30+(uchar)i);
 355   1              yr = ((yr/10)<<4)+(yr%10);
 356   1              i = ISendStr_8(0xd0,0x06,yr);
 357   1              lcd_wrd(0x30+(uchar)i);
 358   1      }
 359          
 360          
 361          void ad_en(void)
 362          {
 363   1      
C51 COMPILER V7.07   SHTXX_SELF                                                            06/14/2007 21:21:35 PAGE 7   

 364   1              e = 0;  //lcd not enable
 365   1              le = 0; //three-states latched
 366   1              ce = 0; //ad enable
 367   1      
 368   1      }
 369          void lcd_en(void)
 370          {
 371   1              ce = 1; //ad not enable
 372   1              le = 0; //three-states latched
 373   1              e = 1;  //lcd enable
 374   1      }
 375          
 376          void three_open(void)
 377          {
 378   1              ce = 1; //ad not enable
 379   1              e = 0;  //lcd not enable
 380   1              le = 1; //tree-states open
 381   1      }
 382          void three_close(void)
 383          {
 384   1              ce = 1; //ad not enable
 385   1              e = 0;  //lcd not enable
 386   1              le = 0; //tree-states close
 387   1      }
 388          
 389          
 390          void lcd_ini()
 391          {
 392   1              delay(100);
 393   1              lcd_wrc(0x34);
 394   1              delay(10);
 395   1              lcd_wrc(0x30);
 396   1              delay(10);
 397   1              lcd_wrc(0x01);
 398   1              delay(10);
 399   1              lcd_wrc(0x06);
 400   1              delay(10);
 401   1              lcd_wrc(0x0c);
 402   1              delay(200);
 403   1      }       
 404          void lcd_wrc(uchar com)
 405          {
 406   1              lcd_en();
 407   1              lcd_checkbusy();
 408   1              rs = 0;
 409   1              rw = 0;
 410   1              P0 = com;
 411   1              e = 1;
 412   1              delay(10);
 413   1              e = 0;
 414   1      }
 415          
 416          void lcd_wrd(uchar dat)
 417          {
 418   1      //      checkbusy();
 419   1              lcd_en();
 420   1              lcd_checkbusy();
 421   1              rs = 1;
 422   1              rw = 0;
 423   1              P0 = dat;
 424   1              e = 1;
 425   1              delay(5);
C51 COMPILER V7.07   SHTXX_SELF                                                            06/14/2007 21:21:35 PAGE 8   

 426   1              e = 0;
 427   1      }
 428          void lcd_checkbusy()
 429          {
 430   1              
 431   1              uchar busy = 0;
 432   1              lcd_en();
 433   1              P0 = 0XFF;
 434   1              busy = P0;
 435   1              if(busy>0x7f)
 436   1              {
 437   2                      rs = 0;
 438   2                      rw = 1;
 439   2                      e = 1;
 440   2                      busy = P0;
 441   2                      e = 0;
 442   2                      delay(10);
 443   2              }
 444   1      }
 445          //uchar lcd_rdd();
 446          void delay(uchar n)
 447          {
 448   1              while(n--);
 449   1      }
 450          
 451          void ldelay(uchar n)
 452          {
 453   1              uchar a=250;
 454   1              while(a--)
 455   1              {
 456   2              while(n--);
 457   2              }
 458   1      }
 459          
 460          
 461          void lcd_on()
 462          {
 463   1              lcd_deng = 0;
 464   1      }
 465          void lcd_off()
 466          {
 467   1              lcd_deng = 1;
 468   1      }
 469          uchar lcd_read_ac()
 470          {
 471   1              uchar dat = 0;
 472   1              lcd_en();
 473   1      //      P0 = 0X00;
 474   1              e = 1;
 475   1              rs = 0;
 476   1              rw = 1;
 477   1      //      e = 1;
 478   1              delay(10);
 479   1              dat = P0;
 480   1      //      delay(10);
 481   1      //      e = 0;
 482   1              return(dat&0x7f);
 483   1      }
 484          void lcd_dis_num(uint dat)
 485          {
 486   1          uint a=0;
 487   1          dat =dat%10000;
C51 COMPILER V7.07   SHTXX_SELF                                                            06/14/2007 21:21:35 PAGE 9   

 488   1          a =dat/1000;
 489   1          lcd_wrd(0x30+a);
 490   1          dat =dat%1000;
 491   1          a =dat/100;
 492   1          lcd_wrd(0x30+a);
 493   1          dat =dat%100;
 494   1          a=dat/10;
 495   1          lcd_wrd(0x30+a);
 496   1          dat =dat%10;
 497   1          lcd_wrd(0x30+dat);
 498   1      }
 499          void lcd_dis_num_1(uint dat)
 500          {
 501   1          dat = dat%10;
 502   1          lcd_wrd(0x30+dat);
 503   1      }
 504          void lcd_dis_num_2(uint dat)
 505          {
 506   1          uint a=0;
 507   1          dat =dat%100;
 508   1          a=dat/10;
 509   1          lcd_wrd(0x30+a);
 510   1          dat =dat%10;
 511   1          lcd_wrd(0x30+dat);
 512   1      }
 513          void lcd_dis_num_3(uint dat)
 514          {
 515   1          uint a=0;
 516   1          dat =dat%1000;
 517   1          a =dat/100;
 518   1          lcd_wrd(0x30+a);
 519   1          dat =dat%100;
 520   1          a=dat/10;
 521   1          lcd_wrd(0x30+a);
 522   1          dat =dat%10;
 523   1          lcd_wrd(0x30+dat);
 524   1      }
 525          void lcd_dis_num_4(uint dat)
 526          {
 527   1          uint a=0;
 528   1          dat =dat%10000;
 529   1          a =dat/1000;
 530   1          lcd_wrd(0x30+a);
 531   1          dat =dat%1000;
 532   1          a =dat/100;
 533   1          lcd_wrd(0x30+a);
 534   1          dat =dat%100;
 535   1          a=dat/10;
 536   1          lcd_wrd(0x30+a);
 537   1          dat =dat%10;
 538   1          lcd_wrd(0x30+dat);
 539   1      }
 540          void lcd_dis_num_bit(uint dat,uchar bits)
 541          {
 542   1          uint a=0;
 543   1      //      uint b=pow(10,bits);
 544   1              int b=pow(10,3);
 545   1              float c=pow((float)10,(float)bits);
 546   1      //      int c = pow(10,2);
 547   1              b = (uint)c;
 548   1              lcd_dis_num(b);
 549   1      
C51 COMPILER V7.07   SHTXX_SELF                                                            06/14/2007 21:21:35 PAGE 10  

 550   1          dat =dat%10000;
 551   1              dat =dat%b;
 552   1              b = b/10;
 553   1              lcd_dis_num(b);
 554   1              for(;b>5;b=b/10)
 555   1              {
 556   2      //              b = b/10;
 557   2                      a = dat/b;
 558   2                  lcd_wrd(0x30+a);
 559   2              dat = dat%b;
 560   2              }
 561   1          lcd_wrd(0x30+dat);
 562   1      /*    a =dat/1000;
 563   1          lcd_wrd(0x30+a);
 564   1          dat =dat%1000;
 565   1          a =dat/100;
 566   1          lcd_wrd(0x30+a);
 567   1          dat =dat%100;
 568   1      
 569   1          a=dat/10;

⌨️ 快捷键说明

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