温湿度监测报警系统,可以通过按键设定温度和湿度的上下限,超过范围则LED报警。三个LED指示灯,包含温度报警灯、湿度报警灯、工作正常指示灯。
#include "液晶.h"
#define uchar unsigned char
#define uint unsigned int
/* */
#define Measure_TEMP 0x03 /* 温度 */
#define Measure_HUMI 0x05 /* 湿度 */
/*传感器修正参数 */
const float d1 = 39.2;
const float d2 = 0.01;
const float C1 = -5.0468;
const float C2 = 0.0367;
const float C3 = -0.00000159;
/* 端口重定义 */
sbit set_dis = P1 ^ 0; /* 这个开始减少数据 */
sbit m_cursor = P1 ^ 1; /* 这个数据还是很重要的 */
sbit set_inc = P1 ^ 2; /* */
sbit set_dec = P1 ^ 3; /* */
sbit TH_CLK = P1 ^ 4;
sbit TH_DAT = P1 ^ 5; /* */
sbit beep_temp = P1 ^ 6;
sbit beep_humi = P1 ^ 7;
sbit led = P2 ^ 0;
/* 变量声明 */
unsigned char shtdata[3]; /* 存储从传感器读取的数据 */
unsigned char disp[4]; /* 要显示的数据 */
unsigned char set_label = 0; /* 显示测量值或者 */
bit Error;
unsigned char neg_label = 0;
unsigned char code distemp[8] = { 0x10, 0x00, 0x0F, 0x10, 0x10, 0x10, 0x0F, 0x0F }; /* 自定义字符 摄氏度 */
unsigned char code dis_th[] = { 0X54, 0X65, 0X6D, 0X70, 0X3A, 0X48, 0X75, 0X6D, 0X69, 0X3A }; /* Temp:Humi: */
unsigned char code dis_set_th[] = { 0X54, 0X3A, 0X48, 0X3A, 0X4C, 0X3A, 0X48, 0X3A, 0X48, 0X3A, 0X4C, 0X3A }; /* T:H: L: H:H; L: */
uchar dis_set_x[12] = { 0, 1, 2, 3, 9, 10, 64, 65, 66, 67, 73, 74 }; /* 定义dis_set_th显示的坐标位置 */
uchar open = 0; /* 扫描键盘允许 */
uchar TIM = 0; /* 定时器计数 */
uchar cursor = 0; /* 定义光标的位置 */
uchar clear_char = 0; /* 刷新液晶显示的字符 */
char set_th[4]; /* 存储四个报警值0:温度上限,1: 温度下限 2: 湿度上限 3: 湿度下限 */
/* --------------------------延时函数------------------------------ */
void delay( unsigned int i )
{