【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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

win11自动删除文件的问题,安全中心提示

win11自动删除文件的问题&#xff0c;解决方法&#xff1a; 1.点击任务栏上的开始图标&#xff0c;在显示的应用中&#xff0c;点击打开设置。 或者点击电脑右下角的开始也可以 2.点击设置。也可以按Wini打开设置窗口。 3.左侧点击隐私和安全性&#xff0c;右侧点击Windows安全…

如何开启Linux内核中的debug打印信息

如何开启Linux内核中的debug打印信息 Linux 内核中&#xff0c;日志等级定义在 include/linux/kern_levels.h 文件中。数值越小等级越高。 级别 对应内核日志级别 说明 0 KERN_EMERG 紧急消息。系统崩溃之前提示&#xff0c;表示系统已不可用。 1 KERN_ALERT 报告消息。表示必…

Redis 7.x 系列【13】数据类型之地理位置(Geospatial)

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Redis 版本 7.2.5 源码地址&#xff1a;https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 概述2. 常用命令2.1 GEOADD2.2 GEODIST2.3 GEORADIUS2.4 GEOPOS2.5 GEORADIUSBYMEM…

安卓实现微信聊天气泡

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

使用Git从Github上克隆仓库,修改并提交修改

前言 本次任务主要是进行github提交修改的操作练习实践&#xff0c;本文章是对实践过程以及遇到的问题进行的一个记录。 在此之前&#xff0c;我已经简单使用过github&#xff0c;Git之前已经下好了&#xff0c;所以就省略一些步骤。 步骤记录 注册github账号&#xff0c;gi…

使用PHP解析和处理HTML/XML以创建Web爬虫的示例

使用PHP解析和处理HTML/XML以创建Web爬虫的示例 引言&#xff1a; Web爬虫是一种自动化工具&#xff0c;用于从万维网&#xff08;World Wide Web&#xff09;上抓取数据。PHP作为一种流行的服务器端脚本语言&#xff0c;具有丰富的库和功能&#xff0c;可以方便地解析和处理H…

简搭云可视化大屏设计:打造企业数据展示的新标杆

引言 在当今数字化时代&#xff0c;企业对于数据的可视化需求日益增长。如何高效、直观地展示海量数据&#xff0c;成为了企业决策者和数据分析师们关注的焦点。简搭云可视化大屏设计凭借其丰富的功能和强大的性能&#xff0c;成为了企业大屏可视化设计的首选工具。本文将为您…

Linux基础 - Ansible 服务实现自动化运维

目录 零. 简介 一. 安装 二. 模块介绍 三. 基本使用 零. 简介 Ansible 是一款极其强大且简单易用的开源 IT 自动化工具。 它的主要特点和优势包括&#xff1a; 无代理架构&#xff1a;Ansible 不需要在被管理的节点上安装代理程序&#xff0c;而是通过 SSH 协议与目标节点…

网站被浏览器提示“不安全”的解决办法

在互联网时代&#xff0c;网站的安全性直接关系到用户体验和品牌形象。当用户访问网站时&#xff0c;如果浏览器出现“您与此网站之间建立的连接不安全”的警告&#xff0c;这不仅会吓跑潜在客户&#xff0c;还可能对网站的SEO排名造成等负面影响。 浏览器发出的“不安全”警告…

第二周:计算机网络概述(下)

一、计算机网络性能指标&#xff08;速率、带宽、延迟&#xff09; 1、速率 2、带宽 3、延迟/时延 前面讲分组交换的时候介绍了&#xff0c;有一种延迟叫“传输延迟”&#xff0c;即发送一个报文&#xff0c;从第一个分组的发送&#xff0c;到最后一个分组的发送完成的这段时…

[Microsoft Office]Word设置页码从第二页开始为1

目录 第一步&#xff1a;设置页码格式 第二步&#xff1a;设置“起始页码”为0 第三步&#xff1a;双击页码&#xff0c;出现“页脚”提示 第四步&#xff1a;选中“首页不同” 第一步&#xff1a;设置页码格式 第二步&#xff1a;设置“起始页码”为0 第三步&#xff1a;双…

设备调试上位机GUI

C Fast Qt C 前端 原来真的不需要在 design 上画来画去&#xff0c;有chat-gpt 那里不知道问哪里 全是组件拼起来的,不需要画,最后发现其实也是定式模式,跟着AI 学套路

python 分析nginx的error.log日志 然后写入到 mongodb当中 并且解决mongodb无法根据id删除数据的问题

废话不多说 直接上代码 import re import os import pymongo import uuid import bson def extract_unresolved_info(log_path):unresolved_info []with open(log_path, r) as file:log_text file.read()lines log_text.split("\n")for line in lines:# 这种属于主…

javaweb(四)——过滤器与监听器

文章目录 过滤器Filter基本概念滤波器的分类: 时域和频域表示滤波器类型1. 低通滤波器(Low-Pass Filter)2. 高通滤波器(High-Pass Filter)3. 带通滤波器(Band-Pass Filter)4. 带阻滤波器(Band-Stop Filter) 滤波器参数1. 通带频率(Passband Frequency)2. 截止频率(Cutoff Frequ…

独家首发 | Matlab实现SVM-Transformer多变量回归预测

独家首发 | Matlab实现SVM-Transformer多变量回归预测 目录 独家首发 | Matlab实现SVM-Transformer多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现SVM-Transformer多变量回归预测&#xff0c;SVM递归特征消除Transformer多输入单输出回归预测…

物联网工业级网关解决方案 工业4G路由器助力智慧生活

随着科技的飞速发展&#xff0c;无线通信技术正逐步改变我们的工作与生活。在这个智能互联的时代&#xff0c;一款高性能、稳定可靠的工业4G路由器成为了众多行业不可或缺的装备。工业4G路由器以其卓越的性能和多样化的功能&#xff0c;助力我们步入智慧新纪元。 一、快速转化&…

构建高效的数字风控系统:应对现代网络威胁的策略与实践

文章目录 构建高效的数字风控系统&#xff1a;应对现代网络威胁的策略与实践1. 数字风控基本概念1.1 数字风控&#xff08;数字化风控&#xff09;1.2 数字风控的原理1.3 常见应用场景 2. 数字风控的必要性3. 构建高效的数字风控系统3.1 顶层设计与规划3.2 数据基础建设3.3 风险…

【Python实战因果推断】12_线性回归的不合理效果2

目录 Adjusting with Regression Adjusting with Regression 为了了解回归的威力&#xff0c;让我带您回到最初的例子&#xff1a;估计信贷额度对违约的影响。银行数据通常是这样的&#xff0c;其中有很多列客户特征&#xff0c;这些特征可能表明客户的信贷价值&#xff0c;比…

【鸿蒙学习笔记】基础组件Progress:进度条组件

官方文档&#xff1a;Progress 目录标题 作用最全属性迭代追加进度赋值风格样式 作用 进度条组件 最全属性迭代追加 Progress({ value: 20, total: 100, type: ProgressType.Linear }).color(Color.Green)// 颜色.width(200)// 大小.height(50)// 高度.value(50)// 进度可更…

【RabbitMQ实战】Springboot 整合RabbitMQ组件,多种编码示例,带你实践 看完这一篇就够了

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、对RabbitMQ管理界面深入了解1、在这个界面里面我们可以做些什么&#xff1f; 二、编码练习&#xff08;1&#xff09;使用direct exchange(直连型交换机)&a…