版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
设计基于单片机的温室大棚自动控制系统论文题目:基于单片机的温室大棚自动控制系统
基于单片机的温室大棚自动控制系统【摘要】本系统由单片机STC89C52、温度检测电路、湿度检测电路、光照度检测电路、键盘扫描电路、时钟电路、传感器电路以及继电器控制电路等部分组成。系统采用STC89C52单片机,功能强、功耗低、价格低、稳定可靠、应用广泛、通用性强等特点。论文完成了以STC89C52单片机为核心对空气温度、土壤湿度、光照度进行数据的采集、处理、显示等系统的基本框图、工作原理和继电器控制的设计的阐述。该系统对植物生长过程中的土壤湿度、环境温度、光照度进行了实时地、连续地检测、直观地显示并进行自动地控制。克服了传统的人工测量方法不能进行连续测量的弊端,节省了工作量,并避免了人为的疏漏或错误造成的不必要的损失。【关键词】单片机、湿敏传感器、数字温度传感器、光敏电阻、继电器控制。
目录TOC\o"1-3"\h\z1.绪论 31.1选题背景 31.2国内外的发展现状 31.3课题内容、目的及思路 31.4设计过程及工艺要求 32.方案的比较和选择 42.1湿度传感器的选择 42.2温度传感器的选择 52.3光照度传感器的选择 63系统的总体设计 63.1确定系统任务 63.2系统的组成和工作原理 63.3元件的特性 93.3.1STC89C52特点 93.3.2AD0804特点 104.电路设计 104.1湿度测量电路 104.2温度测量电路 114.3光照度测量电路 124.4数据显示电路 124.5复位电路 134.6键盘电路 134.7继电器控制电路 145.软件设计 145.1主程序流程图 145.2.参数测量子程序流程图 165.3.键盘扫描子程序流程 166.总结 18参考文献 18附录1电子元器件明细表 21附录2:系统总体电路图 22附录3:实物图 23附录4:系统源代码 25
1.绪论1.1选题背景现代化农业生产中的重要一环就是对农业生产环境的一些重要参数进行检测和控制。例如:空气的温度、湿度、光照强度、二氧化碳含量、土壤的含水量等。温室环境与生物的生长、发育、能量交换密切相关,进行环境测控是实现温室生产管理自动化、科学化的基本保证,通过对监测数据的分析,结合作物生长发育规律,控制环境条件,使作物达到优质、高产、高效的栽培目的。以蔬菜大棚为代表的现代农业设施在现代化农业生产中发挥着巨大的作用,所以对大棚内的温度、湿度与光照强度等参数的控制就显的非常重要了。传统的方法是用毛发湿度表、酒精温度计等进行人工测量,再对不符合的温度、湿度、光照度通过在温室大棚进行灌溉、降温、遮光等控制操作[1]来调节,这种人工测控的方法费时费力、效率低、且无法保证测量的连续性,测量的误差大、随机性大,随意性强。为了克服以上几点不足,我们需要一种造价低廉,使用方便且测量准确的自动测控系统。1.2国内外的发展现状国外的温室设施己经发展到比较完备的程度,并形成了一定的标准,但是价格非常昂贵,缺乏与我国气候特点相适应的测控软件,不利于在我国广泛地推广,而当今在我国大多数地方对大棚温度、湿度、二氧化碳含量,光照强度的检测与控制都采用人工管理,存在着测控精度低、劳动强度大及由于测控不及时等弊端,容易造成不可弥补的损失,结果不但大大增加了成本,浪费了人力资源,而且很难达到预期的效果。本系统主要针对温室大棚内温度、湿度,光照强度研制了单片机控制的温室大棚自动控制系统,综合考虑系统的精度、效率以及经济性要求三个方面因素之后,最终确定以STC89C52单片机为控制核心,选用性价比比较高的传感器,实现对温湿度的精确测量与准确控制,同时又具有价格低等优点,便于在我国推广。1.3课题内容、目的及思路本系统主要采用STC89c52单片机作为系统的控制核心,由温室内的空气温度传感器、土壤湿度传感器、光照度传感器采集数据,经过模数转换后送入单片机,由单片机根据采集的数据做出相应的控制,例如控制继电器的开合,使换气风扇、滴灌设备、遮阳幕等设备的启动或停止,达到控制温室各项参数的目的。同时在外接的LCD液晶上显示实时参数,便于观察。外接的键盘可以设定系统控制的温度值,以满足不同条件下对温度的不同要求。1.4设计过程及工艺要求在本系统中为了保证对温度、湿度和光照度的检测的实时性和准确性,采用了数字温度传感器DS18B20来检测温度。采用湿度传感器HS1101来检测土壤湿度。采用光敏电阻检测光照度。最后通过单片机STC89C52处理后显示在1602液晶显示屏上,并通过控制继电器的开合控制相应的调节部件对植物的生长环境的各项参数进行调节,以达到适合植物生长的环境条件。本系统的基本功能有:检测空气温度、土壤湿度、环境光照度。显示以上各项参数并自动调节。2.方案的比较和选择2.1湿度传感器的选择单片机作为控制核心,要有被检测信号输入,由单片机处理。如何准确的确定外围环境的各项参数就显的非常重要。传感器是实现测量与控制的首要环节,是测控系统的关键部件,如果没有传感器对原始信号进行准确可靠的捕捉和转换,系统就无法实现要求的各项功能。工业生产过程中的自动化的测量和控制,大部分主要依靠各种传感器来检测和控制生产过程中的各项参量,使系统工作在最佳的状态下。测量土壤湿度的方法有很多种,其原理是根据某种物质从其周围的土壤中吸收水分后引起的物理或化学的性质的变化,间接的获得土壤的湿度。电容式、电阻式和湿涨式湿敏元件分别是根据其高分子材料吸水后的介电常数、电阻率和体积发生的变化进行湿度的测量。方案一:采用HOS-201湿敏传感器[2]。HOS-201湿敏传感器为高湿度开关传感器,它的工作电压为交流1V以下,频率为50HZ~1KHZ,测量范围为0%~100%RH,工作温度为0~50℃,阻抗在75%RH(25℃)时为1MΩ。这种传感器主要用于开关 方案二:采用HS1100/ HS1101湿度传感器[3]。HS1100/ HS1101湿度传感器,在电路结构上等效于一个电容器,其电容量随着土壤湿度的增大而增大,不需要校准的完全互换性,高可靠性和长期稳定性,快速响应,专利设计的固态聚合物结构由顶端接触(HS1100)和侧面接触(HS1101)两种封装产品,适用于线性电压输出和频率输出两种电路。 综合比较方案一和方案二,方案一虽然满足精度和测量温度的要求,但是只是限定于一定的范围内使用时具有良好的线性度。因此,我们选择方案二作为本设计的湿度传感器。20406080100相对湿度%20406080100相对湿度%200190180170电容F图2-1:HS1101湿度-电容响应曲线 湿度传感器HS1101的特点:相对湿度在1%~100%RH范围内:电容量有16pf变到200pf,其误差不大于±2%RH,响应时间小于5S,温度系数为0.04pf/℃。由此可以看出HS1101具有测量精度高,反应速度高的优点,HS1101的一些常用参数如表2-1:表2-1:HS1101常用参数参数符号参数值单位工作温度Ta-40~100℃储存温度Tstg-40~125℃供电电压Vs10Vac湿度范围RH0~100%RH焊接时间@=260t10S2.2温度传感器的选择方案一:采用AD590温度传感器[4]。AD590温度传感器是美国模拟器件公司生产的单片集成两端感温电流源。AD590性能描述:测量范围在-50℃--+150℃,满刻度范围误差为±0.3℃,当电源电压在5—10V之间,稳定度为1﹪时,误差只有±0.01℃。AD590为电流型传感器温度每变化1℃方案二:采用DS18B20温度传感器[5]。美国DALLAS公司的产品可编程单总线数字式温度传感器DS18B20可实现室内温度信号的采集,有很多优点:如直接输出数字信号,故省去了后继的信号放大及模数转换部分,外围电路简单,成本低;单总线接口,只有一根信号线作为单总线与CPU连接,且每一只都有自己唯一的64位系列号存储在其内部的ROM存储器中,故在一根信号线上可以挂接多个DS18820,便于多点测量且易于扩展。 综合比较方案一和方案二,两方案都可以满足设计所要求的精度温度要求,但方案一的后续电路复杂,需要经过放大,数模转换等步骤,增加了设计的复杂度和成本,并需要占用单片机较多的I/O口。方案二的后续电路简单,占用的I/O口数量少,为整体设计留出了足够的I/O口资源。故我们采用方案二作为本系统的温度传感器。DS18B20的温度值格式如表2-2:表2-2DS18B20的温度值格式位7位6位5位4位3位2位1位0低字节232221202-12-22-32-4位15位14位13位12位11位10位9位8高字节SSSSS262524DS18B20中的温度传感器完成对温度的测量,用16位二进制形式提供,形式表达,其中S为符号位。例如+125℃的数字输出为07D0H(正温度直接把16进制数转成10进制即得到温度值-55℃的数字输出为FC90H。(负温度把得到的16进制数取反后1再转成10数字输出格式如表2-3:表2-3DS18B20的数字输出格式表温度数字输出(二进制)数字输出(十六进制)+125000001111101000007D0h+8500000101010100000550h+25.062500000001100100010191h+10.125000000001010001000A2h+0.500000000000010000008h000000000000000000000h-0.51111111111111000FFF8h-10.1251111111101011110FF5Eh-25.06251111111001101111FE6Fh-551111110010010000FC90h2.3光照度传感器的选择 方案一:采用光照度传感器M124749,该光照度传感器采用先进的电路模块技术开发变送器,用于实现对环境光照度的测量,输出标准的电压及电流信号,体积小,安装方便,线性度好,传输距离长,抗干扰能力强,量程可调。但价格昂贵,性价比不高,且不易购买。 方案二:采用光敏电阻。光敏电阻的工作原理是当有光线照射时,电阻内原本处于稳定状态的电子受到\o"激发"激发,成为\o"自由电子"自由电子,所以光线越强,产生的自由电子也就越多,电阻就会越小。光敏电阻的优点有内部的光电效应和电极无关(光电二极管才有关),即可以使用\o"直流电源"直流电源。灵敏度和半导体材料、以及入射光的波长有关,价格低廉,性价比高。 比较以上两个方案,方案一虽然具有更好的设计精度和线性度,但性价比不如光敏电阻好。方案二具有较高的性价比且同时也能满足系统的设计要求,故采用光敏电阻作为光照度传感器。3系统的总体设计3.1确定系统任务 本设计的要求是以STC89C52为控制核心,以HS1101湿度传感器、DS18B20、光敏电阻完成对温室大棚内的各项参数进行测量,并将数据输入到单片机中,有单片机根据所编写的程序,通过继电器控制电路控制相应的设备达到自动调控温室大棚内各项参数的目的,同时将通过各种传感器测的数据实时地显示在液晶屏上。系统可通过按键人为地设定合适的参数,便于根据不同的植被的环境中使用。3.2系统的组成和工作原理 硬件系统主要有信号采集、信号分析、信号处理三个部分组成。信号采集由HS1101、DS18B20、光敏电阻组成。信号分析由单片机 STC89C52基本系统组成。信号处理由并行口 LCD液晶显示屏和继电器控制电路组成。硬件系统的原理方框图如图3-1:图3-1硬件系统的原理图图3-2土壤湿度控制流程图土壤湿度控制部分流程如图3-2:单片机通过湿度传感器检测土壤的湿度,若土壤的湿度过低,单片机就打开滴灌设备的电磁阀一分钟,对作物进行滴灌作业,增加土壤湿度,经过一段时间,单片机再次检测土壤湿度,如果湿度过高,就关闭滴灌设备的电磁阀,停止滴灌作业。如果开始检测的土壤湿度在适宜的范围,单片机则维持现有状态不变。空气温度控制流程如下图3-3:图3-3空气温度控制流程图单片机通过温度传感器检测温室的空气温度,当空气温度过高时,就通过控制电路,打开排气扇配合设置在温室大棚顶部的喷雾设备的进行一段时间的温室大棚的降温作业,而当温室温度过低时,则通过单片机自动关闭降温设备的工作,使温度值达到适宜的范围。若一开始检测的光照度在适宜范围,单片机将维持现有状态。光照度控制部分流程如下图3-4:光照度的控制主要靠遮阳幕的开关,光照度过高时,系统通过关闭大棚顶部的遮阳幕,避免阳光直射作物,减小光照度,及减少强光对作物生长的影响。当光照度过低时,就打开遮阳幕,增加光照度。如果检测的光照度在适宜范围,单片机将维持现状。图3-4光照度控制流程图3.3元件的特性3.3.1STC89C52特点(1)它是MCS-51系列单片机的派生产品,在指令系统、硬件结构和片内资源上与标准8052单片机完全兼容,DIP40封装系列与8051兼容均为Pin-to-Pin,使用时容易掌握;(2)高速(最高时钟频率90MHz)、低功耗、价格低、稳定可靠、应用广泛、通用性强,在系统/在应用可编程(ISP,IAP),不占用户资源。STC89C52[6]单片机管脚如图3-5:图3-5STC89C52单片机管脚定义图3.3.2AD0804特点ADC0804[7]为8bit的一路A/D转换器,其输入电压范围在0—5v,转换速度小于100us,转换精度0.39﹪,满足设计的精度要求。4.电路设计4.1湿度测量电路HS1101湿度传感器,在电路中等效于一个电容器件,其电容量随着所测的土壤湿度增大而增大,如何将电容的变化量准确的转换成单片机易于接受的信号,常有两种方法:一是将该湿敏传感器置于运放与阻容组成的桥式振荡电路中,所产生的正弦波电压信号经整流、直流放大、再经过A/D转换成为数字信号;另一种是将该湿敏传感器置于555振荡电路中,将电容值的变化转化为与之成反比的电压频率信号,可直接被单片机所采集[3]。本系统采用的是测量555输出的振荡的方法,电路如图4-1所示:图4-1湿度测量电路图此电路为典型的555双稳态电路。HS1101/HS1100作为电容变量接在555的TRIG与THRES两引脚上,引脚7用作电阻R20的短路。等量电容HS1101/HS1100通过R19与R20充电到门限电压(约0.67Vcc),通过R19放电到触发电平(约0.33Vcc),然后R20通过引脚7短路到地。传感器由不同的电阻R20与R19充放电。电压输出典型参数(@VCC=5V,25℃)表4-1HS1101湿度传感器电压输出典型参数(@VCC=5V,25℃RH0102030405060708090100Vout-1.411.651.892.122.362.602.833.073.313.554.2温度测量电路 因为在本系统中采用了DS18B20数字温度传感器,所以后续电路简单,只需将传感器的数据输入/输出管脚直接接到单片机I/O口,通过单片机的控制DS18B20传感器并实时读取空气温度[1]。数字温度传感器的测量电路如图4-2所示:图4-2温度测量电路图4.3光照度测量电路 系统采用价格低廉的光敏电阻测量光照度,因其没有良好的线性度,所以只能大致的测量。根据光敏电阻在不同的光照下有不同的阻值,经过A/D转换后输入到单片机内进行处理。其与ADC0804的连接电路如图4-3:图4-3ADC0804与单片机的连接电路图4.4数据显示电路 系统采用了LCD1602液晶显示屏[8],LCD1602液晶是一款很常用,也很易用的字符液晶。可以显示2行每行16个字符,对比度可调、黄绿色背光。与单片机的链接电路如图4-4:图4-4LCD1602与单片机的连接电路图4.5复位电路 为了确保系统中的电路温度可靠工作,复位电路[9]是必不可少的部分,其第一功能就是低电平复位,低电平复位是在通电瞬间通过充电来实现的。手动复位是指通过接通一按键开关,使单片机进入复位状态。系统上电运行后,如果需要复位,只需通过手动复位就可以实现。本系统使用的复位电路如图4-5所示:图4-5复位电路图4.6键盘电路本设计采用的键盘扫面电路采用简单的低电平扫描方式,即采用开关的一端与单片机I/O口相连,另一端接地的方式,用单片机检测I/O口是否是低电平来判断键盘是否被按下[10]。这样的方式可以方便键盘扫描部分的的编程。键盘电路如图4-6:图4-6键盘电路图4.7继电器控制电路 单片机是一个弱电器件,一般情况下它们大都工作在5V甚至更低。驱动电流在mA级以下。而要把它用于一些大功率场合,比如控制电动机,显然是不行的.所以,就要有一个环节来衔接,这个环节就是所谓的"功率驱动"。继电器驱动就是一个典型的、简单的功率驱动环节。在这里,继电器驱动含有两个意思:一是对继电器进行驱动,因为继电器本身对于单片机来说就是一个功率器件;还有就是继电器去驱动其他负载,比如继电器可以驱动中间继电器,可以直接驱动接触器,所以,继电器驱动就是单片机与其他大功率负载接口[11]。本设计采用的继电器控制电路如图4-7:图4-7继电器控制电路图图中的三极管起开关的作用,当单片机输出高电平时,三极管导通,继电器吸合。单片机输出低电平时,继电器断开。二极管起保护作用,防止继电器产生的感应电动势烧坏三极管或继电器。5.软件设计系统的程序设计包括以下几个方面:(1)键盘扫描[12]。(2)各项参数的采集。(3)各项参数在液晶上的显示。(4)各项参数的继电器控制。5.1主程序流程图 主程序的流程如图5-1图5-1主程序流程图 当单片机上电后,主程序开始运行,程序以开始初始化各参数的设置和端口定义后,清各标志位和LCD1602的显示,然后进行键盘扫描,再利用各传感器进行数据的采集,将采集的数据和设置好的参数进行对比,如果对比结果显示需要调节,启动相应的继电器控制电路对温室中需要调节的参数进行调节并显示在LCD1602上,如果比较结果显示不需要调节,则不启动继电器控制电路,直接显示参数,然后对键盘进行循环扫描。5.2.参数测量子程序流程图 参数测量子程序流程如图5-2图5-2参数测量子程序流程图子程序开始先声明变量和调用的函数后,调用显示函数,启动模数转换器ADC0804进行模数转换,转化如果未完成,单片机进行等待。当转换完成后,单片机读取转换后的数据,然后循环调用显示函数和进行模数转换。5.3.键盘扫描子程序流程 键盘扫描子程序流程如图5-3图5-3键盘扫描流程图 键盘扫描子程序一开始先扫描按键,判断是否有按键被按下,确定有按键被按下时判断被按下的是哪个按键,如果是按键S1,系统将进入设置模式,这时按键S2和S3被启用,进入那个参数的设置取决于按键S1被按下的次数,S1被按下一次,进行温度值设置,S1被按下两次,进行湿度值设置,S1被按下三次,进行光照度设置,当按下第四次,返回正常显示,按键S2和S3被禁用。按键S2和S3作用是调节参数值,每次按下S2,当前设置的参数值就加一。每次按下S3,当前设置的参数值就减一。参考文献[1]梅晓榕,柏桂珍,张卯瑞.自动控制元件及线路[M].北京:科学出版社,2007[2]张义和,王敏男,许宏昌,余长春.例说51单片机(C语言版)[M].北京:人民邮电出版社,2010,6[3]湿度传感器HS1101的原理与应用[EB/OL].中国电子科技信息网.[4]胡汉才.单片机原理与接口技术[M].清华大学出版社,1996.[5]黄贤斌,郑筱霞.传感器原理与应用[M].北京:高等教育出版社.成都:电子科技大学出版社,2004,3(2009.1重印)[6]何立民.单片机应用系统设计[M].北京:北京航天航空出版社.1990,50-490[7]刘笃仁,韩保君.传感器原理及应用技术[M].机械工业出版社.2003,8[8]1985赵亮.液晶显示模块LCD1602应用[J].电子制作,2007(3)[9]<英> GuiyunTian.FoundationandApplicationofMicrocontroller[M].北京:高等教育出版社[10]王勇等.凌阳单片机原理及其毕业设计精选[M].科学出版社[11]童诗白.模拟电路基础[M],北京:高等教育出版社,2001[12]马忠梅,籍顺心,张凯等.单片机的C语言应用程序设计[M]. 北京航天航空大学出版社,2003[13]<美>M考夫曼,AH塞得.电子计算手册[M].国防科技出版社.[14]王毅.单片机器件应用手册[M].北京:人民邮电出版社,1994Microcontroller-based
automaticmonitoringandcontrol
ofgreenhouse
lightandtemperature
andhumidity
systemElectronicInformationEngineering,DepartmentofElectronicInformationEngineering118542007050PanXiaoqiTeacher:YuJianming【Abstract】ThesystemconsistsofmicrocontrollerSTC89C52,thetemperaturedetectioncircuit,humiditydetectioncircuit,lightdetectioncircuit,thekeyboardscanningcircuit,clockcircuit,sensorcircuitandrelaycontrolcircuitandothercomponents.SystemusesSTC89C52SCM,thefeaturesofwhichasfollows:strongfunction,lowpowerconsumption,lowprices,stableandreliable,widelyused,versatileandsoon.
Thethesismainlyfocuson:thebaseblockdiagram,workingprincipleandthedesignofrelaycontrolwhichuseSTC89C52microcontrollerasthecoretocollect,conduct,displaythedataoftheairtemperature,soilhumidity,illuminanceandsoon.ThesystemuseReal-timeandcontinuousdetection,displayintuitivelyandcontrolautomaticallyonsoilmoisture,ambienttemperature,illuminanceintheprocessofplantgrowth.Toovercomethedefectsfromthetraditionalmanualmethodsofmeasurementwhichcannotmeasurecontinuously,savetheamountofwork,avoidomissionsorunnecessarylossesthatcausedbyerrors.
【Keywords】SCM,humiditysensors,digitaltemperaturesensors,lightdependentresistor,relaycontrol.附录1电子元器件明细表类型封装型号数量备注瓷片电容RAD-0.11042瓷片电容RAD-0.1302瓷片电容RAD-0.11502电解电容RAD-0.12200uF1电解电容RAD-0.110uF1电位器RP310K1插针HDR1X22p4插针HDR1X33p1插针HDR1X916p1三极管BCY-W3IN54013二极管DIO10.46-5.3x2.8IN40078发光二极管LED-1LED-13电阻AXIAL-0.4576K1电阻AXIAL-0.450K1电阻AXIAL-0.43K3电阻AXIAL-0.41K8电阻AXIAL-0.4909K1电阻AXIAL-0.410K15光敏电阻AXIAL-0.4MG45-141液晶模块HDRX16LCD16021集成电路N020ADC08042集成电路40P6STC89C521集成电路DIP-08TLC5551集成电路Header2HHS11011集成电路Header3HDS18B201稳压电路T03BLM78051按键SWKEP(4.5X6.5)12晶振RAD-0.2XTAL1附录2:系统总体电路图1.主板电路图:2.主板PCB图:3.电源原理图:附录3:实物图系统实物图1系统实物图2系统实物图3附录4:系统源代码程序:/*项目(Project):基于单片机的温室光温湿度自动控制系统创建人(Author):日期(Data):2011-1-1编译器(Complie):keil3 版本 :单片机(MCUtype):STC89C52RC注意事项(Attention):修改时间:*/#include<reg52.h>#include<absacc.h>#include<intrins.h>#include<stdio.h>#defineucharunsignedchar#defineuintunsignedint#defineT_cont0.0625;#defineDataPortP0//LCD接口#defineReadPortP2//AD读取ucharcodetemp[]={"temp:"};ucharcodetempset[]={"tempset:"};ucharcodehun[]={"hun:"};ucharcodehunset[]={"hunset:"};ucharcodeinte[]={"inte:"};ucharcodeinteset[]={"inteset:"};ucharcodeset[]={"stepinset!"};uchartempset1,s1num,s4num,hunset1,hun1,hun2,inteset1,inte1;bitT_sign;floattemp1=0;uchart_bai,t_shi,t_ge,t_feng,t_miao,sshi,sge, h_bai,h_shi,h_ge,hshi,hge, i_bai,i_shi,i_ge,ishi,ige;sbits1=P1^0;sbits2=P1^1;sbits3=P1^2;sbits4=P1^3;sbitrelay1=P1^5;sbitrelay2=P1^6;sbitrelay3=P1^7;sbitcs1=P3^0;sbitcs2=P3^1;sbitDS=P3^2;sbitlcdrw=P3^3;sbitlcden=P3^4;sbitlcdrs=P3^5;sbitwr=P3^6;sbitrd=P3^7;///////////////////////////////////////////////////////////////////////voiddelay(uintz) //延时函数{ uintx,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}voiddsreset(void)//sendresetandinitializationcommand{uinti;//DS18B20初始化DS=0;i=103;while(i>0)i--;DS=1;i=4;while(i>0)i--;}bittmpreadbit(void)//readabit读一位{uinti;bitdat;DS=0;i++;//i++fordelay小延时一下DS=1;i++;i++;dat=DS;i=8;while(i>0)i--;return(dat);}uchartmpread(void)//readabytedate读一个字节{uchari,j,dat;dat=0;for(i=1;i<=8;i++){j=tmpreadbit();dat=(j<<7)|(dat>>1);//读出的数据最低位在最前面,这样刚好//一个字节在DAT里}return(dat);//将一个字节数据返回}voidtmpwritebyte(uchardat)//writeabytetods18b20{//写一个字节到DS18B20里uinti;ucharj;bittestb;for(j=1;j<=8;j++){testb=dat&0x01;dat=dat>>1;if(testb)//write1写1部分{DS=0;i++;i++;DS=1;i=8;while(i>0)i--;}else{DS=0;//write0写0部分i=8;while(i>0)i--;DS=1;i++;i++;}}}voidreadtemperature() //读温度函数{ uinty;ucharT_L=0; ucharT_H=0; uchark; dsreset(); delay(1); tmpwritebyte(0xcc); tmpwritebyte(0x44); dsreset(); delay(1); tmpwritebyte(0xcc); tmpwritebyte(0xbe); T_L=tmpread(); T_H=tmpread(); k=T_H&0x08; if(k==0x08) T_sign=1; else T_sign=0; T_H=T_H&0x07; temp1=(T_H*256+T_L)*T_cont; temp1=temp1*100; t_bai=(uint)temp1/10000; y=(uint)temp1%10000; t_shi=y/1000; y=(uint)y%1000; t_ge=y/100; y=(uint)y%100; t_feng=y/10; t_miao=(uint)y%10; }/////////////////////////////////////////////////////////////voidinteadc0804()//光照度adc转换子程序与数据处理{ rd=1; wr=1;//读ADC ReadPort=0xff;//P1置位 cs1=0; wr=0; wr=1;//启动ADC rd=0;//开始读转换后数据 _nop_();_nop_();//稍延时,等待读完数 inte1=ReadPort;//读出的光照度数据赋与inte1 rd=1; cs1=1;//读数完毕i_bai=inte1/100;//百位数i_shi=(inte1%100)/10;//十位数i_ge=(inte1%10);//个位数}voidhunadc0804() //湿度adc转换子程序与数据处理{ rd=1; wr=1;//读ADC ReadPort=0xff;//P1置位 cs2=0; wr=0; wr=1;//启动ADC rd=0;//开始读转换后数据 _nop_();_nop_();//稍延时,等待读完数 delay(20); hun2=ReadPort;//读出的湿度数据赋与hun1 rd=1; cs2=1;//读数完毕 hun1=hun2/2.55; h_bai=hun1/100;//百位数h_shi=(hun1%100)/10;//十位数h_ge=(hun1%10);//个位数}///////////////////////////////////////////////////////////voidwrite_com(ucharcom)//lcd写命令函数{ lcdrs=0; lcdrw=0; lcden=0; P0=com; delay(10);//延时 lcden=1;//下三行表示E高脉冲到来就开始转换 delay(10); lcden=0;}voidwrite_data(uchardate) //lcd写数据函数{ lcdrs=1; lcdrs=1; lcdrw=0; lcden=0; P0=date; delay(10); lcden=1; delay(10); lcden=0;}voidinit() //初始化函数{ s1=1; tempset1=25; hunset1=50; inteset1=15; lcdrw=0; lcden=0; write_com(0x38); delay(10); write_com(0x0f); delay(10); write_com(0x06); delay(10); write_com(0x01); delay(10);}voidprint(uchara,uchar*str) //输出字符{ write_com(a); while(*str!='\0'){write_data(*str++);} *str=0; }voidprint1(uchara,uchart)//输出18b20数据到1602{ write_com(a); write_data(t);}voidprint2(uchara1,uchart1)//输出设置温度数据到1602{ ucharsshi,sge; sshi=t1/10; sge=t1%10; write_com(0x80+a1); write_data(sshi+0x30); write_data(sge+0x30);}////////////////////////////////////////////////////////////voidkeyscan() //键盘扫描函数{ rd=0; if(s1==0) { delay(5); if(s1==0) { s1num++; while(!s1); if(s1num==1) { write_com(0x01); print(0x80,tempset); print1(0x8e,0x43); print1(0x80+11,0x2e); print1(0x80+12,0+0x30); print1(0x80+13,0+0x30); write_com(0x80+9); write_com(0x0f); delay(20); } if(s1num==2) { write_com(0x01); print(0x80,hunset); print1(0x8b,0x30); print1(0x8d,0x25); print1(0x8e,0x20); write_com(0x80+11); write_com(0x80+11); } if(s1num==3) { write_com(0x01); print(0x80,inteset); print1(0x8b,0x30); print1(0x80+12,0+0x30); print1(0x80+13,0+0x30); print1(0x8d,0x4d); print1(0x8e,0x56); write_com(0x80+11); } if(s1num==5) { s1num=0; write_com(0x01); s4num=1; } } }if(s1num!=0){ if(s1num==1) { if(s2==0) { delay(5); if(s2==0) { while(!s2); if(s1num==1) { tempset1++; write_com(0x80+10); print2(9,tempset1); if(tempset1==40) tempset1=15; } } } if(s3==0) { delay(5); if(s3==0) { while(!s3); if(s1num==1) { tempset1--; write_com(0x80+11); print2(9,tempset1); if(tempset1==15) tempset1=40; } } } } if(s1num==2){ if(s2==0) { delay(5); if(s2==0) { while(!s2); if(s1num==2) { hunset1++; write_com(0x80+10); print2(11,hunset1); if(hunset1==90) hunset1=10; } } }if(s3==0) { delay(5); if(s3==0) { while(!s3); if(s1num==2) { hunset1--; write_com(0x80+11); print2(11,hunset1); if(hunset1==10) hunset1=90; } } } }if(s1num==3){ if(s2==0) { delay(5); if(s2==0) { while(!s2); if(s1num==3) { intese
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 地名-布局B-精简
- 年产100万吨高端改性重钙粉体母粒项目可行性研究报告模板-立项备案
- 2026年医疗器械试题库含答案
- 铁路青年职工当前思想状况调研报告2026(3篇)
- 县级供电企业安全管理体系构建与实践
- 危险化学品运输安全管理概述培训
- 2026生物质颗粒燃料行业市场供需现状技术评估投资规划分析研究报告
- 2026汽车座椅生产设备行业竞争格局投资评估技术改良产业布局
- 2026生物医用钛合金行业市场现状供需分析及投资评估规划分析研究报告
- 攉煤工安全生产岗位责任制及考核细则培训
- 2026年注册会计师《财务管理》模拟试卷(含解析)
- 云计算平台建设验收规范
- 超声三基考试试题及答案
- 《建筑施工高处作业安全技术规范》JGJ 80-2016
- 模拟试卷2026年上海浦东新区中考二模数学模拟试卷试题(含答案详解)
- 高血压与冠心病的科学预防与管理策略
- 2026年呼吸专科护士考试题及答案
- CMOS数字集成电路原理与分析 课件 第6-10章 CMOS逻辑门电路- CMOS集成电路IO电路及封装
- 2025中国铁路南宁局集团有限公司招聘本科及以上学历高校毕业生331人笔试试题一附答案解析
- 人教版(2024)三年级全一册信息科技全册教案
- 康复辅助技术咨询师理论考试复习题库(含答案)
评论
0/150
提交评论