《毕业设计_基于单片机的温室大棚自动控制系统设计_(26页).doc》由会员分享,可在线阅读,更多相关《毕业设计_基于单片机的温室大棚自动控制系统设计_(26页).doc(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-毕业设计_基于单片机的温室大棚自动控制系统设计_-第 24 页基于单片机的温室大棚自动控制系统【摘要】本系统由单片机STC89C52、温度检测电路、湿度检测电路、光照度检测电路、键盘扫描电路、时钟电路、传感器电路以及继电器控制电路等部分组成。系统采用STC89C52单片机,功能强、功耗低、价格低、稳定可靠、应用广泛、通用性强等特点。论文完成了以STC89C52单片机为核心对空气温度、土壤湿度、光照度进行数据的采集、处理、显示等系统的基本框图、工作原理和继电器控制的设计的阐述。该系统对植物生长过程中的土壤湿度、环境温度、光照度进行了实时地、连续地检测、直观地显示并进行自动地控制。克服了传统的人
2、工测量方法不能进行连续测量的弊端,节省了工作量,并避免了人为的疏漏或错误造成的不必要的损失。【关键词】单片机、湿敏传感器、数字温度传感器、光敏电阻、继电器控制。目录1.绪论31.1选题背景31.2国内外的发展现状31.3课题内容、目的及思路31.4设计过程及工艺要求32.方案的比较和选择42.1湿度传感器的选择42.2温度传感器的选择52.3光照度传感器的选择63系统的总体设计63.1确定系统任务63.2系统的组成和工作原理63.3元件的特性93.3.1 STC89C52特点93.3.2AD0804特点104.电路设计104.1湿度测量电路104.2温度测量电路114.3光照度测量电路124.
3、4数据显示电路124.5复位电路134.6键盘电路134.7继电器控制电路145.软件设计145.1主程序流程图145.2.参数测量子程序流程图165.3.键盘扫描子程序流程166.总结18参考文献18附录1 电子元器件明细表21附录2:系统总体电路图22附录3:实物图23附录4:系统源代码251.绪论1.1选题背景现代化农业生产中的重要一环就是对农业生产环境的一些重要参数进行检测和控制。例如:空气的温度、湿度、光照强度、二氧化碳含量、土壤的含水量等。温室环境与生物的生长、发育、能量交换密切相关,进行环境测控是实现温室生产管理自动化、科学化的基本保证,通过对监测数据的分析,结合作物生长发育规律
4、,控制环境条件,使作物达到优质、高产、高效的栽培目的。以蔬菜大棚为代表的现代农业设施在现代化农业生产中发挥着巨大的作用,所以对大棚内的温度、湿度与光照强度等参数的控制就显的非常重要了。传统的方法是用毛发湿度表、酒精温度计等进行人工测量,再对不符合的温度、湿度、光照度通过在温室大棚进行灌溉、降温、遮光等控制操作1来调节,这种人工测控的方法费时费力、效率低、且无法保证测量的连续性,测量的误差大、随机性大,随意性强。为了克服以上几点不足,我们需要一种造价低廉,使用方便且测量准确的自动测控系统。1.2国内外的发展现状国外的温室设施己经发展到比较完备的程度,并形成了一定的标准,但是价格非常昂贵,缺乏与我
5、国气候特点相适应的测控软件,不利于在我国广泛地推广,而当今在我国大多数地方对大棚温度、湿度、二氧化碳含量,光照强度的检测与控制都采用人工管理,存在着测控精度低、劳动强度大及由于测控不及时等弊端,容易造成不可弥补的损失,结果不但大大增加了成本,浪费了人力资源,而且很难达到预期的效果。本系统主要针对温室大棚内温度、湿度,光照强度研制了单片机控制的温室大棚自动控制系统,综合考虑系统的精度、效率以及经济性要求三个方面因素之后,最终确定以STC89C52单片机为控制核心,选用性价比比较高的传感器,实现对温湿度的精确测量与准确控制,同时又具有价格低等优点,便于在我国推广。1.3课题内容、目的及思路本系统主
6、要采用STC89c52单片机作为系统的控制核心,由温室内的空气温度传感器、土壤湿度传感器、光照度传感器采集数据,经过模数转换后送入单片机,由单片机根据采集的数据做出相应的控制,例如控制继电器的开合,使换气风扇、滴灌设备、遮阳幕等设备的启动或停止,达到控制温室各项参数的目的。同时在外接的LCD液晶上显示实时参数 ,便于观察。外接的键盘可以设定系统控制的温度值,以满足不同条件下对温度的不同要求。 1.4设计过程及工艺要求 在本系统中为了保证对温度、湿度和光照度的检测的实时性和准确性,采用了数字温度传感器DS18B20来检测温度。采用湿度传感器HS1101来检测土壤湿度。采用光敏电阻检测光照度。最后
7、通过单片机STC89C52处理后显示在1602液晶显示屏上,并通过控制继电器的开合控制相应的调节部件对植物的生长环境的各项参数进行调节,以达到适合植物生长的环境条件。 本系统的基本功能有:检测空气温度、土壤湿度、环境光照度。显示以上各项参数并自动调节。2.方案的比较和选择2.1湿度传感器的选择单片机作为控制核心,要有被检测信号输入,由单片机处理。如何准确的确定外围环境的各项参数就显的非常重要。传感器是实现测量与控制的首要环节,是测控系统的关键部件,如果没有传感器对原始信号进行准确可靠的捕捉和转换,系统就无法实现要求的各项功能。工业生产过程中的自动化的测量和控制,大部分主要依靠各种传感器来检测和
8、控制生产过程中的各项参量,使系统工作在最佳的状态下。测量土壤湿度的方法有很多种,其原理是根据某种物质从其周围的土壤中吸收水分后引起的物理或化学的性质的变化,间接的获得土壤的湿度。电容式、电阻式和湿涨式湿敏元件分别是根据其高分子材料吸水后的介电常数、电阻率和体积发生的变化进行湿度的测量。方案一:采用HOS-201湿敏传感器2。HOS-201湿敏传感器为高湿度开关传感器,它的工作电压为交流1V以下,频率为50HZ1KHZ,测量范围为0%100%RH,工作温度为050,阻抗在75%RH(25)时为1M。这种传感器主要用于开关的传感器,不能在宽频域内检测湿度。这种传感器只限于一定范围内使用时具有良好的
9、线性度。方案二:采用HS1100/HS1101湿度传感器3。HS1100/HS1101湿度传感器,在电路结构上等效于一个电容器,其电容量随着土壤湿度的增大而增大,不需要校准的完全互换性,高可靠性和长期稳定性,快速响应,专利设计的固态聚合物结构由顶端接触(HS1100)和侧面接触(HS1101)两种封装产品,适用于线性电压输出和频率输出两种电路。综合比较方案一和方案二,方案一虽然满足精度和测量温度的要求,但是只是限定于一定的范围内使用时具有良好的线性度。因此,我们选择方案二作为本设计的湿度传感器。20 40 60 80 100 相对湿度% 200 190 180 170 电容F图2-1:HS11
10、01湿度电容响应曲线湿度传感器HS1101的特点:相对湿度在1%100%RH范围内:电容量有16pf变到200pf,其误差不大于RH,响应时间小于5S,温度系数为0.04pf/。由此可以看出HS1101具有测量精度高,反应速度高的优点,其湿度电容响应曲线如图2-1:HS1101的一些常用参数如表2-1:表2-1:HS1101常用参数参数符号参数值单位工作温度Ta-40100储存温度Tstg-40125供电电压Vs10Vac湿度范围RH0100%RH焊接时间=260t10S2.2温度传感器的选择方案一:采用AD590温度传感器4。AD590温度传感器是美国模拟器件公司生产的单片集成两端感温电流源
11、。AD590性能描述:测量范围在-50- +150,满刻度范围误差为0.3,当电源电压在510V之间,稳定度为1时,误差只有0.01 。AD590为电流型传感器温度每变化1其电流变化1uA在35和95时输出电流分别为308.2uA 和368.2uA 。方案二:采用DS18B20温度传感器5。美国DALLAS公司的产品可编程单总线数字式温度传感器DS18B20可实现室内温度信号的采集,有很多优点:如直接输出数字信号,故省去了后继的信号放大及模数转换部分,外围电路简单,成本低;单总线接口,只有一根信号线作为单总线与CPU连接,且每一只都有自己唯一的64位系列号存储在其内部的ROM存储器中,故在一根
12、信号线上可以挂接多个DS18820,便于多点测量且易于扩展。综合比较方案一和方案二,两方案都可以满足设计所要求的精度温度要求,但方案一的后续电路复杂,需要经过放大,数模转换等步骤,增加了设计的复杂度和成本,并需要占用单片机较多的I/O口。方案二的后续电路简单,占用的I/O口数量少,为整体设计留出了足够的I/O口资源。故我们采用方案二作为本系统的温度传感器。DS18B20的温度值格式如表2-2:表2-2 DS18B20的温度值格式位7位6位5位4位3位2位1位0低字节232221202-12-22-32-4位15位14位13位12位11位10位9位8高字节SSSSS262524DS18B20中的
13、温度传感器完成对温度的测量,用16位二进制形式提供,形式表达,其中S为符号位。例如125的数字输出为07D0H (正温度直接把16进制数转成10进制即得到温度值 );-55的数字输出为 FC90H。(负温度 把得到的16进制数 取反后1再转成10进制数)。数字输出格式如表2-3:表2-3 DS18B20的数字输出格式表温度数字输出(二进制)数字输出(十六进制)+1250000 0111 1101 000007D0h+850000 0101 0101 00000550h+25.06250000 0001 1001 00010191h+10.1250000 0000 1010 001000A2h+
14、0.50000 0000 0000 10000008h00000 0000 0000 00000000h-0.51111 1111 1111 1000FFF8h-10.1251111 1111 0101 1110FF5Eh-25.06251111 1110 0110 1111FE6Fh-551111 1100 1001 0000FC90h2.3光照度传感器的选择方案一:采用光照度传感器M124749,该光照度传感器采用先进的电路模块技术开发变送器,用于实现对环境光照度的测量,输出标准的电压及电流信号,体积小,安装方便,线性度好,传输距离长,抗干扰能力强,量程可调。但价格昂贵,性价比不高,且不易
15、购买。方案二:采用光敏电阻。光敏电阻的工作原理是当有光线照射时,电阻内原本处于稳定状态的电子受到激发,成为自由电子,所以光线越强,产生的自由电子也就越多,电阻就会越小。光敏电阻的优点有内部的光电效应和电极无关(光电二极管才有关),即可以使用直流电源。灵敏度和半导体材料、以及入射光的波长有关,价格低廉,性价比高。比较以上两个方案,方案一虽然具有更好的设计精度和线性度,但性价比不如光敏电阻好。方案二具有较高的性价比且同时也能满足系统的设计要求,故采用光敏电阻作为光照度传感器。3系统的总体设计3.1确定系统任务本设计的要求是以STC89C52为控制核心,以HS1101湿度传感器、DS18B20、光敏
16、电阻完成对温室大棚内的各项参数进行测量,并将数据输入到单片机中,有单片机根据所编写的程序,通过继电器控制电路控制相应的设备达到自动调控温室大棚内各项参数的目的,同时将通过各种传感器测的数据实时地显示在液晶屏上。系统可通过按键人为地设定合适的参数,便于根据不同的植被的环境中使用。3.2系统的组成和工作原理硬件系统主要有信号采集、信号分析、信号处理三个部分组成。(1) 信号采集 由HS1101、DS18B20、光敏电阻组成。(2) 信号分析 由单片机STC89C52基本系统组成。(3) 信号处理 由并行口LCD液晶显示屏和继电器控制电路组成。硬件系统的原理方框图如图3-1:图3-1 硬件系统的原理
17、图图3-2 土壤湿度控制流程图土壤湿度控制部分流程如图3-2:单片机通过湿度传感器检测土壤的湿度,若土壤的湿度过低,单片机就打开滴灌设备的电磁阀一分钟,对作物进行滴灌作业,增加土壤湿度,经过一段时间,单片机再次检测土壤湿度,如果湿度过高,就关闭滴灌设备的电磁阀,停止滴灌作业。如果开始检测的土壤湿度在适宜的范围,单片机则维持现有状态不变。空气温度控制流程如下图3-3:图3-3空气温度控制流程图单片机通过温度传感器检测温室的空气温度,当空气温度过高时,就通过控制电路,打开排气扇配合设置在温室大棚顶部的喷雾设备的进行一段时间的温室大棚的降温作业,而当温室温度过低时,则通过单片机自动关闭降温设备的工作
18、,使温度值达到适宜的范围。 若一开始检测的光照度在适宜范围,单片机将维持现有状态。光照度控制部分流程如下图3-4:光照度的控制主要靠遮阳幕的开关,光照度过高时,系统通过关闭大棚顶部的遮阳幕,避免阳光直射作物,减小光照度,及减少强光对作物生长的影响。当光照度过低时,就打开遮阳幕,增加光照度。如果检测的光照度在适宜范围,单片机将维持现状。图3-4 光照度控制流程图3.3元件的特性3.3.1 STC89C52特点(1)它是MCS-51系列单片机的派生产品,在指令系统、硬件结构和片内资源上与标准8052单片机完全兼容,DIP40封装系列与8051兼容均为Pin-to-Pin,使用时容易掌握; (2)高
19、速(最高时钟频率90 MHz)、低功耗、价格低、稳定可靠、应用广泛、通用性强,在系统/在应用可编程(ISP,IAP),不占用户资源。STC89C526单片机管脚如图3-5:图3-5 STC89C52单片机管脚定义图3.3.2AD0804特点ADC08047为8bit的一路A/D转换器,其输入电压范围在05v,转换速度小于100us,转换精度0.39,满足设计的精度要求。4.电路设计4.1湿度测量电路HS1101湿度传感器,在电路中等效于 一个电容器件,其电容量随着所测的土壤湿度增大而增大,如何将电容的变化量准确的转换成单片机易于接受的信号,常有两种方法:一是将该湿敏传感器置于运放与阻容组成的桥
20、式振荡电路中,所产生的正弦波电压信号经整流、直流放大、再经过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短路到地。传感器由不同
21、的电阻R20与R19充放电。电压输出典型参数(VCC=5V,25)如表4-1表4-1 HS1101湿度传感器电压输出典型参数(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光照度测量电路系统采用价格低廉的光敏电阻测量光
22、照度,因其没有良好的线性度,所以只能大致的测量。根据光敏电阻在不同的光照下有不同的阻值,经过A/D转换后输入到单片机内进行处理。其与ADC0804的连接电路如图4-3:图4-3 ADC0804与单片机的连接电路图4.4数据显示电路系统采用了LCD1602液晶显示屏8,LCD1602液晶是一款很常用,也很易用的字符液晶。可以显示2行每行16个字符,对比度可调、黄绿色背光。与单片机的链接电路如图4-4:图4-4 LCD1602与单片机的连接电路图4.5复位电路为了确保系统中的电路温度可靠工作,复位电路9是必不可少的部分 ,其第一功能就是低电平复位,低电平复位是在通电瞬间通过充电来实现的。手动复位是
23、指通过接通一按键开关,使单片机进入复位状态。系统上电运行后,如果需要复位,只需通过手动复位就可以实现。本系统使用的复位电路如图4-5所示:图4-5 复位电路图4.6键盘电路本设计采用的键盘扫面电路采用简单的低电平扫描方式,即采用开关的一端与单片机I/O口相连,另一端接地的方式,用单片机检测I/O口是否是低电平来判断键盘是否被按下10。这样的方式可以方便键盘扫描部分的的编程。键盘电路如图4-6:图4-6 键盘电路图4.7继电器控制电路单片机是一个弱电器件,一般情况下它们大都工作在5V甚至更低。驱动电流在mA级以下。而要把它用于一些大功率场合,比如控制电动机,显然是不行的.所以,就要有一个环节来衔
24、接,这个环节就是所谓的功率驱动。继电器驱动就是一个典型的、简单的功率驱动环节。在这里,继电器驱动含有两个意思:一是对继电器进行驱动,因为继电器本身对于单片机来说就是一个功率器件;还有就是继电器去驱动其他负载,比如继电器可以驱动中间继电器,可以直接驱动接触器,所以,继电器驱动就是单片机与其他大功率负载接口11。本设计采用的继电器控制电路如图4-7:图4-7 继电器控制电路图图中的三极管起开关的作用,当单片机输出高电平时,三极管导通,继电器吸合。单片机输出低电平时,继电器断开。二极管起保护作用,防止继电器产生的感应电动势烧坏三极管或继电器。5.软件设计系统的程序设计包括以下几个方面:(1)键盘扫描
25、12。(2)各项参数的采集。(3)各项参数在液晶上的显示。(4)各项参数的继电器控制。5.1主程序流程图主程序的流程如图5-1图5-1 主程序流程图当单片机上电后,主程序开始运行,程序以开始初始化各参数的设置和端口定义后,清各标志位和LCD1602的显示,然后进行键盘扫描,再利用各传感器进行数据的采集,将采集的数据和设置好的参数进行对比,如果对比结果显示需要调节,启动相应的继电器控制电路对温室中需要调节的参数进行调节并显示在LCD1602上,如果比较结果显示不需要调节,则不启动继电器控制电路,直接显示参数,然后对键盘进行循环扫描。5.2.参数测量子程序流程图参数测量子程序流程如图5-2图5-2
26、 参数测量子程序流程图子程序开始先声明变量和调用的函数后,调用显示函数,启动模数转换器ADC0804进行模数转换,转化如果未完成,单片机进行等待。当转换完成后,单片机读取转换后的数据,然后循环调用显示函数和进行模数转换。5.3.键盘扫描子程序流程键盘扫描子程序流程如图5-3图5-3 键盘扫描流程图键盘扫描子程序一开始先扫描按键,判断是否有按键被按下,确定有按键被按下时判断被按下的是哪个按键,如果是按键S1,系统将进入设置模式,这时按键S2和S3被启用,进入那个参数的设置取决于按键S1被按下的次数,S1被按下一次,进行温度值设置,S1被按下两次,进行湿度值设置,S1被按下三次,进行光照度设置,当
27、按下第四次,返回正常显示,按键S2和S3被禁用。按键S2和S3作用是调节参数值,每次按下S2,当前设置的参数值就加一。每次按下S3,当前设置的参数值就减一。参考文献1 梅晓榕,柏桂珍,张卯瑞.自动控制元件及线路M.北京:科学出版社,20072 张义和,王敏男,许宏昌,余长春.例说51单片机(C语言版)M.北京:人民邮电出版社,2010,63 湿度传感器HS1101的原理与应用EB/OL.中国电子科技信息网.4 胡汉才.单片机原理与接口技术M.清华大学出版社,1996.5 黄贤斌,郑筱霞.传感器原理与应用M.北京:高等教育出版社. 成都:电子科技大学出版社,2004,3(2009.1重印)6 何
28、立民.单片机应用系统设计M.北京:北京航天航空出版社.1990,50-4907 刘笃仁,韩保君.传感器原理及应用技术M.机械工业出版社.2003,8 8 1985赵亮.液晶显示模块LCD1602应用J.电子制作,2007(3)9 Guiyun Tian. Foundation and Application of MicrocontrollerM.北京:高等教育出版社10 王勇等.凌阳单片机原理及其毕业设计精选M.科学出版社11 童诗白.模拟电路基础M,北京:高等教育出版社,200112 马忠梅,籍顺心,张凯等.单片机的C语言应用程序设计M.北京航天航空大学出版社,200313 M考夫曼,AH
29、塞得.电子计算手册M.国防科技出版社.14 王毅.单片机器件应用手册M.北京:人民邮电出版社,1994Microcontroller-basedautomatic monitoring and controlof greenhouselight and temperatureand humiditysystemElectronic Information Engineering, Department of Electronic Information Engineering118542007050 Pan Xiaoqi Teacher: Yu Jianming【Abstract】The sy
30、stem consists of microcontroller STC89C52, the temperature detection circuit, humidity detection circuit, light detection circuit, the keyboard scanning circuit, clock circuit, sensor circuit and relay control circuit and other components. System uses STC89C52 SCM, the features of which as follows:
31、strong function, low power consumption, low prices, stable and reliable, widely used, versatile and so on. The thesis mainly focus on: the base block diagram, working principle and the design of relay control which use STC89C52 microcontroller as the core to collect, conduct, display the data of the
32、 air temperature, soil humidity, illuminance and so on. The system use Real-time and continuous detection, display intuitively and control automatically on soil moisture, ambient temperature, illuminance in the process of plant growth. To overcome the defects from the traditional manual methods of m
33、easurement which can not measure continuously, save the amount of work, avoid omissions or unnecessary losses that caused by errors. 【Key words】 SCM, humidity sensors, digital temperature sensors, light dependent resistor, relay control. 附录1 电子元器件明细表类 型封 装型 号数量备 注瓷片电容RAD-0.11042瓷片电容RAD-0.1302瓷片电容RAD
34、-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集成电路40P6ST
35、C89C521集成电路DIP-08TLC5551集成电路Header 2HHS11011集成电路Header 3HDS18B201稳压电路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) :keil 3版 本 :单 片 机 (MCU type):
36、STC89C52RC注意事项(Attention):修改时间:#include #include#include#include#define uchar unsigned char#define uint unsigned int#define T_cont 0.0625;#define DataPort P0 /LCD接口#define ReadPort P2 /AD读取uchar code temp=temp: ;uchar code tempset=tempset: ;uchar code hun=hun: ;uchar code hunset=hunset: ;uchar code
37、inte=inte: ;uchar code inteset=inteset: ;uchar code set=step in set!;uchar tempset1,s1num,s4num,hunset1,hun1,hun2,inteset1,inte1;bit T_sign;float temp1=0;uchar t_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;sbit s1=P10;sbit s2=P11;sbit s3=P12;sbit s4=P1
38、3;sbit relay1=P15;sbit relay2=P16;sbit relay3=P17;sbit cs1=P30;sbit cs2=P31;sbit DS=P32;sbit lcdrw=P33;sbit lcden=P34;sbit lcdrs=P35;sbit wr=P36;sbit rd=P37;void delay(uint z) /延时函数uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void dsreset(void) /send reset and initialization command uint i; /DS18B20初始化 D
39、S=0; i=103; while(i0)i-; DS=1; i=4; while(i0)i-;bit tmpreadbit(void) /read a bit 读一位 uint i; bit dat; DS=0;i+; /i+ for delay 小延时一下 DS=1;i+;i+; dat=DS; i=8; while(i0)i-; return (dat);uchar tmpread(void) /read a byte date 读一个字节 uchar i,j,dat; dat=0; for(i=1;i=8;i+) j=tmpreadbit(); dat=(j1); /读出的数据最低位在
40、最前面,这样刚好/一个字节在DAT里 return(dat); /将一个字节数据返回void tmpwritebyte(uchar dat) /write a byte to ds18b20 /写一个字节到DS18B20里 uint i; uchar j; bit testb; for(j=1;j1; if(testb) /write 1 写1部分 DS=0; i+;i+; DS=1; i=8;while(i0)i-; else DS=0; /write 0 写0部分 i=8;while(i0)i-; DS=1; i+;i+;void readtemperature() /读温度函数uint
41、y; uchar T_L=0;uchar T_H=0;uchar k;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;elseT_sign=0;T_H=T_H&0x07;temp1=(T_H*256+T_L)*T_cont;temp1=temp1*100;t_bai=(uint)temp1/10000;
42、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;void inteadc0804() /光照度adc转换子程序与数据处理rd = 1;wr = 1; /读ADCReadPort = 0xff; /P1置位cs1=0;wr = 0;wr = 1; /启动ADCrd=0; /开始读转换后数据_nop_(); _nop_(); /稍延时,等待读完数inte1 = ReadPort; /读出的光照度数据赋与inte1rd = 1; cs1 = 1; /读数完毕 i_bai = inte1/100; /百位数 i_shi = (inte1%100)/10; /十位数 i_ge = (inte1%10); /个位数 void hunadc0804() /湿度adc转换子程序与数据处理rd = 1;wr = 1; /读ADCReadPort = 0xff; /P1置位cs2=0;wr = 0;wr = 1; /启动ADCrd=0; /开始读转换后数据_nop_(); _nop_(); /稍延时,等待读完数delay(20);hun2= ReadPort; /读出的湿度数据赋与hun1rd = 1; cs2 =