第一范文网 - 专业文章范例文档资料分享平台

基于单片机的温湿度报警器设计

来源:用户分享 时间:2025/5/29 14:45:46 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

基于单片机的温湿度监控报警系统设计

参考文献

[1] 姜志海, 黄玉清,刘连鑫. 单片机原理及应用[M]. 电子工业出版社,2009.

[2] 郭天祥. 51单片机C语言教程[M]. 电子工业出版社.2009.

[3] 张毅刚, 彭喜元, 彭宇. 单片机原理及应用[M]. 高等教育出版社.2010. [4] 杨素行. 模拟电子技术基础简明教程[M]. 高等教育出版社.2006. [5] 李维提, 郭强. 液晶显示应用技术[M]. 电子工业出版社.2003. [6] 刘湘涛. 单片机原理与应用[M]. 电子工业出版社.2006.

[7] 何立民. 单片机高级教程[M]. 北京航空航天大学出版社.2004.

[8] 周润景, 徐宏伟, 丁莉. 单片机电路设计分析与制作[M]. 机械工业出版社. 2010.

[9] 李全利. 单片机原理及应用技术[M]. 高等教育出版社, 2004.

[10] 李秀霞. 郑春厚. Protel DXP 2004电路设计与仿真教程[M]. 北京

航空航天大学出版社.2008. [11] 余家春. Protel99Se电路设计实用教程[M]. 中国铁道出版社, 2002. [12] 郭强. 液晶显示应用技术[M]. 电子工业出版社. 2000.

[13] 王建校. 51系列单片机及C51程序设计[M]. 科学出版社. 2002. [14] 马忠梅. 单片机的C语言应用程序设计[M]. 北京航空航天大学出

版社.1998.

- 24 -

基于单片机的温湿度监控报警系统设计

附件1 系统程序

A1.1 主程序

//实现功能,设定温度上限和湿度上限,超过上限值时报警。报警现象,对应二极管亮,蜂鸣器响// #include #include \#include \

#include \ //定义变量 sbit Led_qushi=P1^6; //潮湿报警灯 sbit Led_jiangwen=P1^5; //超温报警灯 sbit Key_TH1 = P1^2; //温度最高值设置按键 sbit Key_TH2 = P3^3; //温度最高值设置按键 sbit Key_HH1 = P3^4; //湿度最高值设置按键 sbit Key_HH2 = P3^5; //湿度最高值设置按键

sbit beep=P2^0; //蜂鸣器

volatile bit FlagStartRH = 0; //开始温湿度转换标志 volatile bit FlagKeyPress = 0; //有键按下

extern U8 U8FLAG,k; //定义温湿度传感器用外部变量 extern U8 U8count,U8temp;

extern U8 U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,

U8checkdata;

extern U8 U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,

U8RH_data_L_temp,U8checkdata_temp; extern U8 U8comdata; extern U8 count, count_r; U16 temp;

S16 temperature, humidity; S16 idata TH, HH;

//温度上限和湿度上限

- 25 -

基于单片机的温湿度监控报警系统设计

char * pSave;

U8 keyvalue, keyTH1, keyTH2, keyHH1, keyHH2; U16 RHCounter;

void Data_Init() //数据初始化 { RHCounter = 0; keyvalue = 0;

Led_qushi = 1; Led_jiangwen = 1; TH = 40; HH = 85; keyTH1 = 1; keyTH2 = 1; keyHH1 = 1; keyHH2 = 1; beep=1; }

void Timer0_Init() //定时器0初始化 { ET0 = 1; //允许定时器0中断 TMOD = 1; //定时器工作方式选择 TL0 = 0x06; //定时器赋予低位初值 TH0 = 0xf8; //定时器赋予高位初值 TR0 = 1; } //启动定时器 void Timer0_ISR (void) interrupt 1 using 0 //定时器0中断 { TL0 = 0x06; //定时器赋予低位初值 TH0 = 0xf8; //定时器赋予高位初值 RHCounter ++; //每2秒钟启动一次温湿度转换 if (RHCounter >= 1000) { FlagStartRH = 1; RHCounter = 0; } }

void Save_Setting() //存入设定值、

{ pSave = (char *)&TH; //地址低位对应低8位,高位对应高8位 wrteeprom(0, *pSave); //存温度上限值TH低8位 DELAY(500); //延时 pSave ++;

wrteeprom(1, *pSave); //存温度上限值TH高8位 DELAY(500);

pSave = (char *)&HH; wrteeprom(2, *pSave);

//存湿度上限值RH低8位

- 26 -

基于单片机的温湿度监控报警系统设计

DELAY(500); pSave ++;

wrteeprom(3, *pSave); DELAY(500); }

//存湿度上限值RH高8位

void Load_Setting() //载入设定值、 { pSave = (char *)&TH; *pSave++ = rdeeprom(0); *pSave = rdeeprom(1); pSave = (char *)&HH; *pSave++ = rdeeprom(2);

*pSave = rdeeprom(3);

if ((TH>99)||(TH<0)) TH = 40; if ((HH>99)||(HH<0)) HH = 85; } void KeyProcess(uint num) { switch (num) { case 1: if (TH<99) TH++; L1602_char(1, 15, TH/10+48); L1602_char(1, 16, TH+48);

break; case 2:

if (TH>1) TH--;

L1602_char(1, 15, TH/10+48); L1602_char(1, 16, TH+48); break; case 3:

if (HH<99) HH++;

L1602_char(2, 15, HH/10+48); L1602_char(2, 16, HH+48); break; case 4:

if (HH>1) HH--;

L1602_char(2, 15, HH/10+48);

- 27 -

搜索更多关于: 基于单片机的温湿度报警器设计 的文档
基于单片机的温湿度报警器设计.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c0qyds9kso31ujtp7zfug_8.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top