聚丰项目 > 冰箱湿度显示与预警系统
冰箱湿度显示与预警系统是以89C52单片机为数据处理与外设控制核心,外接有IDT湿度传感器模块、液晶显示模块、按键控制模块与报警模块。IDT湿度传感器具有精度高(14位)、转换速率快、集成度高(内部集成14位AD转换与并转串电路)等特点。装置可根据用户需要设定相应的预警值,报警模块声光并用,增大了被用户感知的概率。
沉迷于电路板
分享沉迷于电路板
团队成员
周俊 焊工
1、传感器HS3001
HS300x系列是一款高精度,完全校准的相对湿度和温度传感器。 MEMS传感器具有专有的传感器级保护功能,可确保高可靠性和长期稳定性。集成校准和温度补偿逻辑通过标准I2C输出提供完全校正的湿度值和温度值。无需用户校准输出数据。高精度,快速测量响应时间和长期稳定性以及小封装尺寸使HS300x系列成为从便携式设备到专为恶劣环境设计的产品的广泛应用的理想选择。 HS300x系列数字传感器可精确测量相对湿度和温度水平。测量数据经过内部校正和补偿,可在很宽的温度和湿度范围内进行精确操作 - 无需用户校准。
2、IIC通信协议
当主机发送0 START位(S)时,启动传感器传输。当主机发送1个STOP位(P)时,传输终止。这些位仅在SCL线为高电平时发送(波形见图)。主机一旦设置START条件,就以规定的数据速率切换SCL线,为后续数据传输提供时钟。SDA线上的数据始终在SCL线的上升沿采样,并且在SCL为高电平时必须保持稳定,以防止错误的START或STOP条件。
启动传感器需要写命令将HS300x从休眠模式唤醒。通过发送7位从地址,然后发送第8位= 0(WRITE)来启动测量请求。传感器测量周期包括湿度和温度转换,然后是数字信号处理器(DSP)校正计算。传感器在测量周期结束时,数字输出寄存器将在断电前更新。输出始终缩放为14位。位的顺序是big-endian。
在测量周期结束时,可以获取有效数据。 DF结果的状态位可用于检测数据是有效还是失效(参见第6.7节);否则,在执行DF之前等待测量完成。 DF命令以7位从地址开始,后跟第8位= 1(READ)。作为从机的HS300x发送表示成功的确认(ACK)。 HS300x返回的数据字节数由主机发送NACK和STOP条件时确定。在前两个字节中提取全部14位湿度数据。第一个字节的两个MSB是状态位。rn14位温度数据跟随湿度数据。第四个数据字节的最后两位(LSB)未确定,应该被屏蔽掉。在不需要温度数据的情况下,可以通过在第二字节之后发送NACK来终止读取。
3、数据处理
HS300x的整个输出为4个字节。相对湿度(百分比)和温度(摄氏度)分别用等式1和等式2计算。
4、89C5单片机
89C52是一种带8K字节闪烁可编程可擦除只读存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS8位微处理器,俗称单片机。
5、液晶显示模块
LCD12864带中文字库的128X64 是一种具有4 位/8 位并行、2 线或3 线串行多种接口方式,内部含有国标一级、二级简体 中文字库的点阵图形液晶显示模块;其显示分辨率为128×64, 内置8192 个16*16 点汉字,和128 个16*8 点ASCII 字符 集。利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示8×4 行16×16 点 阵的汉字。 也可完成图形显示。低电压低功耗是其又一显著特点。
6、报警模块
呼吸灯和蜂鸣器构成声光报警电路。
#include
#define uchar unsigned char
#define uint unsigned int
sbit led=P2^2;
unsigned char num=0;
unsigned char num1=0;
unsigned char num2=0;
unsigned char num3=0;
unsigned char code dis1[]= {"日期:2019.1.1"};
unsigned char code dis2[]= {"湿度:"};
unsigned char code dis3[]= {"温度:"};
unsigned char code dis4[]= {"湿度预警值:"};
unsigned char code s[13]= {"0123456789.%"};
unsigned char dis5[7];
unsigned char dis6[8];
unsigned char dis7[3];
unsigned char dis8[4];
unsigned char key;
unsigned int c,d,m;
void delay_1ms(int x);
void read(); //IIC数据读取函数(四个字节)
void lcd_start();
void lcd_shuju(); //数据显示函数
void shujuchuli(); //数据处理函数
void Timer0();
void Timer0Init();
void lcd_yjz(); //预警值显示函数
void yjz();
void main()
{
unsigned int i=0,n=0;
lcd_init(); //LCD12864初始化
lcd_start(); //LCD基本显示内容
Timer0Init();
while(1) //按键输入
{
key=KeyDown();
if(key==12)
{
n=1;
TR0=0; //打开定时器
delay_1ms(10);
}
if(key==15)
{
TR0=1;
delay_1ms(10);
n=0;
}
if(n==1)
{
if(key!=0)
{
dis8[i]=s[key];
delay_1ms(10);
lcd_yjz();
i++;
if(i==3)
{
n=0;
i=0;
}
}
}
if(m==5)
{
shujuchuli();
wela=0;
dula=0;
delay_1ms(1);
lcd_init1();
lcd_shuju();
yjz();
m=0;
}
}
}
使用的开发平台:Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。
(0.00 MB)下载
沉迷于电路板: 太丑了
回复