【TB作品】温湿度监控系统设计,ATMEGA16单片机,Proteus仿真

题2:温湿度监控系统设计

功能要求:
1)开机显示时间(小时、分)、时分可修改;
2)用两个滑动变阻器分别模拟温度传感器(测量范
围0-100度)与湿度传感器(0-100%),通过按键
可以在数码管切换显示当前温度值、湿度值;
3)当温度低于20度时,红灯长亮;
4)当湿度高于70%时,黄灯长亮;
5)当湿度正常时,绿灯亮;温度正常时蓝灯亮。
硬件调试:实现以上功能

在这里插入图片描述

温湿度监控系统设计实验报告


一、实验背景及目的

本实验旨在设计一个温湿度监控系统,通过模拟温度和湿度传感器来测量环境参数,并根据设定的阈值控制不同颜色的指示灯。同时,系统还具备时间显示与修改功能,以满足基本的时钟需求。


二、系统功能需求
  1. 时间显示与修改:系统开机后显示当前时间(小时、分钟),并允许用户通过按键修改时间。
  2. 温湿度显示:通过两个滑动变阻器分别模拟温度传感器(0-100度)和湿度传感器(0-100%),用户可通过按键在数码管上切换显示当前温度值和湿度值。
  3. 指示灯控制
    • 温度低于20度时,红灯长亮。
    • 湿度高于70%时,黄灯长亮。
    • 湿度在正常范围(≤70%)时,绿灯亮。
    • 温度在正常范围(≥20度)时,蓝灯亮。

三、系统设计原理
1. 硬件设计

系统硬件主要由微控制器、数码管显示模块、滑动变阻器、按键矩阵和指示灯组成。

  • 微控制器:负责读取传感器数据、处理逻辑并控制显示和指示灯。
  • 数码管显示模块:用于显示时间、温度和湿度值。
  • 滑动变阻器:模拟温度和湿度传感器,通过AD转换获取模拟量值。
  • 按键矩阵:用于用户输入,修改时间和切换显示内容。
  • 指示灯:根据温湿度值进行指示。
2. 软件设计

软件设计主要分为以下几个模块:

  1. 初始化模块:初始化各个端口、设置定时器、初始化显示内容。
  2. 按键检测模块:检测用户按键输入,并对时间进行修改或切换显示模式。
  3. AD转换模块:获取滑动变阻器的模拟量值,转换为温度和湿度值。
  4. 显示模块:根据当前模式,显示时间、温度或湿度值。
  5. 指示灯控制模块:根据温湿度值,控制对应的指示灯状态。

四、电路原理
  • 数码管连接到微控制器的输出端口,用于显示数值。
  • 滑动变阻器连接到AD转换器通道,用于模拟传感器输入。
  • 按键矩阵连接到微控制器的输入端口,用于用户交互。
  • 指示灯通过微控制器的输出端口控制,显示当前环境状态。

五、程序原理

程序采用C语言编写,主要功能模块说明如下:

1. 初始化模块

初始化各个端口、设置定时器并初始化显示内容:

void main( void ) {DDRA = 0XFF - 0X03;DDRC |= 0X03;DDRD = 0XFF;DDRB = 0X00;disp[0] = LED_Disbuf[rtc_hour % 100 / 10];disp[1] = LED_Disbuf[rtc_hour % 10];disp[2] = LED_Disbuf[rtc_min % 100 / 10];disp[3] = LED_Disbuf[rtc_min % 10];SREG = 0x80;TIMSK |= (1 << TOIE0);TCCR0 = 0x03;TCNT0 = 0;while (1) {// 主循环}
}
2. 按键检测模块

检测用户按键输入,用于修改时间和切换显示模式:

int get_key( void ) {if (PINB != 0XFF) {if (PINB == 0xff - 0x01) return(1);if (PINB == 0xff - 0x02) return(2);// 检测其他按键}return(0);
}
3. AD转换模块

获取滑动变阻器的模拟量值,并转换为温度和湿度值:

void AD_GetData( void ) {ADMUX = (1 << REFS0);ADCSRA |= (1 << ADEN) | (1 << ADPS2) | (1 << ADPS1);ADCSRA |= (1 << ADSC);while (!(ADCSRA & (1 << ADIF)));ADCSRA |= (1 << ADIF);ADData0 = ADC;ADData0 = ((long) ADData0 * 5010 / 1024) / 50;// 处理湿度传感器数据
}
4. 显示模块

根据当前模式,显示时间、温度或湿度值:

if (mode == 0) {disp[0] = LED_Disbuf[rtc_hour % 100 / 10];disp[1] = LED_Disbuf[rtc_hour % 10];disp[2] = LED_Disbuf[rtc_min % 100 / 10];disp[3] = LED_Disbuf[rtc_min % 10];
} else if (mode == 1) {disp[1] = LED_Disbuf[ADData0 / 100];disp[2] = LED_Disbuf[ADData0 % 100 / 10];disp[3] = LED_Disbuf[ADData0 % 10];
} else if (mode == 2) {disp[1] = LED_Disbuf[ADData1 / 100];disp[2] = LED_Disbuf[ADData1 % 100 / 10];disp[3] = LED_Disbuf[ADData1 % 10];
}
5. 指示灯控制模块

根据温湿度值,控制指示灯的状态:

if (ADData0 < 20) {PORTA &= ~0x10;  // 红灯亮PORTA |= 0x20;   // 蓝灯灭
} else {PORTA &= ~0x20;  // 红灯灭PORTA |= 0x10;   // 蓝灯亮
}if (ADData1 > 70) {PORTA &= ~0x40;  // 黄灯亮PORTA |= 0x80;   // 绿灯灭
} else {PORTA &= ~0x80;  // 黄灯灭PORTA |= 0x40;   // 绿灯亮
}

六、实验结果

通过调试和运行,系统实现了预期的功能。开机后显示当前时间,并能通过按键修改时间;模拟温度和湿度传感器的数据,并能在数码管上切换显示当前温度和湿度值;根据温湿度值控制指示灯的状态,温度低于20度红灯长亮,湿度高于70%黄灯长亮,湿度正常绿灯亮,温度正常蓝灯亮。


七、总结

本实验通过设计一个温湿度监控系统,结合了AD转换、按键检测、数码管显示和指示灯控制等多项技术,全面锻炼了硬件和软件设计能力。系统在实际运行中表现稳定,达到了预期效果。

资源
https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?u=bdf8eeb84961492ba2b62f7bfee641ea&tab=BB08J2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/37909.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安卓实现微信聊天气泡

一搜没一个能用的&#xff0c;我来&#xff1a; 布局文件&#xff1a; <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android"http://schemas.android.com/apk/res/android"xml…

Tech Talk:智能电视eMMC存储的五问五答

智能电视作为搭载操作系统的综合影音载体&#xff0c;以稳步扩大的市场规模走入越来越多的家庭&#xff0c;成为人们生活娱乐的重要组成部分。存储部件是智能电视不可或缺的组成部分&#xff0c;用于保存操作系统、应用程序、多媒体文件和用户数据等信息。智能电视使用eMMC作为…

vue3中使用Antv G6渲染树形结构并支持节点增删改

写在前面 在一些管理系统中&#xff0c;会对组织架构、级联数据等做一些管理&#xff0c;你会怎么实现呢&#xff1f;在经过调研很多插件之后决定使用 Antv G6 实现&#xff0c;文档也比较清晰&#xff0c;看看怎么实现吧&#xff0c;先来看看效果图。点击在线体验 实现的功能…

受限玻尔兹曼机浅析

受限玻尔兹曼机&#xff08;Restricted Boltzmann Machine&#xff0c;简称RBM&#xff09;是一种特殊的随机生成神经网络&#xff0c;能够学习并发现数据的复杂规则分布。以下是关于受限玻尔兹曼机算法的详细介绍&#xff1a; ⭐️ 定义与起源 定义&#xff1a; 受限玻尔兹…

深入剖析Tomcat(十四) Server、Service 组件:如何启停Tomcat服务?

通过前面文章的学习&#xff0c;我们已经了解了连接器&#xff0c;四大容器是如何配合工作的&#xff0c;在源码中提供的示例也都是“一个连接器”“一个顶层容器”的结构。并且启动方式是分别启动连接器和容器&#xff0c;类似下面代码 connector.setContainer(engine); try …

小程序的运行机制、更新机制、生命周期介绍保姆级教程全解

一、小程序运行机制 1. 小程序冷启动 小程序启动可以分为两种情况&#xff0c;一种是冷启动&#xff0c;一种是热启动- 冷启动&#xff1a;如果用户首次打开&#xff0c;或小程序销毁后被用户再次打开&#xff0c;此时小程序需要重新加载启动- 热启动&#xff1a;如果用户已经打…

HSP_12章 Python面向对象编程oop_多态

文章目录 P128 多态问题的引出P129 多态细节和使用1. 多态介绍&特别说明2. 多态的好处3. 特别说明: Python多态的特点4. 使用多态的机制来解决主人喂食物的问题 P128 多态问题的引出 先看一个问题 # 说明: 先试用传统的方式完成 class Food:name Nonedef __init__(self,…

4.Android逆向协议-详解二次打包失败解决方案

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a;微尘网校 上一个内容&#xff1a;3.Android逆向协议-APP反反编译及回编译 工具下载&#xff1a; 链接&#xff1a;https://pan.baidu.…

#笔记# 写给自己用的小爬虫

最近完成了一个文旅行业信息聚合的小应用&#xff0c;实现仅从一个入口了解全行业的信息动态&#xff0c;不用一个一个翻看各网站&#xff0c;节省了不少检索时间。 一、基本思路 明确数据来源。基于前述目标&#xff0c;确定数据源为文化和旅游部管理部门官网&#xff0c;比…

【办公类-21-18】20240701 养老护理员初级选择题488,制作PyQt5图形界面GUI

背景需求&#xff1a; 6月16日育婴师高级考完了。运气好&#xff0c;抽到的是”护理患腹泻的幼儿”&#xff0c;“晨检与家长沟通”&#xff0c;“4个月婴儿喂蛋黄”&#xff0c;“21个月食谱”&#xff0c;都是我背过的题目&#xff08;没有抽到感统&#xff09; 于是一放假&…

【C语言】解决C语言报错:Invalid Pointer

文章目录 简介什么是Invalid PointerInvalid Pointer的常见原因如何检测和调试Invalid Pointer解决Invalid Pointer的最佳实践详细实例解析示例1&#xff1a;未初始化的指针示例2&#xff1a;已释放的指针示例3&#xff1a;返回局部变量的指针示例4&#xff1a;野指针 进一步阅…

《化学工程与装备》是什么级别的期刊?是正规期刊吗?能评职称吗?

​问题解答 问&#xff1a;《化学工程与装备》是不是核心期刊&#xff1f; 答&#xff1a;不是&#xff0c;是知网收录的第一批认定学术期刊。 问&#xff1a;《化学工程与装备》级别&#xff1f; 答&#xff1a;省级。主管单位&#xff1a;福建石油化工集团有限责任公司 …

昇思25天学习打卡营第6天|网络构建

网络构建 概念模型模型参数 概念 神经网络模型是由神经网络层和Tensor操作构成的&#xff0c;mindspore.nn提供了常见神经网络层的实现&#xff0c;在MindSpore中&#xff0c;Cell类是构建所有网络的基类&#xff0c;也是网络的基本单元。一个神经网络模型表示为一个Cell&…

技术革新:如何用数据中台实现数字化转型

作为程序员&#xff0c;我们总是对技术如何改变企业运作充满好奇。今天&#xff0c;我们将深入探讨森马集团如何利用数据中台技术&#xff0c;实现从传统数据分析到数字化转型的华丽转身。 1. 技术背景&#xff1a;森马集团的数字化挑战 森马集团&#xff0c;一个在服饰行业占…

天津惠灵顿:从心,致逐梦康桥|在这所天津国际学校从容不迫中走近梦想

在刚刚落下帷幕的申请季中&#xff0c;来自惠灵顿天津校区的Herman&#xff0c;陆续收到了剑桥大学、帝国理工学院、纽约大学、瓦萨学院等10余封录取通知书。面对纷至沓来的名校肯定&#xff0c;经历了短暂的尘埃落定的喜悦&#xff0c;Herman很快恢复了往日里的泰然自若。在他…

chunkers/maxent_ne_chunker/english_ace_multiclass.pickle 找不到

首先在这个nltk_data &#xff1a; NLTK Data官方下的数据集&#xff0c;找不到english_ace_multiclass.pic 说明缺少这个文件 : 那么在 nlp/resources/chunkers/maxent_ne_chunker/english_ace_multiclass.pickle at master teropa/nlp (github.com) 下载那两个文件 : 然…

基于SpringBoot的CSGO赛事管理系统

您好&#xff01;我是专注于计算机技术研究的码农小野。如果您对CSGO赛事管理系统感兴趣或有相关开发需求&#xff0c;欢迎随时联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot框架&#xff0c;Java技术 工具&#xff1a;Eclipse&a…

迈阿密色主题学科 HTML5静态导航源码

源码介绍 迈阿密色主题学科 HTML5静态导航源码&#xff0c;源码直接上传可用&#xff0c;有技术的可以拿去写个后端搜索调用百度接口&#xff0c;也可用于做引导页下面加你网址添加一个A标签就行了&#xff0c;很简单&#xff0c;需要的朋友就拿去吧 界面预览 源码下载 迈阿…

专题五:Spring源码之初始化容器上下文

上一篇我们通过如下一段基础代码作为切入点&#xff0c;最终找到核心的处理是refresh方法&#xff0c;从今天开始正式进入refresh方法的解读。 public class Main {public static void main(String[] args) {ApplicationContext context new ClassPathXmlApplicationContext(…

鸿蒙本地签名不匹配问题

连接鸿蒙手机运行项目报如下错误 这是由于本地签名和鸿蒙设备签名不匹配导致的&#xff0c;需要注释掉如下代码&#xff0c;选择file project 自动签名 勾选auto选项&#xff0c;会在build-profile.json5中生成一个签名&#xff0c;然后运行就ok了~