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

📄 22.lst

📁 数字温度计。用DS18B20实现和8051实现
💻 LST
字号:
C51 COMPILER V8.12   22                                                                    12/27/2008 08:45:38 PAGE 1   


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

line level    source

   1           #include <REGX51.H>
   2          #include "ds18b20.h"
   3          #define NO 3
   4          //==================数码管段选IO口定义========================
   5          sbit bit1=P2^7;
   6          sbit bit2=P2^6;
   7          sbit bit3=P2^5;
   8          sbit bit4=P2^4;                                                                                                                
   9          unsigned char code table[]={0x3d,0x3b,0x37,0x2f,0x1f,0x3f,0xc0,0xa0,0x60,0xe0,
  10          0x3d,0x3f,0x60,0xe0,0x3b,0x3f,0xa0,0xe0,0x37,0x3f,0xc0,0xe0,0x2f,0x1f,0x3f};//  zuoyouliudong 
  11          
  12          unsigned char code DisplayCode[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xFF,0xef,0x40};//显示编码,xians
             -hudian
  13          unsigned char code DisplayCode1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x39};//wu xianshudia
             -n
  14          unsigned char DisplayBuffer[4]={0,0,0,10};        //显示缓冲                            
  15          unsigned int temperature =0;      
  16          unsigned char set,n=0;
  17          unsigned char temp_h=0;
  18          unsigned char temp_l=0;
  19          unsigned char tcount2s;
  20          void displaytemperature1()
  21          {  static unsigned char count;
  22   1         DisplayBuffer[0] = temperature/100;                   //               十位
  23   1         DisplayBuffer[1] = (temperature/10)%10;      //                个位
  24   1         DisplayBuffer[2] = (temperature/1)%10;               //                        小数点位
  25   1         switch(count)
  26   1              {
  27   2                      case 1: 
  28   2                                      P0=DisplayCode1[DisplayBuffer[3]];  //字符C
  29   2                                      bit4=0;bit3=1;bit2=1;bit1=1;    
  30   2                                      break;
  31   2                      case 2: 
  32   2                                      P0=DisplayCode1[DisplayBuffer[2]];  //小数点位
  33   2                                      bit1=1;bit4=1;bit3=0;bit2=1; 
  34   2                                      break;
  35   2                      case 3: P0=DisplayCode[DisplayBuffer[1]];  // 个位
  36   2                                      bit2=0;bit1=1;bit4=1;bit3=1; 
  37   2                                      
  38   2                                      break;
  39   2                      case 4: 
  40   2                                      P0=DisplayCode1[DisplayBuffer[0]];  //十位
  41   2                                      bit3=1;bit2=1;bit1=0;bit4=1; 
  42   2                                      break;
  43   2                      default:break;
  44   2              }               
  45   1           count++;
  46   1           if(count==5)
  47   1               count=0;
  48   1      }
  49          void Delay1ms(unsigned char k)        //延时函数,1毫秒
  50           {
  51   1              unsigned char i,j;
  52   1              for(i=0;i<k;i++)
  53   1              for(j=0;j<120;j++);
C51 COMPILER V8.12   22                                                                    12/27/2008 08:45:38 PAGE 2   

  54   1       }
  55          void displaytemperature2(void)
  56          {
  57   1      P0=DisplayCode1[temp_h]; 
  58   1      bit1=1;                                                         //十位
  59   1      Delay1ms(NO);
  60   1      bit1=0; 
  61   1      P0=DisplayCode[temp_l]; 
  62   1      bit2=1;                                                    //个位
  63   1      Delay1ms(NO);
  64   1      bit2=0;
  65   1      P0=DisplayCode1[0]; 
  66   1      bit3=1;
  67   1      Delay1ms(NO);
  68   1      bit3=0;
  69   1      P0=DisplayCode1[10]; 
  70   1      bit4=1;
  71   1      Delay1ms(NO);
  72   1      bit4=0;
  73   1      }
  74          
  75          void scan_key()
  76            {     Delay1ms(2);
  77   1              if(P1_0==1)
  78   1                set++;
  79   1              if(set>=2)
  80   1                set=0;
  81   1              F0:if(P1_0==1)goto F0;                          //按键未释放,在此等候//
  82   1        }
  83          temperaturealarm()
  84          {
  85   1       if(temperature>(temp_h*100+temp_l*10)&(temp_h*100+temp_l*10)>=150)
  86   1         {
  87   2              P3_0=0;
  88   2      //      Delay1ms(5);
  89   2         }  
  90   1        if(temperature<(temp_h*100+temp_l*10)&(temp_h*100+temp_l*10)<150)
  91   1         {
  92   2              P3_0=0;
  93   2      //      Delay1ms(5);
  94   2         }     
  95   1      } 
  96           void temp_change()
  97          {
  98   1      unsigned char m;
  99   1      if(P1_1==1)                                                      //十位加一
 100   1      Delay1ms(5);
 101   1      if(P1_1==1)
 102   1      temp_h=temp_h+1;
 103   1      if(temp_h==10)
 104   1      temp_h=0;
 105   1              for(m=0;m<8;m++)
 106   1                      { displaytemperature2();}
 107   1      if(P1_2==1)
 108   1      Delay1ms(5);
 109   1      if(P1_2==1)                                                        //十位减一
 110   1      temp_h=temp_h-1;
 111   1      if(temp_h==0)
 112   1      temp_h=0;
 113   1              for(m=0;m<8;m++)
 114   1                      {displaytemperature2();}
 115   1      if(P1_3==1)
C51 COMPILER V8.12   22                                                                    12/27/2008 08:45:38 PAGE 3   

 116   1      Delay1ms(5);
 117   1      if(P1_3==1)
 118   1      temp_l=temp_l+1;                                                // //个位加一
 119   1      if(temp_l==10)
 120   1      temp_l=0;
 121   1              for(m=0;m<8;m++)
 122   1                      {displaytemperature2();}
 123   1      if(P1_4==1)
 124   1      Delay1ms(10);
 125   1      if(P1_4==1)                                                        //个位减一
 126   1      temp_l=temp_l-1;
 127   1      if(temp_l==0)
 128   1      temp_l=0;
 129   1              for(m=0;m<8;m++)
 130   1                      {displaytemperature2();}
 131   1      }
 132          
 133          
 134          main()
 135          {
 136   1        P1=0x00;
 137   1        while(1)
 138   1              {
 139   2          temperature=Read_Temperature();
 140   2          temperature=temperature*0.625;
 141   2          displaytemperature1();
 142   2              temperaturealarm();
 143   2              if(P1_0==1)
 144   2              scan_key();
 145   2              tcount2s++;
 146   2         if(tcount2s==15)
 147   2       {       switch(n)
 148   3              {
 149   4                      case 0: P3=table[n];
 150   4                                      break;
 151   4                              case 1: P3=table[n];
 152   4                                      break;
 153   4                      case 2: P3=table[n];
 154   4                                      break;
 155   4                      case 3: P3=table[n];
 156   4                                      break;
 157   4                      case 4: P3=table[n];
 158   4                                      break; 
 159   4                              case 5: P3=table[n];
 160   4                                      break;
 161   4                              case 6: P1=table[n];
 162   4                                      break;
 163   4                      case 7: P1=table[n];
 164   4                                      break;
 165   4                      case 8: P1=table[n];
 166   4                                      break;
 167   4                      case 9: P1=table[n]; //////////////////////////////////////////////////////
 168   4                                  break;
 169   4                              case 10: P3=table[n]; //p3.1  //0x3d,0x3f,0x60,0xe0,0x3b,0x3f,0xa0,0xe0,0x37,0x3f,0xc0,0xe0,0x2f,0x1f,0
             -x3f
 170   4                                      break;                             // 10 11        12   13       14       15   16       17       18       19    20      21        22  23   24
 171   4                              case 11: P3=table[n];  
 172   4                                      break;
 173   4                          case 12: P1=table[n]; // p1.7
 174   4                                      break;
 175   4                              case 13: P1=table[n];
 176   4                                      break;
C51 COMPILER V8.12   22                                                                    12/27/2008 08:45:38 PAGE 4   

 177   4                              case 14: P3=table[n];  //p3.2
 178   4                                      break;
 179   4                              case 15: P3=table[n];
 180   4                                      break;
 181   4                  case 16: P1=table[n];  //1.6
 182   4                                      break;
 183   4                              case 17: P1=table[n];
 184   4                                              break;
 185   4                              case 18: P3=table[n]; //3.3
 186   4                                      break;
 187   4                  case 19: P3=table[n];
 188   4                                      break;
 189   4                              case 20: P1=table[n]; //1.5
 190   4                                              break;
 191   4                              case 21: P1=table[n];
 192   4                                      break;
 193   4                  case 22: P3=table[n];//3.4
 194   4                                      break;
 195   4                              case 23: P3=table[n];//3.5
 196   4                                      break;
 197   4                              case 24: P3=table[n];//p3灭
 198   4                                      break;
 199   4                      default:break;
 200   4              }               
 201   3           n++;
 202   3           if(n==25)
 203   3               n=0;
 204   3      
 205   3       }
 206   2              if(     tcount2s>=20)   
 207   2              tcount2s=0;
 208   2              switch(set)
 209   2                      {          
 210   3                      
 211   3                      case 1: 
 212   3                                      temp_change();
 213   3                                      
 214   3                                      break;
 215   3                      default:
 216   3                                      break;
 217   3      
 218   3                      }
 219   2              }
 220   1              
 221   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    864    ----
   CONSTANT SIZE    =     47    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     12       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 + -