news 2026/6/10 22:46:49

基于单片机大棚环境控制(温湿度,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/10 17:18:13

Blender 3MF插件终极完整教程:从零基础到精通应用

Blender 3MF插件终极完整教程&#xff1a;从零基础到精通应用 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 快速上手&#xff1a;一键安装配置指南 插件获取与安装 要…

作者头像 李华
网站建设 2026/6/10 9:31:59

揭秘量子算法在VSCode中的性能瓶颈:3步实现运行效率翻倍

第一章&#xff1a;量子算法的 VSCode 性能分析在开发和调试量子算法时&#xff0c;集成开发环境&#xff08;IDE&#xff09;的性能直接影响研发效率。Visual Studio Code&#xff08;VSCode&#xff09;因其轻量级架构和强大的扩展生态系统&#xff0c;成为量子计算开发者常用…

作者头像 李华
网站建设 2026/6/10 9:32:50

医疗健康AI Agent:开发难点与突破

医疗健康AI Agent&#xff1a;开发难点与突破关键词&#xff1a;医疗健康、AI Agent、开发难点、技术突破、医疗应用摘要&#xff1a;本文聚焦于医疗健康AI Agent的开发&#xff0c;深入探讨了其在医疗领域应用的背景、核心概念、算法原理、数学模型等方面的内容。详细分析了开…

作者头像 李华
网站建设 2026/6/10 11:11:21

阿里云Qwen3重大版本革新:分离式训练技术引领开源大模型性能突破

2025年7月21日&#xff0c;阿里云通义千问团队在AI领域投下重磅炸弹——正式发布Qwen3系列的里程碑版本Qwen3-235B-A22B-Instruct-2507-FP8。这款经过全面升级的旗舰模型不仅在核心性能指标上超越了Kimi-K2、DeepSeek-V3等当前开源领域的标杆产品&#xff0c;更在部分关键能力上…

作者头像 李华