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

📄 ds18.lst

📁 自己做的单片机Proteus仿真实例
💻 LST
字号:
C51 COMPILER V8.02   DS18                                                                  07/23/2012 18:02:19 PAGE 1   


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

line level    source

   1          #include<reg51.h>
   2          #define uchar unsigned char
   3          #define uint unsigned int
   4          sbit beep=P3^3;
   5          sbit ds=P3^4;
   6          sbit lcdrs=P3^6;
   7          sbit lcden=P3^7;
   8          sbit led0=P1^0;
   9          sbit led1=P1^1;
  10          sbit led2=P1^2;
  11          sbit led3=P1^3;
  12          uint temp,qian,bai,shi,ge;
  13          float f_temp;
  14          uchar flag;
  15          int warn_l1=20;
  16          int warn_l2=50;
  17          int warn_h1=320;
  18          int warn_h2=350;
  19          uchar  code table[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};
  20          uchar  code  table1[]="Voltage:";
  21          void delay(uint z)
  22          {
  23   1           uint i,j;
  24   1               for(i=z;i>0;i--)
  25   1                  for(j=110;j>0;j--);
  26   1      }
  27          void delayus(uint i)
  28          { while(i--); }   
  29          void write_com(uchar com)
  30          {
  31   1           lcdrs=0;
  32   1               P0=com;
  33   1               delay(5);
  34   1               lcden=1;
  35   1               lcden=0;
  36   1      }
  37          void write_data(uchar date)
  38          {
  39   1           lcdrs=1;
  40   1               P0=date;
  41   1               delay(5);
  42   1               lcden=1;
  43   1               lcden=0;
  44   1      }
  45          void reset()
  46          {
  47   1               ds=1;
  48   1               delayus(4);
  49   1               ds=0;
  50   1               delayus(100);
  51   1               ds=1;
  52   1               delayus(40);
  53   1              
  54   1      }
  55          
C51 COMPILER V8.02   DS18                                                                  07/23/2012 18:02:19 PAGE 2   

  56          uchar read()
  57          {
  58   1           uchar i=0;
  59   1               uchar dat=0;
  60   1               for (i=8;i>0;i--)
  61   1               {    
  62   2                    ds=0;            //给脉冲信号
  63   2                        dat>>=1;
  64   2                        ds=1;            //给脉冲信号
  65   2                        if(ds)
  66   2                        dat|=0x80;
  67   2                        delayus(10);
  68   2               }
  69   1              return(dat);
  70   1      }
  71          void write(uchar dat)
  72          {
  73   1          uchar i=0;
  74   1          for(i=8;i>0;i--)
  75   1          { 
  76   2                   ds=0;
  77   2               ds=dat&0x01;
  78   2               delayus(10);
  79   2               ds=1;
  80   2               dat>>=1;
  81   2          }
  82   1      
  83   1      }
  84          void tempchange()
  85          {
  86   1           reset();
  87   1               delay(1);
  88   1               write(0xcc);
  89   1               write(0x44);
  90   1               delay(750);
  91   1      
  92   1      }
  93          uint get_temp()
  94          {
  95   1           int a,b;
  96   1               reset();
  97   1               delay(1);
  98   1               write(0xcc);
  99   1               write(0xbe);
 100   1               a=read();
 101   1               b=read();
 102   1               flag=0;
 103   1               b=b&0x0f;
 104   1               if(b>8)
 105   1               {
 106   2                   flag=1;
 107   2                   b=b&0x07;
 108   2                       b=(b*256+a);
 109   2                       temp=2047-b+1;
 110   2                }
 111   1                else
 112   1                {
 113   2                   b=b&0x07;
 114   2                   temp=(b*256+a);
 115   2                }
 116   1                f_temp=temp*0.0625;
 117   1                temp=f_temp*10+0.5;
C51 COMPILER V8.02   DS18                                                                  07/23/2012 18:02:19 PAGE 3   

 118   1                return(temp);
 119   1      }
 120          void display()
 121          {        
 122   1           uint num;
 123   1           write_com(0x84);    
 124   1               for(num=0;num<8;num++)
 125   1               {
 126   2                        write_data(table1[num]);
 127   2                        delay(5);
 128   2                           
 129   2               }
 130   1               write_com(0x80+0x40+8);
 131   1               write_data('.');
 132   1               write_com(0x80+0x40+11);
 133   1               write_data('V');       
 134   1               write_com(0x80+0x40+5);
 135   1               write_data(0x30+qian);
 136   1               write_com(0x80+0x40+6);
 137   1               write_data(0x30+bai);
 138   1               write_com(0x80+0x40+7);
 139   1               write_data(0x30+shi);
 140   1               write_com(0x80+0x40+9);
 141   1               write_data(0x30+ge);
 142   1               if(flag==1)
 143   1                   {
 144   2                              write_com(0x80+0x40+4);
 145   2                      write_data('-');
 146   2                        }
 147   1      }
 148          void dis_temp(uint t)
 149          {
 150   1            qian=t/1000;
 151   1                bai=t%1000/100;
 152   1                shi=t%1000%100/10;
 153   1                ge=t%1000%100%10;
 154   1                display();
 155   1      }
 156          void warn(uint s,uchar led)
 157          {
 158   1            uchar i;
 159   1                i=s;
 160   1                beep=1;
 161   1                
 162   1                P1=~(led);
 163   1                delay(i);
 164   1                beep=0;
 165   1                P1=0xff;
 166   1                                   
 167   1      }
 168          void deal(uint t)
 169          {
 170   1                if(flag==1)warn(40,0x01);
 171   1                else if((t>warn_l1)&&(t<=warn_l2))
 172   1                {
 173   2                     warn(10,0x02);
 174   2                 }
 175   1                 else if(t<=warn_l1)
 176   1                 {
 177   2                     warn(40,0x01);
 178   2                 }        
 179   1                 else if((t<warn_h2)&&(t>=warn_h1))
C51 COMPILER V8.02   DS18                                                                  07/23/2012 18:02:19 PAGE 4   

 180   1                {
 181   2                     warn(10,0x04);
 182   2                 }
 183   1                 else if(t>=warn_h2)
 184   1                 {
 185   2                     warn(40,0x08);
 186   2                 }
 187   1      
 188   1      }
 189          void init()
 190          {
 191   1           beep=0;
 192   1               flag=0;
 193   1           lcden=0;
 194   1           write_com(0x38);
 195   1               write_com(0x0c);
 196   1               write_com(0x06);
 197   1           write_com(0x01); 
 198   1      
 199   1      }
 200          void main()
 201          {
 202   1           
 203   1           init();
 204   1               while(1)
 205   1               {
 206   2                   tempchange();
 207   2                       dis_temp(get_temp());
 208   2                       deal(temp);
 209   2                }
 210   1      
 211   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    714    ----
   CONSTANT SIZE    =     19    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     23       2
   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 + -