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

📄 text1.lst

📁 ds18b20实验
💻 LST
字号:
C51 COMPILER V8.02   TEXT1                                                                 10/24/2008 20:56:23 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE TEXT1
OBJECT MODULE PLACED IN Text1.OBJ
COMPILER INVOKED BY: c:\Keil\C51\BIN\C51.EXE Text1.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include"reg51.h"
   2          #include<lcd.c>
   3          #include <absacc.h>
   4          #include <intrins.h> 
   5          #define uchar unsigned char
   6          #define uint unsigned int
   7          
   8          sbit rs=P1^6;
   9          sbit rw=P1^5;
  10          sbit ep=P1^4;
  11          sbit DQ=P3^6;
  12          unsigned char DS18B20_F=0; 
  13          
  14          uchar code table[]={"0123456789"};
  15          
  16          unsigned char x=0;
  17          
  18          void delay(unsigned int i)//延时函数
  19          {
  20   1        while(i--);
  21   1      }
  22          
  23          
  24          void xmjc(void)   //闲忙检测
  25          {
  26   1        rs=0;
  27   1        rw=1;
  28   1        ep=1;
  29   1        while(P2&0x80)
  30   1        ;
  31   1        ep=0;
  32   1      }
  33          
  34          
  35          void xml(unsigned char comm)  //写命令
  36          {
  37   1        xmjc();
  38   1        rs=0;
  39   1        rw=0;
  40   1        ep=1;
  41   1        P2=comm;
  42   1        ep=0;
  43   1      }
  44          
  45          void xsj(unsigned char dat)
  46          {
  47   1       xmjc();
  48   1       rs=1;
  49   1       rw=0;
  50   1       ep=1;
  51   1       P2=dat;
  52   1       ep=0;
  53   1      }
  54          void lcd_init(void)      //1602初始化
  55          {
C51 COMPILER V8.02   TEXT1                                                                 10/24/2008 20:56:23 PAGE 2   

  56   1        xml(0x38);
  57   1        xml(0x06);//光标和显示模式设置
  58   1        xml(0x0c);
  59   1        xml(0x01);
  60   1      }
  61          
  62          
  63          void aa(uchar str,uchar lengch)
  64          {
  65   1        uchar i;
  66   1        for(i=0;i<lengch;i++)
  67   1        {
  68   2           xsj(str);
  69   2         }
  70   1      }
  71          
  72          
  73          
  74          //unsigned char templ=0;
  75          //unsigned char temph=0;
  76          //float temperature ;
  77          //sbit LED1=P1^3;
  78          //sbit LED2=P1^2;
  79          /*********************************************************************
  80          函数功能:延时子程序
  81          入口参数:time
  82          出口参数:
  83          **********************************************************************/
  84          
  85          void wait1(unsigned int j)
  86          {   while(j--);
  87   1      }                                                                  
  88          
  89          /************************
  90           初始化
  91          *************************/
  92          void Init_DS18B20(void)                  //复位成功时返回1,否则返回0
  93          {   //unsigned char n=255;
  94   1          DQ=1;
  95   1              _nop_();
  96   1              _nop_();
  97   1          DQ=0;                                         //主机拉低1-Wire总线,延时540us产生复位信号
  98   1          wait1(60);
  99   1         // wait1(180);
 100   1         // wait1(180);
 101   1          DQ=1;                                         //主机释放1-Wire总线,延时60us等待DS18B20应答
 102   1          wait1(2);
 103   1          
 104   1         DS18B20_F=DQ;
 105   1         wait1(50);
 106   1      }
 107           /******************************************************************
 108           函数功能:数码管显示子程序
 109           入口参数:
 110           出口参数:
 111          
 112           
 113          void display1(int k)
 114          {
 115            P1=0xfe;
 116            P2=tab[k/1000];       
 117            wait1(100);
C51 COMPILER V8.02   TEXT1                                                                 10/24/2008 20:56:23 PAGE 3   

 118            P1=0xfd;
 119            P2=tab[k%1000/100];
 120            wait1(100);
 121            P1=0xfb;
 122            P2=tab[k%100/10];
 123            wait1(100);
 124            P1=0xf7;
 125            P2=tab[k%10];
 126            wait1(100);  
 127           }
 128           void LedDisp(unsigned char disp)//温度显示子程序
 129          {    unsigned int time=0;
 130               while(time<1000)
 131                 {
 132                   P2=tab[disp/10];
 133                   //LED1=1;
 134                   //LED2=0;
 135                           P1=0xf8;
 136                   wait1(30);
 137                   P2=tab[disp%10];
 138                           P1=0xf9;
 139                   //LED1=0;
 140                  // LED2=1;
 141                   wait1(30);
 142                   ++time;
 143                }
 144          }  
 145          
 146          *********************************************************************/ 
 147           /*********************************************************************
 148           函数功能:向ds18b20读一个字节数据
 149           入口参数:
 150           出口参数:dat
 151           *********************************************************************/
 152          
 153          
 154           unsigned char Readonechar(void)
 155          {   unsigned char i=0,c;
 156   1          c=0;
 157   1          for(i=8;i>0;i--)
 158   1          {
 159   2                DQ=1;
 160   2                _nop_();_nop_();
 161   2                DQ=0; 
 162   2                _nop_();_nop_();                                   //主机拉低1-Wire总线,延时2us
 163   2            //wait1(2);
 164   2            c>>=1;
 165   2            DQ=1;                             
 166   2            //wait1(2);
 167   2            if(DQ) 
 168   2                  c|=0x80;
 169   2             wait1(7);
 170   2           }
 171   1          return(c);
 172   1      }  
 173           /**********************************************************************
 174           函数功能:向ds18b20写一字节的数据
 175           入口参数:dat
 176           出口参数:
 177           **********************************************************************/
 178          
 179           void Writeonechar(unsigned char c)
C51 COMPILER V8.02   TEXT1                                                                 10/24/2008 20:56:23 PAGE 4   

 180          {  unsigned char  i;
 181   1          for(i=8;i>0;i--)
 182   1              {
 183   2                       DQ=0;                                    //主机拉低1-Wire总线,延时2us
 184   2               
 185   2                       DQ=c&0x01; 
 186   2                       wait1(6);                                //延时60us等待DS18B20采集数据
 187   2               DQ=1;                                    //主机释放总线
 188   2              
 189   2               c>>=1;                                     
 190   2              }
 191   1                      _nop_();_nop_();
 192   1                      //wait1(7);
 193   1      }
 194           /***********************************************************************
 195           函数功能:向ds18b20读温度值
 196           入口参数:
 197           出口参数:temperature
 198          ************************************************************************/
 199           Readtemperature(void)
 200          { unsigned char temph=0,templ=0;
 201   1        unsigned int temperature=0;
 202   1        float temp=0;
 203   1        Init_DS18B20();
 204   1        if(!DS18B20_F)  
 205   1        {
 206   2              //DS18B20_F=0xff;
 207   2          Writeonechar(0xcc);
 208   2          Writeonechar(0x44);
 209   2              //wait1(50000);
 210   2              //wait1(50000);
 211   2               Init_DS18B20();
 212   2               if(!DS18B20_F) 
 213   2                {
 214   3                      Writeonechar(0xcc);
 215   3              Writeonechar(0xbe);
 216   3              templ=Readonechar();
 217   3              temph=Readonechar();
 218   3                      temperature=temph;
 219   3                      temperature<<=8;
 220   3                      temperature=temperature|templ;
 221   3                      temp=temperature*0.0625;
 222   3                      temp=temp+0.5;
 223   3                      //temperature=temp+0.5;
 224   3                      //temperature=temperature/100;
 225   3                      //temperature=((temph*256)+templ)*0.0625;
 226   3                      //return(temperature);
 227   3                      return(temp);
 228   3                }
 229   2          
 230   2              //DS18B20_F=Init_DS18B20();
 231   2              //while(DS18B20_F==0xff);
 232   2                  //DS18B20_F=0xff;
 233   2          
 234   2                                                                        
 235   2                                                        
 236   2         }
 237   1      }
 238          
 239          
 240          /***********************************************************************
 241          函数功能:主程序
C51 COMPILER V8.02   TEXT1                                                                 10/24/2008 20:56:23 PAGE 5   

 242          入口参数:
 243          出口参数:
 244          
 245           void main()
 246          {
 247          unsigned char i=0;
 248          
 249             while(1)
 250          
 251             {
 252                   i=Readtemperature();
 253                   LedDisp(i);
 254             }
 255          }
 256          ************************************************************************/  
 257            
 258            
 259           
 260          
 261          void main()//主程序
 262          {
 263   1        unsigned char wendu=0,m, n;
 264   1      
 265   1       lcd_init();
 266   1        while(1)
 267   1        {
 268   2        wendu=ReadTemperature();//读温度
*** WARNING C206 IN LINE 268 OF TEXT1.C: 'ReadTemperature': missing function-prototype
 269   2         m=wendu/10;
 270   2         n=wendu%10;
 271   2         xml(0x82);
 272   2         aa(table[m],1);
 273   2         xml(0x83);
 274   2         aa(table[n],1);         //显示温度值
 275   2        }
 276   1      }
 277          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    373    ----
   CONSTANT SIZE    =     11    ----
   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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -