news 2026/6/7 7:47:42

基于单片机大棚环境控制(温湿度,PH值)系统Proteus仿真(含全部资料)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于单片机大棚环境控制(温湿度,PH值)系统Proteus仿真(含全部资料)

全套资料包含:Proteus仿真源文件+keil C语言源程序+AD原理图+流程图+元器件清单+说明书等

资料下载:↓↓↓

通过网盘分享的文件:资料分享
链接:百度网盘 请输入提取码提取码: tgnu


目录

资料下载:

Proteus仿真功能

项目文件资料:

一、Proteus仿真源文件

二、AD原理图文件

二、报告说明书

三、系统流程图

四、Keil c语言程序源代码


项目功能:

运用单片机、DS18B20温度传感器、湿度传感器、PH传感器、继电器和电机、数码管显示模块等器件,设计了温度报警电路、电机驱动电路、电热器驱动电路,具有按键设置温度、湿度、PH阈值上限、下限阈值,超阈值自动调整和报警,实现了大棚中温度、PH值自动控制与报警系统。


项目文件:

一、Proteus仿真源文件

​​

二、AD原理图文件

二、报告说明书

三、系统流程图

​​

四、器件清单

元件型号数量
单片机AT89C511
电容10uf1
电容30pf2
晶振12MHZ1
电阻10k7
按钮4
温度传感器DS18B201
模数芯片ADC08042
电位器1k2
LED红色3
LED绿色3
LED黄色2
电阻100欧6
电阻1k4
三极管NPN4
蜂鸣器有源1
数码管6位共阴1
排阻10k1
串转并芯片74LS5951
锁存器74LS59732
继电器5V3
电容150pf2
电机M4QA0451

五、Keil c语言程序源代码(部分)

#include "reg51.h" #include "74hc595.h" #include"ADC0808.h" #include"Ds18b20.h" #define uchar unsigned char #define uint unsigned int sbit out1=P3^0;//洒水 sbit beep=P2^3;//蜂鸣器 sbit wei=P3^3;//数码管 sbit duan=P3^2; sbit k1=P2^6;//按钮 sbit k2=P3^4; sbit k3=P3^5; //数码管编码 uchar code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar time=0,mode=0;//系统变量 uchar ph=0,ph1=5,ph2=9;//ph值 uchar humi=0,humi1=40,humi2=90;//湿度 uchar wendu=0,wendu1=10,wendu2=70;//温度 uchar out595=0x3f;//595数据 //延时 void delay(uint i) { while(i--); } void main()//主函数 { uchar k=0; out1=0; beep=0; //初始化引脚 adc0808_init(); Hc595SendByte(out595); TMOD|=0X01; TH0=0X3C; TL0=0XB0; ET0=1;//打开定时器0中断允许 EA=1;//打开总中断 TR0=1;//打开定时器 while(1) { //按钮功能 if(!k1 &&(k!=1)) //设置 { k=1; if(mode<6) mode++; else mode=0; } if(!k2 && (k!=2))//加 { k=2; switch(mode) { case 1: if(wendu1<wendu2) wendu1++; break; case 2: if(wendu2<99) wendu2++; break; case 3: if(ph1<ph2) ph1++; break; case 4: if(ph2<14) ph2++; break; case 5: if(humi1<humi2) humi1++; break; case 6: if(humi2<99) humi2++; } } if(!k3 && (k!=3))//减 { k=3; switch(mode) { case 1: if(wendu1>0) wendu1--; break; case 2: if(wendu2>wendu1) wendu2--; break; case 3: if(ph1>0) ph1--; break; case 4: if(ph2>ph1) ph2--; break; case 5: if(humi1>0) humi1--; break; case 6: if(humi2>humi1) humi2--; } } if(k1 && k2 && k3) k=0; //显示 if(mode==0)//正常显示 { P0=0xff;//消隐 wei=1; wei=0; P0=smgduan[wendu/10];//温度 duan=1; duan=0; P0=0xfe; wei=1; wei=0; delay(100); P0=0xff;//消隐 wei=1; wei=0; P0=smgduan[wendu%10]+0x80;//温度 duan=1; duan=0; P0=0xfd; wei=1; wei=0; delay(100); P0=0xff;//消隐 wei=1; wei=0; P0=smgduan[ph/10];//PH duan=1; duan=0; P0=0xfb; wei=1; wei=0; delay(100); P0=0xff;//消隐 wei=1; wei=0; P0=smgduan[ph%10]+0x80;//PH duan=1; duan=0; P0=0xf7; wei=1; wei=0; delay(100); P0=0xff;//消隐 wei=1; wei=0; P0=smgduan[humi/10];//湿度 duan=1; duan=0; P0=0xef; wei=1; wei=0; delay(100); P0=0xff;//消隐 wei=1; wei=0; P0=smgduan[humi%10];//湿度 duan=1; duan=0; P0=0xdf; wei=1; wei=0; delay(100); } if(mode==1)//温度下限设置 { P0=0xff;//消隐 wei=1; wei=0; P0=0x31; duan=1; duan=0; P0=0xfe; wei=1; wei=0; delay(100); P0=0xff;//消隐 wei=1; wei=0; P0=0x38; duan=1; duan=0; P0=0xfd; wei=1; wei=0; delay(100); P0=0xff;//消隐 wei=1; wei=0; P0=smgduan[wendu1/10]; duan=1; duan=0; P0=0xf7; wei=1; wei=0; delay(100); P0=0xff;//消隐 wei=1; wei=0; P0=smgduan[wendu1%10]; duan=1; duan=0; P0=0xef; wei=1; wei=0; delay(100); P0=0xff;//消隐 wei=1; wei=0; P0=0x39; duan=1; duan=0; P0=0xdf; wei=1; wei=0; delay(100); } if(mode==2)//温度上限设置 { P0=0xff;//消隐 wei=1; wei=0; P0=0x31; duan=1; duan=0; P0=0xfe; wei=1; wei=0; delay(100); P0=0xff;//消隐 wei=1; wei=0; P0=0x76; duan=1; duan=0; P0=0xfd; wei=1; wei=0; delay(100); P0=0xff;//消隐 wei=1; wei=0; P0=smgduan[wendu2/10]; duan=1; duan=0; P0=0xf7; wei=1; wei=0; delay(100); P0=0xff;//消隐 wei=1; wei=0; P0=smgduan[wendu2%10]; duan=1; duan=0; P0=0xef; wei=1; wei=0; delay(100); P0=0xff;//消隐 wei=1; wei=0; P0=0x39; duan=1; duan=0; P0=0xdf; wei=1; wei=0; delay(100); } if(mode==3)//PH下限设置 { P0=0xff;//消隐 wei=1; wei=0; P0=0x73; duan=1; duan=0; P0=0xfe; wei=1; wei=0; delay(100); P0=0xff;//消隐 wei=1; wei=0; P0=0x76; duan=1; duan=0; P0=0xfd; wei=1; wei=0; delay(100); P0=0xff;//消隐 wei=1; wei=0; P0=0x38; duan=1; duan=0; P0=0xfb; wei=1; wei=0; delay(100); P0=0xff;//消隐 wei=1; wei=0; P0=smgduan[ph1/10]; duan=1; duan=0; P0=0xef; wei=1; wei=0; delay(100); P0=0xff;//消隐 wei=1; wei=0; P0=smgduan[ph1%10]; duan=1; duan=0; P0=0xdf; wei=1; wei=0; delay(100); } if(mode==4)//PH上限设置 { P0=0xff;//消隐 wei=1; wei=0; P0=0x73; duan=1; duan=0; P0=0xfe; wei=1; wei=0; delay(100); P0=0xff;//消隐 wei=1; wei=0; P0=0x76; duan=1; duan=0; P0=0xfd; wei=1; wei=0; delay(100); P0=0xff;//消隐 wei=1; wei=0; P0=0x76; duan=1; duan=0; P0=0xfb; wei=1; wei=0; delay(100); P0=0xff;//消隐 wei=1; wei=0; P0=smgduan[ph2/10]; duan=1; duan=0; P0=0xef; wei=1; wei=0; delay(100); P0=0xff;//消隐 wei=1; wei=0; P0=smgduan[ph2%10]; duan=1; duan=0; P0=0xdf; wei=1; wei=0; delay(100); } if(mode==5)//湿度下限设置 { P0=0xff;//消隐 wei=1; wei=0; P0=0x76; duan=1; duan=0; P0=0xfe; wei=1; wei=0; delay(100); P0=0xff;//消隐 wei=1; wei=0; P0=0x38; duan=1; duan=0; P0=0xfd; wei=1; wei=0; delay(100); P0=0xff;//消隐 wei=1; wei=0; P0=smgduan[humi1/10]; duan=1; duan=0; P0=0xef; wei=1; wei=0; delay(100); P0=0xff;//消隐 wei=1; wei=0; P0=smgduan[humi1%10]; duan=1; duan=0; P0=0xdf; wei=1; wei=0; delay(100); } if(mode==6)//湿度上限设置 { P0=0xff;//消隐 wei=1; wei=0; P0=0x76; duan=1; duan=0; P0=0xfe; wei=1; wei=0; delay(100); P0=0xff;//消隐 wei=1; wei=0; P0=0x76; duan=1; duan=0; P0=0xfd; wei=1; wei=0; delay(100); P0=0xff;//消隐 wei=1; wei=0; P0=smgduan[humi2/10]; duan=1; duan=0; P0=0xef; wei=1; wei=0; delay(100); P0=0xff;//消隐 wei=1; wei=0; P0=smgduan[humi2%10]; duan=1; duan=0; P0=0xdf; wei=1; wei=0; delay(100); } } } //定时器中断 void Timer0() interrupt 1 { uint i; uchar j=0; if(time<10)//0.5s time++; else { time=0; Ds18b20ReadTemp();//测量温度 wendu=ds18b20_temp; i=adc0808_read(1);//测量PH值 ph=i*14/255; i=adc0808_read(0);//测量湿度 humi=i*99/255; i=0; j=0; //蜂鸣器控制 if(wendu>wendu2)//温度高于上限 { i++; out595=out595 & 0xdf; out595=out595 | 0x40; } else { out595=out595 & 0xbf; out595=out595 | 0x20; } if(wendu<wendu1)//温度低于下限 { i++; out595=out595 & 0xef; out595=out595 | 0x80; } else { out595=out595 & 0x7f; out595=out595 | 0x10; } if(humi>humi2) //湿度高于上限 { i++; out595=out595 & 0xfd; } else { out595=out595 | 0x02; } if(humi<humi1) //湿度低于下限 { i++; j++; out595=out595 & 0xfe; } else { out595=out595 | 0x01; } if(ph>ph2) //PH高于上限 { i++; j++; out595=out595 & 0xf7; } else { out595=out595 | 0x08; } if(ph<ph1) //PH低于下限 { j++; out595=out595 & 0xfb; } else { out595=out595 | 0x04; } Hc595SendByte(out595); if(i>0) beep=1; else beep=0; if(j>0)//洒水控制 out1=1; else out1=0; } TH0=0X3C; TL0=0XB0; }

六、全套资料包含

​​

七:项目资源获取

需要完整的资料可以点击下面的名片关注,回复“资料”!

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/6 3:59:37

NVIDIA Profile Inspector完全攻略:释放显卡隐藏性能

NVIDIA Profile Inspector完全攻略&#xff1a;释放显卡隐藏性能 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector NVIDIA Profile Inspector是一款能够深度挖掘NVIDIA显卡性能的利器。与官方控制面板相比…

作者头像 李华
网站建设 2026/6/7 23:01:37

腾讯用“LLM+GNN“双剑合璧,广告推荐GMV暴涨2.8%!小白也能学会的冷启动解决方案

摘要 传统的广告召回单一模型往往难以有效平衡“语义精准”与“关系覆盖”、“冷启动”与“实时性”之间的结构性矛盾。为应对这一挑战&#xff0c;腾讯广告技术团队提出了融合 LLM 与 GNN 的创新方案&#xff0c;采用“GNN挖掘关系、LLM解析语义”的协同机制。 该方案既保留了…

作者头像 李华
网站建设 2026/6/7 14:22:23

B站视频智能转文字工具:让视频内容轻松变文本

B站视频智能转文字工具&#xff1a;让视频内容轻松变文本 【免费下载链接】bili2text Bilibili视频转文字&#xff0c;一步到位&#xff0c;输入链接即可使用 项目地址: https://gitcode.com/gh_mirrors/bi/bili2text 还在为手动记录视频内容而烦恼吗&#xff1f;每天面…

作者头像 李华
网站建设 2026/6/7 10:46:18

Wan2.2-T2V-A14B已被纳入高校数字艺术课程教学案例库

Wan2.2-T2V-A14B已被纳入高校数字艺术课程教学案例库 在数字内容创作门槛不断降低的今天&#xff0c;一个学生只需输入“敦煌飞天在星空中起舞&#xff0c;衣袂飘飘如云卷云舒”&#xff0c;几秒钟后就能看到一段流畅、细腻、极具东方美学意境的视频片段——这不再是科幻场景&a…

作者头像 李华
网站建设 2026/6/7 18:07:46

GPT-5.2:人工智能的创造力,能否超越人类的想象力?

AI与人类创作的对比 随着GPT-5.2的发布&#xff0c;人工智能在创作领域的表现让人惊叹不已。从写作到设计&#xff0c;再到音乐和艺术创作&#xff0c;GPT-5.2的能力不断扩展&#xff0c;令人不禁思考&#xff1a;人工智能的创造力&#xff0c;真的能够超越人类的想象力吗&…

作者头像 李华
网站建设 2026/6/8 1:21:14

R语言量子计算模拟资源稀缺曝光:仅剩5个开源包可实战,别再错过

第一章&#xff1a;R语言量子计算模拟的现状与挑战随着量子计算研究的不断深入&#xff0c;传统编程语言在模拟量子系统中的作用日益凸显。R语言作为统计计算与数据可视化的主流工具&#xff0c;近年来也被尝试用于量子态模拟和基础量子算法实现。尽管其并非专为高性能数值计算…

作者头像 李华