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

📄 ds18b20.lst

📁 基于51单片机
💻 LST
字号:
C51 COMPILER V7.09   DS18B20                                                               10/24/2008 13:25:07 PAGE 1   


C51 COMPILER V7.09, COMPILATION OF MODULE DS18B20
OBJECT MODULE PLACED IN .\ds18b20.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE F:\Keil\temperature_humidity_constant_system\ds18b20.c BROWSE DEBUG OBJECTE
                    -XTEND PRINT(.\ds18b20.lst) OBJECT(.\ds18b20.obj)

line level    source

   1          /*===========================================================================/
   2           *文件名称:ds18b20.c
   3           *功能描述:基于温度传感器DS18B20与单片机89C52的温度计
   4           *Designer:陈柏华
   5           *建立时间:2008.10.24
   6          /===========================================================================*/
   7          
   8          #include <reg52.h>
   9          #include <intrins.h>
  10          sbit DQ=P1^0;
  11          #define jump_ROM 0xCC
  12          #define start 0x44
  13          #define read_EEPROM 0xBE
  14          unsigned char TMPH,TMPL;
  15          unsigned char discode[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴0,1,2...9
  16          unsigned char dotdiscode[10]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};
  17          /*============================================================================/
  18           *函数名称:delay
  19           *入口参数:N
  20           *函数功能:延时子程序,实现(16*N+24)us的延时
  21                                  系统采用了11.0592MHz的时钟时,延时满足要求,其他情况需要改动
  22          /============================================================================*/
  23          void delay(unsigned int N)
  24          {
  25   1              int i;
  26   1              for(i=0;i<N;i++);
  27   1      }
  28          /*============================================================================/
  29           *函数名称:reset
  30           *入口参数:无;返回deceive_ready
  31           *函数功能:复位
  32          /============================================================================*/
  33          unsigned char reset(void)
  34          {
  35   1              unsigned char deceive_ready;
  36   1              DQ=0;
  37   1              delay(29);
  38   1              DQ=1;
  39   1              delay(3);
  40   1              deceive_ready=DQ;
  41   1              delay(25);
  42   1              return(deceive_ready);
  43   1      }
  44          /*==============================================================================/
  45           *函数名称:read_bit
  46           *入口参数:无;返回接收的数据
  47           *函数功能:读1bit子程序
  48          /==============================================================================*/
  49          unsigned char read_bit(void)
  50          {
  51   1              unsigned char i;
  52   1              DQ=0;
  53   1              _nop_();
  54   1              DQ=1;
C51 COMPILER V7.09   DS18B20                                                               10/24/2008 13:25:07 PAGE 2   

  55   1              for(i=0;i<3;i++);
  56   1              return(DQ);
  57   1      }
  58          /*================================================================================/
  59           *函数名称:vrite_bit
  60           *入口参数:bitval
  61           *函数功能:写1bit子程序
  62          /=================================================================================*/
  63          void write_bit(unsigned char bitval)
  64          {
  65   1              DQ=0;
  66   1              if(bitval==1)
  67   1              DQ=1;
  68   1              delay(5);
  69   1              DQ=1;
  70   1      }
  71          /*===============================================================================/
  72           *函数名称:write_byte
  73           *入口参数:val
  74           *函数功能:写1byte子程序
  75          /================================================================================*/
  76          void write_byte(unsigned char val)
  77          {
  78   1              unsigned char i,temp;
  79   1              for(i=0;i<8;i++)
  80   1              {
  81   2                      temp=val>>i;
  82   2                      temp=temp&0x01;
  83   2                      write_bit(temp);
  84   2                      delay(5);
  85   2              }
  86   1      }
  87          /*=============================================================================/
  88           *函数名称:read_byte
  89           *入口参数:无
  90           *返回值:接收的数据value
  91           *函数功能:读一个byte子程序
  92          /==============================================================================*/
  93          unsigned char read_byte(void)
  94          {
  95   1              unsigned char i,m,receive_data;
  96   1              receive_data=0;
  97   1              for(i=0;i<8;i++)
  98   1              {
  99   2                      m=read_bit();
 100   2                      receive_data=(m<<7)|(receive_data>>1);
 101   2                      delay(6);
 102   2              }       
 103   1              return(receive_data);
 104   1      }
 105          /*==========================================================================/
 106           *函数名称:getTemValue
 107           *入口参数:无
 108           *返回值:value
 109           *函数功能:取得温度值
 110          /==========================================================================*/
 111          unsigned char getTemValue(void)
 112          {
 113   1              unsigned int value;
 114   1              float t;
 115   1              unsigned char high;
 116   1              unsigned char low;
C51 COMPILER V7.09   DS18B20                                                               10/24/2008 13:25:07 PAGE 3   

 117   1              reset();
 118   1              write_byte(jump_ROM);
 119   1              write_byte(start);
 120   1              reset();
 121   1              write_byte(jump_ROM);
 122   1              write_byte(read_EEPROM);
 123   1              TMPL=read_byte();
 124   1              TMPH=read_byte();
 125   1              value=high;
 126   1              value<<=8;
 127   1              value=value|low;
 128   1              t=value*0.0625;
 129   1              value=t*10+0.5;
 130   1              return value;
 131   1      }
 132          /*===========================================================================/
 133           *函数名称:display
 134           *入口参数:温度值v
 135           *功能描述:显示温度值
 136          /==========================================================================*/
 137          void display(unsigned int v)
 138          {
 139   1              
 140   1              unsigned datas[3];
 141   1              datas[0]=v%100;
 142   1              datas[1]=v%100/10;
 143   1              datas[2]=v%10;
 144   1      /*      P0=discode[datas[0]];
 145   1              P2=0xfe;
 146   1              delay(61);
 147   1              P0=dotdiscode[datas[1]];
 148   1              P2=0xfd;
 149   1              delay(61);
 150   1              P0=discode[datas[2]];
 151   1              P2=0xfb;
 152   1              delay(61);*/
 153   1      }
 154          /*==========================================================================/
 155           *函数名称:main
 156           *入口参数:无
 157           *函数功能:主函数
 158          /=========================================================================*/
 159          void main()
 160          {
 161   1              unsigned char i;
 162   1              unsigned int value;
 163   1              while(1)
 164   1              {
 165   2                      value=getTemValue();
 166   2                      for(i=0;i<3;i++)
 167   2                      {
 168   3                              display(value);
 169   3                      }
 170   2              }
 171   1      }
 172                  
 173          
 174          
 175          
 176          
 177          
 178                          
C51 COMPILER V7.09   DS18B20                                                               10/24/2008 13:25:07 PAGE 4   

 179          
 180          
 181          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    321    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     22      12
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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