仿真设计|基于51单片机的光照、温湿度及PM2.5检测报警系统

server/2025/2/5 6:16:26/

目录

具体实现功能

设计介绍

单片机>51单片机简介

资料内容

仿真实现(protues8.7)

程序(Keil5)

全部内容

资料获取


具体实现功能

(1)LCD1602液晶第一行显示当前的光照值及PM2.5值,第二行显示当前的温度和湿度值;
(2)可以设置光照报警值、PM2.5报警值、温湿度上下限报警值。共4个按键:复位按键、减键、加键、设置键;
(3)当PM2.5值高于设定的报警值,光照值高于设定的报警值,温湿度值低于或高于设定的范围时,相应的指示灯亮,蜂鸣器报警;
(4)当光照太强,湿度过低时,电机转动表示排风。

仿真演示视频:

64-基于单片机>51单片机的光照、温湿度及PM2.5检测报警系统

设计介绍

单片机>51单片机简介

51单片是一种低功耗、高性能CMOS-8位微控制器,拥有灵巧的8位CPU和可编程Flash,使得单片机>51单片机为众多嵌入式控制应用系统提供灵活、高效的解决方案。

本设计所使用的芯片可兼容以下所有的51系列单片机(包括AT系列和STC系列)。

资料内容

仿真实现(protues8.7)

本设计利用protues8.7软件实现仿真设计,具体如图。

程序(Keil5)

本设计利用KEIL5软件实现程序设计。

主函数如下:

///
/*********************************************************/
// 主函数
/*********************************************************/
void main(void)
{uchar i;				// 循环变量LcdInit();				    	// 液晶功能初始化LcdShowInit();					// 液晶显示初始化AlarmInit();						// 报警值初始化while(1){light=Get_ADC0832();			// 读取光照强度light=light/2.5;					// 缩小光照检测结果(在0-99)if(light>99)							// 如果大于99light=99;								// 则依然保持99LcdGotoXY(0,6);							// 液晶定位到第0行第6列LcdPrintNum1(light);						// 显示测量结果PM=Get_ADC08321();			// 读取光照强度PM=PM/2.5;					// 缩小光照检测结果(在0-99)LcdGotoXY(0,13);							// 液晶定位到第0行第6列LcdPrintNum1(PM);						// 显示测量结果/*温湿度读取*/EA=0;ReadDhtData(); 							// 检测温湿度数据;EA=1;LcdGotoXY(1,2);	 						// 定位到要显示温度的地方LcdPrintNum2(temp);					// 显示温度值LcdGotoXY(1,11);						// 定位到要显示湿度的地方LcdPrintNum2(humi);					// 显示湿度值// 报警判断AlarmJudge();						/*按键扫描和延时*/for(i=0;i<30;i++){KeyScanf();								// 按键判断DelayMs(10);}}
}

程序运行结果如图:

全部内容

全部资料包括程序(keil5)、protues仿真(protues8.7)、开发资料、资料使用介绍、仿真视频、程序讲解视频、仿真讲解视频、最小系统介绍视频等。

资料获取
https://docs.qq.com/doc/DT09TTEhscWJ6UEpm


http://www.ppmy.cn/server/165088.html

相关文章

PyTorch中的movedim、transpose与permute

在PyTorch中&#xff0c;movedim、transpose 和 permute这三个操作都可以用来重新排列张量&#xff08;tensor&#xff09;的维度&#xff0c;它们功能相似却又有所不同。 movedim &#x1f517; torch.movedim 用途&#xff1a;将张量的一个或多个维度移动到新的位置。参数&…

Next.js 14 TS 中使用jwt 和 App Router 进行管理

jwt是一个很基础的工作。但是因为架构不一样&#xff0c;就算是相同的架构&#xff0c;版本不一样&#xff0c;加jwt都会有一定的差别。现在我们的项目是Next.js 14 TS 的 App Router项目&#xff08;就是没有pages那种&#xff09;&#xff0c;添加jwt的步骤&#xff1a; 1、…

PostgreSQL 插入、选择、更新、删除数据

&#xff08;1&#xff09;插入与选择操作 向表中插入数据主要是使用insert语句&#xff0c;结构如下所示&#xff1a; INSERT INTO 表名 (列名) VALUES &#xff08;具体值);这里需要注意的是&#xff1a;要使用单引号&#xff0c;单引号在 SQL 中用于定义字符串字面量&…

git进阶--1---HEAD、工作树和索引之间的区别与联系

git进阶–1—HEAD、工作树和索引之间的区别与联系 1. HEAD git中可以有很多的分支&#xff0c;本质都是一个指向commit对象的可变指针&#xff0c;HEAD是一个特别的指针&#xff0c;始终指向正在工作中的本地分支的指针&#xff0c;一句话&#xff0c;你当前处在哪个分支&…

人工智能搜索的层级发展趋势:从信息检索到智能决策

##引言 随着信息爆炸时代的来临&#xff0c;人们对搜索的需求不再仅仅停留在简单的关键词匹配。 人工智能&#xff08;AI&#xff09;技术的进步为搜索领域带来了革命性的变革&#xff0c;基于AI的搜索方式能够更智能地理解用户意图&#xff0c;提供更精准、更高效的搜索结果…

ZK-ALU-在有限域上实现左移

先看在实数域上实现左移, 再看在有限域上的实现 左移-整数 计算机中的左移计算&#xff08;<< 操作&#xff09;通常由处理器的硬件电路直接支持&#xff0c;因此效率非常高。在编程语言中&#xff0c;左移操作可以通过位移运算符&#xff08;例如 C/C 中的 <<&a…

ros 创建Topic

1、确定话题名称和消息类型 自定义话题名称&#xff0c;消息类型根据发送消息需要从std_msgs中查找确定 2、在main函数中通过NodeHander发布话题 // 创建一个NodeHandle对象&#xff0c;用于与ROS系统进行交互ros::NodeHandle nh;// 创建一个Publisher对象&#xff0c;用于发…

【算法】动态规划专题② ——LIS(最长递增子序列) python

目录 前置知识问题描述DP解法小试牛刀举一反三实战演练总结 前置知识 【算法】动态规划专题① ——线性DP python 问题描述 题目是说&#xff1a; 给定一个整数数组&#xff0c;找到其中最长的严格递增子序列的长度。&#xff08;子序列不要求连续&#xff09; 比如说&#xf…