版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、测试课程设计蔬菜大棚智能控制系统目录一、总结-32. 实验所需组件-33. 实验的整体结构-44、传感器介绍- - -74.1.1DS18B20简介- - -74.1.2DS18B20的性能特点-74.2.1DHT11简介-74.2.2DHT11的特点- 84.3 热释电传感器模块介绍及特点-104.4 光敏电阻传感器原理及特点-114.5 ZigBee 无线模块简介- - 125、温室控制系统软件设计-125.1.1下位机软件设计- -125.1.2编程软件介绍-155.2.1上位机软件设计- -155.2.2Microsoft Visual Studio 2008 编程软件简介-166.
2、总结-17附录 - - - - - 18参考文献-37一、总结随着单片机和传感技术的快速发展,自动检测领域发生了很大变化,温室环境自动监测与控制研究取得明显进展,将逐步取代传统的温湿度以其卓越的性能和价格比。与光照强度相关的控制措施。但目前温室大棚使用的温湿度检测系统大多采用由模拟温度传感器、多路模拟开关、A/D转换器和单片机组成的传输系统。这种温湿度采集系统需要在温室内布置大量的测温电缆,将现场传感器的信号致到采集卡。安装拆卸复杂,成本高。同时,线路上传输的模拟信号容易受到干扰和损耗,测量误差也比较大。为了克服这些缺点,该系统采用单片机作为下位机,计算机作为上位机,采用无线传输技术实现蔬菜大
3、棚的自动控制。精确的。本系统采用单总线传感器采集温室温湿度,利用温湿度传感器将温室内的温湿度变化转化为数字量。同时将上位机预设的目标量传送给下位机,下位机将采集量与预设量进行比较,自动调节温室温度。然后用光敏电阻检测当前光强,同法实现自动控制。同时,系统增加热电防盗报警,让经济作物更安全!该温湿度光强测控系统可应用于农业生产中的温室大棚,实现对温湿度光强的实时控制。是一种比较智能、经济的解决方案,适合大力推广,以促进作物生长,从而提高温室的亩产,从而带来良好的经济效益和社会效益。2. 实验所需组件ATmega16微控制器最小系统(1)、电热丝(1)、继电器(2)、风扇(1)、三极管8050(4
4、)、热释电模块(1)、光敏电阻(2)、DS18B20温度传感器(1)、 DHT11温湿度传感器(1),ZigBee无线通信模块(2),MAX232(1)。三、实验的整体结构AVR单片机DS18B20温度传感器AVR单片机DS18B20温度传感器DHT11湿度传感器光敏电阻(内)光敏电阻(外)热释电ZigBee无线传输模块加热器通风散热扇补光灯图 3.2 下位机控制系统ZigBeeZigBee无线传输模块PC机图 3.3 上位机控制外围硬件该系统由DS18B20温度传感器、DHT11温湿度传感器和光敏电阻组成如图1和图2采集数据, ATmega16单片机进行数据处理,上位机显示温湿度并设置目标温
5、度和光照强度。光强由PWM控制。当温度低于设定的目标温度时,加热开始加热。当温度等于目标温度时,加热器停止加热。当温度超过目标温度+1时,通风冷却风扇开始工作降温。循环并控制温度恒定。补光的控制是通过检测当前光与设定的目标光的差异来控制光的强度,然后通过PID算法控制PWM的产生。热释电红外传感器检测外界环境的变化,并将输出信号送到单片机。图 3.4 传感器使用的几部分驱动电路图图 3.5 无线通讯模块和加热模块电路图图 3.6 ATmega16微控制器的最小系统四、传感器介绍4.1.1DS18B20简介图 4.1 DS18B20 的不同封装和引脚DS18B20 数字温度传感器与 DS18B2
6、0 可联网数字温度传感器芯片封装在一起。具有耐磨、耐冲击、体积小、使用方便、包装形式多样等优点。适用于各种小空间设备的数字温度测量和控制。4.1.2DS18B20的特点适应更宽的电压范围,电压范围:3.05.5V,可在寄生供电模式下由数据线供电独特的单线接口方式,DS18B20与微处理器连接时仅需一根端口线即可实现微处理器与DS18B20的双向通讯DS18B20支持多点联网功能,可将多个DS18B20并联在单根三线上,实现联网多点测温DS18B20在使用中不需要任何外围元件,所有传感元件和转换电路都集成在一个三极管形状的集成电路中温度范围- 55+, - 12510+85可编程分辨率为912位
7、,对应的可区分温度分别为0.5、 0.0625、 0.25、9位分辨率下温度转数字最大93.75ms,12位分辨率下温度值转数字最大750ms,速度更快测量结果直接输出数字温度信号,通过“单线总线”串行传输到CPU,同时可以传输CRC校验码,具有很强的抗干扰和纠错能力。负压特性:当电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。4.2.1DHT11简介图4.2 DHT11实物图DHT11数字温湿度传感器是一款带校准数字信号输出的温湿度复合传感器。它采用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性和出色的长期稳定性。该传感器包括一个电阻式湿度传感元件和一个NTC测温元件
8、,并与一个高性能8位微控制器相连。因此,该产品具有品质优良、响应超快、抗干扰能力强、性价比高等优点。每个 DHT11 传感器都在极其精确的湿度校准室中进行校准。校准系数以程序的形式存储在OTP内存中,传感器部分在检测信号处理过程中需要调用这些校准系数。单线串行接口使系统集成变得简单快捷。超小尺寸,极低功耗,信号传输距离可达20米以上,使其成为各种应用甚至最苛刻应用的最佳选择。该产品采用 4 根据客户需求提供。4.2.2DHT11的特点DATA 用于微处理器和 DHT11 之间的通信和同步。它采用单总线数据格式。通信时间约为 4ms。数据分为小数部分和整数部分。具体格式如下所述。读数为零。操作流
9、程如下:一个完整的数据传输是 40 位,高位先出。数据格式:8bit湿度整数数据+8bit湿度小数数据+8bit温度整数数据+8bit温度小数数据+8bit校验和当数据传输正确时,校验和数据等于“8bit湿度整数数据+8bit湿度小数数据+8bit温度整数数据+8bit温度小数数据”结果的后8位。用户MCU致一次启动信号后,DHT11从低功耗模式切换到高速模式,等待主机启动信号结束,DHT11致响应信号,致40bit数据,触发信号采集,用户可以选择读取部分数据。在从机模式下,DHT11 接收启动信号以触发温湿度采集。如果没有收到主机致的启动信号,DHT11 将不会主动采集温湿度。采集数据后,切
10、换到低速模式。1、通信流程如图4.3所示图 4.3总线空闲状态为高,主机拉低总线等待DHT11响应,主机必须拉低总线18毫秒以上,以保证DHT11能检测到启动信号。 DHT11收到主机的启动信号后,等待主机的启动信号结束,然后致一个80us的低电平响应信号。主机发出启动信号后,等待20-40us延时,从DHT11读取响应信号,主机发出启动信号后,可以切换到输入模式,或者输出高电平,总线被拉高由上拉电阻。图 4.4总线为低电平,表示DHT11致响应信号。 DHT11发出响应信号后,将总线拉高80us,准备致数据。每一位数据以一个50us的低电平时隙开始,高电平的长度决定了数据。该位是0还是1。格
11、式如下图所示。如果读响应信号为高电平,DHT11没有响应,请检查线是否连接正常。当传输完最后一位数据时,DHT11将总线拉低50us,然后通过上拉电阻将总线拉高进入空闲状态。数字0信号表示方法如图4.5所示图 4.5数字 1 信号表示方法。如图4.6所示图 4.64.3 热释电传感器模块介绍及特点图 4.7 热释电传感器模块实物图热释电红外传感器由检测元件、滤波器和场效应晶体管阻抗转换器三部分组成,如图4.8所示。对于不同的传感器,探测器元件由不同的材料制成。 SD02等敏感电池采用锆钛酸铅; P2288 由 LiTaO3 制成。将这些材料制成很薄的片材,从每片片材的相对两侧引出一个电极,在电
12、极的两端形成一个等效的小电容器。由于这两个小电容制作在同一个硅片上,形成的等效小电容可以自行产生极化,并在电容两端产生极性相反的正负电荷。传感器中的两个电容器以相反极性串联。图4.8双检测元件热释电红外传感器当传感器未检测到人体辐射的红外信号时,电容器两端会产生极性相反、电量相等的正负电荷。因此,正负电荷相互抵消,回路中没有电流,传感器没有输出。当人体仍在传感器的检测区域内时,照射在两个电容上的红外光能量能量相等并达到平衡。极性相反、能量相等的光电流在回路中相互抵消,传感器仍然没有信号输出。当人体在传感器的检测区域内移动时,照射在两个电容上的红外能量不相等,光电流在回路中不能相互抵消,传感器有
13、信号输出。综上所述,传感器只对移动或移动的人体和与人体温度相近的物体起作用。4.4 光敏电阻传感器原理及特点图 4.9 光敏电阻实物图光敏电阻的工作原理是基于光电效应。电极引线安装在半导体光敏材料的两端,光敏电阻通过将其封装在具有透明窗口的管壳中而形成。为了增加灵敏度,常将两个电极做成梳状。构成光敏电阻的材料包括半导体,例如金属硫化物、硒化物和碲化物。半导体的电导率取决于半导体中导带载流子的数量。当光敏电阻被照射时,价带中的电子吸收光子能量,然后跃迁到导带,成为自由电子,同时产生空穴。电子-空穴对的出现降低了电阻率。光越强,光生电子-空穴对越多,电阻越低。当在光敏电阻两端施加电压时,流过光敏电
14、阻的电流随着光照的增加而增加。入射光消失,电子-空穴对逐渐复合,电阻逐渐恢复到原来的值,电流逐渐减小。光敏电阻的应用光敏电阻是一种半导体光敏器件。除了灵敏度高、响应速度快、光谱特性与r值一致性好外,在高温高湿的恶劣环境中也能保持高度的稳定性和可靠性。可广泛应用于照相机、太阳能庭院灯、草坪灯、验钞机、石英钟、音乐杯、礼品盒、迷你夜灯、灯光音响开关、自动路灯开关配各种光控玩具、光控照明、灯饰等灯光自动开关控制领域。4.5 ZigBee 无线模块介绍图 4.10 ZigBee 无线通信模块实物图Zigbee 是一种基于 IEEE802.15.4 标准的低功耗个域网协议。本协议中规定的技术是一种短距离
15、、低功耗的无线通信技术。它的特点是接近、低复杂度、自组织、低功耗、低数据速率和低成本。主要适用于自动控制和遥控领域,可嵌入各种设备。简而言之,ZigBee 是一种廉价、低功耗的短距离无线网络通信技术。5、温室控制系统软件设计5.1.1下位机软件设计AVR单片机系列ATmega16单片机,所用下位机编程软件为ICCV7 。整体程序框图如下:DS18B20DS18B20驱动程序检测实时温度DHT11驱动程序检测实时湿度AD转换内外光敏电阻变换电压值程序数据处理部分检测热释电信号程序加热器驱动程序报警信号输出程序通风散热扇驱动程序串口致程序补光灯驱动程序定时器串口接收程序PWM波产生程序图 5.1从
16、图中可以看出,下位机的程序模块主要包括:数据采集单片机通过驱动DS18B20和DHT11,读出当前棚的实时温湿度,控制单片机AD,实现外接光敏电阻电压的采样,反映当前时刻的光强.然后通过热电检测程序读取热电的当前状态,完成数据采集。2.数据处理对采集到的数据进行进一步处理,如合并小数和整数,将多于一个字节的数字分成几个字节进行存储操作,完成上位机发来的数字的比较操作。数据致将处理后的数据通过无线传输模块致给上位机。数据接收5. 实施控制对接收到的数据和操作指令进行处理,并与实时采集的数据进行比较,从而完成对系统的控制操作。状态记忆当下位机的数据发生变化时,单片机会将数据写入EEPROM,保证异
17、常情况恢复后下位机系统可以继续以之前的状态运行。软件程序流程图如下:开始开始DS18B20初始化AD初始化定时器初始化PWM波形发生初始化串口初始化开中断AD转换热释电传感器检测读取温度读取湿度串口致数据读取串口数据控制方式:手动(Y)自动(N)加热(yes/no)通风(yes/no)补光(yes/no)控制温度控制光照强度YN图 5.2 程序流程图5.1.2编程软件介绍ICCAVR是AVR单片机的C语言开发软件。软件集编辑、代码生成、编译、程序下载等功能于一体。是国内使用最广泛的AVR单片机开发软件。我们用它来编辑、编译avr软件。5.2.1电脑软件设计本系统的上位机系统为微软Visual
18、Studio 2008软件编写的VB操作平台。软件平台截图为:图 5.3 上位机软件截图从软件平台截图可以看出,上位机控制平台的主要功能有:下位机系统主要参数显示、手动控制参数设置、自动控制参数设置、通讯端口设置、软件帮助部分。各部分的具体功能如下:展示部分:该部分主要用于显示系统的温度、湿度、外界光线等数据,以便实时掌握下位机系统的状态。手动控制参数设置部分:该部分主要用于设置手动控制的状态,如确定当前补光灯的开关状态、通风散热风扇的开关状态等。点击手动控制完成手动控制下位机。自动控制参数部分完成下位机系统的精准控制,如输入设定的目标温度、输入设定的棚光强度等,点击自动控制即可准确完成下位机
19、的自动控制。通讯端口设置部分该端口主要用于设置PC机串口通讯使用的端口,以匹配通讯的波特率。软件帮助部分这部分主要用于显示一些帮助信息。本平台除了完成以上部分外,还可以记录软件最后的状态,写入文本文件进行存储,并记录报警信息,同样存储在文本文件中。5.2.2Microsoft Visual Studio 2008 编程软件简介Microsoft Visual Studio 2008是Windows Vista、Office 2007和Web 2.0的下一代开发工具,代号为“Orcas”,是对Visual Studio 2005的及时全面升级。VS2008引入了250多个新特性,集成了对象、关系
20、数据、XML的访问方式,语言更加简洁。使用 Visual Studio 2008 可以高效开发 Windows 应用程序。更改可以实时反映在设计器中,XAML 中的 IntelliSense 功能可以提高开发效率。同时Visual Studio 2008 支持项目模板、调试器和部署器。 Visual Studio 2008 可以高效开发Web 应用程序,集成AJAX 1.0,包含AJAX 项目模板,还可以高效开发Office 应用程序和Mobile 应用程序。开发智能客户端应用程序。 Visual Studio 2008为开发人员生成智能客户端提供了一种新的简便方法。它提供了一套全面的工具和类
21、来简化将智能客户端与新的或现有的Web应用程序集成的过程,并支持在断开连接的情况下本地缓存数据。创建Microsoft Office应用程序。 Visual Studio Tools for Office (VSTO)完全集成到Visual Studio 2008专业版中。开发人员现在可以自定义各种Office应用程序(例如Outlook和PowerPoint ),以提高用户生产力并简化部署。构建Windows Vista应用程序。通过将新的Windows Presentation Foundation功能整合到现有的Windows窗体应用程序和新的应用程序中,开发人员可以轻松地利用新的平台技
22、术并为他们的客户提供更具吸引力的应用程序。更高效地处理数据。由于引入了语言集成查询(LINQ)和其他数据访问改进,开发人员可以将一致的编程方法应用于数据处理,使用新的数据设计表面执行数据访问,这与使用内置类的设计相比实现偶发连接模型。启用新的网络体验。开发人员可以使用Visual Studio 2008轻松创建高效的交互式Web应用程序。熟悉的ASP.NET AJAX编程模型的无缝集成可实现更高效的客户端执行,为最终用户提供响应速度更快的Web界面。 JavaScript IntelliSense和调试进一步改善了开发体验。获得改进的整体开发人员体验。 Visual Studio 2008的主
23、要产品质量改进和最流行的蓝图向用户返回错误的方式的更改相结合,可提供更好的整体开发人员体验。此外, Visual Studio 2008使开发人员能够针对不同的.NET Framework 平台,增强用户在其开发工作中使用不同工具集和框架的能力。改进应用程序生命周期管理(ALM) 。 Visual Studio 中的ALM 功能不仅为管理整个软件开发生命周期提供了良好的支持,而且为与企业应用程序的最终用户及其利益相关者的关键交互提供了绝对保证。很好的支持。6.总结以上是我们设计的蔬菜大棚自动控制系统。它经过多次修改和组织,以满足设计的基本要求。采用ATmega16 AVR单片机、DHT11数字
24、温湿度传感器、DS18B20温度传感器、热释电传感器、散热风扇、加热器等器件设计蔬菜大棚控制系统,实现温湿度采集、温度自动调节、光照强度自动调节、防盗报警等功能。由于水平有限,这种设计存在一定的问题。比如系统数据传输数据有误,控制不够精准等等。由于以单片机为核心控制元件,与其他设备配合使用,使温控系统具有功能强大、性能可靠、电路简单、成本低等特点,优化的程序使其高度智能化。同时有上位机控制操作,使控制更加方便简洁,节省人力物力,更加智能化和人性化。附录:下位机程序代码:主程序:#include #include #includecanshu.h / #includezifubianma.h #
25、includeeeprom.h #includeds18b20.h #includeshidu.h #includeAD.h /#includemotor.h #includePWM.h #includePID.h #includebuguangdeng.h #includeSCI.h #include time. h / #include nokia5110.h void main( void ) Init_DS18B20(); AD_init(); /motor_init(); time0_init(); nokia5110_init(); PWM_init(); USART_Init()
26、; SEI() ;控制初始化();读取日期(); 而(1) AD_chuli(); if (zishoudong=1) dianresi();同风();不光(); elseif (zishoudong=2) 空文();不光等(); reshidian(); AD.H无效 AD_init(无效) DDRA=0 x00;端口=0XFF;ADCSRA=0 xe6;unsigned int AD_read(unsigned char a) 无符号整数 zhi=0;ADMUX=a; 而(!ADIF);zhi=ADC;归之;无效AD_chuli(无效) 十堰0=AD_read(0);延迟毫秒(20);十堰
27、1=AD_read(1);延迟毫秒(20);shiyan2=AD_read(2);a3=十堰0/253;a4=shiyan0%253;/光a5=十堰1/253;a6=shiyan1%253;/外部照明a7=十堰2/253;a8=shiyan2%253;/卷帘快门度数不光等无效控制初始化(无效) DDRB&=0 x 7f; DDRC|=0XC0; PORTC&=0X 3F; /*shoudongkongzhi*/ void buguang( void ) if (cunshushou1=1) 端口|=0X80; elseif (cunshushou1=0) PORTD&=0X 7F; 无效dia
28、nresi(无效) if (村鼠手0=1) 端口C|=0X80; elseif (cunshushou0=0) PORTC&=0X 7F; 无效同风(无效) if (村鼠手4=1) 端口C|=0X40; elseif (cunshushou4=0) PORTC&=0XbF; /*紫东空志* */ void kongwen( void ) if (TN=(村树子0+1) PORTC&=0X 7F; /关闭加热端口C|=0X40; /关闭加热 elseif (TN=(村树子0) PORTC&=0X 3F;/关闭加热/PORTC&=0XbF;/关闭风扇 elseif (TN(cunshuzi3) P
29、ORTC&=0XDF; elseif (shiyan1(cunshuzi4) PORTC|=0X20; 无效reshidian(无效) 如果(PINB&0X80)=0X80) a10=1; elseif (PINB&0X80)=0 x00) 一个10=0; D s18b20.h/* * *下面是DS18B20的操作流程* * */* * *功能:初始化DS18B20传感器,读取响应信号导出参数:flag* * */无符号字符 Init_DS18B20(void)无符号字符标志; /存储DS18B20是否存在的标志,flag=0,表示存在; flag=1,表示不存在DDRB|=0 x40;端口B
30、|=0X40; /先把数据线拉高对于(时间=0;时间2;时间+); /轻微延迟约6微秒/2PORTB&=0 xbf; /然后将数据线从高拉低,需要保持480960us对于(时间=0;时间200;时间+); /轻微延迟约600微秒/200/向DS18B20致一个持续480960us的低电平复位脉冲端口B|=0X40; /释放数据线(将数据线拉高)对于(时间=0;时间10;时间+); /延时30us左右(释放总线后,需要等待1560us,DS18B20才会输出一个脉冲)/10DDRB&=0XBF;对于(时间=0;时间5;时间+)标志=PINB&0X40; /让单片机检测是否有存在脉冲输出(DQ=0
31、表示存在)对于(时间=0;时间200;时间+); /延迟足够长等待脉冲输出完成 /200DDRB|=0X40;返回(标志); /返回检测成功标志/* * *功能:从DS18B20读取一个字节的数据导出参数:dat* * */无符号字符 ReadOneChar(void)无符号字符 i=0;无符号字符 dat,flag1; /存储读取的一个字节数据对于 (i=0;i=1;无(); /等待一个机器周期 端口B|=0X40; /将数据线“人为”拉高,准备单片机检测DS18B20的输出电平DDRB&=0XBF;对于(时间=0;时间2;时间+); /延迟6us左右,让主机在15us采样/2flag1=P
32、INB&0X40;如果(标志1=0X40)数据|=0 x80; /如果读取的数据为1,则将1存入dat别的dat|=0 x00;/如果读取的数据为0,则将0存入dat/将单片机检测到的电平信号DQ存入ri对于(时间=0;时间8;时间+); /延迟为3us,两个读序列之间必须有大于1us的恢复周期。 /8DDRB|=0X40; 返回(数据); /返回读取的十进制数据/* * *功能:向DS18B20写入一字节数据入口参数:dat* * */无效 WriteOneChar(无符号整数数据)无符号字符 i=0;数据=6;对于 (i=0; i8; i+)端口B|=0X40; / 先把数据线拉高无();
33、 /等待一个机器周期 PORTB&=0 xBF; /当数据线从高拉低时开始写序列无();PORTB=dat&0 x40; /用AND运算取出一点要写入的二进制数据,/送到数据线等待DS18B20采样for(time=0;time10;time+);/延迟约30us,DS18B20拉低后约1560us从数据线采样 /10端口B|=0X40; /释放数据线 for(time=0;time=1; /将dat中的每个二进制位数据右移1位对于(时间=0;时间4;时间+); /稍微延迟给硬件一点响应时间/4/* * *功能:准备读取温度* * */无效ReadyReadTemp(无效)初始化_DS18B2
34、0(); /初始化DS18B20WriteOneChar(0 xCC); / 跳过读取序列号列号的操作WriteOneChar(0 x44); / 开始温度转换 初始化_DS18B20(); /初始化DS18B20WriteOneChar(0 xCC); /跳过读取序列号列号的操作WriteOneChar(0 xBE); /读取温度寄存器,前两位是温度的低位和高位/*/虚空文都(虚空)ReadyReadTemp(); /读取温度准备好TL=ReadOneChar(); /第一次读取的是低温值TH=ReadOneChar();TN=TH*16+TL/16; /实际温度值=(TH*256+TL)/
35、16,即:TH*16+TL/16 /这是温度的整数部分,小数部分舍弃TD=(TL%16)*10/16; /计算温度的小数部分,余数乘以10再除以16四舍五入,/这样得到温度小数部分的第一位(保留1位小数)a1=TN;a2=TD;SCI.H/无符号字符转台12=254,0,0,0,0,0,0,0,0,0,0,0;无效 USART_Init(无效)DDRD|=0X02; /TX:D1;RX:D0DDRD&=0Xfe; /TX:D1;RX:D0UCSRB|=0X98; /接收中断使能,接收和致时UCSRC|=0X86; /寄存器被选中,致八位数据UBRR=47; /* 将波特率设置为 9600*/无
36、效 USART_TX(无符号字符数据) /* 等待致缓冲区为空 */而(!TXC);/* 将数据放入缓冲区,致数据 */UDR = 数据;void fasong(unsigned char *str, unsigned char m) 无符号字符 i=0,b10;对于(i=0;i10;i+) bi=(ai+1+1)%10;a11=b0+b1+b2+b3+b4+b5+b6+b7+b8+ b9+a1; for(i=0;im;i+) USART_TX(stri);延迟毫秒(10);#pragma interrupt_handler 传口:iv_USART_RXC虚空传口(虚空) unsigned c
37、har shuju=0,i=0;TIMSK&=0Xfe;/溢出中断关笔shuju=UDR;if(shuju=255&kaiguan_chuan=0)/数据开始 kaiguan_chuan=1;寻欢=0;else if(kaiguan_chuan=1)/数据接收 shouxunhuani=shuju;寻欢尼+;if(xunhuani=11)/数据接收完成 kaiguan_chuan=0;寻欢=0;if(shou7=1&shou8=0)/手动控制if(shou10=(shou0+shou1+shou2+shou3+shou4+shou5+shou6+shou7+shou 8+守9) 对于(i=0;
38、i11;i+) 存树手i=手i;对于(i=0;i11;i+) EEPROM_write(i,cunshushoui);EEPROM_write(11,1);紫手东=1;PWM_init1();else if(shou7=0&shou8=1)/自动控制 对于(i=0;i10;i+) 占村i=手i%10; if(shou10=(站村0+站村1+站村2+站村3+站村4+站村5+站村6+站村7+站村8+站村9) 对于(i=0;i11;i+) 存树子i=手i;对于(i=0;i11;i+) EEPROM_write(i,cunshuzii);EEPROM_write(11,2);紫手东=2;PWM_ini
39、t();TIMSK|=0X01;/溢出中断使能希杜.h无效延迟(无符号整数 a) 而(a-);无效 COM(无效)无符号字符 i;对于(i=0;i8;i+)U8FLAG=2;while(!(PINB&0X20)&U8FLAG+);/while(!P2_0)&U8FLAG+);延迟(50);U8温度=0;如果(PINB&0X20)U8温度=1;U8FLAG=2;而(PINB&0X20)&U8FLAG+);如果(U8FLAG=1)休息;U8comdata0;b-)for(c=120;c0;c-);E eprom.h无效 EEPROM_write(无符号整数 uiAddress,无符号字符 ucDa
40、ta) /* 等待最后一次写操作结束 */而(EECR & (1EEWE);/* 设置地址和数据寄存器 */EEAR = ui地址;EEDR = ucData;/* 设置 EEMWE */EECR |= (1EEMWE);/* 设置 EEWE 启动写操作 */EECR |= (1EEWE);unsigned char EEPROM_read(unsigned int uiAddress) /* 等待最后一次写操作结束 */而(EECR & (1EEWE);/* 设置地址寄存器 */EEAR = ui地址;/* 设置 EERE 开始读操作 */EECR |= (1EERE);/* 从数据寄存器返
41、回数据 */返回 EEDR;无效读取日期(无效) 无符号字符 j=0;对于(j=0;j12;j+) read_prej=EEPROM_read(j);if(read_pre11=1) 对于(j=0;j11;j+) 存书手j=read_prej;紫手东=1;否则 if(read_pre11=2) 对于(j=0;j11;j+) 存树子j=read_prej;紫手东=2;P id.hvoid lightctl(无符号字符 a,无符号整数 b) 诠释错误=0;错误=ab;pwm=pwm+P*error+I*lasterror+D*preerror;前错误=最后错误;上一个错误=预错误;如果(pwm25
42、6)pwm=255;OCR2=pwm;P wm.h无效 PWM_init(无效) /TCCR 1A=0X83;/快速PWM/TCCR1B=0X 0A;/TCNT1=10000;/OCR 1A= 0;/DDRD|=0X20;TCCR2=0X 6A;/快速 PWMTCNT2=0;OCR2=0;DDRD|=0X80;无效 PWM_init1(无效) /TCCR 1A=0X00;/快速PWM/TCCR1B=0X00;/快速PWM/TCNT2=150;/OCR2=0;TCCR2=0X00;/快速PWMDDRD|=0X80;上位机程序:公共类蔬菜大棚控制平台公众号 shou as BytePublic z
43、i As Byte公众号作为字节公文都为双公共 wendu1 作为 Double公共wenduz作为整数公共 wendux 作为整数public shidu As Integer公内光为整数public waiguang As Integer公共 juanlian As Integer公共 zhi 作为整数大众文建作为字节大众楷士作为字节 public kaishi1 As Byte公共 i 作为字节 公共 j 作为字节公共书局(0到10)作为字节jieshoushuju public shuju1(0 To 10) As Byte大众娟凯As Byte公共宝开作为字节 公开 fasong A
44、s Byte大众标致作为字节公共宝金作为字节大众宝金空作为字节公共节守间(0到9)作为字节public shoudongbian(0 To 5) As Byte私有函数 chushihua() As Integer子 = 0寿 = 0川 = 0我 = 0标志 = 0文健 = 0开士 = 0zidong.Checked = Falseshoudong.Checked = False如果 tongxun1.PortOpen = True 那么tongxun1.PortOpen = False万一结束功能私有函数 chuanshuzi() As Integer将 aa(0 到 11) 调暗为字节暗
45、bb(0 到 9)如果 zi = 1 那么aa(0) = 255aa(1) = shedingwendu.Textaa(2) = shedingshidu.Textaa(3) = shedingguanqiang.Textaa(4) = TextBox1.Textaa(5) = TextBox2.Textaa(6) = 娟开aa(7) = 保开aa(8) = 守aa(9) = 子aa(10) = 0对于 p = 0 到 9bb(p) = aa(p + 1) Mod 10下一个aa(11) = bb(0) + bb(1) + bb(2) + bb(3) + bb(4) + bb(5) + bb(
46、6) + bb(7) + bb(8) + bb(9)如果 tongxun1.PortOpen = True 那么tongxun1.Output = aa万一万一结束功能私有函数 chuanshushou() As Integer将 aa(0 到 11) 调暗为字节如果 shou = 1 那么aa(0) = 255aa(1) = 手动边(0)aa(2) = 手东边(1)aa(3) = 手动边(2)aa(4) = 手动边(3)aa(5) = 手东边(4)aa(6) = 手动边(5)aa(7) = 0aa(8) = 守aa(9) = 子aa(10) = 0aa(11) = aa(1) + aa(2)
47、 + aa(3) + aa(4) + aa(5) + aa(6) + aa(7) + aa(8) + aa(9) +啊(10)如果 tongxun1.PortOpen = True 那么tongxun1.Output = aa万一万一结束功能私有函数 yiyue() As Integer我的 puter.Audio.Play(My.Resources._901033, AudioPlayMode.Background)结束功能私有子蔬菜温室控制 Platform_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) H
48、andles MyBase.LoadLabel2.Text = DateString + + TimeStringRadioButton6.Checked = TrueRadioButton8.Checked = TrueRadioButton10.Checked = TrueRadioButton12.Checked = TrueRadioButton14.Checked = TrueRadioButton16.Checked = Truetongxun1.InBufferSize = 20 设置接收数据的缓冲区为20字节tongxun1.InputLen = 1 设置输入从接收缓冲区读取的
49、字节数为1tongxun1.RThreshold = 1 收到10个字节时设置OnComm事件tongxun1.InputMode = 1 设置数据接收方式为二进制形式tongxun1.InBufferCount = 0 清除接收缓冲区tongxun1.OutBufferCount = 0 清除致缓冲区数据如果 tongxun1.PortOpen = True 那么tongxun1.PortOpen = False万一ComboBox1.Text = COM1ComboBox2.Text = 9600调用chushihua()结束子Private Sub Button1_Click(ByVal
50、 sender As System.Object, ByVal e As System.EventArgs) 处理 Button1.Click暗淡a = MsgBox(您确定要退出系统吗?, 52, 提示!)如果 a = MsgBoxResult.Yes 然后调用chushihua()结尾万一结束子计时器Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) 处理 Timer1.TickDim writer As String = Alarm Log: & vbCrLf & Time
51、: & DateString & & TimeString & vbCrLfIf baojin = 1 And (zi = 1 And baojinkong = 1) or (shou = 1 And shoudongbian(5) = 1) 那么我的 puter.FileSystem.WriteAllText(Alarm.txt, writer, True)调用 yinyu()万一Label2.Text = DateString + + TimeString结束子Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As
52、 System.EventArgs) 处理 Timer2.Tick如果标致 = 0 那么Label6.Text = 十度Label8.Text = 内光Label10.Text = 外光装台条.Value = juanlianLabel4.Text = 文都万一结束子串行程序段Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) 处理 ComboBox1.SelectedIndexChangedOn Error GoTo cuowu选择案例 C
53、omboBox1.Text案例是 = COM1tongxun1 mPort = 1案例是=“COM2”tongxun1 mPort = 2案例是 = COM3tongxun1 mPort = 3案例是 = COM4tongxun1 mPort = 4案例是 = COM5tongxun1 mPort = 5案例是=“COM6”tongxun1 mPort = 6案例是 = COM7tongxun1 mPort = 7案例是=“COM8”tongxun1 mPort = 8案例是 = COM9tongxun1 mPort = 9案例是 = COM10tongxun1 mPort = 10案例是 =
54、 COM11tongxun1 mPort = 11案例是 = COM12tongxun1 mPort = 12案例是 = COM13tongxun1 mPort = 13结束选择退出子错物:MsgBox(警告:端口设置错误!, 48, 错误)chuankou.Text = 连接串口如果 tongxun1.PortOpen = True 那么tongxun1.PortOpen = False万一ComboBox1.Text = COM1shoudong.Checked = Falsezidong.Checked = False川 = 0shou = 0 手动控制标志zi = 0 自动控制标志结束
55、子Private Sub ComboBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) 处理 ComboBox2.SelectedIndexChanged选择案例 ComboBox2.Text案例是 = 600tongxun1.Settings = 600,N,8,1案例是 = 1200tongxun1.Settings = 1200,N,8,1案例是 = 2400tongxun1.Settings = 2400,N,8,1案例是 = 4800tongxun1.Setting
56、s = 4800,N,8,1案例是 = 9600tongxun1.Settings = 9600,N,8,1案例是 = 14400tongxun1.Settings = 14400,N,8,1案例是 = 19200tongxun1.Settings = 19200,N,8,1案例是 = 38400tongxun1.Settings = 38400,N,8,1案例是 = 56000tongxun1.Settings = 56000,N,8,1案例是 = 57600tongxun1.Settings = 57600,N,8,1案例是 = 115200tongxun1.Settings = 1152
57、00,N,8,1结束选择结束子Private Sub chuankou_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 处理chuankou.ClickOn Error GoTo 端口if chuankou.Text = 连接串口 Thenchuankou.Text = 断开串口cuan = 1 串口切换标志位tongxun1.PortOpen = TrueElseIf chuankou.Text = 断开串口 Thenchuankou.Text = 连接串口川 = 0tongxun1.PortOpen = F
58、alseshoudong.Checked = Falsezidong.Checked = Falseshou = 0 手动控制标志zi = 0 自动控制标志If zidong.Checked = True Then调用 chuanshuzi()ElseIf shoudong.Checked Then调用 chuanshushou()万一万一退出子端口:chuankou.Text = 连接串口MsgBox(错误:无效端口, 48, 错误)川 = 0结束子Private Sub tongxun1_OnComm(ByVal sender As System.Object, ByVal e As Sy
59、stem.EventArgs) 处理 tongxun1.OnComm将 rBuf() 调暗为字节选择案例 tongxun1 mEvent案例2rBuf = tongxun1.Input如果 rBuf(0) = 255 那么开士 = 1否则如果 i = 11 那么表志 = 1开士 = 0我 = 0对于 g = 0 到 9节守间(g) = (shuju(g) + 1) Mod 10下一个if (shuju(10) = shuju(0) + 结守剑(0) + 结守剑(1) + 结守剑(2) + 结守剑(3) + 结守剑(4) + 结守剑(5) + 结守剑(6) + 结守剑(7) ) + 界守间(8)
60、 + 界守间(9) 然后文都 = (shuju(0) * 10 + shuju(1) / 10.0内光 = 书聚(2) * 253 + 书聚(3)外光 = 书局(4) * 253 + 书局(5)如果 (shuju(6) * 253 + shuju(7) / 6 = 100 那么娟联 = (shuju(6) * 253 + shuju(7) / 6万一十度=书居(8)宝金=书举(9)万一tongxun1.InBufferCount = 0 清除接收缓冲区标志 = 0万一如果 kaishi = 1 并且 rBuf(0) 255 那么shuju(i) = rBuf(0)我 = 我 + 1万一结束选择
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 临床组织细胞坏死性淋巴结炎疾病要点
- 汽车底盘构造课件 第七章 纯电动车汽车驱动传动系统
- 3d建模外包合同
- 个人可以外包合同
- 二手车业务外包合同
- 传媒业务外包合同
- 软件测试课件 第10章 数据库测试
- 2024新人教版英语八年级下Unit 7知识清单
- 会展外包合同
- 光伏发电外包合同
- 铲车驾驶员安全操作规程
- 职业指导师-国家职业标准
- 封箱机安全操作规程
- 医院一级护理知识培训课件
- T/CHES 129-2024山区小流域沟道治理人工阶梯-深潭系统技术导则
- 人工智能在商业中的应用
- 内科护理心电图监测与护理要点
- 金属冶炼(黑色金属铸造)主要负责人安全资格考试题库及答案
- 肺癌戒烟健康宣教
- 福州三中自招数学试卷
- 俄语拼音教学课件
评论
0/150
提交评论