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

📄 ds18b20.lst

📁 51单片机实现利用ds18b20温度传感器检测温度并用ZLG7920显示(c语言)
💻 LST
字号:
C51 COMPILER V7.50   DS18B20                                                               11/12/2008 00:42:55 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE DS18B20
OBJECT MODULE PLACED IN ds18b20.OBJ
COMPILER INVOKED BY: C:\Keil\C51\Bin\c51.exe ds18b20.c DB SB OE ROM(LARGE) LARGE OT(6,SPEED) WL(2) RB(0)

line level    source

   1          #include"reg51.h"
   2          #define uchar unsigned char
   3          #define uint  unsigned int
   4          uchar tplsb,tpmsb;
   5          
   6          sbit DQ=P1^2;
   7          //延时tms
   8          void delay(uint t)
   9          {
  10   1              uint i;
  11   1              while(t--)
  12   1              {
  13   2                      for(i=0;i<125;i++)
  14   2                      {}
  15   2                      }
  16   1              }
  17          //温度转换为十进制
  18          uint TempTrans(uchar ht,uchar lt)
  19          {
  20   1              uint i=0,k=0;
  21   1              CY=0;
  22   1              i=ht;
  23   1              i=i<<8;
  24   1              k=lt&0xf0;
  25   1              i=i|k;
  26   1              return(i);
  27   1              }
  28          //产生复位脉冲
  29          void TxReset(void)
  30          {
  31   1              uint i;
  32   1              DQ=0;
  33   1              i=100;
  34   1              while(i>0)i--;
  35   1              DQ=1;
  36   1              i=4;
  37   1              while(i>0)i--;
  38   1              }       
  39          //等待应答脉冲  
  40          void RxWait(void)
  41          {
  42   1              uint i;
  43   1              while(DQ);
  44   1              while(~DQ);
  45   1              i=4;
  46   1              while(i>0)i--;
  47   1              }
  48          //读取数据的一位
  49          bit RdBit(void)
  50          {
  51   1              uint i;
  52   1              bit b;
  53   1              DQ=0;
  54   1              i++;
  55   1              DQ=1;
C51 COMPILER V7.50   DS18B20                                                               11/12/2008 00:42:55 PAGE 2   

  56   1              i++;
  57   1              i++;
  58   1              b=DQ;
  59   1              i=8;
  60   1              while(i>0)i--;
  61   1              return(b);
  62   1              }       
  63          //读数据一个字节        
  64          uchar RdByte(void)
  65          {
  66   1              uchar i,j,b;
  67   1              b=0;
  68   1              for(i=1;i<=8;i++)
  69   1              {
  70   2                      j=RdBit();
  71   2                      b=(j<<7)|(b>>1);
  72   2                      }
  73   1                      
  74   1              return(b);
  75   1              }
  76          //写数据一个字节        
  77          void WrByte(uchar b)
  78          {
  79   1              uint i;
  80   1              uchar j;
  81   1              bit btmp;
  82   1              for(j=1;j<=8;j++)
  83   1              {
  84   2                      btmp=b&0x01;
  85   2                      b=b>>1;
  86   2                      if(btmp)
  87   2                      {
  88   3                              DQ=0;
  89   3                              i++;i++;
  90   3                              DQ=1;
  91   3                              i=8;
  92   3                              while(i>0)i--;
  93   3                              }
  94   2                              else
  95   2                              {
  96   3                                      DQ=0;
  97   3                                      i=8;
  98   3                                      while(i>0)i--;
  99   3                                      DQ=1;
 100   3                                      i++;
 101   3                                      i++;
 102   3                                      }
 103   2                      }
 104   1              }
 105          //启动温度转换  
 106          void convert(void)
 107          {
 108   1              TxReset();
 109   1              RxWait();
 110   1              delay(1);
 111   1              WrByte(0xcc);
 112   1              WrByte(0x44);   
 113   1              }
 114          //读取温度值    
 115          void RdTemp(void)
 116          {
 117   1              TxReset();
C51 COMPILER V7.50   DS18B20                                                               11/12/2008 00:42:55 PAGE 3   

 118   1              RxWait();
 119   1              delay(1);
 120   1              WrByte(0xcc);
 121   1              WrByte(0xbe);
 122   1              tplsb=RdByte();
 123   1              tpmsb=RdByte();
 124   1      //      TH=RdByte();
 125   1      //      TL=RdByte();
 126   1              }       
 127          /**void WrTemp(uchar ht,uchar lt)
 128          {
 129                  TxReset();
 130                  RxWait();
 131                  delay(1);
 132                  WrByte(0xcc);
 133                  WrByte(0x4e);
 134                  WrByte(ht);
 135                  WrByte(lt);
 136                  WrByte(0x7f);
 137                  }
 138          /*void alarm(void)
 139          {
 140                  TxReset();
 141                  RxWait();
 142                  delay(1);
 143                  WrByte(0xcc);
 144                  WrByte(0xbe);
 145                  }*/     
 146          uchar ds18b20_read(void)
 147          {
 148   1              uchar temp=0;
 149   1              //WrTemp(20,10);        
 150   1          delay(1);
 151   1              convert();
 152   1              delay(1000);
 153   1              RdTemp();
 154   1              temp=TempTrans(tplsb,tpmsb);
 155   1              return(temp);
 156   1              }       
 157                  
 158                  
 159                  
 160                  
 161                  
 162                  
 163                  
 164                  
 165                  
 166                  
 167                  
 168                  
 169                  
 170                  
 171                  
 172                  
 173                  
 174                  
 175                  
 176                  
 177                  
 178                  
 179                  
C51 COMPILER V7.50   DS18B20                                                               11/12/2008 00:42:55 PAGE 4   

 180                  
 181                  
 182                  
 183                  
 184                  
 185                  
 186                  
 187                  
 188                  
 189                  
 190                  
 191                  
 192                  
 193                  
 194                  
 195                  
 196                  
 197                  
 198                  
 199                  
 200                  
 201                  
 202                  
 203                  
 204                  
 205                  
 206                  
 207                  
 208                  
 209                  
 210                  
 211                  
 212                  
 213                  
 214                  
 215                  
 216                  
 217                  
 218                  
 219                  
 220                  
 221                  
 222                  
 223                  
 224                  
 225                  
 226                  
 227                  
 228                  
 229                  
 230                  
 231                  
 232                  
 233                  
 234                  
 235                  
 236                  
 237                  
 238                  
 239                  
 240                  
C51 COMPILER V7.50   DS18B20                                                               11/12/2008 00:42:55 PAGE 5   

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


P1 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0090H  1
_TempTrans . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  ht . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  lt . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0001H  1
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_INT    0004H  2
  k. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_INT    0002H  2
ds18b20_read . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  temp . . . . . . . . . . . . . . . .  AUTO     XDATA  U_CHAR   0000H  1
convert. . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
DQ . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0092H  1
CY . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D7H  1
tplsb. . . . . . . . . . . . . . . . .  PUBLIC   XDATA  U_CHAR   0000H  1
tpmsb. . . . . . . . . . . . . . . . .  PUBLIC   XDATA  U_CHAR   0001H  1
_WrByte. . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  b. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0001H  1
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_INT    0002H  2
  j. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  btmp . . . . . . . . . . . . . . . .  AUTO     DATA   BIT      0000H  1
RdByte . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0004H  1
  j. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  b. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0005H  1
RdTemp . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
TxReset. . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_INT    0006H  2
RdBit. . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_INT    0006H  2
  b. . . . . . . . . . . . . . . . . .  AUTO     DATA   BIT      0000H  1
RxWait . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_INT    0006H  2
_delay . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  t. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_INT    0006H  2
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_INT    0004H  2


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    358    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =      2       1
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       2
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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