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

📄 af.lst

📁 18b20温度控制;以及仿真等等》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
💻 LST
字号:
C51 COMPILER V7.06   AF                                                                    08/25/2008 22:11:52 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE AF
OBJECT MODULE PLACED IN af.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE af.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include "configur.h" 
   2          #define uchar unsigned char
   3          
   4          sbit DQ = P2^0;
   5          uchar TempBuffer[5]  ;
   6          uchar temp_value;
   7          
   8          /***********ds18b20子程序*************************/
   9          
  10          /***********ds18b20延迟子函数(晶振12MHz )*******/ 
  11          
  12          void delay_18B20(unsigned int i)
  13          {
  14   1              while(i--);
  15   1      }
  16          
  17          /**********ds18b20初始化函数**********************/
  18          
  19          void Init_DS18B20(void) 
  20          {
  21   1               unsigned char x=0;
  22   1               DQ = 1;          //DQ复位
  23   1               delay_18B20(8);  //稍做延时
  24   1               DQ = 0;          //单片机将DQ拉低
  25   1               delay_18B20(80); //精确延时 大于 480us
  26   1               DQ = 1;          //拉高总线
  27   1               delay_18B20(14);
  28   1               x=DQ;            //稍做延时后 如果x=0则初始化成功 x=1则初始化失败
  29   1               delay_18B20(20);
  30   1      }
  31          
  32          /***********ds18b20读一个字节**************/  
  33          
  34          unsigned char ReadOneChar(void)
  35          {
  36   1              uchar i=0;
  37   1              uchar dat = 0;
  38   1              for (i=8;i>0;i--)
  39   1               {
  40   2                        DQ = 0; // 给脉冲信号
  41   2                        dat>>=1;
  42   2                        DQ = 1; // 给脉冲信号
  43   2                        if(DQ)
  44   2                        dat|=0x80;
  45   2                        delay_18B20(4);
  46   2               }
  47   1              return(dat);
  48   1      }
  49          
  50          /*************ds18b20写一个字节****************/  
  51          
  52          void WriteOneChar(uchar dat)
  53          {
  54   1              unsigned char i=0;
  55   1              for (i=8; i>0; i--)
C51 COMPILER V7.06   AF                                                                    08/25/2008 22:11:52 PAGE 2   

  56   1              {
  57   2                      DQ = 0;
  58   2                      DQ = dat&0x01;
  59   2              delay_18B20(5);
  60   2                      DQ = 1;
  61   2              dat>>=1;
  62   2       }
  63   1      }
  64          
  65          /**************读取ds18b20当前温度************/
  66          
  67          void ReadTemp(void)
  68          {
  69   1              unsigned char a=0;
  70   1              unsigned char b=0;
  71   1              unsigned char t=0;
  72   1      
  73   1              Init_DS18B20();
  74   1              WriteOneChar(0xCC);     // 跳过读序号列号的操作
  75   1              WriteOneChar(0x44);     // 启动温度转换
  76   1      
  77   1              delay_18B20(100);       // this message is wery important
  78   1      
  79   1              Init_DS18B20();
  80   1              WriteOneChar(0xCC);     //跳过读序号列号的操作
  81   1              WriteOneChar(0xBE);     //读取温度寄存器等(共可读9个寄存器) 前两个就是温度
  82   1      
  83   1              delay_18B20(100);
  84   1      
  85   1              a=ReadOneChar();        //读取温度值低位
  86   1              b=ReadOneChar();                //读取温度值高位
  87   1              temp_value=b<<4;
  88   1              temp_value+=(a&0xf0)>>4;               
  89   1       
  90   1        TempBuffer[0]=temp_value/10+'0';  //十位
  91   1        TempBuffer[1]=temp_value%10+'0';  //个位
  92   1        TempBuffer[2]=0xdf;   //温度符号
  93   1        TempBuffer[3]='C';
  94   1        TempBuffer[4]='\0';
  95   1      }
  96          
  97          
  98          
  99          
 100           void main()
 101           {char disp1[]={"Today is sunday"};
 102   1        char disp2[]={"Tempture is: "};
 103   1        lcdinit();
 104   1      Init_DS18B20( ) ; 
 105   1      
 106   1        while(1)
 107   1        {
 108   2      
 109   2      ReadTemp();
 110   2       writestring(0x80,disp1);
 111   2       writestring(0xc0,disp2);
 112   2      writestring(0xcc,TempBuffer);
 113   2       
 114   2      //writestring(0x80,disp2);
 115   2         
 116   2        }
 117   1       }
C51 COMPILER V7.06   AF                                                                    08/25/2008 22:11:52 PAGE 3   



MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    391    ----
   CONSTANT SIZE    =     30    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      6      31
   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 + -