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

📄 text2.lst

📁 仓库温度检测适用于各种温度检测系统
💻 LST
字号:
C51 COMPILER V7.06   TEXT2                                                                 05/09/2008 15:23:15 PAGE 1   


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

stmt level    source

   1          #include"reg52.h"
   2          
   3          #define led P1                //宏定义P1口为数码管的数据口
   4          sbit key1=P2^4;               //将P2^4口映射为变量key1
   5          sbit key2=P2^5;               //将P2^3口映射为变量key2
   6          sbit key3=P2^6;               //将P2^2口映射为变量key3
   7          sbit key4=P2^7;               //将P2^1口映射为变量key4
   8          sbit ch1=P2^3;                //通过三极管进行位选,,将P2^3口映射为变量ch1       
   9          sbit ch2=P2^2;
  10          sbit ch3=P2^1;
  11          sbit ch4=P2^0;
  12          
  13          sbit DQ=P0^2;                //DQ为ds18b12温度传感器的参数
  14          sbit ji=P0^1;                //将P0^1口映射为变量ji,是用来驱动电机的三极管,低电平有效
  15          sbit deng=P0^3;              //将P0^3口映射为变量deng,是用来驱动发光二极管,低电平有效
  16          sbit feng=P0^0;              //将P0^0口映射为变量feng,是用来驱动蜂鸣器的三极管,低电平有效
  17           unsigned char code shu[]={0x88,0xf9,0xc4,0xe0,0xb1,0xa2,0x82,0xf8,0x80,0xa0};
  18             //在rom的code区定义数组shu[],长度为10,存放的是不带小数点的0-9数码管显示数据
  19           unsigned char code shu2[]={0x08,0x79,0x44,0x60,0x31,0x22,0x02,0x78,0x00,0x20};
  20             //在rom的code区定义数组shu2[],长度为10,存放的是有小数点的0-9数码管显示数据
  21          
  22          void ms(unsigned int Delay)  //延时1毫秒的延时函数
  23          {unsigned int a;
  24   1        for(;Delay>0;Delay--)
  25   1        {for(a=0;a<114;a++)
  26   2         {;}
  27   2        }
  28   1      }
  29            
  30          /***************************************************
  31          功能函数:延时
  32          入口参数:time
  33          ****************************************************/
  34          //延时函数
  35          
  36          void xdelay(unsigned int i)    //ds18b20 的延时函数
  37          {
  38   1       while(i--);
  39   1      }
  40          
  41          /****************************************************
  42          功能函数:DS18b20初始化
  43          入口参数:
  44           ****************************************************/
  45          void Init_DS18B20(void)
  46          {
  47   1       unsigned char x=0;
  48   1       DQ = 1;    //DQ复位
  49   1       xdelay(8);  //稍做延时
  50   1       DQ = 0;    //单片机将DQ拉低
  51   1       xdelay(80); //精确延时 大于 480us
  52   1       DQ = 1;    //拉高总线
  53   1       xdelay(14);
  54   1       x=DQ;      //稍做延时后 如果x=0则初始化成功 x=1则初始化失败
  55   1       xdelay(20);
C51 COMPILER V7.06   TEXT2                                                                 05/09/2008 15:23:15 PAGE 2   

  56   1      }
  57          
  58          /******************************************************
  59          功能函数:向DS18b20读一字节数据
  60          入口参数:
  61          ******************************************************/
  62          ReadOneChar(void)
  63          {
  64   1      unsigned char i=0;
  65   1      unsigned char dat = 0;
  66   1      for (i=8;i>0;i--)
  67   1       {
  68   2        DQ = 0;         // 给脉冲信号
  69   2        dat>>=1;
  70   2        DQ = 1;         // 给脉冲信号
  71   2        if(DQ)
  72   2         dat|=0x80;
  73   2        xdelay(4);
  74   2       }
  75   1       return(dat);
  76   1      }
  77          
  78          /******************************************************
  79          功能函数:向DS18b20写一字节数据
  80          入口参数:
  81          ******************************************************/
  82          WriteOneChar(unsigned char dat)
  83          {
  84   1       unsigned char i=0;
  85   1       for (i=8; i>0; i--)
  86   1       {
  87   2        DQ = 0;
  88   2        DQ = dat&0x01;
  89   2        xdelay(5);
  90   2        DQ = 1;
  91   2        dat>>=1;
  92   2       }
  93   1      
  94   1      }
  95          
  96          /******************************************************
  97          功能函数:向DS18b20读温度值
  98          入口参数:
  99          出口参数:t
 100          ******************************************************/
 101          unsigned  ReadTemperature(void)
 102          {
 103   1      unsigned char a=0;
 104   1      unsigned char b=0;
 105   1      unsigned int t=0;
 106   1      float tt=0;
 107   1      Init_DS18B20();
 108   1      WriteOneChar(0xCC);    // 跳过读序号列号的操作
 109   1      WriteOneChar(0x44);    // 启动温度转换
 110   1      Init_DS18B20();
 111   1      WriteOneChar(0xCC);    //跳过读序号列号的操作
 112   1      WriteOneChar(0xBE);    //读取温度寄存器等(共可读9个寄存器) 前两个就是温度
 113   1      a=ReadOneChar();
 114   1      b=ReadOneChar();
 115   1      t=b;
 116   1      t<<=8;
 117   1      t=t|a;
C51 COMPILER V7.06   TEXT2                                                                 05/09/2008 15:23:15 PAGE 3   

 118   1      tt=t*0.0625;
 119   1      t= tt*10+0.5;          //放大10倍输出并四舍五入
 120   1      return(t);
 121   1      }
 122          
 123          main()
 124          {
 125   1        unsigned int k=0;
 126   1        int a,b,c,d;                //定义存放温度数值的变量a,b,c,d
 127   1        int w=0,x=2,y=8;
 128   1      
 129   1      while(1)
 130   1       {
 131   2        while(1)                      //显示当前温度的死循环函数
 132   2         {   
 133   3          k=ReadTemperature();        //把ds18b20读出的值赋给变量m
 134   3          a=k/1000;                   //将温度的最高位赋给a
 135   3          b=k%1000/100;               //将温度的次高位赋给b
 136   3          c=k%100/10;                 //将温度的次次高位赋给c
 137   3          d=k%10;                     //将温度的最低位赋给d
 138   3      
 139   3           ch1=0;                     //通过每一位的三极管关断来控制该位是否亮灭,同时将
 140   3                                      //温度传感器采回的数值分别发送到数码管上  
 141   3           led=shu[d];
 142   3           ms(1);
 143   3           ch1=1;
 144   3      
 145   3           ch2=0;
 146   3           led=shu2[c];
 147   3           ms(1);
 148   3           ch2=1;  
 149   3      
 150   3           ch3=0;
 151   3           led=shu[b];
 152   3           ms(1);
 153   3           ch3=1;
 154   3      
 155   3           ch4=0;
 156   3           led=shu[a];
 157   3           ms(1); 
 158   3           ch4=1;
 159   3         
 160   3           if(c>=y)                    //判断是否大于预置安全温度
 161   3                { 
 162   4                 if(b>=x)                  
 163   4               {
 164   5                deng=0;
 165   5                ji=0;
 166   5                feng=0;
 167   5               }
 168   4                 if(b<x)                    
 169   4                   {
 170   5                deng=1;
 171   5                ji=1;
 172   5                feng=1;
 173   5               }
 174   4                }
 175   3           if(c<y)                     
 176   3            {
 177   4                 if(b>x)
 178   4                   {
 179   5                        deng=0;
C51 COMPILER V7.06   TEXT2                                                                 05/09/2008 15:23:15 PAGE 4   

 180   5                ji=0;
 181   5                feng=0;
 182   5                   }
 183   4             if(b<=x)
 184   4                   {
 185   5                        deng=1;
 186   5                ji=1;
 187   5                feng=1;
 188   5                   }
 189   4             }
 190   3                if(key1==0) break;
 191   3          }
 192   2      
 193   2         while(1)                 //显示进入预设温度显示的死循环函数
 194   2          {
 195   3                ch1=0;
 196   3            led=shu[0];
 197   3            ms(1);
 198   3            ch1=1;
 199   3          
 200   3            ch2=0;
 201   3            led=shu2[y];
 202   3            ms(1);
 203   3            ch2=1;
 204   3         
 205   3            ch3=0;
 206   3            led=shu[x];
 207   3            ms(1);
 208   3            ch3=1;
 209   3      
 210   3            ch4=0;
 211   3            led=shu[w];
 212   3            ms(1); 
 213   3            ch4=1;
 214   3      
 215   3                if(key2==0)
 216   3                 {
 217   4                      ms(500);                
 218   4                  y++;
 219   4                      if(y>9)y=0;
 220   4                 }
 221   3                if(key3==0)
 222   3                 {
 223   4                      ms(500);
 224   4                      x++;
 225   4                      if(x>9)
 226   4                       {
 227   5                        w=1;
 228   5                        x=0;                     
 229   5                       }
 230   4                      if(w>1)w=0;              
 231   4                      if(w==1)
 232   4                       {
 233   5                        if(x>2)
 234   5                         {
 235   6                              x=2;
 236   6                              y=5;
 237   6                         }
 238   5                       }              
 239   4                      }
 240   3                 if(key4==0)
 241   3                      { 
C51 COMPILER V7.06   TEXT2                                                                 05/09/2008 15:23:15 PAGE 5   

 242   4                       ms(500);                       
 243   4                       x--;
 244   4                       if(x<0)
 245   4                        {  
 246   5                         x=9;
 247   5                         w=0;
 248   5                }
 249   4                      }
 250   3                 if(key1==0)break;
 251   3               }
 252   2         }
 253   1      }
 254          
 255          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    731    ----
   CONSTANT SIZE    =     20    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      16
   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 + -