码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【毕业设计】31-基于单片机的农业蔬菜大棚温度自动控制系统设计(原理图工程+源码工程+仿真工程+答辩论文+答辩PPT)



    typora-root-url: ./

    【毕业设计】31-基于单片机的农业蔬菜大棚温度自动控制系统设计(原理图工程+源码工程+仿真工程+答辩论文+答辩PPT)

    文章目录

      • typora-root-url: ./
    • 【毕业设计】31-基于单片机的农业蔬菜大棚温度自动控制系统设计(原理图工程+源码工程+仿真工程+答辩论文+答辩PPT)
      • 任务书
      • 设计说明书
        • 摘要
        • 设计框架架构
        • 设计说明书及设计文件
        • 源码展示

    任务书

    基于单片机作为控制器,利用温度传感器等采集大棚温度,并结合其它元器件,设计一个农业大棚温度自动控制系统,实现对棚内温度的设定、采集、检测、控制、报警、调节等功能。

    1、提出农业大棚温度自动控制系统的总体设计方案;

    2、对系统的进行硬件、软件设计;

    3、应用Proteus软件对系统进行仿真验证。

    资料链接

    设计说明书

    摘要

    系统设计上,首先对系统分析确定系统需要实现的功能,确定系统框架选择适合本次系统的元器件。根据各方面的分析和对比,本设计选择STC89C51单片机作为控制器,温度传感器为DS18B20,当温度超出设置上下限阀值,则系统报警并启动继电器进行温度控制。系统的人机交互使用独立按键实现对温度的调节,使用LCD1602液晶显示器显示系统的各项信息。软件设计采用Keil平台,C语言进行编程,最后使用Proteus软件对系统模拟仿真。仿真结果表明,本次系统能够实现对温度的检测,并且可以通过按键来调节温度阀值,保证当温度超过设定范围后报警,并开启继电器控制升降温设备,满足设计需求。

    设计框架架构

    前 言… 1

    第一章 农业大棚温度控制系统的概述… 3

    第一节 系统的研究背景及现状… 3

    一、研究背景… 3

    二、研究现状… 3

    第二节 系统的研究意义… 4

    第三节 本文主要研究的内容… 4

    第四节 本章小结… 5

    第二章 农业大棚温度控制系统设计方案… 6

    第一节 系统功能及系统指标分析… 6

    一、系统功能分析… 6

    二、系统的设计指标要求… 6

    第二节 系统设计方案的确定… 7

    一、主控芯片选择… 7

    二、温度传感器选择… 8

    三、显示器选择… 9

    四、电机选择… 9

    第三节 系统结构总框图… 10

    第四节 本章小结… 10

    第三章 系统的硬件电路设计… 11

    第一节 单片机最小系统电路设计… 11

    一、单片机介绍… 11

    二、单片机最小系统设计… 12

    第二节 电源电路设计… 13

    第三节 按键电路设计… 13

    第四节 继电器电路设计… 15

    第五节 LCD液晶显示电路设计… 16

    第六节 DS18B20电路设计… 17

    第七节 报警电路设计… 18

    第八节 系统总电路图… 19

    第九节 本章小结… 19

    第四章 农业大棚温度自动控制系统软件设计… 20

    第一节 Keil软件介绍… 20

    第二节 系统的主程序设计… 20

    第三节 按键子程序设计… 21

    第四节 继电器控制程序设计… 22

    第五节 DS18B20程序设计… 24

    第六节 LCD显示程序设计… 24

    第七节 本章小结… 25

    第五章 农业大棚温度自动控制系统的仿真 26

    第一节 仿真软件介绍… 26

    第二节 仿真系统电路搭建与调试… 26

    一、用Proteus搭建仿真总图… 26

    二、用Keil对程序进行调试、编译… 28

    第三节 系统功能测试… 29

    一、系统功能测试… 29

    二、系统的指标参数… 33

    第四节 本章小结… 34

    结 论… 35

    致 谢… 36

    参考文献… 37

    附 录… 38

    一、英文原文… 38

    二、英文翻译… 42

    三、程序源码… 46

    设计说明书及设计文件

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    源码展示

    //程序头函数
    #include 
    //显示函数
    #include 
    //宏定义
    #define uint unsigned int 
    #define uchar unsigned char 
    //管脚声明
    sbit jdq= P2^4;	//继电器
    sbit Feng = P1^1; //蜂鸣器
    //按键
    sbit Key1=P1^3;	 //设置
    sbit Key2=P1^4;	 //加
    sbit Key3=P1^5;	 //减
    sbit Key4=P1^6;	 //确定
    sbit pwm = P1^2; 
    uchar f_pwm_l ;	
    sbit DQ=P1^0;     			//定义DS18B20总线I/O
    signed char w,bj,bjx,bjd;     				//温度值全局变量
    uint c;				//温度值全局变量
    bit bdata flag=0,flag_BJ,flag_off=1;
    //时间计算
    #define Imax 14000    //此处为晶振为11.0592时的取值, 
    #define Imin 8000    //如用其它频率的晶振时,
    #define Inum1 1450    //要改变相应的取值。
    #define Inum2 700 
    #define Inum3 3000 
    //解码变量
    unsigned char Im[4]={0x00,0x00,0x00,0x00};
    //全局变量
    uchar f;
    unsigned long m,Tc;
    unsigned char IrOK;
    //设置变量
    uchar xx=20;
    //下限
    uchar sx=30;
    //上限
    int ds=0;
    uchar Mode=0;
    void delay(uint z)
    {
    	uint i,j;
    	for(i=0;i0;i--)
      {
        DQ = 0;     // 给脉冲信号
        dat>>=1;
        DQ = 1;     // 给脉冲信号
        if(DQ)
        dat|=0x80;
        Delay_DS18B20(4);
      }
      return(dat);
    }
    /*****写一个字节*****/
    void WriteOneChar(unsigned char dat)
    {
      unsigned char i=0;
      for (i=8; i>0; i--)
      {
        DQ = 0;
        DQ = dat&0x01;
        Delay_DS18B20(5);
        DQ = 1;
        dat>>=1;
      }
    }
    /*****读取温度*****/
    unsigned int Read Temperature(void)
    {
      unsigned char a=0;
      unsigned char b=0;
      unsigned int t=0;
      float tt=0;
      Init_DS18B20();
      Write One Char(0xCC);  //跳过读序号列号的操作
      Write One Char(0x44);  //启动温度转换
      Init_DS18B20();
      Write One Char(0xCC);  //跳过读序号列号的操作
      Write One Char(0xBE);  //读取温度寄存器
      a=Read One Char();     //读低8位
      b=Read One Char();    //读高8位
      t=b;
      t<<=8;
      t=t|a;
      tt=t*0.0625;
      t= tt*10+0.5;     //放大10倍输出并四舍五入
      return(t);
    }
    /*****读取温度*****/
    void check_wendu(void)
    {
    	c=Read Temperature()-5;  			//获取温度值并减去DS18B20的温漂误差
    	w=c/10;      						//计算得到整数位
    	if(w<0){w=0;}   				//设置温度显示上限
    	if(w>99){w=99;}   				//设置温度显示上限    
    }
    void Key()
    {
    	//模式选择
    	if(Key1==0)
    	{
    		while(Key1==0);
    		Feng=0;
    		Mode++;
    		Display_wd();
    		if(Mode==4)
    		{
    			Mode=1;
    			Feng=1;
    		}
       		write_com(0x38);//屏幕初始化
       		write_com(0x0d);//打开显示 无光标 光标闪烁
       		write_com(0x06);//当读或写一个字符是指针后一一位
    		switch(Mode)
    		{
    			case 1:
    			{
    				write_com(0x80+15);//位置
    				Feng=1;
    				break;
    			}
    			case 2:
    			{
    				write_com(0x80+0x40+5);//位置
    				Feng=1;
    				break;
    			}
    			case 3:
    			{
    				write_com(0x80+0x40+14);//位置
    				Feng=1;
    				break;
    			}
    		}
    	}
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
  • 相关阅读:
    linux基础 - 内核的基础概念
    java 实现原型模式
    万邦京东获得JD商品详情 API 返回值说明
    前端缓存方法有哪些?cookie有哪些属性?
    【漏洞库】Fastjson_1.2.47_rce
    智能无人驿站系统小程序
    【linux kernel】以tftp方式启动linux内核
    SpringBoot+poi实现读取word文件内容
    3.5 Android gpu_mem ebpf程序设计原理(一)
    柯西矩阵介绍
  • 原文地址:https://blog.csdn.net/qq_22592979/article/details/128090922
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号