【《基于DS18B20的单总线方式的蔬菜大棚温度检测显示系统设计与实现》15000字(论文)】_第1页
【《基于DS18B20的单总线方式的蔬菜大棚温度检测显示系统设计与实现》15000字(论文)】_第2页
【《基于DS18B20的单总线方式的蔬菜大棚温度检测显示系统设计与实现》15000字(论文)】_第3页
【《基于DS18B20的单总线方式的蔬菜大棚温度检测显示系统设计与实现》15000字(论文)】_第4页
【《基于DS18B20的单总线方式的蔬菜大棚温度检测显示系统设计与实现》15000字(论文)】_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

[18]:bitNext(void) //二叉树遍历 { bits1=0,s2=0;//S1表原码,S2表反码 ucharBitCount=1; //1-64 ucharRightShift=0x01; ucharn=0;//循环变量 ucharDiscrepMarker=0; bitTureCode;//该位真正的ROM编码 bitnxt;//ROM码搜索完成标志位,1表示搜索完成 bitflag;//DS18B20复位成功标志位,1表示复位成功 nxt=FLASE; dowcrc=0; flag=Ds18b20_Reset(); if(flag==FLASE||doneflag==FLASE)//初始化失败或者未完成搜索ROM {LastDiscrap=0; returnFLASE;} DS18B20_WriteByte(0xf0); //搜索ROM(单片机识别所有DS18B20的64位编码) do {s1= DS18B20_ReadBit()//发送搜索命令后,全体器件发送64位ROM码第1位 s2=DS18B20_ReadBit(); //全体器件发送64位ROM码的第1位的反码 if(s1==1&&s2==1) //无器件未与总线相接 {break;} else {if(s1==0&&s2==0) //检测到差异位,确定搜索方向(0or1) {if(BitCount<LastDiscrap)//BitCount当前搜索位LastDiscrap上次 TureCode=ROM[n]&RightShift;最后走零位 elseTureCode=(BitCount==LastDiscrap); //选1BitCount==LastDiscrap if(TureCode==0) DiscrepMarker=BitCount;} else TureCode=s1; //01或10情况看第一个 if(TureCode==1) ROM[n]|=RightShift; else ROM[n]&=~RightShift; DS18B20_WriteBit(TureCode);//器件ROM编码在该位上的数据与写入BitCount++;的数据相同,则继续保持与总线联系 RightShift<<=1; if(RightShift==0) //已经移动了7次,7*8次循环 {ow_crc(ROM[n]); //最高8位为CRCn++; RightShift=1;} //返回初值 } }while(n<8); if(BitCount<65||dowcrc) //64位ROM码还没发完或循环冗余校验码非零 LastDiscrap=0; else { LastDiscrap=DiscrepMarker; doneflag=(LastDiscrap!=0); //搜索完成 nxt=TURE; } returnnxt;}测温程序流程图如图3-3所示:YY

开始转换(0x44)匹配ROM(0x55)DS18B20复位N

DS18B20复位匹配ROM(0x55)读温度(0xBE)读低字节TL读高字节TL温度负?取反加一计算十进制数开始结束图3-3测温过程流程图程序如下:/*****启动温度转换函数*****/voidStartDs18b20(uchar*ROMCODE){uchari;DS18B20_DQ=1;Ds18b20_Reset();DS18B20_WriteByte(0x55);//匹配ROM,接着MCU发出64位编码,符合的DS18B20做出响应for(i=0;i<8;i++){DS18B20_WriteByte(ROMCODE[i]);}DS18B20_WriteByte(0X44);//发送温度转化命令}/*****读取温度转换函数*****/voidReadDs18b20(uchar*ROMCODE){uchari;ucharTLV=0;//采集到的温度高8位ucharTHV=0;//采集到的温度低8位unsignedinttemp;Ds18b20_Reset();//再次复位,等待从机应答DS18B20_WriteByte(0x55); for(i=0;i<8;i++){DS18B20_WriteByte(ROMCODE[i]);}DS18B20_WriteByte(0XBE);//发送读温度命令TLV=DS18B20_ReadByte();//读出温度低8位THV=DS18B20_ReadByte();//读出温度高8位temp=THV;temp<<=8; //高8位左移4位temp|=TLV;temp&=0X07FF; //16位中前五位为符号位,保留11位数据位if(THV&0x80) //温度为负{temp=0x0800-temp; //数据位取反加一tflag=0x2d;}elsetflag=43; //温度为正TD=(float)(temp&0x000f)*10/16; //小数部分温度 ,LSB为0.0625TZ=temp>>4; //整数部分温度DS18B20_DQ=1;//释放总线}3.1.2显示电路设计显示电路硬件设计 RS接P2.6,RW接P2.5,EN接P2.7,数据口接P0口,单个测温电路显示部分硬件设计如图3-4所示:图3-4显示电路设计显示电路软件设计软件设计如下:/*****从LCD1602某个位置写字符串子函数*****/ voidwritestring(unsignedcharx,unsignedchary,unsignedchar*s){ if(y==0)command(0x80+x);//在第一行显示数据 else command(0xC0+x);//在第二行显示数据 while(*s) //判断是否字符串的结尾{write_dat(*s);//显示当前字符 s++;} //字符串地址加1}/*****向LCD1602某个位置写字符子函数*****/voidwriteChar(unsignedcharx,unsignedchary,unsignedchars){ if(y==0)command(0x80+x);//在第一行显示数据 else command(0xC0+x);//在第二行显示数据{write_dat(s);}//显示当前字符}在主函数中利用for循环,每次使一个DS18B20工作,并将结果显示在显示屏上,部分程序如下:for(k=0;k<number;k++){StartDs18b20(&Ds18b20Rom[k][0]); //开始温度转化ReadDs18b20(&Ds18b20Rom[k][0]); //读取温度值TP1=TZ;tf1=tflag;writestring(0,0,"A1");writeChar(2,0,tflag);writeChar(3,0,TZ/10%10+'0'); //十位writeChar(4,0,TZ%10+'0');//个位writeChar(5,0,'.');writeChar(6,0,TD+'0');//小数位}3.1.3存储电路设计存储电路硬件设计 24C02的SCK、SDA引脚分别接P2.1、P2.0,A0、A1、A2接地,电路如图3-5所示:图3-5存储电路设计存储电路软件设计 存储电路写一个字节数据和读一个字节数据程序流程图分别如图3-6和3-7所示:等待响应等待响应发送地址(0XA0)发送具体地址(0x00~0xff)产生开始信号等待响应写入数据等待响应产生结束信号开始结束图3-6向24C02写入一字节数据等待响应等待响应发送地址(0XA0)读取一字节数据发送访问具体地址(0x00~0xff)产生开始信号等待响应产生开始信号发送地址(0XA1)等待响应产生非应答信号产生结束信号开始结束图3-7从24C02读取一字节数据 具体程序如下:/*****指定一个地址,对这个地址写入一个数******/ voidwrite_e2p(ucharch,uintaddress){ Start(); //产生开始信号 if(address<256){Write8Bit(WriteDeviceAddress);//24C08器件的地址(A2,A1,A0均为0),0xa0表示向24C02写数据 TestAck(); //等待响应 Write8Bit(address);//写入这个具体的地址 TestAck();} //等待响应 Write8Bit(ch);//对这个地址写入一个数据 TestAck(); //继续等待响应 Stop(); //停止信号delayms(10);//防止两次调用write_e2p的间隔太短导致数据重叠}/*****指定一个地址,并从这个地址里面读出一个数,返回这个数*****/ucharread_e2p(uintaddress){ ucharch; Start(); if(address<256)Write8Bit(WriteDeviceAddress); TestAck(); Write8Bit(address); TestAck();}Start();//主从机改变通信模式,主机需重新发送一个开始信号 if(address<256)Write8Bit(ReadDviceAddress); TestAck(); ch=Read8Bit(); NoAck(); Stop(); return(ch);}3.1.4数据传输电路设计数据传输电路硬件设计 MAX458的RO接单片机的P3.0,DI接P3.1,RE与DE相接至P2.2;A、B口分别与RS485总线的A、B线相接,A、B接至终端的MAX485的A、B接口,终端的RO和DI分别接至串口的TXD和RXD,实物中的RS485转USB模块代替仿真中的终端MAX485和串口,仿真中硬件电路如图3-8所示。图3-8数据传输电路设计数据传输电路软件件设计 RS485的软件设计本质上仍然是串口程序设计,故其设计与传统的RS232传输时的程序一致,即先进行串口初始化,再发送数据,仅有的区别为,当需要发送数据时需要使RE反和DE引脚设置为高电平;需要接收数据时,需要使RE反和DE引脚为低电平。在分布式测温系统中为保证每次只能有一个从机传输数据,需要在串口中断函数中使每个从机接收到特定的数据再变为发送模式,具体程序如下: /*****串口初始化函数*****/ voidUARTinit(void)//串口初始化{ EA=0;//暂时关闭中断 TMOD&=0x0F;//定时器1模式控制在高4位高四位T1清零,T0不变 TMOD|=0x20;//定时器1工作在模式2(初值自动装入8为计数器),自动重装模式 SCON=0x50;//串口工作在模式1,8位异步收发波特率可变 TH1=256-fosc/(baudrate*12*16);//计算定时器重装值 TL1=256-fosc/(baudrate*12*16); //波特率=(2^SMOD/32)*(fosc/12)/(256-x) PCON|=0x80;//串口波特率加倍,SMOD为1 ES=1;//串行中断允许 TR1=1;//启动定时器1 REN=1;//允许接收 EA=1;//允许中断}/*****发送一个字节的数据函数*****/voidsendchar(unsignedchard){C2=0; _nop_; C1=1; SBUF=d;//将数据写入到串口缓冲 while(!TI);//等待发送完毕TI=0;}/*****发送字符串函数*****/voidsendstring(unsignedchar*pd){ while((*pd)!='\0')//直到遇到0才结束 {sendchar(*pd);//发送一个字符 pd++;}//移动到下一个字符}/*****串口中断函数*****/voidUART(void)interrupt4using1{if(RI==1){d=SBUF; if(d==0x05)//当从机5发送完成数据后向总线发送0x55,从机一接收后 {变为发送模式 C1=1;//C1为使能控制端,1为发送,0为接收 RI=0;//复位标志清零 }}3.1.5附加电路设计附加电路硬件设计如图3-9所示: 图3-9附加电路设计按键电路设计 设置一个变量记录设置键按下的次数,当第一次按下时,进入温度上下限修改界面;在设置键第一次按下后,有递增/递减键按下时,温度下限相应变化;设置键第二次按下后,有递增/递减键按下时,温度上限相应变化;设置键第三次按下时,退出温度上下限的修改界面,进入正常测温模式。具体按键子程序如下:voidSetFun(void)//设置键子函数,Set变量记录按键按下次数{ if(SetKey==0) { delayms(20); if(SetKey==0)//按键消抖 { if(Set<2) //按键按下一次 {Set++; writestring(0,0,""); writestring(0,1,""); writestring(0,1,"Low=Top="); writestring(0,0,"");} elseSet=0;//按键按下2次后Set清零 } DispAlData();//显示数据子函数 switch(Set) {case0:writestring(0,1,"");break;//未按下 case1:writestring(0,1,">");writestring(8,1,"");break;//按了一次 case2:writestring(0,1,"");writestring(8,1,">");break;//按了两次 } while(SetKey==0);//当设置键按下未松,程序一直在此处等待 } if((UpKey==0)&&(Set!=0))//递增键 {//递增键按下且设置键不是第一次按下 delayms(20); if(UpKey==0)//按键消抖 {switch(Set) {case1: //设置键第一次按下(此时>选择LOW)if(AlarmTempLow<125){AlarmTempLow++;//报警下限加一writestring(0,1,">");//显示writestring(8,1,"");delayms(200);}elseAlarmTempLow=125;break; case2: //设置键第二次按下(此时>选择TOP)if(AlarmTempTop<125){AlarmTempTop++;//报警上限加一writestring(0,1,"");//显示writestring(8,1,">");delayms(200);}elseAlarmTempTop=125;break} DispAlData(); while(UpKey==0);//当递增键按下未松,程序一直在此处等待 } }if((DnKey==0)&&(Set!=0))//递减键按下且设置键不是第一次按下 { delayms(20); if(DnKey==0)//按键消抖 { switch(Set) { case1: //设置键第一次按下(此时>选择LOW) if(AlarmTempLow>-20) {AlarmTempLow--;//报警下限减一 writestring(0,1,"Low=Top="); writestring(0,1,">");writestring(8,1,""); delayms(200); } elseAlarmTempLow=-20;break;//温度最低下限为-20 case2://设置键第二次按下(此时>选择TOP) if(AlarmTempTop>0) {AlarmTempTop--;//温度上限减一 writestring(0,1,"Low=Top="); writestring(0,1,"");writestring(8,1,">"); delayms(200); }elseAlarmTempTop=0;break;//温度上限如果小于0,为0 } DispAlData(); while(DnKey==0);//当递增键按下未松,程序一直在此处等待 } }报警电路设计设置一个变量用于存放温度数据的整数部分,当该温度高于最高温度或者低于最低温度值时使蜂鸣器报警;同时设置一个变量记录清除/恢复报警键按下的次数,在第一次、第三次……按下会取消报警,没有按下或者第二次、第四次按下……会恢复报警。具体报警子程序如下:voidAlarm(void){ if(TP1!=0xff)//TP1表一号DS18B20采集温度的整数部分 { if((TP1>(AlarmTempTop))||(TP1<(AlarmTempLow))) {Alarm1=1;} else{Alarm1=0;}//温度低于下限或者高于上限,报警标志为1 }else{Alarm1=0;} if(stoper%2==0)//stoper记录alarmK按键按下的次数{ if(Alarm1==1){BEEP=0;} elseBEEP=1;}else{BEEP=1;}}3.1.6单个系统程序流程图设计 单个系统程序流程图如图3-10所示:启动温度转换启动温度转换显示基本信息串口发送数据读取24C02内容初始化LCD、串口向24C02写数据读取温度温度显示报警扫描按键扫描开始While(1)结束图3-10单个系统程序流程图设计3.2系统整体程序设计 首先是从机一工作(发送状态),其余从机处于监听状态,当其开始测温并将温度传递至总线上,总线再将温度传递至串口,当从机一的数据发送完毕,紧接着向总线发送0X01,随后处于监听状态;当总线上其余处于监听状态的从机均会接收到信号,并触发中断函数,但只有从机二在接收到0X01后,在主函数中才会执行测温传输等一系列操作,从机二向总线传递完成数据后随即发送0X02,并将自身设置为接收状态;从机三接收到数据后开始工作,从机四开始工作,当从机四发送完温度数据后,发送0X05至总线,从机一接收数据后开始工作,五个从机不断依次传递数据。从机一中相关程序如下:while(1) { Alarm();//报警函数 SetFun();//按键设置函数 clean();//报警清除/恢复函数 if((d==0x05)||(q==0x04)) { C1=1; write_e2p(AlarmTempTop,0x25); write_e2p(AlarmTempLow,0x26); writestring(0,0,""); writestring(0,1,""); clean(); if(Set==0) //设置键没有按下 { for(k=0;k<number;k++) { StartDs18b20(&Ds18b20Rom[k][0]);//开始温度转化 ReadDs18b20(&Ds18b20Rom[k][0]); //读取温度值 writestring(0,0,"A1"); TP1=TZ;tf1=tflag; writeChar(2,0,tflag);//显示温度正负 writeChar(3,0,TZ/10%10+'0'); //温度十位 writeChar(4,0,TZ%10+'0');//温度个位 writeChar(5,0,'.'); writeChar(6,0,TD+'0');//温度小数位 writestring(0,1,""); writestring(0,2,""); writestring(2,1,"LOW"); writestring(10,1,"TOP"); DispAlData(); delayms(500); dispBuf[0]=TZ/10%10+'0';dispBuf[1]=TZ%10+'0'; dispBuf[2]='.'; dispBuf[3]=TD+'0'; dispBuf[4]='\0'; sendstring(dispBuf);//传输温度 sendstring("\r\n");//换行 }else(C1=0);sendchar(0x01); C1=0;//从机一处于接收状态q=0x01;d=0x00;//使从机一停止串口传输 } } 3.3Proteus仿真调试3.3.1温度检测调试 测温数据的显示如图3-11所示:图3-11测温数据显示3.3.2RS485传输调试 Proteus中串口选择为COM1。利用虚拟串口VSPD,使COM1与COM2相连,如图3-12所示。图3-12虚拟串口设置 串口调试助手接收数据如图3-13所示:图3-13串口助手接收数据3.3.3存储电路调试 第一次将温度报警上下限值分别设置为15和5度,后来在程序中将设定值改为25和5度,在开机画面显示的历史温度仍然会显示为25度和5度,更改后的开机显示如图3-14所示,进入循环显示温度后如图3-15所示:图3-14历史温度显示图3-15更改后温度显示3.3.4按键电路调试 先按一下设置键,进入温度下限修改模式,如图3-16所示,此时可以按递增键或递减键加减温度下限值,在按一下设置键进入温度上限修改模式,如图3-17所示,此时可以按递增键或递减键加减温度上限值,再按一下设置键进入正常测温模式。图3-16设置键按下后图3-17递增键按下后第4章上位机设计与仿真调试4.1VB上位机界面设计 VB的特点是面向对象的语言,操作简单,且具有可视化的图形界面,可直接生成EXE文件,作为上位机编程软件具有较大优势。此次设计的对象窗口中的主要控件有(1)MSComm控件,可以通过串口传输和接收数据实现串行通讯功能。常见属性为Comport,用于返回端口号;PortOpen,用于打开和关闭串口,True时为打开串口;Input,用于从缓冲区接收字符;InputLen,表示从缓冲区读取的字符数,缺省值是0,此时接收缓冲区中的全部内容;Settings,用于设置并返回波特率、奇偶校验、数据位、停止位,缺省值为9600、N、8、1,即波特率为9600bit/s,无奇偶校验,数据位为8位,停止位1位;InBufferCount用于表示缓冲区等待的字符数。(2)Picture控件,该控件可用于绘制曲线。常见属性为ScaleHeight,ScaleWidth返回或设置对象内部的水平或垂直度时单位;Line,用于绘制从一点至另一点的直线。 (3)Checkbox控件,用于建立控件数组,在按钮单击事件里进行循环判断每个复选框的状态。常见属性为AddItem,用于将项目添加到ComboBox控件。 (4)Text控件,主要用于显示文本或者输入文字。常见属性有Text属性,用来显示文本框中的文本内容。 (5)Timer控件,可以有规律地间隔一段时间执行一次代码。主要属性有Interval属性,用于设置间隔时间,有效值在0至65535ms之间。 (6)Label控件,用于显示字符串。 对象窗口界面如图4-1所示:图4-1上位机界面4.2上位机软件设计及调试软件设计如下:(1)PrivateSubForm_Load()'初始界面MSComm1.InputLen=4'串口每次读取2个字符Combo1.AddItem"COM1"'COM1、COM2、COM3、COM4、COM5加入Combo1控件Combo1.AddItem"COM2"Combo1.AddItem"COM3"Combo1.AddItem"COM4"Combo1.AddItem"COM5"Combo1.ListIndex=0'默认显示COM1口Shape1.BackColor=RGB(222,222,222)'串口指示灯的设为灰色Shape2.BackColor=RGB(222,222,222)'温度过高指示灯的设为灰色Shape3.BackColor=RGB(222,222,222)'温度过低指示灯的设为灰色AlarmTempLow=5'温度报警下限默认为5度AlarmTempHig=25'温度报警上限默认为25度Picture1.ScaleHeight=800'将温度的Y轴70等分Picture1.ScaleWidth=500'将温度的X轴50等分X_Pos=0'曲线从x=0开始绘制Picture1.Line(0,378)-(5,378),RGB(128,0,255)'10度线Picture1.Line(0,278)-(5,278),RGB(128,0,255)'20度线 ……EndSub(2)PrivateSubCommand1_Click()'打开串口按键OnErrorGoToErr'程序执行出错时,跳到err处执行IfCommand1.Caption="打开串口"Then'如果串口还未打开MSComm1.CommPort=Combo1.ListIndex+1'获取串口号MSComm1.PortOpen=True'打开串口Shape1.BackColor=RGB(0,255,0)'打开串口指示灯Command1.Caption="关闭串口"'将按钮标题改为“关闭串口”Else'如果串口已经打开MSComm1.PortOpen=False'关闭串口Shape1.BackColor=RGB(222,222,222)'将串口指示灯置为灰色Command1.Caption="打开串口"'将按钮标题改为“关闭串口”EndIfExitSubErr:'打开错误的串口,则进行错误提醒MsgBox"串口号不存在!",vbOKOnly,"错误"EndSub(3)PrivateSubTimer1_Timer()DimstrAsStringIfMSComm1.InBufferCount>=3Then'如果串口缓冲区的内容超出3个,读取串口数据str=MSComm1.InputIfVal(str)<>0ThenText5.Text=Val(str)EndIfIfX_Pos=0Then'开始绘制曲线X_Pos=1ElsePicture1.PSet(X_Pos,478-Val(Text5.Text)*10),RGB(128,0,255)'画点X_Pos=X_Pos+1'在温度曲线到达图形控件最右侧时把曲线清除并从左侧重新绘制IfX_Pos=500ThenPicture1.ClsX_Pos=0EndIfEndIf'如果温度超过报警上限,则警示灯亮If(Val(Text5.Text))*10>(AlarmTempHig)*10ThenShape2.BackColor=RGB(255,0,0)ElseShape2.BackColor=RGB(222,222,222)EndIf'如果温度低于报警下限,则警示灯亮If(Val(Text5.Text))*10<(AlarmTempLow)*10ThenShape3.BackColor=RGB(255,0,0)ElseShape3.BackColor=RGB(222,222,222)EndIfEndIf(4)PrivateSubCommand4_Click()'按下温度上限加一按钮后,触发此程序buff(0)=&H3'串口发送03,温度上限加一MSComm1.Output=buffText2.Text=Val(Text2.Text)+1EndSub调试界面如图4-2所示:图4-2上位机运行界面第5章实物安装与调试5.1PCB电路板设计 在设计中加入程序下载接口,需要在Proteus中加入USB与FT232芯片,用于将TTL电平转化为USB电平,单个测温系统的PCB电路板设计如图5-1所示: 图5-1单个测温系统PCB设计5.2实物仿真 单个测温系统的实物焊接如图5-2和5-3所示: 图5-2单片机模块焊接图5-3DS18B20模块焊接 仿真结果如图5-4所示: 图5-4仿真调试结论与展望 本文设计了基于低功耗的STC52单片机的分布式蔬菜大棚温度检测系统。通过五个测温系统实现对大棚五处位置的测温,且每个测温点可扩展多个DS18B20;通过LCD1602对温度数据进行本地显示;通过RS485总线将采集的温度数据传输至控制室的上位机;并在电路构造上加入了24C02芯片,完成对数据的存储;报警电路可在温度异常的情况下进行报警;独立按键电路可对报警上下限值进行修改。现将本设计的完成的内容以及设计心得归纳如下: (1)设计的系统具有较强的实用性,不仅可以适用于蔬菜大棚,其它需要测温的环境如粮仓,室内温度等都可以进行测量同时该设计性价比高。 (2)此次设计的算法具有较强的移植性,对于每个位置的单片机可测得的温度值不仅仅为一个点位,只需程序稍加修改,就可完成一个端口挂接多个DS18B20进行测温。 (3)采用RS485总线方式传输,布线较少,扩展方便,若需要扩展测温位置,只需在总线上挂接同样的硬件测温系统,程序稍加修改就可实现测温点的扩展。 (4)设计过程中首先进行的是测温电路的设计,其主要问题在于无法识别DS18B20的ROM码,后来在网上了解到是由于CRC循环冗余校验码的错误,并从网上学习的相关的知识对程序进行修改,并完成了相关模块的设计。 (5)设计中碰到的一个问题是,当温度不在温度上下限之中时,虽然能够报警,但设计的按K4按下后无法使蜂鸣器停止,发现是由于报警子程序一直放在while(1)循环中,每次温度扫描出现异常都会触发报警,而设计的按键子程序只是简单的使蜂鸣器停止,后来设了一个变量stoper来记录按键按下的次数。主要思路是:初值为0,第一次按下后加一,使蜂鸣器停止;再按下一次,stoper变为2,蜂鸣器停止;当大于2时变为0,同时关闭蜂鸣器;且只有在该变量是2的整数倍时再触发报警程序,该问题便得到了解决。 当然由于作者自身能力有限,同时时间有限,该设计仍有较多的不足之处: (1)仅仅测量了温度的变量,对于其它重要的参数如湿度、光照、二氧化碳浓度等没有进行测量和彼此之间的联系缺乏探讨。 (2)缺乏对执行器的控制,虽然有温度报警,但没有对温度进行控制如加一个继电器控制直流电机开关,抑或是采用PWM技术来给直流电机进行调速,在温度较高时,使电机的转速较快,当温度降低可以自动降低转速,也可以通过上位机对电机等进行控制,使控制系统更加高效。 蔬菜大棚控制的未来发展方向必定是朝着多元化和智能化方向发展,需要的人工数量将减少,不仅仅局限于对各种参数的测量,更重要的是其中的关系,只有各种参数达到相对均衡的条件下,蔬菜等经济作物才能真正做到增产增收REF_Ref70841868\r\h。参考文献杜红霞,李慧冬,方丽萍,陈子雷,官帅,梁京芸.一种可自动通风的蔬菜大棚[P].山东:CN206101119U,2017-04-19.杨方,苏中滨,王润涛,王基宇,张健,任帅,刘莹,马佳玉.基于物理农业生物电场调控的自动化温室大棚[P].黑龙江:CN103210809A,2013-07-24.董文国.蔬菜温室大棚智能控制系统的设计[D].曲阜师范大学,2012.郑文刚,赵春江,王纪华.温室智能控制的研究进展[J].农业网络信息,2004(02):8-11.唐勇.中压开关柜温湿度在线监测系统设计[J].新型工业化,2019,9(02):87-89.程仕发.智能温室大棚监控系统的研究与设计[D].山西:太原理工大学,2020.金钰.工业控制计算机在自动化温室控制中的应用[J].工业控制计算机,2000(01):16-18.杜辉,陈教料.基于蓝牙技术的分布式温室监控系统设计研究[J].自动化仪表,2005(03):21-23+29.唐林林.蔬菜大棚的智能监控系统的设计与实现[D].山东大学,2010.李海南.温室蔬菜大棚监控系统研究与实现[D].吉林大学,2015.GuoQingChen.MineMulti-PointTemperatureMeasurementandControlNetworkRemoteMonitoringSystemResearch[J].AppliedMechanicsandMaterials,2014,3629.Xue-HanGao,Jian-JunXu,Li-MeiYan.VegetableGreenhousesIntelligentTemperatureControlSystem[J].AdvanceJournalofFoodScienceandTechnology,2016,10(1).张毅刚,王少军,付宁.单片机原理及接口技术[M].人民邮电出版社:,201501.333.刘鸣,车立新,陈兴梧,赵煜.温度传感器DS18B20的特性及程序设计方法[J].电测与仪表,2001(10):47-51.樊强,张敏,李霞.基于DS18B20的温度采集系统设计与实现[J].农机化研究,2011,33(12):161-164.柴睿.液压冲击器的智能控制系统研究[D].上海交通大学,2009.朱江.基于支持向量机的煤矿瓦斯突出预测系统的研究[D].安徽理工大学,2014.李多,陈军.基于单片机串口实现1-Wire总线通信的方法[J].微型机与应用,2012,31(11):22-24.

附录:蔬菜大棚温度检测系统硬件电路设计:蔬菜大棚温度检测系统从机一主函数:voidmain(void){ uintk;ucharL; ucharH; ucharnumber;BEEP=1; C1=0;LCD_Initial();UARTinit();//串口初始化writestring(0,0,"SearchSensor");delayms(200);number=FindDevices(Ds18b20Rom);writestring(0,0,"Searchsensors");

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论