温度采集ds18b20lcd.lst

来自「单片机的实用程序代码」· LST 代码 · 共 208 行

LST
208
字号
C51 COMPILER V7.02b   温_炔杉_DS18B20LCD                                                   02/25/2010 15:04:21 PAGE 1   


C51 COMPILER V7.02b, COMPILATION OF MODULE 温_炔杉_DS18B20LCD
OBJECT MODULE PLACED IN 温度采集DS18B20LCD.OBJ
COMPILER INVOKED BY: D:\Progrom\Keil\C51\BIN\C51.EXE 温度采集DS18B20LCD.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /********************************************************************
   2          * 文件名  : 温度采集DS18B20.c
   3          * 描述    :  该文件实现了用温度传感器件DS18B20对温度的采集,并在数码管上显示出来。
   4          * 创建人  : 东流,2009年4月10日
   5          * 版本号  : 2.0
   6          ***********************************************************************/
   7          #include<reg52.h>
   8          #define uchar unsigned char
   9          #define uint  unsigned int
  10          
  11          #define jump_ROM 0xCC
  12          #define start 0x44
  13          #define read_EEROM 0xBE
  14          
  15          sbit DQ = P2^3;            //DS18B20数据口
  16          
  17          unsigned char TMPH,TMPL; 
  18          
  19          uchar code table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  20          /********************************************************************
  21          * 名称 : delay()
  22          * 功能 : 延时,延时时间大概为140US。
  23          * 输入 : 无
  24          * 输出 : 无
  25          ***********************************************************************/
  26          
  27          void delay_1()
  28          {
  29   1              int i,j;
  30   1              for(i=0; i<=10; i++)
  31   1              for(j=0; j<=2; j++)
  32   1      ;
  33   1      }
  34          
  35          /********************************************************************
  36          * 名称 : delay()
  37          * 功能 : 延时函数
  38          * 输入 : 无
  39          * 输出 : 无
  40          ***********************************************************************/
  41          void delay(uint N)
  42          {
  43   1              int i;
  44   1              for(i=0; i<N; i++)
  45   1              ;
  46   1      }
  47          
  48          /********************************************************************
  49          * 名称 : Delay_1ms()
  50          * 功能 : 延时子程序,延时时间为 1ms * x
  51          * 输入 : x (延时一毫秒的个数)
  52          * 输出 : 无
  53          ***********************************************************************/
  54          void Delay_1ms(uint i)//1ms延时
  55          {
C51 COMPILER V7.02b   温_炔杉_DS18B20LCD                                                   02/25/2010 15:04:21 PAGE 2   

  56   1              uchar x,j;
  57   1              for(j=0;j<i;j++)
  58   1              for(x=0;x<=148;x++);    
  59   1      }
  60          /********************************************************************
  61          * 名称 : Reset()
  62          * 功能 : 复位DS18B20
  63          * 输入 : 无
  64          * 输出 : 无
  65          ***********************************************************************/
  66          uchar Reset(void)
  67          {
  68   1              uchar deceive_ready;
  69   1              DQ = 0;
  70   1              delay(29);
  71   1              DQ = 1;
  72   1              delay(3);
  73   1              deceive_ready = DQ;
  74   1              delay(25);
  75   1              return(deceive_ready);
  76   1      }
  77          
  78          /********************************************************************
  79          * 名称 : read_bit()
  80          * 功能 : 从DS18B20读一个位值
  81          * 输入 : 无
  82          * 输出 : 从DS18B20读出的一个位值
  83          ***********************************************************************/
  84          uchar read_bit(void)
  85          {
  86   1              uchar i;
  87   1              DQ = 0;
  88   1              DQ = 1;
  89   1              for(i=0; i<3; i++);
  90   1              return(DQ);
  91   1      }
  92          
  93          /********************************************************************
  94          * 名称 : write_bit()
  95          * 功能 : 向DS18B20写一位
  96          * 输入 : bitval(要对DS18B20写入的位值)
  97          * 输出 : 无
  98          ***********************************************************************/
  99          void write_bit(uchar bitval)
 100          {
 101   1      DQ=0;if(bitval==1)
 102   1      DQ=1;
 103   1      delay(5);
 104   1      DQ=1;
 105   1      }
 106          
 107          /********************************************************************
 108          * 名称 : read_byte()
 109          * 功能 : 从DS18B20读一个字节
 110          * 输入 : 无
 111          * 输出 : 从DS18B20读到的值
 112          ***********************************************************************/
 113          uchar read_byte(void)
 114          {
 115   1              uchar i,m,receive_data;
 116   1              m = 1;
 117   1              receive_data = 0;
C51 COMPILER V7.02b   温_炔杉_DS18B20LCD                                                   02/25/2010 15:04:21 PAGE 3   

 118   1              for(i=0; i<8; i++)
 119   1              {
 120   2                      if(read_bit())
 121   2                      {
 122   3                              receive_data = receive_data + (m << i);
 123   3                      }
 124   2                      delay(6);
 125   2              }
 126   1              return(receive_data);
 127   1      }
 128          
 129          /********************************************************************
 130          * 名称 : write_byte()
 131          * 功能 : 向DS18B20写一个字节
 132          * 输入 : val(要对DS18B20写入的命令值)
 133          * 输出 : 无
 134          ***********************************************************************/
 135          void write_byte(uchar val)
 136          {
 137   1              uchar i,temp;
 138   1              for(i=0; i<8; i++)
 139   1              {
 140   2                      temp = val >> i;
 141   2                      temp = temp & 0x01;
 142   2                      write_bit(temp);
 143   2                      delay(5);
 144   2              }
 145   1      }
 146          
 147          
 148          /********************************************************************
 149          * 名称 : Main()
 150          * 功能 : 主函数
 151          * 输入 : 无
 152          * 输出 : 无
 153          ***********************************************************************/
 154          void main()
 155          {
 156   1              float tt;
 157   1              uint temp;
 158   1              P2 = 0x00;
 159   1              while(1)
 160   1              {
 161   2                      Reset();
 162   2                      write_byte(jump_ROM);
 163   2                      write_byte(start);
 164   2                      Reset();
 165   2                      write_byte(jump_ROM);
 166   2                      write_byte(read_EEROM);
 167   2                      TMPL = read_byte();
 168   2                      TMPH = read_byte();
 169   2                      temp = TMPL / 16 + TMPH * 16;
 170   2                      P0 = table[temp/10%10];
 171   2                      P2 = 6;
 172   2                      Delay_1ms(5);
 173   2                      P0 = table[temp%10];
 174   2                      P2 = 7;
 175   2                      Delay_1ms(5);
 176   2              }
 177   1      }
*** WARNING C280 IN LINE 156 OF 温度采集DS18B20LCD.C: 'tt': unreferenced local variable

C51 COMPILER V7.02b   温_炔杉_DS18B20LCD                                                   02/25/2010 15:04:21 PAGE 4   


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    338    ----
   CONSTANT SIZE    =     10    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2       4
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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