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

📄 14-2.lst

📁 《单片机C语言编程与实例的代码.rar
💻 LST
📖 第 1 页 / 共 2 页
字号:
 280   1       EN=0;
 281   1       RS=0;
 282   1       RW=0;
 283   1       _nop_();
 284   1       EN=1; 
 285   1       P0=c;
 286   1       EN=0;
 287   1      }
 288          
 289          void WriteData(unsigned char c)          
 290          {
 291   1       DelayS();
 292   1       EN=0;
 293   1       RS=1;
 294   1       RW=0;
 295   1       _nop_();
 296   1       EN=1; 
 297   1       P0=c;
 298   1       EN=0;
C51 COMPILER V6.20c  14_2                                                                  09/02/2001 15:14:51 PAGE 6   

 299   1       RS=0;
 300   1      }
 301          
 302          void ShowChar(unsigned char pos,unsigned char c) 
 303          {
 304   1       unsigned char p;
 305   1       if(pos>=0x10)
 306   1          p=pos+0xB0;
 307   1       else
 308   1          p=pos+0x80;
 309   1       WriteCommand(p);
 310   1       WriteData(c);
 311   1      }
 312          
 313          void ShowString(unsigned char line,char *ptr)    
 314          {
 315   1       unsigned char l,i;
 316   1       l=line<<4;
 317   1       for(i=0;i<16;i++)
 318   1         ShowChar(l++,*(ptr+i));
 319   1      }     
 320          
 321          void InitLcd()
 322          {
 323   1       DelayL();
 324   1       WriteCommand(0x38);
 325   1       WriteCommand(0x38);
 326   1       WriteCommand(0x06);
 327   1       WriteCommand(0x0C);
 328   1       WriteCommand(0x01);
 329   1       WriteCommand(0x80);
 330   1      }     
 331          /*---------------------------------------------键盘子程序-------------------------------------------------
             -*/
 332          unsigned char GetKey()
 333          {
 334   1        unsigned k,t,i,j;
 335   1        k=P1;
 336   1        k=k&0xF0;
 337   1        i=0;
 338   1        while((k&0x10)&&i<4)
 339   1        {
 340   2      	i++;
 341   2      	k=k>>1;
 342   2        }   
 343   1        k=0x01;
 344   1        j=0;
 345   1        while(j<4)           
 346   1        {
 347   2          P1=0xFF^k;
 348   2      	_nop_();
 349   2          t=P1;
 350   2          t=t^0xFF;
 351   2          t=t&0xF0;
 352   2          if(t)
 353   2      	  break;
 354   2          j++;
 355   2      	k=k<<1;
 356   2        }
 357   1        k=j*4+i;
 358   1        return k;
 359   1      }
C51 COMPILER V6.20c  14_2                                                                  09/02/2001 15:14:51 PAGE 7   

 360          /*-----------------------------------------数字温度计驱动子程序--------------------------------------*/
 361          void  ChangePos(bit sel,unsigned char pos1,unsigned char pos2)
 362          {  unsigned char i;
 363   1           RST=0;
 364   1           DQ=0;
 365   1           CLK=0;
 366   1      	 RST=1;
 367   1      	 DQ=sel;
 368   1           _nop_();
 369   1           CLK=1;
 370   1           _nop_();
 371   1      	 CLK=0;
 372   1           for(i=0;i<8;i++)
 373   1      	 {
 374   2      	 if(pos1&0x80)
 375   2             DQ=1;
 376   2      	 else
 377   2      	   DQ=0;
 378   2           _nop_();
 379   2           CLK=1;
 380   2           _nop_();
 381   2      	 CLK=0;
 382   2      	 pos1=pos1<<1;
 383   2      	}
 384   1      	for(i=0;i<8;i++)
 385   1      	{
 386   2      	 if(pos2&0x80)
 387   2             DQ=1;
 388   2      	 else
 389   2      	   DQ=0;
 390   2           _nop_();
 391   2           CLK=1;
 392   2           _nop_();
 393   2           CLK=0;
 394   2      	 pos2=pos2<<1;
 395   2      	}
 396   1          RST=0;
 397   1      }
 398          
 399          /*------------------------------------------温度传感器子程序-------------------------------------------*/
 400          void Delay100ms()           			//延时100ms
 401          {
 402   1       unsigned  char i,j,k;
 403   1       for(i=0;i<8;i++)
 404   1         for(j=0;j<25;j++)
 405   1           for(k=0;k<250;k++);
 406   1      }
 407          
 408          void Delay15()              			//延时15us
 409          {
 410   1       unsigned  char i;
 411   1       for(i=0;i<8;i++);
 412   1      }
 413          
 414          void Delay60()              			//延时60us
 415          {
 416   1       unsigned  char i;
 417   1       for(i=0;i<30;i++);
 418   1      }
 419          
 420          void Write0TS()             			//写bit 0
 421          {
C51 COMPILER V6.20c  14_2                                                                  09/02/2001 15:14:51 PAGE 8   

 422   1           TSOR=1;
 423   1           TSOR=0;
 424   1      	 Delay15();
 425   1      	 Delay15();
 426   1      	 Delay15();
 427   1      	 Delay15();
 428   1           TSOR=1;
 429   1      	 _nop_();
 430   1      	 _nop_();
 431   1      }
 432          
 433          void Write1TS()              			//写bit 1
 434          {
 435   1           TSOR=1;
 436   1           TSOR=0;
 437   1           _nop_();
 438   1      	 _nop_();
 439   1      	 _nop_();
 440   1      	 _nop_();
 441   1      	 _nop_();
 442   1      	 _nop_();
 443   1      	 _nop_();
 444   1           TSOR=1;
 445   1           _nop_();
 446   1      	 _nop_();
 447   1      	 _nop_();
 448   1      	 _nop_();
 449   1      	 _nop_();
 450   1      	 _nop_();
 451   1      	 _nop_();
 452   1           Delay15();
 453   1           Delay15();
 454   1           Delay15();
 455   1      }
 456          
 457          bit ReadTS()
 458          {
 459   1       bit b;
 460   1           TSOR=1;
 461   1           TSOR=0;
 462   1      	 _nop_();
 463   1      	 _nop_();
 464   1      	 _nop_();
 465   1      	 _nop_();
 466   1           TSOR=1;
 467   1      	 _nop_();
 468   1      	 _nop_();
 469   1      	 _nop_();
 470   1      	 _nop_();
 471   1      	 _nop_();
 472   1           b=TSOR;            
 473   1           Delay15();
 474   1           Delay15();
 475   1           Delay15();
 476   1      	 _nop_();
 477   1      	 _nop_();
 478   1      	 return b;
 479   1      }
 480          
 481          void ResetTS()            				//复位
 482          {unsigned char i;
 483   1      
C51 COMPILER V6.20c  14_2                                                                  09/02/2001 15:14:51 PAGE 9   

 484   1         TSOR=1;
 485   1         TSOR=0;
 486   1         for(i=0;i<8;i++)
 487   1           Delay60();
 488   1         TSOR=1;              
 489   1         while(TSOR);         
 490   1         for(i=0;i<8;i++)
 491   1           Delay60();
 492   1      }
 493          
 494          void WriteByteTS(unsigned char byte)  	//写一个字节(byte)
 495          {unsigned char i;
 496   1       for(i=0;i<8;i++)
 497   1       {
 498   2         if(byte&0x01)
 499   2           Write1TS();
 500   2         else
 501   2           Write0TS();
 502   2         byte=byte>>1;
 503   2       }
 504   1      }
 505          
 506          unsigned char ReadByteTS()        		//读一个字节(byte)
 507          {
 508   1       unsigned char i,j;
 509   1       bit           b;
 510   1       j=0;
 511   1       for(i=0;i<8;i++)
 512   1       {
 513   2         b=ReadTS();
 514   2         if(b)
 515   2           j+=1;
 516   2         j=_cror_(j,1);
 517   2       }
 518   1       return j;
 519   1      }
 520                     
 521          void InitTS()             				//初始化温度转换
 522          {
 523   1           ResetTS();               
 524   1      	 WriteByteTS(0xCC);       
 525   1      	 WriteByteTS(0x4E);       
 526   1      	 WriteByteTS(0x64);       
 527   1           WriteByteTS(0x8A);      
 528   1           WriteByteTS(0x1F);      
 529   1      }
 530          
 531          void GetTempTS()             			//获取温度
 532          {
 533   1           ResetTS();               
 534   1      	 WriteByteTS(0xCC);       
 535   1      	 WriteByteTS(0x44);       
 536   1      	 Delay100ms();           
 537   1           ResetTS();              
 538   1      	 WriteByteTS(0xCC);      
 539   1       	 WriteByteTS(0xBE);      
 540   1           
 541   1      	 temp2=ReadByteTS();
 542   1      	 temp1=ReadByteTS();
 543   1      	 ReadByteTS();
 544   1      	 ReadByteTS();
 545   1      	 ReadByteTS();
C51 COMPILER V6.20c  14_2                                                                  09/02/2001 15:14:51 PAGE 10  

 546   1      	 ReadByteTS();
 547   1      	 ReadByteTS();
 548   1      	 ReadByteTS();
 549   1      	 ReadByteTS();
 550   1      	 temp1=temp1<<4;
 551   1      	 temp1+=(temp2&0xF0)>>4;
 552   1       	 temp2=(temp2&0x0F)?5:0;
 553   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1355    ----
   CONSTANT SIZE    =     40    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     44      14
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2       3
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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