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

📄 wenduceliang10.lst

📁 温度测量程序 适合ds18b20 自己编写
💻 LST
字号:
C51 COMPILER V7.06   WENDUCELIANG10                                                        05/06/2009 22:24:40 PAGE 1   


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

stmt level    source

   1          /********************************************************/
   2          /*杭州电子&计算机工作室                                         */
   3          /*http://www.hificat.com                                                        */
   4          /*DS18B20测温程序                                                               */
   5          /*目标器件:AT89S51                                                     */
   6          /*晶振:11.0592MHZ                                                       */
   7          /*编译环境:Keil 7.50A                                                  */
   8          /********************************************************/
   9          
  10          
  11          /*********************************包含头文件********************************/
  12          #include <reg51.h>     
  13          
  14          /*******************************共阳LED段码表*******************************/
  15          unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x8e};
  16          unsigned char code tabdp[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
  17          /*********************************端口定义**********************************/
  18          sbit DQ=P3^3;                                   //数据传输线接单片机的相应的引脚
  19          sbit BUZZER=P3^7;
  20          /*********************************定义全局变量******************************/
  21          unsigned char tempL=0;                  //临时变量低位
  22          unsigned char tempH=0;                  //临时变量高位
  23          float temperature;                      //温度值
  24          
  25          /****************************************************************************
  26          函数功能:延时子程序
  27          入口参数:k
  28          出口参数:
  29          ****************************************************************************/
  30          void delay(unsigned int k)
  31          {         
  32   1              unsigned int n;     
  33   1              n=0;       
  34   1              while(n < k)      
  35   1              {n++;}        
  36   1              return;       
  37   1      }         
  38          
  39          /****************************************************************************
  40          函数功能:数码管扫描延时子程序
  41          入口参数:
  42          出口参数:
  43          ****************************************************************************/
  44          void delay1(void)
  45          {
  46   1              int k;
  47   1              for(k=0;k<400;k++);
  48   1      }
  49          
  50          /****************************************************************************
  51          函数功能:数码管显示子程序
  52          入口参数:k
  53          出口参数:
  54          ****************************************************************************/
  55          void display(int k)
C51 COMPILER V7.06   WENDUCELIANG10                                                        05/06/2009 22:24:40 PAGE 2   

  56          {
  57   1      P2=0xfe;                        
  58   1              P0=tab[k/1000];
  59   1              delay1();
  60   1              P2=0xfd;
  61   1              P0=tab[k%1000/100];
  62   1              delay1();
  63   1              P2=0xfb;
  64   1              P0=tabdp[k%100/10];
  65   1              delay1();
  66   1              P2=0xf7;
  67   1              P0=tab[k%10];
  68   1              delay1();
  69   1              P2=0xff;
  70   1      }
  71          
  72          /****************************************************************************
  73          函数功能:DS18B20初始化子程序
  74          入口参数:
  75          出口参数:
  76          ****************************************************************************/
  77          Init_DS18B20(void)
  78          {
  79   1              unsigned char x=0;
  80   1              DQ=1;                           //DQ先置高
  81   1              delay(8);               //延时
  82   1              DQ=0;                           //发送复位脉冲
  83   1              delay(85);                      //延时(>480ms)
  84   1              DQ=1;                           //拉高数据线
  85   1              delay(14);                      //等待(15~60ms) 
  86   1      }
  87          
  88          /****************************************************************************
  89          函数功能:向DS18B20读一字节数据
  90          入口参数:
  91          出口参数:dat
  92          ****************************************************************************/
  93          ReadOneChar(void)                       
  94          {
  95   1              unsigned char i=0;              
  96   1              unsigned char dat=0;
  97   1          for (i=8;i>0;i--)           
  98   1                      {
  99   2                              DQ=1;
 100   2                      delay(1);
 101   2                      DQ=0;      
 102   2                      dat>>=1;
 103   2                              DQ=1;
 104   2                      if(DQ)
 105   2                              dat|=0x80;
 106   2                      delay(4);
 107   2                      }
 108   1          return(dat);
 109   1      }
 110          
 111          /****************************************************************************
 112          函数功能:向DS18B20写一字节数据
 113          入口参数:dat
 114          出口参数:
 115          ****************************************************************************/
 116          WriteOneChar(unsigned char dat)
 117          { 
C51 COMPILER V7.06   WENDUCELIANG10                                                        05/06/2009 22:24:40 PAGE 3   

 118   1              unsigned char i=0;              
 119   1              for(i=8;i>0;i--)        
 120   1              {
 121   2                      DQ=0;           
 122   2                      DQ=dat&0x01;
 123   2                      delay(5);
 124   2                      DQ=1;
 125   2                      dat>>=1;
 126   2              }
 127   1              delay(4);
 128   1      }
 129          
 130          /****************************************************************************
 131          函数功能:向DS18B20读温度值
 132          入口参数:
 133          出口参数:temperature
 134          ****************************************************************************/
 135          ReadTemperature(void)
 136          {  
 137   1              Init_DS18B20();                         //初始化
 138   1              WriteOneChar(0xcc);             //跳过读序列号的操作
 139   1              WriteOneChar(0x44);             //启动温度转换
 140   1              delay(125);                             //转换需要一点时间,延时
 141   1              Init_DS18B20();                         //初始化
 142   1              WriteOneChar(0xcc);             //跳过读序列号的操作
 143   1              WriteOneChar(0xbe);             //读温度寄存器(头两个值分别为温度的低位和高位)
 144   1              tempL=ReadOneChar();            //读出温度的低位LSB
 145   1              tempH=ReadOneChar();            //读出温度的高位MSB  
 146   1              //温度转换,把高低位做相应的运算转化为实际温度
 147   1              temperature=((tempH*256)+tempL)*0.0625*10; 
 148   1              
 149   1              delay(200);
 150   1              return(temperature);
 151   1      }
 152          
 153          /****************************************************************************
 154          函数功能:主程序
 155          入口参数:
 156          出口参数:
 157          ****************************************************************************/     
 158          void  main()
 159          { 
 160   1              float i;
 161   1              while(1)
 162   1              {
 163   2                      i=ReadTemperature();
 164   2                      if(i>1500)
 165   2                      {
 166   3                                      P2=0xfd;
 167   3                                      P0=tab[0];
 168   3                                      P2=0xfb;
 169   3                                      P0=tab[10];
 170   3                                      P2=0xf7;
 171   3                                      P0=tab[10];
 172   3                      }
 173   2                      if(i>400)
 174   2                      {
 175   3                              BUZZER = 0;
 176   3                              P0=0x00;
 177   3                              delay(2500);
 178   3                      }
 179   2                      else
C51 COMPILER V7.06   WENDUCELIANG10                                                        05/06/2009 22:24:40 PAGE 4   

 180   2                      {       
 181   3                              BUZZER=1;
 182   3                      }
 183   2                      display(i);
 184   2              }
 185   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    476    ----
   CONSTANT SIZE    =     21    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      6       5
   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 + -