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

📄 flowunit.h

📁 采用STC89C54RD实现的一个完整的流量计控制系统源代码
💻 H
字号:
/********************************************************************************************************
**				                               RIDen A50 流量计
**
**                                          版权所有 (c) 2007,罗建
**                                               保留所有权利
**
**                                                  V1.03		
**
**
**-------------------------------------------------文件信息----------------------------------------------
**文   件   名: FlowUnit.H
**创   建   人: 罗 建
**最后修改日期: 2007年02月09日
**描        述: RIDen A50流量计主程序头文件。
**
**-----------------------------------------------历史版本信息--------------------------------------------
** 创建人: 罗建
** 版  本: V1.00
** 日 期: 2007年02月08日
** 描 述: 原始版本
**
**-------------------------------------------------------------------------------------------------------
** 修改人: 罗建
** 版  本: V1.02
** 日 期: 2007年03月16日
** 描 述: 增加类型和函数定义。
**
**-------------------------------------------------------------------------------------------------------
** 修改人: 罗建
** 版  本: V1.03
** 日 期: 2007年03月23日
** 描 述: 新增加了功能参数定义。
**
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 版  本:
** 日 期:
** 描 述:
**
**-----------------------------------------------当前版本修订--------------------------------------------
** 修改人: 罗建
** 日 期: 2007年03月23日
** 描 述: 新增加了功能参数定义。
**
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#ifndef __FLOWUNIT_H__
#define __FLOWUNIT_H__

/* 定义数据类型 */
#define INT8U           unsigned char
#define INT8            signed char     
#define INT16U          unsigned int
#define INT16           signed int
#define INT32U          unsigned long
#define INT32           signed long
/* 定义位常量 */
#define TRUE	        (bit)1
#define FALSE	        (bit)0
#define OPEN            (bit)0
#define CLOSE           (bit)1
/* 定义常数 */
#define FX2             2                   /* 取值1表示不对外部振荡时钟倍频,取值2表示对外部振荡时钟2倍频 */
#define FOSC	        11059200            /* 外部晶振振荡频率(Hz) */
#define FSYS            FOSC*FX2            /* 系统振荡器频率(Hz) */
#define BAUD            19200               /* 通讯波特率(bps) */
#define T0_TIMER        2                   /* T0定时器定时间隔时间(ms) */
#define T0_COMP         14                  /* T0定时器晶振补偿值,需实际测试求得 */
#define T0_CONST        T0_TIMER*FSYS/12000 /* T0定时器定时初值,10ms定时 */
#define T1_CONST        13993
#define LOGO_WAIT       300/T0_TIMER        /* 显示LOGO信息的时间 */
#define KEY_WAIT        30/T0_TIMER         /* 按键响应间隔时间(默认为15*20ms=300ms) */
#define TIME_WAIT       10/T0_TIMER         /* 检测时,时间倒计数的间隔数(默认为5*20ms=100ms) */
#define FLASH_WAIT      50/T0_TIMER         /* LED闪烁间隔时间(默认为25*20ms=500ms) */
#define PARAMS_NUMS     14                  /* 系统定义的参数个数(目前仅14个,2008.06.20) */
#define ADD_DOT         0x7F                /* 将该常量与要显示的LED内容相与,可在当前LED上显示小数点 */
#define NOT_DIS         0xFF                /* 作为LED段选码送入LED中使该位LED消隐 */
#define PASS            0xFE                /* 对应于a段显示(代表PASS指示灯)的LED段选码 */
#define FAIL            0xFD                /* 对应于b段显示(代表FAIL示灯)的LED段选码 */
#define WARN            0xFB                /* 对应于c段显示(代表WARN示灯)的LED段选码 */
#define NONE            0x10                /* 在LED段选码数组中,对应于消隐位的索引 */
#define SIGN_NEG        0x1E                /* 在LED段选码数组中,对应于负号位(-)的索引 */
#define ADDR_FILL_TIME  0x8000              /* 填充时间参数在EEPROM中的首地址 */
#define ADDR_TEST_TIME  0x8200              /* 测试时间参数在EEPROM中的首地址 */
#define ADDR_MAX_PRESS  0x8400              /* 压力告警上限参数在EEPROM中的首地址 */
#define ADDR_MIN_PRESS  0x8600              /* 压力告警下限参数在EEPROM中的首地址 */
#define ADDR_MAX_LEAK   0x8800              /* 流量告警上限参数在EEPROM中的首地址 */
#define ADDR_MIN_LEAK   0x8A00              /* 流量告警下限参数在EEPROM中的首地址 */
#define ADDR_LEAK_AREA1 0x8C00              /* 第1段流量分段最大流量值在EEPROM中的首地址(2008.06.20) */
#define ADDR_LEAK_COEF1 0x8E00              /* 第1段流量显示比例系数在EEPROM中的首地址(2008.06.20) */
#define ADDR_LEAK_AREA2 0x9000              /* 第2段流量分段最大流量值在EEPROM中的首地址(2008.06.20) */
#define ADDR_LEAK_COEF2 0x9200              /* 第2段流量显示比例系数在EEPROM中的首地址(2008.06.20) */
#define ADDR_LEAK_AREA3 0x9400              /* 第3段流量分段最大流量值在EEPROM中的首地址(2008.06.20) */
#define ADDR_LEAK_COEF3 0x9600              /* 第3段流量显示比例系数在EEPROM中的首地址(2008.06.20) */
#define ADDR_LEAK_AREA4 0x9800              /* 第4段流量分段最大流量值在EEPROM中的首地址(2008.06.20) */
#define ADDR_LEAK_COEF4 0x9A00              /* 第4段流量显示比例系数在EEPROM中的首地址(2008.06.20) */
// ------------------------------------------------------------------------------------------------------
/* P0口引脚定义 */
sbit    Q1          =   P0^0;               /* Q1~Q6控制LED数码管位选,为0时表示选通对应的LED数码管 */
sbit    Q2          =   P0^1;
sbit    Q3          =   P0^2;
sbit    Q4          =   P0^3;
sbit    Q5          =   P0^4;
sbit    Q6          =   P0^5;
sbit    Q7          =   P0^6;               /* 控制远程PASS声光报警继电器,为0时接通继电器 */
sbit    Q8          =   P0^7;               /* 控制远程FAIL声光报警继电器,为0时接通继电器 */
/* P1口引脚定义 */
sbit    RELAY       =   P1^4;               /* 电磁阀驱动继电器开关输入,为0时接通继电器 */
sbit    AD_POL      =   P1^7;               /* ICL7135转换极性标志,AD_POL=1表示输入信号为正 */
/* P2口引脚定义 */
sbit    START       =   P2^0;               /* 启动远控接口(输入),START=0表示启动测试进程 */
sbit    STOP        =   P2^1;               /* 停止远控接口(输入),STOP=0表示停止正在进行的测试进程 */
sbit    KEY1        =   P2^2;               /* 第一组按键检测公共引脚 */
sbit    KEY2        =   P2^3;               /* 第二组按键检测公共引脚 */
sbit    SER1        =   P2^4;               /* 74HC595(U8)的串行数据输入引脚 */
sbit    SER2        =   P2^5;               /* 74HC595(U9)的串行数据输入引脚 */
sbit    SCK	        =   P2^6;               /* 74HC595的串行移位时钟输入引脚 */
sbit    RCK         =   P2^7;               /* 74HC595的串行锁存时钟输入引脚 */
/* P3口引脚定义 */
sbit    AD_BUSY     =   P3^3;               /* ICL7135转换结束中断输入,下降沿触发中断 */
sbit    AD_CLK      =   P3^5;               /* ICL7135转换时钟输入,默认为125kHz方波信号 */
/* 特殊功能寄存器定义 */
sfr     WDT_CONTR   =   0xE1;
// ------------------------------------------------------------------------------------------------------
/* 按键类型定义 */
typedef enum tagKeyType 
  {ktStartKey = 1,
   ktStopKey  = 2,
   ktFuncKey  = 3,
   ktSetKey   = 4,
   ktUpKey    = 5,
   ktDownKey  = 6,
   ktLeftKey  = 7,
   ktRightKey = 8
  } TKeyType;
/* 参数名称类型定义,2008.06.20增加了流量修正值及对应的修正系数 */
typedef enum tagParamName
  {pnFillTime = 0,
   pnTestTime = 1,
   pnMaxPress = 2,
   pnMinPress = 3,
   pnMaxLeak  = 4,
   pnMinLeak  = 5,
   pnLeakArea1= 6,
   pnLeakCoef1= 7,
   pnLeakArea2= 8,
   pnLeakCoef2= 9,
   pnLeakArea3= 10,
   pnLeakCoef3= 11,
   pnLeakArea4= 12,
   pnLeakCoef4= 13
  } TParamName;
/* 字/字节联合类型定义 */
typedef union tagWordType
{
  INT16U  Word;
  INT8U   Byte[2];
} TWordType;

#endif

⌨️ 快捷键说明

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