2024-09-01
售卖作品
00

目录

温湿度监控系统设计实验报告
一、实验背景及目的
二、系统功能需求
三、系统设计原理
1. 硬件设计
2. 软件设计
四、电路原理
五、程序原理
1. 初始化模块
2. 按键检测模块
3. AD转换模块
4. 显示模块
5. 指示灯控制模块
六、实验结果
七、总结
资源

题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. 初始化模块

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

c
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. 按键检测模块

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

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

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

c
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. 显示模块

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

c
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. 指示灯控制模块

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

c
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
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Dong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!