单片机温湿度控制的课程设计
- 格式:doc
- 大小:757.00 KB
- 文档页数:21
《基于单片机的温湿度控制系统的设计》篇一一、引言在现代生活中,温湿度的控制对各种环境和设施的运行具有极其重要的作用。
为了满足这一需求,本文设计了一种基于单片机的温湿度控制系统。
该系统利用单片机作为核心控制器,通过传感器采集环境中的温湿度信息,并据此进行精确的控制和调节,从而达到保持环境稳定的目的。
二、系统设计1. 硬件设计本系统主要由单片机、温湿度传感器、执行器(如加热器、加湿器等)以及电源等部分组成。
其中,单片机作为核心控制器,负责接收传感器采集的数据,并根据设定的控制逻辑发出控制指令。
温湿度传感器负责实时采集环境中的温湿度信息,并将这些信息以电信号的形式传输给单片机。
执行器则根据单片机的指令进行工作,如加热、加湿或降温等,以调节环境中的温湿度。
2. 软件设计软件设计主要包括单片机的程序设计。
程序通过编程语言编写,实现对温湿度的实时采集、数据处理、控制输出等功能。
具体而言,程序首先通过温湿度传感器采集环境中的温湿度信息,然后对数据进行处理和分析,根据分析结果发出控制指令,以调节执行器的运行状态,从而实现对温湿度的控制。
三、系统功能1. 实时监测:系统能够实时监测环境中的温湿度信息,并通过显示屏或其它方式展示出来。
2. 自动控制:系统能够根据设定的控制逻辑,自动调节执行器的运行状态,以实现对温湿度的精确控制。
3. 报警功能:当环境中的温湿度超过设定范围时,系统能够发出报警信号,以提醒用户进行相应的处理。
4. 数据记录:系统能够记录环境中的温湿度数据,以便用户进行数据分析和处理。
四、系统实现在实际应用中,我们选择了适合的单片机、温湿度传感器和执行器等硬件设备,并根据系统需求编写了相应的程序。
通过不断调试和优化,我们成功实现了系统的各项功能。
在实际运行中,系统能够实时监测环境中的温湿度信息,并根据设定的控制逻辑自动调节执行器的运行状态,以实现对温湿度的精确控制。
同时,系统还具有报警功能和数据记录功能,能够满足用户的各种需求。
基于单片机的温湿度控制系统目录摘要 (2)1、绪论 (2)1.1课题背景 (2)1.2立题的目的和意义 (2)1.3植被栽培技术 (2)温室环境的调节 (3)1.4本系统主要研究内容 (3)2 、系统总体分析与设计 (3)2.1系统功能及系统的组成和工作原理 (3)2.1.1.总体方案 (3)2.1.2. 实施措施 (3)2.1.3.硬件系统设计 (4)主机与主要部件的选择: (4)2.2温湿度采样与控制系统 (4)2.2.1.温湿度采样系统 (4)2.2.2.温湿度控制系统 (5)2.3键盘显示系统 (5)2.4报警系统 (6)2.5硬件电路设计 (7)2.5.1. 系统硬件配置 (7)2.5.2. 主要组件简介 (7)3 软件系统设计 (9)3.1系统初始化模块 (10)3.2键盘显示模块 (10)3.3采样转换模块 (11)3.4温湿度控制模块 (12)3.5报警模块 (13)4 硬件调试方案 (14)4.1硬件电路的调试 (14)4.2功能模块的调试方案 (15)结论 (15)致谢 (16)参考文献 (16)附录: (18)基于单片机的温湿度控制系统1基于单片机的温湿度控制系统设计摘要本文利用8051单片机设计一个温室的温湿度控制系统,对给定的温湿度进行控制并实时显示,其中温湿度信号各有四路,系统采用一定的算法对信号处理以确定采取某种控制手段,在本系统中采用温度优先模式,循环处理。
关键字:89C51 8729键盘显示 LCD显示 ADC08091、绪论1.1 课题背景随着社会的不断发展,人们的生活水平不断提高,人们对生活质量要求也越来越高,对美丽的植被和花卉的需求量也急剧上升,这对以种植植被为生计的园林工人是一个机遇,同时也对传统的手工植被种植是一个挑战,而基于单片机的温湿度控制系统对解决这些问题有着非常重大的意义。
当前种植植被一般都用温室栽培,为了充分的利用好温室栽培这一高效技术,就必须有一套科学的,先进的管理方法,用以对不同种类植被生长的各个时期所需的温度及湿度等进行实时的监控。
《基于单片机的温湿度控制系统的设计》篇一一、引言随着科技的不断进步,温湿度控制系统的设计逐渐成为现代工业、农业、家庭等领域的重要应用。
为了满足各种环境对温湿度的精确控制需求,本文提出了一种基于单片机的温湿度控制系统设计。
该系统采用先进的单片机技术,实现了对温湿度的实时监测与精确控制,提高了系统的稳定性和可靠性。
二、系统设计1. 硬件设计本系统硬件部分主要包括单片机、温度传感器、湿度传感器、加热器、加湿器等组件。
单片机作为核心控制单元,负责接收传感器采集的温湿度数据,并根据预设的控制策略输出控制信号,控制加热器和加湿器的运行。
温度传感器和湿度传感器分别负责实时监测环境中的温度和湿度,将检测到的数据传输给单片机。
加热器和加湿器则根据单片机的控制信号进行工作,实现对温湿度的调节。
2. 软件设计软件部分主要包括单片机程序的编写和上位机监控界面的开发。
单片机程序采用C语言编写,实现了对温湿度的实时监测、数据处理、控制策略的制定以及与上位机监控界面的通信等功能。
上位机监控界面采用图形化界面设计,方便用户进行操作和监控。
用户可以通过监控界面实时查看当前环境的温湿度数据,以及设定所需的温湿度目标值。
同时,监控界面还可以显示加热器和加湿器的工作状态,以及系统的故障信息等。
三、控制策略本系统采用PID控制算法实现温湿度的精确控制。
PID控制器根据温湿度误差计算输出控制量,使加热器和加湿器工作在最佳状态,从而实现温湿度的快速稳定控制。
同时,系统还具有自动调节功能,根据环境变化自动调整控制参数,提高系统的适应性和稳定性。
四、系统实现在硬件和软件设计的基础上,我们进行了系统的实现。
首先,将温度传感器和湿度传感器与单片机进行连接,实现数据的实时采集。
然后,编写单片机程序,实现数据的处理、控制策略的制定以及与上位机监控界面的通信等功能。
最后,开发上位机监控界面,方便用户进行操作和监控。
五、系统测试为了验证系统的性能和稳定性,我们进行了系统测试。
基于单片机的温湿度监测系统设计一、引言在现代生活和工业生产中,对环境温湿度的准确监测具有重要意义。
温湿度的变化可能会影响到产品质量、设备运行以及人们的生活舒适度。
因此,设计一个高效、准确且可靠的温湿度监测系统至关重要。
本设计基于单片机,旨在实现对环境温湿度的实时监测和数据处理。
二、系统总体设计方案(一)系统功能需求本系统需要实现以下功能:1、实时采集环境温湿度数据。
2、对采集到的数据进行处理和分析。
3、将温湿度数据显示在液晶显示屏上。
4、具备数据存储功能,以便后续查询和分析。
5、当温湿度超出设定范围时,能够发出报警信号。
(二)系统总体架构本系统主要由传感器模块、单片机控制模块、显示模块、存储模块和报警模块组成。
传感器模块负责采集温湿度数据,并将其转换为电信号传输给单片机。
单片机对接收的数据进行处理和分析,然后将结果发送给显示模块进行显示,同时将数据存储到存储模块中。
当温湿度超出设定范围时,单片机控制报警模块发出报警信号。
三、硬件设计(一)传感器选择选用 DHT11 数字温湿度传感器,它是一款含有已校准数字信号输出的温湿度复合传感器。
具有体积小、功耗低、响应速度快、性价比高等优点,能够满足本系统的设计要求。
(二)单片机控制模块选择 STC89C52 单片机作为控制核心。
它具有丰富的 I/O 口资源、较高的处理速度和稳定性,能够有效地处理和控制整个系统的运行。
(三)显示模块采用液晶显示屏 1602,它能够清晰地显示温湿度数据和相关信息。
(四)存储模块选用 EEPROM 芯片 AT24C02 作为存储模块,用于存储温湿度数据,方便后续查询和分析。
(五)报警模块使用蜂鸣器作为报警装置,当温湿度超出设定范围时,单片机控制蜂鸣器发出报警声音。
四、软件设计(一)主程序流程系统上电后,首先进行初始化操作,包括单片机内部资源的初始化、传感器的初始化、显示模块的初始化等。
然后,系统进入循环,不断读取传感器采集到的温湿度数据,并进行处理和分析。
基于单片机的温湿度传感器课程设计摘要由于温度与湿度不管是从物理量本身还是在实际人们的生活中都有着密切的关系,所以温湿度一体的传感器就会相应产生。
DHT11与单片机之间能采用简单的单总线进行通信,仅仅需要一个I/O口。
操作简单,使用基亚5110二手屏幕显示DHT11传感器读出来的温度和湿度值。
关键字:AT89S52;5110液晶;DHT11传感器;单总线AbstractBecause of the temperature and the humidity from both the physical quantity itself or in the actual life of people are closely related, so the temperature and humidity sensor integrated will arise accordingly. Between DHT11 and SCM can adopt the simple single bus, only need a I\/O port. Simple operation, using the base of 5110 secondhand screen display DHT11 sensor Read out the temperature and humidity.Keywords: AT89S52; DHT11 5110 LCD; sensor; single bus目录引言 ------------------------------------------11.1 DHT11描述---------------------------------------------------21.2 管脚排列----------------------------------------------21.3 应用电路连接说明--------------------------------------21.4 DHT11数据结构-----------------------------------------31.5 DHT11的传输时序---------------------------------------31.5.1 DHT11开始发送数据流程--------------------------31.5.2 主机复位信号和DHT11响应信号 --------------------31.5.3 数字‘0’信号表示方法-----------------------------31.5.4 数字‘1’信号表示方法-----------------------------42、诺基亚5110液晶简介(PCD8544驱动)--------------------42.1 引脚---------------------------------------------------4 2.2 功能描述:---------------------------------------------52.2.1 地址计数器 (AC)--------------------------------52.2.2 初始化-------------------------------------------52.2.3复位的作用----------------------------------------62.2.4显示控制------------------------------------------62.2.5 串行接口时序--------------------------------------62.2.6 指令集 ------------------------------------------63、总结-------------------------------------------------74、谢辞-------------------------------------------------85、参考文献---------------------------------------------96、附录-------------------------------------------------105.1 实验总框架图---------------------------------------------10 5.2 硬件部分-------------------------------------------------105.2.1硬件原理图-------------------------------------------10 5.2.2 硬件PCB图-------------------------------------------11 5.2.3 所需元器件-------------------------------------------115.3 实验效果-------------------------------------------------11 5.4 实验软件程序---------------------------------------------12引言可靠性与卓越的长期稳定性。
《基于单片机的温湿度控制系统的设计》篇一一、引言在现代智能家居及工业自动化控制领域,温湿度控制系统的设计与实现至关重要。
为了满足各种应用场景的需求,本文提出了一种基于单片机的温湿度控制系统的设计方案。
该系统以单片机为核心,通过精确的传感器采集温湿度数据,并利用先进的控制算法实现温湿度的自动调节,从而达到预期的控制效果。
二、系统设计概述本系统采用单片机作为核心控制器,通过与温湿度传感器、执行器等设备的连接,实现对环境温湿度的实时监测与控制。
系统设计包括硬件设计和软件设计两部分。
(一)硬件设计硬件部分主要包括单片机、温湿度传感器、执行器、电源等。
其中,单片机选用性能稳定、处理速度快的型号,负责采集传感器数据、处理控制算法、发送控制指令等任务。
温湿度传感器选用精度高、稳定性好的型号,用于实时监测环境中的温湿度数据。
执行器包括加热器、加湿器、除湿器等,根据控制指令调整环境中的温湿度。
(二)软件设计软件部分主要包括单片机程序、控制算法等。
单片机程序采用C语言编写,实现数据的采集、处理、传输等功能。
控制算法采用先进的PID算法,实现对温湿度的精确控制。
此外,系统还具有数据存储、通信等功能,可与上位机进行数据交互。
三、系统工作原理系统工作时,温湿度传感器实时采集环境中的温湿度数据,并将数据传输给单片机。
单片机对数据进行处理后,根据设定的控制算法计算出执行器的控制指令,并通过执行器对环境中的温湿度进行调整。
同时,单片机还将数据存储起来,并通过通信接口与上位机进行数据交互。
四、系统实现(一)硬件实现硬件部分需要根据设计要求进行选型和制作。
单片机、温湿度传感器、执行器等设备需要选用性能稳定、精度高的型号,并按照电路图进行连接。
同时,还需要制作电源、通信接口等辅助设备,以保证系统的正常运行。
(二)软件实现软件部分需要编写单片机程序和控制算法。
单片机程序采用C语言编写,包括数据采集、处理、传输等功能。
控制算法采用PID算法,实现对温湿度的精确控制。
基于单片机的温湿度检测系统的设计一、引言温湿度是常见的环境参数,对于很多应用而言,如农业、生物、仓储等,温湿度的监测非常重要。
因此,设计并实现一个基于单片机的温湿度检测系统是非常有实际意义的。
本文将介绍该温湿度检测系统的设计方案,并详细阐述其硬件和软件实现。
二、系统设计方案1.硬件设计(1)传感器选择温湿度传感器的选择非常关键,常用的温湿度传感器包括DHT11、DHT22、SHT11等。
根据不同应用场景的精度和成本要求,选择相应的传感器。
(2)单片机选择单片机是整个系统的核心,需要选择性能稳定、易于编程的单片机。
常用的单片机有51系列、AVR系列等,也可以选择ARM系列的单片机。
(3)电路设计温湿度传感器与单片机的连接电路包括供电电路和数据通信电路。
供电电路通常采用稳压电源,并根据传感器的工作电压进行相应的电压转换。
数据通信电路使用串行通信方式。
2.软件设计(1)数据采集单片机通过串行通信方式从温湿度传感器读取温湿度数据。
根据传感器的通信协议,编写相应的代码实现数据采集功能。
(2)数据处理将采集到的温湿度数据进行处理,可以进行数据滤波、校准等操作,以提高数据的准确性和可靠性。
(3)结果显示设计一个LCD显示屏接口,将处理后的温湿度数据通过串行通信方式发送到LCD显示屏上显示出来。
三、系统实现及测试1.硬件实现按照上述设计方案,进行硬件电路的实现。
连接传感器和单片机,搭建稳定的供电电路,并确保电路连接无误。
2.软件实现根据设计方案,使用相应的开发工具编写单片机的代码。
包括数据采集、数据处理和结果显示等功能的实现。
3.系统测试将温湿度检测系统放置在不同的环境条件下,观察测试结果是否与真实值相符。
同时,进行长时间的测试,以验证系统的稳定性和可靠性。
四、系统优化优化系统的稳定性和功耗,可以采用以下方法:1.优化供电电路,减小电路噪声和干扰,提高电路的稳定性。
2.优化代码,减小程序的存储空间和运行时间,降低功耗。
基于单片机的温湿度控制系统设计温湿度控制系统是一种基于单片机的自动控制系统,通过测量环境的温度和湿度,并根据设定的控制策略调节相关设备来维持合适的温湿度条件。
设计一个基于单片机的温湿度控制系统可以分为硬件设计和软件设计两个部分。
硬件设计主要包括传感器模块、控制器模块和执行器模块的选型和接口设计;软件设计主要包括数据采集与处理、控制算法设计和用户界面设计。
在硬件设计方面,温湿度传感器是获取环境温湿度的关键设备。
可以选择市场上成熟的数字温湿度传感器,比如DHT11或DHT22,它们通过数字信号输出温湿度值。
另外,还需要选择一款适用于单片机的控制器模块,如Arduino,它可以实现数字信号的采集和输出控制信号。
执行器模块可以根据具体控制目标选择,比如加热器、湿度调节装置等。
在软件设计方面,首先需要编写数据采集与处理的代码。
通过单片机连接温湿度传感器,读取其输出的数字信号,并进行数据处理,将数据转换为实际的温湿度值。
可以使用适当的算法进行数据滤波和校准,确保数据的准确性和稳定性。
接下来,需要设计控制算法。
根据实际需求,可以选择PID算法或者模糊控制算法等进行温湿度控制。
PID算法是一种经典控制算法,通过测量值与设定值之间的误差,计算出控制量,并根据比例、积分、微分三个方面进行调节。
模糊控制算法是一种基于模糊逻辑的控制算法,通过建立模糊规则库,将模糊规则与输入值进行模糊计算,得到输出控制量。
根据具体应用场景和需求,选择适当的算法进行控制。
最后,需要设计用户界面。
通过显示屏、按钮等外设,与用户进行交互,显示当前的温湿度数值和设定值,并提供设置温湿度的功能。
可以通过编程实现用户界面的交互逻辑,并调用相应的功能函数来实现温湿度的设定和控制。
总结起来,基于单片机的温湿度控制系统设计,需要进行硬件选型和接口设计,编写数据采集与处理、控制算法和用户界面的程序代码。
通过这些设计和实现,可以实现对环境温湿度的实时监测和控制,为用户提供一个舒适的环境。
《单片机应用技术》课程设计报告题目:基于STC89C52单片机的温湿度控制系统的设计专业:电子科学与技术班级: 09082435姓名:景佳伟指导教师:王玉玲徐静云成绩:信息工程学院2011年12月1日星期四课程设计任务书设计名称:基于STC89C52单片机的温湿度控制系统的设计起止日期2011.11.14—-2011..11.25目录任务书摘要1设计思想2硬件设计与分析3软件设计4个人体会5附录摘要:设计了一种基于单片机和 AT89S52温湿度传感器的温湿度控制系统。
该系统性能可靠,结构简单,能实现对温湿度检测和达到临界值时的报警。
此系统一单片机为控制核心,温湿度传感器作为温湿度的检测元件。
可实现温湿度的自动检测和报警。
此系统可应用于大棚种植等领域,以实现自动化管理为目的,降低工人的劳动强度,节省了管理成本,提升了利润。
关键词:;单片机;温湿度传感器自动控制,自动报警1设计思想系统的一大特点是用户可以通过下位机中的键盘输入温湿度的上下限值和预置值,也可以通过上位机对温湿度的上下限值和预置值进行输入,从而实现上位机温湿度的远程控制。
系统下位机设在种植植物的大棚内,下位机中的温湿度传感器可以将环境中的温湿度非电量参数转化成电量信号,再将这些信号进行处理后送至下位机中的单片机,单片机读取数据后将数据送到缓冲区内,通过液晶显示器时显示。
同时与原先内部设定的参数值进行比较处理;单片机可以根据比较的结果对执行机构发出相应的信号,并通过继电器的控制对相应的设备如喷水器、吹风机、加热器、降温泵等进行操作,调节大棚内温湿度状态。
用户直接通过键盘对温湿度的上下限值和预置值进行设置后,如果环境的实时参数超越上下限值,系统自动启动执行机构调节湿度和温度状态,直到温湿度状态处于上下限值以内为止。
如果有预置初值且与当前状态不相等时,系统也会启动执行机构动态调节温湿度状态,直到所处的平衡状态与预置值相等为止。
2硬件设计2.1硬件要求根据设计要求确定了系统的总体方案,整个系统由单片机、温湿度传感器、显示模块、蜂鸣、温湿度调节系统以及键盘等6部分组成。
系统功能原理图如图1所示。
用户预先输入温湿度报警值到程序中,该值作为系统阈值。
温湿度传感器监测值传输给单片机,当单片机比较监测到的数值超出所设定阈值时,驱动蜂鸣器报警,并为温湿度调节系统提供控制信号,实现自动控制。
元器件清单:附件4:所需材料表一份清单每位学生一份(090824全班),如果无法确定班级人数,请购买48份2.2具体硬件设计单片机是整个系统的控制中枢,它指挥外围器件协调工作,从而完成特定的功能。
硬件实现上采用模块化设计,每一模块只实现一个特定功能,最后再将各个模块搭接在一起。
这种设计方法可以降低系统设计的复杂性。
系统电路原理图如图2所示。
本系统主要硬件设计包括电源电路、蜂鸣器电路、晶振电路、复位电路、LCD 显示电路以及温湿度传感器电路。
控制电路的核心器件是由美国Atmel公司生产的AT89S52单片机,属于MCS-51系列。
AT89S52是一种低功耗、高性能的CMOS8位微控制器,具有8K在系统可编程Flash 存储器,采用的工艺是Atmel公司的高密度非易失存储器技术;片上Flash允许程序存储器在系统可编程,亦适于常规编程器;在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案;价格低廉、性能可靠、抗干扰能力强。
因此广泛应用于工业控制和嵌入式系统中。
系统电路图及各个模块:实物图:3 软件设计系统单片机代码采用C语言编写,以Keil为开发环境。
系统软件实现的功能:1)通过液晶实现温湿度显示2)比较监测到的温湿度值和报警设置值,发现超限则蜂鸣器报警提示;3)根据相应的温湿度值控制温湿度调节系统运行。
本系统总体设计如下:主程序显示#include<reg52.h>#define uchar unsigned char#define uint unsigned int#include<lcd1602.h>#include<tempmoist.h>sbit red=P1^0;sbit green=P1^1;sbit sound=P1^2;sbit control=P1^3;sbit k1=P2^3;sbit k2=P2^4;sbit k3=P2^5;sbit k4=P2^6;sbit k5=P2^7;uchar code table[]="0123456789";uchar code table1[]="Moist";uchar code table2[]="Temp";uchar code table3[]="RT";uchar code table4[]="T";char a,b,c,temp,num,key_code,key,RT_arlarm,T_arlarm,RTS,TS,RTX,TX,flag=1; void distemp(uint temp);void dis();void key_proc();void key_scan();void dis1();void arlarm();//主程序void main(){red=1;green=0; //关红灯,开绿灯sound=1; //停蜂鸣器control=1; //guan继电器init(); //lcd初始化RT_arlarm=0;T_arlarm=0;RTS=30;TS=26;RTX=20;TX=10;while(1){key_proc();RH();arlarm();}}//显示温湿度数值void distemp(uint temp){a=temp/10;b=temp%10;write_date(table[a]);delay_xms(20);write_date(table[b]);delay_xms(20);}//按键处理void key_proc(){key_scan();if(key==1){key_code++;write_com(0x01); //清屏}if(key_code!=0){if(key_code==3){key_code=0;}elseif(key_code==1){switch(key){case 2:RT_arlarm++;if(RT_arlarm>=100)RT_arlarm=0;break;case 3:RT_arlarm--;if(RT_arlarm<=0)RT_arlarm=99;break;default:break;}write_str(0x80,"RT"); //调RT的同时,显示Moist write_com(0x87);distemp(RT_arlarm);write_str(0xc0,"Moist");write_com(0xc7);distemp(U8RH_data_H);write_date('.');distemp(U8RH_data_L);write_date('%');}else{switch(key){case 2:T_arlarm++;if(T_arlarm>=100)T_arlarm=0;break;case 3:T_arlarm--;if(T_arlarm<=0)T_arlarm=99;break;default:break;}write_str(0xc0,"T"); //调T的同时,显示Tempwrite_com(0xc7);distemp(T_arlarm);write_str(0x80,"Temp");write_com(0x87);distemp(U8T_data_H);write_date('.');distemp(U8T_data_L);write_date(0xdf);write_date(0x43);}}else{write_str(0x80,"Moist"); //同时显示Moist,Temp,正常屏幕write_com(0x87);distemp(U8RH_data_H);write_date('.');distemp(U8RH_data_L);write_date('%');write_str(0xc0,"Temp");write_com(0x87+0x40);distemp(U8T_data_H);write_date('.');distemp(U8T_data_L);write_date(0xdf);write_date(0x43);}}//判断上限void arlarm(){if(key==4){flag=!flag;delay_xms(10);key=0;}if(flag){if(U8T_data_H>=TS||U8RH_data_H>=RTS||U8T_data_H>=TS||U8RH_data_H<RTX) //至少满足一个条件{sound=0;//满足条件后,红灯亮,蜂鸣器叫red=0;}else{sound=1;red=1;}}else{sound=1;red=1;}}void key_scan()//按键扫描{key=0;if((!k1)||(!k2)||(!k3)||(!k4)) //判断是否有键按下{delay_xms(8); //去抖if((!k1)||(!k2)||(!k3)||(!k4)) //再次判断是否有键按下{if(!k1){key=1;while(!k1);}else if(!k2) key=2;else if(!k3) key=3;else if(!k4) key=4;else key=0;}}}//延时程序void delay_xms(uint i){uint j;for(i;i>0;i--)for(j=110;j>0;j--);}LCD1602显示sbit rs=P2^0;sbit lcden=P2^1;extern void delay_xms(uint i);//LCD1602地址传送void write_com(uchar com) //地址输送{P0=com;rs=0;lcden=0;delay_xms(10);lcden=1;delay_xms(10);lcden=0;}void write_date(uchar date) //数据输送{P0=date;rs=1;lcden=0;delay_xms(10);lcden=1;delay_xms(10);lcden=0;}void write_str(uchar com,uchar *s){write_com(com);while(*s){write_date(*s);s++;}}void init() //lcd初始化{lcden=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);}Tempoist程序//typedef unsigned char U8; /* defined for unsigned 8-bits integer variable 无符号8位整型变量*/typedef signed char S8; /* defined for signed 8-bits integer variable 有符号8位整型变量*/typedef unsigned int U16; /* defined for unsigned 16-bits integer variable 无符号16位整型变量*/typedef signed int S16; /* defined for signed 16-bits integer variable 有符号16位整型变量*/typedef unsigned long U32; /* defined for unsigned 32-bits integer variable 无符号32位整型变量*/typedef signed long S32; /* defined for signed 32-bits integer variable 有符号32位整型变量*/typedef float F32; /* single precision floating point variable (32bits) 单精度浮点数(32位长度)*/typedef double F64; /* double precision floating point variable (64bits) 双精度浮点数(64位长度)*///#define Data_0_time 4//----------------------------------------------////----------------IO口定义区--------------------////----------------------------------------------//sbit P2_0 = P2^2 ;//----------------------------------------------////----------------定义区--------------------////----------------------------------------------//U8 U8FLAG,k;U8 U8count,U8temp;U8 U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;U8U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_t emp;U8 U8comdata;U8 outdata[2]; //定义发送的字节数U8 indata[5];U8 count, count_r=0;U8 str[2]={"12"};U16 U16temp1,U16temp2;SendData(U8 *a){outdata[0] = a[0];outdata[1] = a[1];count = 1;SBUF=outdata[0];}void Delay(U16 j){ U8 i;for(;j>0;j--){for(i=0;i<27;i++);}}void Delay_10us(void){U8 i;i--;i--;i--;i--;i--;i--;}void COM(void){U8 i;for(i=0;i<8;i++){U8FLAG=2;while((!P2_0)&&U8FLAG++);Delay_10us();Delay_10us();Delay_10us();U8temp=0;if(P2_0)U8temp=1;U8FLAG=2;while((P2_0)&&U8FLAG++);//超时则跳出for循环if(U8FLAG==1)break;//判断数据位是0还是1// 如果高电平高过预定0高电平值则数据位为1 U8comdata<<=1;U8comdata|=U8temp; //0}//rof}//--------------------------------//-----湿度读取子程序------------//--------------------------------//----以下变量均为全局变量--------//----温度高8位== U8T_data_H------//----温度低8位== U8T_data_L------//----湿度高8位== U8RH_data_H-----//----湿度低8位== U8RH_data_L-----//----校验8位== U8checkdata-----//----调用相关子程序如下----------//---- Delay();, Delay_10us();,COM();//--------------------------------void RH(void){//主机拉低18msP2_0=0;Delay(180);P2_0=1;//总线由上拉电阻拉高主机延时20usDelay_10us();Delay_10us();Delay_10us();Delay_10us();//主机设为输入判断从机响应信号P2_0=1;//判断从机是否有低电平响应信号如不响应则跳出,响应则向下运行if(!P2_0) //T !{U8FLAG=2;//判断从机是否发出80us 的低电平响应信号是否结束while((!P2_0)&&U8FLAG++);U8FLAG=2;//判断从机是否发出80us 的高电平,如发出则进入数据接收状态while((P2_0)&&U8FLAG++);//数据接收状态COM();U8RH_data_H_temp=U8comdata;COM();U8RH_data_L_temp=U8comdata;COM();U8T_data_H_temp=U8comdata;COM();U8T_data_L_temp=U8comdata;COM();U8checkdata_temp=U8comdata;P2_0=1;//数据校验U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp);if(U8temp==U8checkdata_temp){U8RH_data_H=U8RH_data_H_temp;U8RH_data_L=U8RH_data_L_temp;U8T_data_H=U8T_data_H_temp;U8T_data_L=U8T_data_L_temp;U8checkdata=U8checkdata_temp;}//fi}//fi}void RSINTR() interrupt 4 using 2{U8 InPut3;if(TI==1) //发送中断{TI=0;if(count!=2) //发送完5位数据{SBUF= outdata[count];Delay(10000);Delay(1000);count++;}}if(RI==1) //接收中断{InPut3=SBUF;indata[count_r]=InPut3;count_r++;RI=0;if (count_r==2)//接收完4位数据{//数据接收完毕处理。