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

📄 humidity.lst

📁 本源码主要是利用TLC555以及HS1101湿敏电容制作而成的湿度测量电路
💻 LST
字号:
C51 COMPILER V8.08   HUMIDITY                                                              12/04/2007 13:03:12 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE HUMIDITY
OBJECT MODULE PLACED IN humidity.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE humidity.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /****************************************************************************/
   2          /*                                                                          */
   3          /*                Copyright (c) 2005, 老树工作室                            */
   4          /*                     All rights reserved.                                 */
   5          /*                                                                          */
   6          /*                                                                          */
   7          /****************************************************************************/
   8          /****************************************************************************/
   9          /* 文件名:humidity.c                                                       */
  10          /* 版  本:Version 1.0                                                      */
  11          /* 描  述:利用hs1101与tlc555检测湿度的代码                                 */
  12          /*         根据数据手册,简化湿度计算公式如下:                             */
  13          /*         humidity = (hum_const - 0.702*(fhz_tlc555-40)) / 10              */
  14          /*         fhz_tlc555>=7000:       hum_const=5143.7                         */
  15          /*         6700<=fhz_tlc555<7000:  hum_const=5183.7                         */
  16          /*         fhz_tlc555<6700:        hum_const=5203.7                         */
  17          /*                                                                          */
  18          /* 作  者:spot                                                             */
  19          /* 函  数:                                                                 */
  20          /*         time0_over_int                                                   */
  21          /*         ext1_int_proc                                                    */
  22          /*         system_init                                                      */
  23          /*                                                                          */
  24          /* 历史记录:                                                               */
  25          /*  spot          2005-06-25     Creat Inital version. (Version 1.0)        */
  26          /****************************************************************************/
  27          
  28          #include <reg52.h>
  29          #include <absacc.h>
  30          #include <intrins.h>
  31          #include "../includes/types.h"
  32          
  33          /* 函数声明 */
  34          void time0_over_int(void); /* 定时器0中断服务程序 ,使用第1组寄存器  */
  35          void ext1_int_proc(void);  /* 外部中断1中断服务程序,使用第2组寄存器 */
  36          void system_init(void);    /* 系统上电初始化 */
  37          void display_humidity(u_int current_humidity);/* 在数码管上显示当前湿度 */
  38          extern void load_number(u_char number, bit dp);
  39          extern void send_latch_clock(void);
  40          extern void clear_led(void);
  41          /* 声明结束 */
  42          
  43          u_int fhz_tlc555;    /* tlc555输出频率 */
  44          u_char timer_count;  /* 定时计数       */
  45          bit timer_int;       /* 定时标志       */
  46          float hum_const;     /* 计算湿度的常数 */
  47          
  48          /* 定时器0中断服务程序 ,使用第1组寄存器 */
  49          void time0_over_int(void) interrupt 1 using 1
  50          {
  51   1          TF0=0;
  52   1          timer_int=1;
  53   1          TH0 = -(46080 / 256);
  54   1          TL0 = -(46080 % 256);
  55   1      }
C51 COMPILER V8.08   HUMIDITY                                                              12/04/2007 13:03:12 PAGE 2   

  56          
  57          /* 外部中断1中断服务程序,使用第2组寄存器 */
  58          void ext1_int_proc(void) interrupt 2 using 2
  59          {
  60   1          fhz_tlc555++;
  61   1      }
  62          
  63          /* 系统上电初始化 */
  64          void system_init(void)
  65          {
  66   1          EA = 0;
  67   1          timer_int = 0;
  68   1          timer_count = 0;
  69   1      
  70   1          TMOD = 0x01;           /*定时器0工作于方式1*/
  71   1          TCON = 0x04;           /*外部中断下降沿触发*/
  72   1          TH0 = -(46080 / 256);  /*定时50毫秒*/
  73   1          TL0 = -(46080 % 256);
  74   1          PT0 = 1;               /*定时器0高优先级*/
  75   1          TR0 = 1;               /*定时器0启动计数*/
  76   1          IE = 0x86;             /*定时器0,外部中断1,CPU开中断*/
  77   1      }
  78          
  79          /* 计算当前湿度 */
  80          u_int get_humidity(u_int fhz) /* 输入fhz为tlc555的频率计数 */
  81          {
  82   1          u_int humidity = 0;
  83   1          if(fhz >= 7000)
  84   1          {
  85   2              hum_const = 5143.7;
  86   2          }
  87   1          else if ( (fhz >= 6700) && (fhz < 7000) )
  88   1          {
  89   2              hum_const = 5183.7;
  90   2          }
  91   1          else if(fhz < 6700)
  92   1          {
  93   2              hum_const = 5203.7;
  94   2          }
  95   1          humidity = (u_int)( (hum_const - 0.702*(fhz - 40)) / 10);
  96   1          return humidity;
  97   1      }
  98          
  99          /* 在数码管上显示当前湿度 */
 100          void display_humidity(u_int current_humidity)
 101          {
 102   1          load_number( (current_humidity %10), 0);
 103   1          load_number( (current_humidity /10), 0);
 104   1          send_latch_clock();
 105   1      }
 106          
 107          main()
 108          {
 109   1          u_int real_hum;
 110   1      
 111   1          system_init();
 112   1          while(1)
 113   1          {
 114   2              if (timer_int == 1) /* 50毫秒定时到 */
 115   2              {
 116   3                  timer_int = 0;
 117   3                  timer_count++;
C51 COMPILER V8.08   HUMIDITY                                                              12/04/2007 13:03:12 PAGE 3   

 118   3      
 119   3                  if (timer_count == 100)  /* 5秒定时到 */
 120   3                  {
 121   4                     timer_count = 0;
 122   4                     fhz_tlc555 /= 5;
 123   4                     real_hum = get_humidity(fhz_tlc555);
 124   4                     clear_led();
 125   4                     display_humidity(real_hum);
 126   4                     fhz_tlc555 = 0;
 127   4                  }
 128   3              }
 129   2          }
 130   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    279    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      7       4
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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