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

📄 storagecontrol.lst

📁 温湿度监视系统
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.05a   STORAGECONTROL                                                       05/12/2009 10:20:45 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE STORAGECONTROL
OBJECT MODULE PLACED IN storageControl.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE storageControl.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /**
   2          *  文件说明:仓库温湿度控制系统————主程序
   3          *  作   者:
   4          *  时   间:2009-05-03
   5          */
   6          
   7          #include <reg52.h>
   8          #include "LCD1602.h"
   9          #include "DS18B20.h"
  10          #include "hs1101.h"
  11          #include "storageControl.h"
  12          /*添加还需要的头文件*/
  13          
  14          
  15          /*********************定义程序变量*********************/
  16          unsigned char temperature;           /*检测温度*/
  17          //unsigned char t_array[5];
  18          
  19          unsigned char himidity;               /*检测湿度*/
  20          //unsigned char h_array[4];
  21          
  22          unsigned int frequency;              /*检测频率*/
  23          unsigned char count;
  24          
  25          unsigned char keyId;                 /*按键号*/
  26          
  27          unsigned char sysRun, ParaSet, limitSet;                /*系统运行、设置标志位*/
  28          unsigned char Paratemp;
  29          unsigned char Parat[3];
  30          
  31          unsigned char tmax, tmin, hmax, hmin;
  32          unsigned char err_flag;
  33          //extern unsigned int HStable[][2];         /*HS1101经典频率表, 由外部程序进行定义*/
  34          
  35          /*主程序开始*/
  36          void main(void)
  37          {
  38   1              unsigned char t_array[5];
  39   1              unsigned char h_array[4];
  40   1              /**/
  41   1              initial();
  42   1              
  43   1              /*进入系统轮回处理*/
  44   1              while(1)
  45   1              {
  46   2                      keyId = key_scan();            /*按键扫描*/             
  47   2                      
  48   2                      systemSet(keyId);
  49   2                      
  50   2                      if (sysRun == 1)
  51   2                      {               
  52   3                              monitor();
  53   3                              
  54   3                              if (count > 100)      /*1S刷新一次*/
  55   3                              {
C51 COMPILER V8.05a   STORAGECONTROL                                                       05/12/2009 10:20:45 PAGE 2   

  56   4                                      EA = 0;
  57   4                                      temperature = ReadTemp();                      /*读取温度*/
  58   4                                      EA = 1;
  59   4                                      temp_to_str(&t_array, temperature);            /*将温度转换成可显示的数组*/
  60   4                              
  61   4                                      frequency = getfreq();                         /*计算频率*/
  62   4                              
  63   4                              
  64   4                                      himidity = gethumidity(frequency);   /*读取湿度*/
  65   4                                      himi_to_str(&h_array, himidity);
  66   4                                      
  67   4                                      GotoXY(0, 0);
  68   4                                      Print("Temp: ");
  69   4                                      Print(t_array);         
  70   4                                      delay_ms(10);
  71   4                                      
  72   4                                      GotoXY(0, 1);
  73   4                                      Print("Himi: ");
  74   4                                      Print(h_array);
  75   4                                      delay_ms(10);
  76   4                                      /*
  77   4                                      GotoXY(11, 0);
  78   4                                      Print("key:");
  79   4                                      LCD_Write(1, keyId + 0x30);
  80   4                                      count = 0;
  81   4                                      */
  82   4                              }
  83   3                      }
  84   2                      //buzzer = ~buzzer;
  85   2              }
  86   1      }
  87          
  88          void initial(void)
  89          {
  90   1              /*定时器初始化*/
  91   1              timerInit();
  92   1              
  93   1              /*液晶初始化*/
  94   1              LCD_Initial();
  95   1              GotoXY(0,0);
  96   1              Print("Storage Monitor");
  97   1              GotoXY(3,1);
  98   1              Print("Press MODE");
  99   1              
 100   1              /*参数初始化*/
 101   1              tmax = tMAX;
 102   1              tmin = tMIN;
 103   1              hmax = hMAX;
 104   1              hmin = hMIN;
 105   1              
 106   1              RUN = 1;
 107   1              ERR_MIN = 1;
 108   1              ERR_MAX = 1;
 109   1              buzzer = 1;
 110   1              
 111   1              /*其他初始化工作*/
 112   1              //sysRun = 1;
 113   1              
 114   1      }
 115          
 116          void timerInit(void)
 117          {
C51 COMPILER V8.05a   STORAGECONTROL                                                       05/12/2009 10:20:45 PAGE 3   

 118   1              TMOD = 0x51;   /*timer0 方式1计时, timer1方式1计数*/
 119   1              TH0 = (65536 - 10000) / 256;
 120   1              TL0 = (65536 - 10000) % 256;
 121   1              TH1 = 0;
 122   1              TL1 = 0;
 123   1              RCAP2H = (65536 - 10000) / 256;      //T2自动重载 
 124   1              RCAP2L = (65536 - 10000) % 256;
 125   1              TH2 = RCAP2H;
 126   1              TL2     = RCAP2L;
 127   1              ET0 = 1;
 128   1              ET1 = 1;
 129   1              ET2 = 1;
 130   1              EA = 1;
 131   1              //TR0 = 1;       /*启动T*/
 132   1              //TR1 = 1;
 133   1              //TR2 = 1;
 134   1      }
 135          
 136          unsigned int getfreq(void)
 137          {
 138   1              unsigned int f;
 139   1              
 140   1              TH1 = TL1 = 0;      /*计数器1清零*/
 141   1              TH0 = (65536 - 10000) / 256;
 142   1              TL0 = (65536 - 10000) % 256;
 143   1              
 144   1              TF0 = 0;            /*清定时器零溢出中断*/
 145   1              
 146   1              
 147   1              TR0 = TR1 = 1;      /*启动*/
 148   1              
 149   1          while(TF0 != 1);    /*等待定时时间到*/
 150   1              
 151   1          TR0 = TR1 = 0;      /*定时到, 关中断*/
 152   1              
 153   1          f = TH1*256 + TL1;  /*计算频率*/
 154   1              f *= 100;
 155   1              
 156   1              return f;
 157   1      }
 158          
 159          
 160          unsigned char key_scan(void)
 161          {
 162   1              uchar a, b, c, key = 254;
 163   1              
 164   1              keyPort = 0xf0;
 165   1              
 166   1              if (keyPort != 0xf0)
 167   1              {
 168   2                      delay_ms(10);
 169   2                      keyPort = 0xf0;
 170   2                      if(keyPort != 0xf0)
 171   2                      {
 172   3                              a = keyPort;
 173   3                              keyPort = 0x0f;
 174   3                              b = keyPort;
 175   3                              
 176   3                              c = a | b;
 177   3                              if(c == 0xee) key = 1;
 178   3                              if(c == 0xed) key = 2;     
 179   3                              if(c == 0xeb) key = 3;     
C51 COMPILER V8.05a   STORAGECONTROL                                                       05/12/2009 10:20:45 PAGE 4   

 180   3                              if(c == 0xe7) key = 15;      
 181   3                              if(c == 0xde) key = 4;
 182   3                              if(c == 0xdd) key = 5;
 183   3                              if(c == 0xdb) key = 6;
 184   3                              if(c == 0xd7) key = 12;
 185   3                              if(c == 0xbe) key = 7;
 186   3                              if(c == 0xbd) key = 8;
 187   3                              if(c == 0xbb) key = 9;
 188   3                              if(c == 0xb7) key = 14;
 189   3                              if(c == 0x7e) key = 10;
 190   3                              if(c == 0x7d) key = 0;
 191   3                              if(c == 0x7b) key = 11;
 192   3                              if(c == 0x77) key = 13;
 193   3                              
 194   3                              keyPort = 0xf0;
 195   3                              while(keyPort != 0xf0);
 196   3                      }
 197   2              }
 198   1              return key;
 199   1      }
 200          
 201          void systemSet(unsigned char k)
 202          {
 203   1              if (k == MODE)   //进入主模式
 204   1              {
 205   2                      //显示提示
 206   2                      LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);   //清屏
 207   2                      delay_ms(10);   
 208   2                      GotoXY(0,0);
 209   2                      Print("1. temperature");
 210   2                      //delay_ms(10); 
 211   2                      GotoXY(0,1);
 212   2                      Print("2. humidity");
 213   2                      //delay_ms(10);
 214   2                      sysRun = 0;
 215   2                      ParaSet = 1;
 216   2              }
 217   1              if (k == ENT)
 218   1              {
 219   2                      //完成设置
 220   2                      LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);   //清屏
 221   2                      sysRun = 1;
 222   2                      TR2 = 1;
 223   2              }       
 224   1              if (sysRun == 0 && ParaSet == 1)
 225   1              {
 226   2                      while(1)
 227   2                      {
 228   3                              keyId = key_scan();
 229   3                              if (keyId == 1)            //进入温度设置
 230   3                              {
 231   4                                      LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);   //清屏
 232   4                                      delay_ms(10);   
 233   4                                      GotoXY(0,0);
 234   4                                      Print("tMAX:");
 235   4                                      //delay_ms(10); 
 236   4                                      GotoXY(0,1);
 237   4                                      Print("tMIN:");
 238   4                                      //delay_ms(10);
 239   4                                      
 240   4                                      GotoXY(8,0);
 241   4                                      LCD_SetDisplay(LCD_SHOW|LCD_CURSOR|LCD_FLASH);
C51 COMPILER V8.05a   STORAGECONTROL                                                       05/12/2009 10:20:45 PAGE 5   

 242   4                                      

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -