基于单片机的智能微喷灌控制系统毕业设计论文.docx
《基于单片机的智能微喷灌控制系统毕业设计论文.docx》由会员分享,可在线阅读,更多相关《基于单片机的智能微喷灌控制系统毕业设计论文.docx(10页珍藏版)》请在冰豆网上搜索。
![基于单片机的智能微喷灌控制系统毕业设计论文.docx](https://file1.bdocx.com/fileroot1/2022-11/23/00c35a49-32c8-44e6-a2e9-4d2032069b7c/00c35a49-32c8-44e6-a2e9-4d2032069b7c1.gif)
基于单片机的智能微喷灌控制系统毕业设计论文
基于单片机的智能微喷灌控制系统设计
摘要
随着科学技术的日益发展,特别是智能技术的发展,智能化的微灌溉技术应用范围越来越广泛。
智能化的微灌系统可以实现大面积的作物田间灌溉,在很大的程度上节约人力、物力,实现作物生长大面积的管理,实时掌握作物的生长环境。
开发简单、快速、实用的微灌智能设计具有重要的意义。
此次设计的是通过选择SHT11温湿度传感器对土壤的温度以及湿度等重要物理量进行采集,将采集到的信号交给51单片机系统进行处理,通过用c语言的编程实现在需要时驱动相关外部设备,对目标区域进行自动精确地智能灌溉。
关键词:
51单片机温湿度传感器c语言
Abstract
Withtheincreasingdevelopmentofscienceandtechnology,especiallythedevelopmentofIntelligentTechnology,theapplicationrangeofintelligentmicro-irrigationtechnologymorewidely.Theintelligentmicro-irrigationsystemscanachievealargeareaofcropfieldirrigation,andsavetoalargeextentonthemanpower,resources,managementofthecroparea,real-timecontrolenvironmentforthegrowthofcrops.Developmentofsimple,rapid,practicalmicro-irrigationintelligentdesignisofgreatsignificance.
ThedesignisbySHT11temperatureandthesoiltemperatureand,thecollectedsignaltothe51single-chipsystemforprocessing,relatedtoanexternaldevicedriverwhenneededbyusingclanguageprogrammingachieveautomaticprecisionsmartirrigation,thetargetarea.
Keywords:
51MCUtemperatureand(S6)、Enter(S7)、sd(S3))和温度相对湿度转换键kk(P2^3)。
如图3.8所示。
图3.8键盘控制模块
3.5继电器(指示灯接口)模块硬件设计
在智能微喷灌控制系统中,采集到的参数在进行进行数据处理、数字滤波,标度变换之后,与给出的标准参数上下限给定值进行比较,如果高于上限值(或低于下限值)则驱动相应的外部灌溉电路,对目标区域进行微喷灌。
本设计采用了继电器电路来驱动相应的外部灌溉电路用来实施对植物的灌溉。
考虑到继电器仿真效果不明显,设计采用指示灯电路代替该效果。
通过AT89C51给出处理信号。
当相对湿度值高于上限值(或低于下限值)时,由指示灯指示电路模拟外部灌溉电路的导通与断开。
相应的继电器模块和替代的指示灯接口模块如图3.9所示:
图3.9继电器模块与指示灯接口模块
3.6时钟模块硬件设计
本次设计的时钟模块选用由Dallas公司(美国)推出的DS1302,它具有小电流充电的能力、功耗低的实时时钟的电路结构、工作原理及其在实时显示时间中的应用。
可以对年月日和时分秒进行准确的计时,且有对进行闰年补偿的功能。
该芯片采用的是三线接口和CPU同步通信的技术。
DS1302的内部的31×8的RAM寄存器是用来临时存放数据。
它作为DS1202升级后的产品,与DS1202互相兼容,但是它加了主电源后备电源的双电源的引脚,于此同时也让后备电源可以进行小电流的充电。
DS1302引脚的排列,VCC1是后备的电源,VCC2是主要的电源。
主电源被关闭情况下,它也可以保持时钟连续的运行。
DS1302是由Vcc1和Vcc2中较大的提供工作电压。
X1和X2是DS1302的振荡源,外部连接的是值为32.768Khz的晶振。
Rst作为复位片的选线,对所有的数据传送的启动是通过将Rst输入驱动置高电平来进行的。
Rst的输入包含两种功能:
首先,Rst导通控制逻辑,允许地址命令的序列送给移位寄存模块;其次,Rst会提供终止字节数据传送的手段。
当给Rst置高电平,初始化所有数据的传送,允许DS1302的操作。
假如处于传送过程中时,当给Rst置低电平,那么将会终止当下数据的传送,IO引脚则改变成高阻态。
在上电后,在VCC>2.0V之前,Rst必须维持在低电平。
只有当Sclk置为低电平的时侯,才能将Rst置为高电平。
IO为串行数据输入输出端(双向)。
Sclk为时钟输入端。
DS1302时钟模块电路如图3.10所示:
图3.10时钟模块电路
4系统软件设计
本次设计软件系统主要包括:
温湿度采集转换模块、键盘控制模块、LCD显示模块、继电器驱动模块等。
4.1系统整体框架介绍
当单片机上电复位后,系统开始运行程序,时间日期和温度值(相对湿度值)会实时显示的液晶显示器上,按下相应的功能键可以对温度值显示与相对湿度值显示的转换和显示时间的调整。
当按下温湿度调整功能键时,LCD显示器上会有相应显示。
当按下时钟调整功能键时,可以调节当前的时间值。
当采集到的相对湿度值高于上限值(或低于下限值)则由继电器驱动相应的外部灌溉电路,对目标区域进行微喷灌。
系统整体的软件流程方式如图4.1所示:
图4.1系统整体的软件流程图
系统主函数部分的代码:
voidmain()
{
uinti,j;
uinttemp;
uintdat;
uintHum;
floatf;
init1602();初始化LCD
init_ds1302();设置初始时间
Delay_Ms(20);
while
(1)
{
key=kkey();
SHT11_Write_Register(REG_WRITE,FUNCTION_SET);
if(key==1)
{
temp=SHT11_Measure(TEM_TEST,0x37);
f=SHT11_Convert_Tempeture12bit(temp);
DispConvert(DispData,f);
Delay_Ms(20);
write_com(0x80);LCD第一行显示
Delay_Ms
(1);
write_date('T');
write_date('E');
write_date('M');
write_date('P');
write_date('=');
for(i=0;i<4;i++)
{
write_date(DispData[i]);
}
write_date('');
write_date('');
write_date('');
write_date('');
write_date('');
write_date('');
}
if(key==0)
{
temp=SHT11_Measure(TEM_TEST,0x37);
f=SHT11_Convert_Tempeture12bit(temp);
dat=SHT11_Measure(HUM_TEST,0x0b);
Hum=SHT11_Convert_Humidity8bit(dat,f);
DispConvert(DispData,Hum);
Delay_Ms(20);
write_com(0x80);LCD第一行显示
Delay_Ms
(1);
write_date('');
write_date('%');
write_date('R');
write_date('H');
write_date('=');
for(i=0;i<4;i++)
{
write_date(DispData[i]);
}
write_date('');
write_date('');
write_date('');
write_date('');
write_date('');
write_date('');
}
second=read_ds1302(0x81);
secondl=second&0x0f;
secondh=second>>4;
minute=read_ds1302(0x83);
minutel=minute&0x0f;
minuteh=minute>>4;
d,,s;
y=0;mon=0;d=0;=0;iii=0;
while(iii<=9)
{
if(Set==0)
{
switch(iii)
{
case0:
if(Up==0){y++;Delay_Ms(300);}
if(Down==0){y--;Delay_Ms(300);}
case1:
if(Up==0){mon++;Delay_Ms(300);}
if(Down==0){mon--;Delay_Ms(300);}
case2:
if(Up==0){d++;Delay_Ms(300);}
if(Down==0){d--;Delay_Ms(300);}
case3:
if(Up==0){==0){++;Delay_Ms(300);}
if(Down==0){min--;Delay_Ms(300);}
default:
;
}
write_com(0x80);
write_date('D');
write_date('A');
write_date('T');
write_date('E');
write_date(':
');
write_date('2');
write_date('0');
write_date(y10+0x30);
write_date(y%10+0x30);
write_date('-');
write_date(mon10+0x30);
write_date(mon%10+0x30);
write_date('-');
write_date(d10+0x30);
write_date(d%10+0x30);
write_com(0x80+0x40);
write_date('T');
write_date('I');
write_date('M');
write_date('E');
write_date(':
');
write_date(10+0x30);
write_date(min%10+0x30);
write_date('');
write_date('');
write_date('');
if(Enter==0&&iii<8){iii++;Delay_Ms(300);}
}
elseiii=10;
}
if(iii==10)
{
write_ds1302(0x8e,0x00);关闭写保护
write_ds1302(0x80,0x00);
write_ds1302(0x82,min+(min10)*6);
write_ds1302(0x84,+(mon10)*6);
write_ds1302(0x8c,y+(y10)*6);
write_ds1302(0x8e,0x80);允许写保护
}
}
4.4LCD显示模块软件设计
本次设计显示模块采用1602液晶屏,对它的操作主要是将一些固定的字符写入1602的寄存器中,当需要显示时调用即可,以达到在液晶上显示的效果。
程序流程图如图4.3所示
图4.3LCD显示流程图
Lcd显示模块的程序代码:
液晶模块的忙碌状态
ucharRead_LCD_State()
{
ucharstate;
RS=0;RW=1;EN=1;
Delay_Ms
(1);根据规定,RS为低电平
RW为高电平时,可以读状态
EN使能后,才能进行读写
延时一会,给硬件反应时间
state=P1;读P1口的值
EN=0;
Delay_Ms
(1);
returnstate;返回状态值
}
LCD忙检测
voidLCD_Busy_Wait()
{
while((Read_LCD_State()&0x80)==0x80);忙,则等待
当P0口最高位为1则说明忙
Delay_Ms(5);
}
voiddelay(ucharz)延时函数
{
ucharx,y;
for(x=0;xfor(y=0;y<110;y++);
}
voiddelayus(uintx)
{
for(;x>0;x--);
}
voidwrite_com(ucharcom)LCD写命令
{
LCD_Busy_Wait();
rs=0;
rw=0;
P1=com;
delay
(1);
en=1;
delay
(1);
en=0;
}
voidwrite_date(uchardate)LCD写数据
{
LCD_Busy_Wait();
rs=1;
rw=0;
P1=date;
delay
(1);
en=1;
delay
(1);
en=0;
}
5电路仿真
开发工具:
protues仿真工具软件,Keil集成开发环境,单片机C语言,AT89S51开发板。
Protues软件是Labcenterelectronics(英国)公司推出的Eda工具软件。
它不仅有其它Eda工具软件仿真的功能,还能对单片机以及一些外围器件进行仿真。
是目前世界上唯一把PCB的设计软件和电路的仿真软件以及虚拟的模型仿真软件三个专业软件功能合为一体的专业设计的平台,其处理器模型可以做到支持8051、HC11、PICDsPIC33、AVR、ARM、8086和MSP430等,同时在编译方面,它也支持IAR、Keil和MPLAB等多种编译。
在本次设计中用到的处理器就是其中的8051以及Keil编译。
Keil集成开发环境包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等。
它集程序的编辑编译链接调试和仿真等功能为一体,具有很好的交互界面、下拉菜单和快速访问命令列表等,使程序设计工作更加方便且高效。
C语言是国际上广泛流行的一种计算机语言,它可以用作编写系统文件,也可以用作编写应用软件。
之前的操作系统等系统软件一大部分是用汇编语言来进行编写的。
但是汇编语言相对计算机的硬件来说,程序的移植性差。
为了更好的提供可读性与可移植性,我们最好选择高级语言,但是一般的高级语言很难实现出汇编语言对位操作和内存地址操作的功能。
而C语言是一种既有一般的高级语言的特点,又有低级语言特性的语言,集它们的优点于一身。
本次设计采用Preteus7.7绘制原理图,KeilC51编辑编译程序。
整体仿真如图5.1所示:
图5.1整体仿真图
时间调整界面仿真(时间调整为14-5)如图5.2所示:
图5.2时间调整界面仿真图
时间调整界面退出后显示已调整后的时间的仿真如图5.3所示:
图5.3调整后退出界面显示调整后时间的仿真图
当外界相对湿度值小于40%时,绿灯亮表示系统在相对湿度过低的情况下对目标区域进行灌溉。
如图5.4所示:
图5.4相对湿度小于40%
当相对湿度值小于60%大于40%时,系统维持原状态。
如图5.5所示:
图5.5相对湿度小于60%大于40%
当相对湿度值大于60%时,红灯亮表示系统在相对湿度过高的情况下对目标区域进行灌溉。
如图5.6所示:
图5.6相对湿度大于60%
6结论
单片机技术在各个领域正得到越来越广泛的应用,尤其Mcs-51系列单片机,迅速占领了现代化工业的测控和自动化工程应用的主要市场,并取得了令人瞩目的成绩,展现出了广阔的应用前景。
基于单片机的温湿度测量系统,采用AT89C51单片机和SHT11温湿度传感器,实现了对环境温湿度的自动测量和报警,8051单片机因其指令系统丰富、小巧、低价、灵活易扩展等独特的优点,在所设计的温湿度测量系统中使整个系统的性价比得以大幅度的提高。
将8051单片机成功应用于温湿度测控系统,所研发产品可靠性和扩充性较强,能广泛应用于粮库、物流仓储、档案馆、农业大棚等对温湿度要求较高的场所,具有较大的市场推广前景。
当然此设计也存在不足之处:
本来指示灯指示模块电路应该替换成继电器模块电路,用以导通外部的灌溉电路。
但是由于继电器元件的缺乏,所以只能采用指示灯来显示当前的实验结果,当相对湿度值小于60%的时候,红灯亮(代表灌溉启动);当相对湿度值大于60%时,绿灯亮(表示灌溉结束,湿度达到标准)。
通过设计使我对单片机有了更深刻的了解,尤其是让我学会了如何使用一个完全陌生的元件,通过查阅各种资料,对新元件从陌生到熟悉直至灵活应用,这种自学的方法会使我终生受益。