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文章来源:https://www.toymoban.com/news/detail-447883.html
设计说明书及设计文件
文章来源地址https://www.toymoban.com/news/detail-447883.html
源码展示
//程序头函数
#include <reg52.h>
//显示函数
#include <display.h>
//宏定义
#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;i<z;i++)
for(j=0;j<121;j++);
}
/*****延时子程序*****/
void Delay_DS18B20(int num)
{
while(num--) ;
}
/*****初始化DS18B20*****/
void Init_DS18B20(void)
{
unsigned char x=0;
DQ = 1; //DQ复位
Delay_DS18B20(8); //稍做延时
DQ = 0; //单片机将DQ拉低
Delay_DS18B20(80); //精确延时,大于480us
DQ = 1; //拉高总线
Delay_DS18B20(14);
x = DQ; //稍做延时后,如果x=0则初始化成功,x=1则初始化失败
Delay_DS18B20(20);
}
/*****读一个字节*****/
unsigned char ReadOneChar(void)
{
unsigned char i=0;
unsigned char dat = 0;
for (i=8;i>0;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;
}
}
}
到了这里,关于【毕业设计】31-基于单片机的农业蔬菜大棚温度自动控制系统设计(原理图工程+源码工程+仿真工程+答辩论文+答辩PPT)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!