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

📄 ad.lst

📁 热敏电阻
💻 LST
字号:
C51 COMPILER V8.08   AD                                                                    03/22/2009 19:16:12 PAGE 1   


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

line level    source

   1          #include<reg51.h>
   2          #include"LCD.h"
   3          #define uchar unsigned char
   4          #define uint unsigned int
   5          #define N 10
   6          uchar bai,ge,shi,n;
   7          uint temp,tp;temph,templ;
   8          uint code ad_date[]={ 
   9                  1060,1060,1060,1100,1120,1140,1166,1180,1200,1220,
  10                  1240,1320,1340,1360,1380,1400,1420,1440,1460,1480,
  11                  1500,1520,1540,1560,1580,1600,1620,1640,1660,1680,
  12                  1700,1720,1740,1760,1780,1800,1820,1840,1840,1860,
  13                  1880,1900,1920,1940,1960,1980,2000,2020,2040,2060,
  14                  2080,2100,2120,2140,2160,2180,2200,2220,2240,2260,
  15                  2280,2300,2320,2340,2360,2380,2400,2420,2440,2460,
  16                  2480,2500,2520,2540,2560,2580,2600,2620,2640,2660,
  17                  2680,2700,2720,2740,2760,2780,2800,2820,2840,2860,
  18                  2880,2900,2920,2920,2940,2960,2980,3000,3020,3040,
  19                  3060,3080,3100,3120,3140,3160,3180,3200,3220,3240,
  20                  3260,3280,3300,3320,3340,3360,3380,3400,3420,3440,
  21                  3460,3480,3500,3520,3540,3560,3580,3600,3620,3640,
  22                  3660,3680};
  23          uint code temperiture[]={
  24                  594,593,586,580,579,560,564,559,552,545,
  25                  541,518,513,508,503,497,491,488,483,480,
  26                  473,468,463,458,455,451,447,440,434,433,
  27                  430,425,420,416,413,409,404,401,401,396,
  28                  390,386,382,378,374,372,368,364,361,357,
  29                  354,351,347,343,340,336,333,328,326,322,
  30                  319,316,313,309,307,303,300,296,294,289,
  31                  286,283,280,276,274,271,267,264,260,257,
  32                  253,249,246,243,240,237,233,231,228,224,
  33                  222,219,214,216,211,209,206,202,198,194,
  34                  187,184,181,178,175,171,168,164,161,158,
  35                  154,152,148,146,142,139,136,133,130,126,
  36                  124,121,116,114,112,108,102,98,96,94,
  37                  89,86};
  38          uchar code table[]="  T:00.0`C";
  39          uchar num=0;
  40          uchar keynum,max=40,min=0;
  41          uchar code Temp_max[]="  Max:40`C",Temp_min[]="  Min:00`C";
  42          
  43          sbit ad_wr=P3^6;
  44          sbit ad_rd=P3^7;
  45          sbit ad_cs=P3^5;
  46          sbit ad_int=P3^2;
  47          sbit key1=P0^5;
  48          sbit key2=P0^6;
  49          sbit key3=P0^7;
  50          //sbit Beep=P0^0;
  51          
  52          /*********函数表************/
  53          void init();                                    //初始化
  54          void ad_delay(uint t);                  //延时函数
  55          void change(uchar tempture);    //分离百位、十位、个位
C51 COMPILER V8.08   AD                                                                    03/22/2009 19:16:12 PAGE 2   

  56          uchar ad_getshuju();                            //ad转换
  57          char filter();                                  //滤波
  58          uint convert();                                 //电压转换
  59          void tempertur();                               //度温度
  60          void keyscan();                                 //键盘扫描
  61          
  62          //主函数
  63          void main()
  64          {
  65   1              init();
  66   1              while(1)
  67   1              {
  68   2                      keyscan();      
  69   2              }       
  70   1      }
  71          
  72          void init()
  73          {
  74   1              LCD_init();
  75   1              for(num=0;num<10;num++)
  76   1              {
  77   2                      LCD_Write_add_data(num,0,table[num]);
  78   2              }
  79   1      }
  80          
  81          void ad_delay(uint t)
  82          {
  83   1              uchar j;
  84   1              uint i;
  85   1              for(i=0;i<t;i++)
  86   1                      for(j=0;j<110;j++);
  87   1      }
  88          
  89          uchar ad_getshuju()
  90          {
  91   1              uchar date;
  92   1              ad_cs=0;ad_wr=0;ad_rd=1;
  93   1              ad_cs=1;ad_wr=1;ad_rd=1;
  94   1              while(ad_int==1);
  95   1              ad_cs=0;ad_wr=1;ad_rd=0;
  96   1          date=P2;
  97   1              ad_cs=1;ad_wr=1;ad_rd=1;
  98   1              return date;
  99   1      }
 100          
 101          char filter() //滤波函数  中位值滤波法
 102          {
 103   1         uint value_buf[N],temp_f;
 104   1         uchar count,i,j;
 105   1         for ( count=0;count<N;count++)
 106   1         {
 107   2            value_buf[count] = ad_getshuju();
 108   2            delay(2);
 109   2         }
 110   1         for (j=0;j<N-1;j++)
 111   1         {
 112   2            for (i=0;i<N-j;i++)
 113   2            {
 114   3               if ( value_buf[i]>value_buf[i+1] )
 115   3               {
 116   4                  temp_f = value_buf[i];
 117   4                  value_buf[i] = value_buf[i+1];
C51 COMPILER V8.08   AD                                                                    03/22/2009 19:16:12 PAGE 3   

 118   4                   value_buf[i+1] = temp_f;
 119   4               }
 120   3            }
 121   2         }
 122   1         return value_buf[(N-1)/2];
 123   1      }
 124          
 125          uint convert()
 126          { 
 127   1              uint temph,templ;       //用于存储读出数据的高字节和低字节 
 128   1              uint tmp="0";               //存储最后处理完的结果 注意数据类型 
*** WARNING C260 IN LINE 128 OF AD.C: '=': pointer truncation
 129   1              tmp=filter()+tmp;                                       //求滤波后ad值 
 130   1              temph=tmp&0xf0;                                 //屏蔽低四位 
 131   1              temph=temph>>4;                                 //右移四位 取出高四位 
 132   1              templ=tmp&0x0f;                                 //屏蔽高四位 取出低四位 
 133   1              tmp=templ*20+temph*320;                 //最后的结果是一个四位数,便于显示       电压值
 134   1              return tmp;                                             //返回最后处理结果 
 135   1      }
 136          
 137          void change(uchar tempture)
 138          {
 139   1              bai=tempture/100;
 140   1              shi=tempture%100/10;
 141   1              ge=tempture%10;
 142   1      }
 143          
 144          void tempertur()
 145          {
 146   1              for(n=0;temp>=ad_date[n];n++);
 147   1              tp=temperiture[n-1];
 148   1              change(tp);
 149   1              delay(100);
 150   1              LCD_Write_add_data(4,0,0x30+bai);
 151   1              delay(100);
 152   1              LCD_Write_add_data(5,0,0x30+shi);
 153   1              delay(100);
 154   1              LCD_Write_add_data(7,0,0x30+ge);
 155   1              delay(100);;
 156   1      }
 157          
 158          
 159          void keyscan()
 160          {
 161   1              if(key1==0)
 162   1              {
 163   2                      delay(5);
 164   2                      if(key1==0)
 165   2                      {
 166   3                              while(!key1);
 167   3                              keynum++;
 168   3                              if(keynum==1)
 169   3                              {
 170   4                                      change(max);
 171   4                                      LCD_Write_Com(0x01);
 172   4                                      delay(10);
 173   4                                      LCD_Write_add_str(0,0,10,Temp_max);
 174   4                                      LCD_Write_add_data(6,0,0x30+shi);
 175   4                                      LCD_Write_add_data(7,0,0x30+ge);
 176   4                              }
 177   3                              if(keynum==2)
 178   3                              {
C51 COMPILER V8.08   AD                                                                    03/22/2009 19:16:12 PAGE 4   

 179   4                                      change(min);
 180   4                                      LCD_Write_Com(0x01);
 181   4                                      min=min>0?min:0;
 182   4                                      delay(10);
 183   4                                      LCD_Write_add_str(0,0,10,Temp_min);
 184   4                                      LCD_Write_add_data(6,0,0x30+shi);
 185   4                                      LCD_Write_add_data(7,0,0x30+ge);
 186   4                              }
 187   3                              if(keynum==3)
 188   3                              {
 189   4                                      keynum=0;
 190   4                                      LCD_Write_Com(0x01);
 191   4                                      delay(10);
 192   4                                      LCD_Write_add_str(0,0,10,table);
 193   4                              }
 194   3                      }
 195   2              }
 196   1              if(keynum==0)
 197   1              {
 198   2                      temp=convert();
 199   2                      tempertur();
 200   2                      delay(100);
 201   2              }
 202   1              else
 203   1              {
 204   2                      if(keynum==1)
 205   2                      {
 206   3                              if(key2==0)
 207   3                              {
 208   4                                      delay(5);
 209   4                                      if(key2==0)
 210   4                                      {
 211   5                                              while(!key2);
 212   5                                              max++;
 213   5                                              change(max);
 214   5                                              delay(1);
 215   5                                      }
 216   4                              }
 217   3                              if(key3==0)
 218   3                              {
 219   4                                      delay(5);
 220   4                                      if(key3==0)
 221   4                                      {                                               
 222   5                                              while(!key3);
 223   5                                              max--;
 224   5                                              change(max);
 225   5                                              delay(1);
 226   5                                      }
 227   4                              }
 228   3                              //LCD_Write_add_str(0,0,9,Temp_max);
 229   3                              LCD_Write_add_data(6,0,0x30+shi);
 230   3                              LCD_Write_add_data(7,0,0x30+ge);
 231   3                      }
 232   2                      if(keynum==2)
 233   2                      {
 234   3                              if(key2==0)
 235   3                              {
 236   4                                      delay(5);
 237   4                                      if(key2==0)
 238   4                                      {
 239   5                                              while(!key2);
 240   5                                              min++;
C51 COMPILER V8.08   AD                                                                    03/22/2009 19:16:12 PAGE 5   

 241   5                                              change(min);
 242   5                                              min=min>0?min:0;
 243   5                                              delay(1);
 244   5                                      }
 245   4                              }
 246   3                              if(key3==0)
 247   3                              {
 248   4                                      delay(5);
 249   4                                      if(key3==0)
 250   4                                      {
 251   5                                              while(!key3);
 252   5                                              min--;
 253   5                                              change(min);
 254   5                                              delay(1);
 255   5                                      }
 256   4                              }
 257   3                              //LCD_Write_add_str(0,0,9,Temp_min);
 258   3                              LCD_Write_add_data(6,0,0x30+shi);
 259   3                              LCD_Write_add_data(7,0,0x30+ge);
 260   3                      }
 261   2              }
 262   1      }


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