【Proteus51单片机仿真】YL-69湿度检测和继电器电机自启动

目录

一、主要功能

二、硬件资源

三、程序编程

四、实现现象


一、主要功能

基于AT89C51单片机,湿度检测模块通过ADC0832数模转换器,将模拟信号转换为数字信号给单片机,然后通过LCD1602显示屏显示出当前的湿度值,并判断当前湿度值是否大于60%,若大于60%则P2.6输出低电平,电机1启动,若处于60%以下,则P2.7输出低电平,电机2启动,此时电机12同时进行工作,到达用户预设的50%即停机结束工作。

仿真图:

二、硬件资源

基于KEIL5编写C++代码,PROTEUS8.15进行仿真,全部资源在页尾,提供安装包。

本系统由51单片机最小系统、LCD1602显示模块、继电器电机、YL-69湿度传感器组成。

三、程序编程

  1. #include <REGX52.H>
  2. #include<intrins.h>
  3. #include<stdio.h>
  4. #include "Delay.h"
  5. #include "LCD1602.h"
  6. #define uchar unsigned char
  7. #define uint unsigned int
  8. typedef unsigned char u8;
  9. typedef unsigned int u16;
  10. typedef unsigned char uint8;
  11. typedef unsigned int uint16;
  12. typedef unsigned long uint32;
  13. /*引脚定义*/
  14. sbit CS=P1^0; //51单片机引脚设置
  15. sbit CLK=P1^1;
  16. sbit DIO=P1^2;
  17. sbit motor1 = P2^6; //电机1口
  18. sbit motor2 = P2^7; //电机2口
  19. /*变量定义*/
  20. static int MAXNUMBER = 60,MINNUMBER = 50;
  21. static uchar u,U,R;
  22. static int flag;
  23. /*函数定义*/
  24. void watermotorpd();
  25. uchar get_AD_Res() //ADC0832启动读取函数
  26. {
  27. uchar i, data1=0, data2=0;
  28. CS=0;
  29. CLK=0;DIO=1;_nop_();
  30. CLK=1;_nop_();
  31. CLK=0;DIO=1;_nop_();
  32. CLK=1;_nop_();
  33. CLK=0;DIO=0;_nop_();
  34. CLK=1;_nop_();
  35. CLK=0;DIO=1;_nop_();
  36. for(i=0; i<8; i++)
  37. {
  38. CLK=1;_nop_();
  39. CLK=0;_nop_();
  40. data1=(data1<<1)|(uchar)DIO;
  41. }
  42. for(i=0; i<8; i++)
  43. {
  44. data2=data2|(uchar)DIO<<i;
  45. CLK=1;_nop_();
  46. CLK=0;_nop_();
  47. }
  48. CS=1;
  49. return(data1 == data2)?data1:0;
  50. }
  51. void main() //主函数
  52. {
  53. LCD_Init(); //显示屏初始化
  54. motor1 = 1;
  55. motor2 = 1;
  56. LCD_ShowString(1,1,"HUM:");
  57. LCD_ShowString(1,8,"%");
  58. LCD_ShowString(2,1,"CURRENT HUM:");
  59. LCD_ShowString(2,16,"%");
  60. while(1)
  61. {
  62. u=get_AD_Res(); //读取ADC0832的值
  63. u= u/2;
  64. if(u <= 50)
  65. {
  66. u = 50;
  67. }
  68. LCD_ShowNum(2,13,u,3);//通过LCD1602显示湿度的值
  69. LCD_ShowNum(1,5,MAXNUMBER,3);//通过LCD1602显示湿度的值
  70. watermotorpd(); //电机判断
  71. if(flag == 1)
  72. {
  73. motor1 = 0; //电机1转动
  74. motor2 = 1;
  75. }
  76. else if(flag == 2)
  77. {
  78. motor1 = 0;//电机1转动
  79. motor2 = 0;//电机2转动
  80. }
  81. if(u <= MINNUMBER)
  82. {
  83. motor1 =1;
  84. motor2 =1;
  85. }
  86. }
  87. }
  88. void watermotorpd()
  89. {
  90. if(u > MAXNUMBER)
  91. {
  92. flag = 1;
  93. }
  94. else if( MINNUMBER < u <= MAXNUMBER)
  95. {
  96. flag = 2;
  97. }
  98. else
  99. {
  100. flag =3;
  101. }
  102. }

四、实现现象

具体动态效果看B站演示视频:

基于AT89C52单片机的湿度检测及自动电机驱动_哔哩哔哩_bilibili

全部资料(源程序、仿真文件、安装包、演示视频):

链接:https://pan.baidu.com/s/1SUIep4_ZyOQJ_g4lsudL_w 
提取码:hzze 
--来自百度网盘超级会员V4的分享

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

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

相关文章

laravel 11 区分多模块的token

数据表&#xff1a;用户表&#xff08;users&#xff09;、管理员表&#xff08;admin_user&#xff09;&#xff0c; 配置bootstrap/app.php guards > [web > [driver > session,provider > admin_users,],home > [driver > sanctum,provider > users,]…

CSS 常用元素属性

CSS 属性有很多, 可以参考文档 CSS 参考手册 1. 字体属性 设置字体 多个字体之间使用逗号分隔. (从左到右查找字体, 如果都找不到, 会使用默认字体. )如果字体名有空格, 使用引号包裹.建议使用常见字体, 否则兼容性不好. <style>.one {font-family:"Microsoft Ya…

Machine Learning: A Probabilistic Perspective 机器学习:概率视角 PDF免费分享

下载链接在博客最底部&#xff01;&#xff01; 之前需要参考这本书&#xff0c;但是大多数博客都是收费才能下载本书。 在网上找了好久才找到免费的资源&#xff0c;浪费了不少时间&#xff0c;在此分享以节约大家的时间。 链接: https://pan.baidu.com/s/1erFsMcVR0A_xT4fx…

无人机遂行编队飞行中的纯方位无源定位(2022数模国赛B题)

文章目录 论文项目地址 数模国赛前的练手题&#xff0c;实力不够&#xff0c;参考了好多论文才写出来&#xff0c;个人感觉思路应该没什么大问题&#xff0c;供大家参考 论文 项目地址 github&#xff1a;UAVFormationFlight gitee&#xff1a;UAVFormationFlight 项目包含 完…

指针式仪表识别

源码下载&#xff1a;小宅博客网 效果如下&#xff1a; 工程结构&#xff1a; 说明&#xff1a; 源码是针对下面这种刻度&#xff0c;并且单个指针的仪表的 如果是下面这种&#xff0c;刻度线被连接起来的&#xff0c;目前不支持转换成仪表单位&#xff0c;只能输出指针角度&…

探索自动化的魔法:Python中的pyautogui库

文章目录 探索自动化的魔法&#xff1a;Python中的 pyautogui 库背景&#xff1a;为什么选择pyautogui&#xff1f;pyautogui是什么&#xff1f;如何安装pyautogui&#xff1f;五个简单的库函数使用方法场景应用常见Bug及解决方案总结 探索自动化的魔法&#xff1a;Python中的 …

【Linux】 LTG:移动硬盘部署Ubuntu24.04

Ubuntu To Go 是一种便携式的 Ubuntu 操作系统解决方案&#xff0c;允许用户将 Ubuntu 系统安装在 USB 驱动器或其他可移动存储设备上。这样&#xff0c;用户可以在任何支持 USB 启动的计算机上运行 Ubuntu&#xff0c;而无需在本地硬盘上进行安装。 准备工作 移动硬盘&#x…

C++初阶:string类的模拟实现

✨✨小新课堂开课了&#xff0c;欢迎欢迎~✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;C&#xff1a;由浅入深篇 小新的主页&#xff1a;编程版小新-CSDN博客 前言&#xff1a; 前面已经对string类进行了…

7系列FPGA HR/HP I/O区别

HR High Range I/O with support for I/O voltage from 1.2V to 3.3V. HP High Performance I/O with support for I/O voltage from 1.2V to 1.8V. UG865&#xff1a;Zynq-7000 All Programmable SoC Packaging and Pinout

企业四要素核验是什么?如何应用

企业四要素核验是指对企业名称、社会统一信用代码&#xff08;或注册号&#xff09;、法人名称以及法人身份证号码等四项关键信息进行核验的过程。这一核验步骤是确保企业信息真实性和合法性的重要手段&#xff0c;广泛应用于各个行业领域&#xff0c;以防范企业身份被冒用、欺…

Android 车联网——CarProperty使用实例(二十三)

在熟悉了 Car 下的相关 Manager 和 Service 后,这里我们通过需求来实现 CarProperty 的使用实例。 一、使用实例 1、需求分析 假如有这样一个需求,需要封装一个 SDK 为 APP 提供车辆信息、空调状态以及驾驶信息等相关属性的值及变化情况。这里我们首先需要确认各种属性对应…

JVM锁的优化与逃逸分析

锁消除 是指JVM即时编译器在运行时&#xff0c;对一些代码上要求同步&#xff0c;但是被检测到不可能存在共享数据竞争的锁进行消除。锁消除的主要判定依据来源于逃逸分析的数据支持。JIT&#xff08;Just-In-Time&#xff0c;即时编译&#xff09;&#xff1a;是一种在程序运…

【STM32 Blue Pill编程】-定时器计数模式

定时器计数模式 文章目录 定时器计数模式1、定时器计数模式介绍2、硬件准备及接线3、模块配置3.1 定时器计数模式配置3.2 定时器中断配置3.3 串口配置4、代码实现在本文中,我们将讨论如何在计数器模式下配置 STM32 Blue Pill 定时器模块。 要将定时器用作计数器,我们将其配置…

【mechine learning-六-supervise learning之线性回归模型】

监督学习之线性回归模型 线性回归模型线性模型回归模型 如何使用线性模型实现智能化预测呢寻找数据训练模型输入、特征、目标、预测值、模型代价函数 线性模型是人工智能监督学习中最广泛的应用&#xff0c;所以有必要先学习一下这个基础模型&#xff0c;做好基石。 线性回归模…

在 CentOS 中永久关闭防火墙的步骤

在 CentOS 中永久关闭防火墙的步骤 在 CentOS 系统中&#xff0c;防火墙通常由 firewalld 服务管理。如果你希望在系统中永久关闭防火墙&#xff0c;可以按照以下步骤操作&#xff1a; 1. 停止防火墙服务 首先&#xff0c;你需要停止当前正在运行的防火墙服务。可以使用以下…

猎板PCB大讲堂:IPHONE16的线路板的升级猜测

iPhone 16 系列与 iPhone 15 系列在 PCB (印刷电路板) 设计上的主要差异可能体现在材料和技术上。根据 TrendForce 的分析&#xff0c;iPhone 16 预计将采用树脂涂覆铜箔&#xff08;RCC&#xff09;作为新的印刷电路板&#xff08;PCB&#xff09;材料&#xff0c;这一改变将使…

使用 ShuffleNet 模型在 CIFAR-100 数据集上的图像分类

简介 在深度学习领域&#xff0c;图像分类任务是衡量算法性能的重要基准。本文将介绍我们如何使用一种高效的卷积神经网络架构——ShuffleNet&#xff0c;来处理 CIFAR-100 数据集上的图像分类问题。 CIFAR-100 数据集简介 CIFAR-100 数据集是一个广泛使用的图像分类数据集&…

QT的绘画事件和网络通信

画一个时钟 #include "widget.h" #include "ui_widget.h" #include <QPainter> #include <QDebug> #include <QTime> #include <QTimer>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(…

11_跳表(Skip List)

菜鸟: 老鸟&#xff0c;我最近在处理一个数据操作的时候遇到了性能问题。我在一个有序数组中查找元素&#xff0c;发现查找速度有点慢&#xff0c;尤其是数据量大的时候。你有什么好的建议吗&#xff1f; 老鸟: 这是个好问题&#xff0c;有许多数据结构可以优化查找操作。你听…

Python爱心射线(完整代码)

目录 系列目录 写在前面​ 完整代码 下载代码 代码分析 写在后面 系列目录 序号直达链接表白系列1Python制作一个无法拒绝的表白界面2Python满屏飘字表白代码3