资源概况
资源介绍(截取部分,完整请购买)
第1章 概述
第2章 系统功能需求及方案设计
2.1 系统设计需求
为了实现实时温度、湿度、烟雾显示,及时报警,以降低火灾危害,本文将实现以下设计需求:
(1)精确、实时的检测别墅内的温湿度及烟雾值;
(2)直接、清晰明了的显示测得的温湿度值及烟雾浓度值;
(4)能够实现防火自动报警报警;
(5)操作简单、功能完善、精确度高。
具体如图2-1所示。
2.2 主要元器件
第3章 硬件设计
如图3-1是本系统的硬件设计方案,具体地,硬件电路由以下模块构成:
(1)单片机最小系统。用于驱动和控制其他模块,以实现整体功能,其以STC89C51单片机为核心芯片,并辅以复位电路和晶振电路。
(2)信号采集电路。负责采集需要监测的数据,本设计中的信号采集电路由温度采集电路和烟雾采集电路、红外采集电路构成。
(3)AD转换电路。由ADC0832模块构成,其与传感器和单片机芯片相连,负责将模拟值转换为数字量,并发送给单片机。
(4)按键和显示电路。显示电路用于显示相关数据,按键电路用于控制芯片实现相关功能,直接与单片机相连。
3.1主控制器电路设计
单片机最小系统是单片机扩展开发应用中最基础和最主要的部分,一般由以下的电路构成,是整个设计的核心其保证了基于单片机的其他功能的扩展与实现。具体如图3-2所示。
复位电路:复位电路是单片机应用中的最基本和最重要的电路,用于处理单片机工作失灵等紧急问题。复位电路分为断电复位和按键复位,本文采用的是按键复位,其原理为:当单片机复位端口为高电平时,单片机中的代码将不会被执行。一开始上电时,电容还未充满电,复位端口为高电平,避免了直接上电就运行程序导致的程序错误等问题。当电容充满电后,复位端口变为低电平,程序开始运行。另外,当按键按下后,单片机处于复位状态。
晶振电路:晶振电路提供单片机所必不可少的时钟频率,用以提供数据传输和单片机的工作时序。本毕设晶振电路提供11.0592MHZ时钟频率。单片机芯片XTAL1(19 脚)和XTAL2(18 脚)构成单片机时钟管脚,以此构成整个稳定的振荡电路,为单片机的正常工作提供保障;晶振电路采用2个20pf电容。
3.2 LCD1602显示模块设计
本系统显示温湿度和烟雾数值采用的是LCD1602液晶显示屏。众所周知,单片机设计中一般采用LED数码管或者LCD液晶显示屏来显示数据,而LCD液晶显示屏的特点比较突出,显示的数据更加清晰、明了,且功耗较少,很适合本次设计的使用,下图3-3所示的是LCD液晶显示屏的管脚。其各个引脚说明:
第1脚:VSS为地电源。
第2脚:VDD接5V正电源。
第3脚:V0接10K电阻后接电源正极。
第4脚:RS为寄存器选择,高电平状态下为数据寄存器、低电平状态下为指令寄存器。
第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。
第6脚:E端为使能端,当其由高电平转换为低电平时,液晶模块开始执行代码。
第7~14脚:D0~D7为数据输入端。第15脚:背光源正极。
3.3温湿度传感器模块设计
温度传感器的端口1接地,2端口和端口3接10K上拉电阻后接电源和单片机,采集的数字信号直接送单片机。用于处理和显示。液位传感器及流量传感器需要通过排针外接,具体连接如图3-4所示。
3.4烟雾传感器模块设计(篇幅有限,详见文末)
3.5 继电器控制电路(篇幅有限,详见文末)
第4章 软件设计
根据本文设计需求,在第三章硬件电路设计的基础上,需要通过软件编程实现的具体功能:
(1)驱动各个模块工作,实现温度的采集与显示,实现烟雾浓度的采集与AD转换显示;
(2)按键设置功能。实现温湿度报警阈值设置、烟雾报警阈值设置、电机驱动等功能;
(3)报警功能实现。实现温度温度过高、温度过低、湿度过高、湿度过低、烟雾浓度过高的声光报警;
(4)继电器控制电机。当同时满足烟雾过高、温度过高、湿度过低三个条件时,控制继电器吸合,以实现电机转动,表示灭火。其设计流程如图4-1所示。
部分程序代码(完整详见下载)
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char// 以后unsigned char就可以用uchar代替
#define uint unsigned int// 以后unsigned int 就可以用uint 代替
sfr ISP_DATA = 0xe2; // 数据寄存器
sfr ISP_ADDRH = 0xe3; // 地址寄存器高八位
sfr ISP_ADDRL = 0xe4; // 地址寄存器低八位
sfr ISP_CMD = 0xe5; // 命令寄存器
sfr ISP_TRIG = 0xe6; // 命令触发寄存器
sfr ISP_CONTR = 0xe7; // 命令寄存器
sbit dianji = P1^6; //电机IO定义
sbit ADC_CLK =P2^6; //SCL定义为P1口的第3位脚,连接ADC0832SCL脚
sbit ADC_DAT =P2^7; //DO定义为P1口的第4位脚,连接ADC0832DO脚
sbit ADC_CS=P2^5; //CS定义为P1口的第4位脚,连接ADC0832CS脚
sbit LcdRs_P = P1^2; // 1602液晶的RS管脚
sbit LcdRw_P = P1^3; // 1602液晶的RW管脚
sbit LcdEn_P = P1^4; // 1602液晶的EN管脚
sbit KeySet_P = P3^2; // “设置”按键的管脚
sbit KeyDown_P = P3^3; // “减”按键的管脚
sbit KeyUp_P = P3^4; // “加”按键的管脚
sbit Buzzer_P = P1^5; // 蜂鸣器
sbit DHT11_P = P1^1; // 温湿度传感器DHT11数据接入
sbit LedTH_P = P2^0; // 温度过高报警指示灯
sbit LedTL_P = P2^1; // 温度过低报警指示灯
sbit LedHH_P = P2^2; // 湿度过高报警指示灯
sbit LedHL_P = P2^3; // 湿度过低报警指示灯
sbit LedLG_P = P2^4; // 烟雾过高报警指示灯
uchar temp; // 保存温度
uchar humi; // 保存湿度
uint light; // 保存烟雾
uchar gIndex=0; // 串口接收索引
uint Value[20]={0}; // 串口数据缓存区
uchar AlarmTL; // 温度下限报警值
uchar AlarmTH; // 温度上限报警值
uchar AlarmHL; // 湿度下限报警值
uchar AlarmHH; // 湿度上限报警值
uint AlarmLG; // 烟雾报警值
/*********************************************************/
// 单片机内部EEPROM不使能
/*********************************************************/
void ISP_Disable()
{
ISP_CONTR = 0;
ISP_ADDRH = 0;
ISP_ADDRL = 0;
}
/*********************************************************/
// 从单片机内部EEPROM读一个字节,从0x2000地址开始
/*********************************************************/
unsigned char EEPROM_Read(unsigned int add)
{
ISP_DATA = 0x00;
ISP_CONTR = 0x83;
ISP_CMD = 0x01;
ISP_ADDRH = (unsigned char)(add>>8);
ISP_ADDRL = (unsigned char)(add&0xff);
// 对STC89C51系列来说,每次要写入0x46,再写入0xB9,ISP/IAP才会生效
ISP_TRIG = 0x46;
ISP_TRIG = 0xB9;
_nop_();
ISP_Disable();
return (ISP_DATA);
}
/*********************************************************/
// 往单片机内部EEPROM写一个字节,从0x2000地址开始
/*********************************************************/
void EEPROM_Write(unsigned int add,unsigned char ch)
{
ISP_CONTR = 0x83;
ISP_CMD = 0x02;
ISP_ADDRH = (unsigned char)(add>>8);
ISP_ADDRL = (unsigned char)(add&0xff);
ISP_DATA = ch;
ISP_TRIG = 0x46;
ISP_TRIG = 0xB9;
第5章 仿真实现
5.1 仿真实现
5.1.1 仿真电路图
本系统用protues8.7设计的仿真原理图如图5-1所示。
根据第四章软件设计的思路,结合仿真需求,我们将仿真设计的C代码利用KEIL5编写好,并进行详细地注释。接着,我们点击“create HEX file”,并再次编译程序,这样就会生成HEX烧录文件,具体如图5-2所示。
接着,我们打开仿真原理图,并将生产的“HEX”文件烧录到单片机芯片中,点击开始仿真,就可以实现相关仿真了,我们将在下一节中具体展示仿真的结果。
5.1.2 仿真结果(详见下载)
(1)温湿度值与烟雾值的显示
(2)温湿度报警阈值和烟雾报警阈值的设置
(3)火灾自动报警
(5)自动灭火
5.2 测试情况分析
经过以上一系列的仿真测试,本文设计的“基于51单片机的智能家居控制系统”能够完成了2.1节的系统需求,具体仿真实现了以下功能:
(1)温湿度值测量及显示稳定、精确;烟雾值测量及显示稳定、精确;
(2)可以通过按键设定温湿度报警阈值,且测得的温湿度超过设定的阈值时,报警指示灯闪烁,蜂鸣器报警;可以通过按键设定烟雾报警阈值,且测得的烟雾浓度超过设定的阈值时,烟雾报警指示灯闪烁,蜂鸣器报警;
(3)当同时满足烟雾过高、温度过高、湿度过低三个条件时,控制继电器吸合,以实现电机转动,表示灭火。
暂无评论内容