AT89S52单片机的温度湿度计论文33785.doc

上传人:小小飞 文档编号:26424 上传时间:2018-10-29 格式:DOC 页数:28 大小:633.51KB
返回 下载 相关 举报
AT89S52单片机的温度湿度计论文33785.doc_第1页
第1页 / 共28页
AT89S52单片机的温度湿度计论文33785.doc_第2页
第2页 / 共28页
AT89S52单片机的温度湿度计论文33785.doc_第3页
第3页 / 共28页
AT89S52单片机的温度湿度计论文33785.doc_第4页
第4页 / 共28页
AT89S52单片机的温度湿度计论文33785.doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《AT89S52单片机的温度湿度计论文33785.doc》由会员分享,可在线阅读,更多相关《AT89S52单片机的温度湿度计论文33785.doc(28页珍藏版)》请在三一文库上搜索。

1、本 科 生 毕 业 设 计 论 文 基于 AT89S52 单片机的温度湿度计的设计 目 录 1 绪论 .2 1.1 问题的提出与意义 .2 1.2 国内外的发展现状 .2 1.3 研究的目的与方向 .2 2 设计分析 .3 2.1 设计方案 .3 2.2 系统组成 .3 2.3 工作原理 .4 3 总体设计 .4 3.1 主要器件简介 .4 3.2 主要电路模块 .6 3.3 软件设计编程 .8 4 调试 .13 结束语 .14 致谢 .14 参考文献 .14 附录 .16 1 基于 AT89S52 单片机的温度湿度计的设计 摘要:采用 MSC-51 系列单片机中的 AT89S51 和温湿度传

2、感器 DHT11 的低成本设计温湿度 的检测系统。由 DHT11 温湿度传感器及 LCD1602 字符型液晶模块构成系统显示模块,该系 统电路简单、工作稳定、集成度高、调试方便、测量精准度高,具有一定的实用价值与意义。 其中测温湿度监测电路由温湿度传感器和预设温度值比较报警电路组成,用户根据需要预先 输入预设值,当实际测量的温湿度大于预设的温湿度数值时,发出报警信号(蜂鸣器蜂鸣) 。 关键词:单片机; 温湿度传感器 ; 温湿度检测系统; AT89S52; DHT11 Based on the Design of Temperature Humidity Indicator of AT89S52

3、 Singlechip Wang Wei ( Department of Electronic Information Engineering Supervisor: Shen Wenlong) Abstract:This design is the use of MSC-51 Series MCU AT89S51 and DHT11 in the low-cost temperature and humidity detection system.The DHT11 temperature and humidity sensor and 1602 constitute a system of

4、 character LCD module display module, the system circuit is simple, stable, high level of integration, commissioning convenient, accurate, has some practical value and significance. Temperature and humidity Monitor circuit in which the temperature and humidity sensors and compare the value of the pr

5、eset temperature alarm circuit, the user input required pre- default value, when the actual temperature and humidity measurements of temperature and humidity is greater than the preset value, an alarm signal (bee Buzzer beep). Keywords: microcontroller; temperature and humidity sensor; detection sys

6、tem; AT89S52; DHT11 2 1 绪论 1.1 问题的提出与意义 1.1.1 问 题 的提出 为了更加有效的保证人们生活环境的安逸和舒适,同时也为了人们生活的更加健康,人们已不满 于目前的居住环境,对家庭提出了更高的要求,智能化被引进了家庭,并且迅速在全国乃至世界范围 内普遍发展开来,由于自然环境污染越来越严重,城市人口越来越多等,适宜人们生活的温度以及湿 度越来越难以达到标准,常见的南北气候差异,北方冬天异常干燥,南方却阴冷潮湿,而对于我们来 说,如何有效地在合适的时间内对环境作出相应的举措却始终难以把握,因此我们需要选取有效的方 法,以满足人们的要求。 1.1.2 研究的意义

7、 环境是人们安居乐业的基础。特别是现在生活水平的提高、生活节奏的加快,而空气中温湿度的 变化与人体的情绪、舒适度以及生理代谢都有很大的影响 1,所以对温度、湿度的检测就非常有意义 了,对于当下每个家庭中来说也变得不容忽视了。因此为了满足最适宜人们生活的最佳温度和湿度, 我们需要研究一种便于监测和提醒温湿度的装置,人们可以根据不同季节以及个人的需要进行自我调 整,以便达到最佳的居住环境,这不仅仅是对于环境要求的进步,同时也体现了现代文明的发达与先 进。 1.2 国内外的发展现状 最近几年,国内外温湿度传感器测量系统正向着集成化、智能化发展,随着科研人员的不断努力, 该类型系统取得的巨大的成就。

8、现代温湿度传感器测量系统技术主要以数据采集为依据。伴随电子科学技术的进一步发展,数据 采集系统也发生了日新月异的变化,其整体的性能、实用性方面都有所改进。因此,依托于数据采集 结构而发展的温湿度传感器测量系统在实际应用中也发挥这越来越重要的作用 2。 目前,许多外国大型企业都很重视传感器的研发工作,例如,日本的 Figaro 公司、芬兰的 Vaisala 公司等,都致力于传感器的发展和完善,以保障其在整个销售市场的竞争力。在九十年代,先后出现 了集成温度湿度测量套件和应用于湿度传感器的测试系统,这个新技术的产生都大大刺激了传感器的 进一步发展。 与此同时,国内许多机构也在传感器测试装置的研发上

9、不断探索、研发。例如通过采用传统电子 仪器进行设计研发而成的多种动态测试系统、动进样装置的气体传感器智能测试系统等等。 当然,随着科技的进步,传统的温湿度测试技术在稳定性、精度等方面已经无法满足市场的需求, 因此,针对新一代传感器的探究显得尤为重要。 1.3 研究的目的与方向 1.3.1 研究的目的 为满足现代家庭对于居住环境温湿度的不同需求,我们可以随时进行调节,对于不利情况能够及 时的作出显示,并能够采取相应的措施提醒用户进行调整,以达到最适宜的温湿度。 1.3.2 研究的主要内容 3 首先我们必须了解温湿度控制对于家庭对于现代人们的重要性,其次我们才能够对此作出更好的 判断,以求更好的解

10、决用户所需要的问题。数字化温湿度检测的方法为一旦环境中的温湿度发生变化 时,湿度传温度感器和湿度传感器随着温湿度的变化而变化,然后将变化的电阻通过转换电路和转换 信号检测为与之对应变化的电压,然后把模拟电压信号由 A/D 转换器转换为数字信号并送入到单片机 中 3,通过单片机芯片控制显示该温湿度值。该系统通过键盘设定最适宜的温度和湿度,传感器向中 央控制系统输送监测信息,超过预设值的话,蜂鸣器就会报警提醒,用户即可作出调整。 2 设计分析 2.1 设计方案 2.1.1 系统功能 温湿度监测:对环境温湿度进行准确测量。 实时显示:同时显示当前温湿度值。 阀值预设:用户可以自行设置温湿度报警范围。

11、 阀值报警:当环境温度或湿度超出预设范围时,发出报警信号,以示提醒。 2.1.2 实现措施 1 温度和湿度可以通过温湿度传感器进行采集信号。 2 采用单片机作为中央控制装置,可对采集的信号进行数据处理以及实现按键、报警功能控制。 3 使用 LCD 显示屏可以直观显示温度湿度。 4 利用三极管驱动的蜂鸣器响和指示灯闪烁可做到报警提示。 2.2 系统组成 元器件是系统组成的基础,可行性是系统设计的依据。经过上面的总体方案和实施措施的讨论后 可以开始设计系统的组成。 由于设计要实现的功能是:实时显示当前环境的温湿度,并且允许用户设定温湿度阈值,当环境 温湿度超过阈值时,系统会以蜂鸣器鸣响指示灯亮的方

12、式进行报警提示。 所以依据功能设定与实现措施,系统主要设计可分为以下图 1 所示三个模块: 数 据 处 理 模 块 温湿度采集模块 用户交互模块 图 1 系统模块图 其中温湿度采集模块使用的是 DHT11 数字温湿度传感器,它使用单总线方式,接口简单,而且 无需另外校准。分辨率为 8bit,测量范围为湿度 20-90%RH,温度 050;测量精度为湿度 5%RH,温度1完全能够满足日常环境温湿度的检测要求 4。 数据处理模块使用的是 AT89S52 单片机,其完成温湿度数据的处理与控制的功能。 用户交互模块主要由按键、LCD1602 点阵液晶、蜂鸣器以及指示灯构成。其中按键用于用户设定 4 温

13、湿度阈值,LCD1602 用于数据显示,蜂鸣器和指示灯用于提示用户。 2.3 工作原理 按照系统的设计功能所要求的,温湿度监测系统原理图如下图 2 所示: LCD 温湿度显示 温湿度传感器 蜂鸣器、指示灯单片机 按键 图 2 温湿度监控系统原理图 单片机作为主控制器,主要负责处理由温湿度传感器送来数据,并把处理好的数据送向显示器模 块,数据温湿度传感器主要用来采集周围的环境参数,并把所采集到得数据送向单片机 5,按键电路 主要是用来完成单片机的复位操作和温湿度初始值的设定。蜂鸣器电路就是用三极管来实现的,用来 判断周围的温度或者湿度是否超出设定数值,显示电路主要用来显示当前的温湿度。 3 总体

14、设计 3.1 主要器件简介 3.1.1 温湿度传感器 DHT11 测量采用一款数字温湿度传感器芯片 DHT11,温湿度传感器 DHT11 集温度传感器和湿度传感器 于一体,内置 A/D 转换器,数字信号输出,具有高度集成,精准度高,传输可靠性高,抗干扰等特点 6。 DHT11 有 4 个引脚,其引脚说明,如表 1 所示,典型应用电路如图 3 所示: 表 1 DHT11 引脚说明表 pin 名称 注释 1 VDD 供电 35.5V 2 DATA 串行数据,单总线 3 NC 空脚,悬空 4 GND 接地,电源负极 5 图 3 典型的应用电路 3.1.2 单片机 AT89S52 根据实现系统功能需要

15、的单片机硬件资源,在性能指标满足的情况下,选择 SAT89S52 单片机为 该系统的总控芯片,因为 AT89S52 单片机可把由温度、湿度检测电路检测出的信号数据传输到 LCD 显示模块,实现温度、湿度的显示;通过键盘设定温湿度报警值,超过温度、湿度上下限由蜂鸣器实 现温度、湿度的报警。作为系统控制部分时钟电路由一个频率为 11.0592MHz 的晶振和两个 30pF 的电 容组成,复位电路由一个 10uF 的电容和一个 10k 的电阻组成 7。 其单片机的内部结构框架示意图,如图 4 所示。 图 4 51 单片机的内部结构框图 3.1.3 LCD1602 液晶显示 显示部分采用一种专门用于显

16、示数字、字母、符号等点阵式的字符型液晶 LCD1602,所谓 1602 是指显示的内容为 16*2,即可以显示两行,每行 16 个字符,符合同时显示温度值、湿度值这一要求。 1602LCD 的特性如下表 2 所示: 表 2 1602LCD 的特性表 +5V 电压,对比度可调 内含复位电路 提供各种控制命令 有 80 字节显示数据存储器 DDRAM 内建有 160 个 5X7 点阵的字型的字符发生器 CGROM 8 个可由用户自定义的 5X7 的字符发生器 CGRAM 6 其 LCD1602 液晶显示接口模块如下图 5 所示: 图 5 LCD 接口模块 1602 采用标准的 16 脚接口,其引脚

17、功能说明如下表 3: 表 3 1602 引脚功能说明表 编号 符号 引脚说明 1 VDD 正极 2 VSS 接地 3 VL 液晶显示偏压 4 RS 数据/命令选择 5 R/W 读/写选择 6 E 使能信号 7 D0 数据 8 D1 数据 9 D2 数据 10 D3 数据 11 D4 数据 12 D5 数据 13 D6 数据 14 D7 数据 15 BLA 背光源正极 16 BLK 背光源负极 3.2 主要电路模块 3.2.1 主控制电路和测温时控制电路 7 本次硬件的核心就是 AT89S52,其他的外围电路都是围绕它所设计的。数字温湿度传感器的 DHT11 的 DATA 口连接单片机 AT89

18、S52 的 P3.0 口。显示电路就是把 LCD1602 和单片机的 P0 口分别 相连 8,当温度或湿度高于预设值的时候蜂鸣器蜂鸣报警,增加单片机的输出能力,增加单片机的输 出电流,故使用电阻排来完成。本系统采用的是上电复位,充电之后,RST 被拉至高电平,单片机进 入工作状态 9。总的系统控制原理图如图 6 所示: 图 6 电路原理图 3.2.2 其他主要模块电路 1 蜂鸣器电路 微型计算机控制系统中,为了安全起见,对于一些重要的参数或系统,都设定有紧急状态报警系 统,于以提醒,本设计采用峰鸣音报警电路。如图 7 所示。蜂鸣器额定电流30Ma,而对于 AT89S52 单片机,P3 口的灌电

19、流为 15mA,由此可见,仅靠单片机的 P3 口电流是不能驱动蜂鸣器的,必须使用 晶体管放大电路,为了使单片机的功率更小,所以使用 PNP 型晶体管,当外部环境的温度或者湿度超 过预设值的时候,基级变为低电平,蜂鸣器导通鸣叫。 2 显示电路 显示模块选用 LCD1602 字符型液晶模块,它是目前工控系统中使用最广泛的液晶屏之一,由于它 显示人性化,可视性高,电路图如图 8 所示,LCD1602 字符型液晶模块是点阵型液晶,驱动方便,经 过编程后显示内容多样化。 8 图 7 蜂鸣器电路 图 8 显示电路 3 传感器电路 DHT11 是数字型温湿度传感器,可直接以数字方式传输所采集的当前环境温湿度

20、,DHT11 采用 的是单总线通信,因此只需将单片机的一个 IO 端口与 DHT11 的通信接口连接就可以实现数据的采 集和传送,相对于其他电路来说比较简单。如图 9 所示: 4 复位电路 本次设计采用的是上电复位,而 AT89S52 单片机采用的都是高电平复位,当 RST 引脚上出现了 两个周期以上的高电平就会触发内部复位,这里的 EA 端与复位电路无关,由于数据都放在了内部存 储器,所以连接 EA 只是直接拉高引脚,如图 10 所示: 图 9 传感器电路 图 10 复位电路 3.3 软件设计编程 系统软件程序基于 Keil uvsion2 开发平台,采用 C 语言编写。原理图画图工具用 P

21、rotel SE99。 C 语言的运算符丰富,它包括的范围相当广泛,并且表达方式的类型多样化,能够实现在高级语 言中不能实现的运算,它能够对于位,字节和地址进行操作;并且数据类型很丰富,能实现各种复杂 的数据类型,同时还加入了指针的概念,使得效率更高。 Protel99 SE 具有很强的编辑功能以及分析功能,用户可以分析电路的各个方面,能够提供交流小 信号、瞬态分析、传输函数分析等;同时具有庞大的仿真模型库,拥有 20 多个模拟和数字期间仿真元 件库,同时还有大量的数字器件和其他的集成电路器件 10。 此次设计主要是能够实时显示出当前确切的温湿度,并且在高于预设值的时候能够发出蜂鸣。一 旦接通

22、电源,LCD 初始化,采用八位的数据端口,两行显示,其中第一行显示的湿度预设值,第二行 显示的是实时的温湿度值,在程序设计中,分别定义温湿度参数,根据数据转换过来的数值,判断是 9 否超过了预设值,等待传送的数值超过预设值的话,蜂鸣器便会蜂鸣警报,LCD1602 显示当前的温湿 度值,再次循环判断,如果没有超过预设值,蜂鸣器不会蜂鸣,LCD1602 正常显示,也同样再次循环。 其系统总的流程图如下图 11 所示: 开始 初始化 扫描键盘 是否有键摁下 调用设置界面进行 设置 设置是否完成 测量温湿度 将温湿度存入寄存 器 调用显示程序显示 温湿度 向串口发送温湿度 值 调用温湿度报警检 测 蜂

23、鸣器报警指示灯 显示 是否超出报警 阈值 结束 是 是 否 是 否 否 开始 初始化 扫描键盘 是否有键摁下 调用设置界面进行 设置 设置是否完成 测量温湿度 将温湿度存入寄存 器 调用显示程序显示 温湿度 向串口发送温湿度 值 调用温湿度报警检 测 蜂鸣器报警指示灯 显示 是否超出报警 阈值 结束 是 是 否 是 否 否 开始 初始化 扫描键盘 是否有键摁 下 调用设置界面 进行设置 设置是否完 成 测量温湿度 将温湿度存入 寄存器 调用显示程序 显示温湿度 向串口发送温 湿度值 调用温湿度报 警检测 蜂鸣器报警指 示灯显示 是否超出报 警阈值 结束 是 是 否 是 否 否 开始 初始化 扫

24、描键盘 是否有键摁 下 调用设置界面 进行设置 设置是否完 成 测量温湿度 将温湿度存入 寄存器 调用显示程序 显示温湿度 向串口发送温 湿度值 调用温湿度报 警检测 蜂鸣器报警指 示灯显示 是否超出报 警阈值 结束 是 是 否 是 否 否 图 11 主程序流程图 该系统控制核心是对单片机 8052,其工作过程是:系统通电后,单片机 8052 进入监控状态,同 时完成对各扩展端口的初始化工作。在没有外部控制信息输入的情况下,系统自动采集温湿度传感器 数据,最后产生的数据在 LCD 显示器上显示和蜂鸣器报警。 设计中采用模块化程序方法,主要分为以下几个模块: 1 LCD 初始化显示模块,流程如下

25、图 12 所示: LCD 初始化 延时 调用 LCD 显示模块 调用 DHT11 模块 10 图 12 LCD 初始化显示流程图 主要程序如下: LCD_Initial(); /液晶初始化 while(1) RH(); temp_t=U8T_data_H; temp_h=U8RH_data_H; zhuanhuan(); key();/ 按键检测 kongzhi(); GotoXY(0,0);/显示起始位置 Y=0,第一行,Y=1 第二行/显示第一行 Print(temp);/ 内容 GotoXY(0,1);/显示起始位置 Y=0,第一行,Y=1 第二行 显示第二行 Print(temp_s)

26、;/ 内容 delay(1); /getdate= GetADCResult(0)*3.9; 2 DHT11 数据采集模块,流程如下图 13 所示: 图 13 DHT11 数据采集流程图 11 主要程序如下: 前面需要定义 void COM(void); void Delay2(U16 j) /延时函数 U8 i; for(;j0;j-) for(i=0;i0) shangxian-; else( shangxian=255); if(sw2=0) /上限 加功能 delay(50); if(sw2=0) /while(sw2=0) ; if(shangxian=shangxian)|(tem

27、p_t32) /此处 设定预设温度 /led=1; num1+; if(num1=20) num1=0; baojing=baojing; else baojing=1; 4 调试 此部分的任务是在系统连接好后,调试各个组件能否正常工作,能否实现软件设计的预期目标。 根据说明书,了解各个组件的工作原理,把各个功能模块编写成单独的源文件进行调试,调试成功以 后,再将各部分联合在一起。再按照系统设计,将系统需要的各个组件连接好,进行综合调试。其步 骤如下: 1 按照系统设计,将系统需要的各个组件连接好。 2 根据说明书,了解各个组件的工作原理,开始着手调试芯片。 3 调用 AT89S52 程序,运

28、行,观察现象。现象正确,说明 AT89S52 芯片正常,可以使用。 4 调用 DHT11 程序,运行,观察现象。现象正确,说明 DHT11 芯片正常,可以使用。 5 调用 LCD1062 程序,运行,观察现象。现象正确,说明 LCD1062 芯片正常,可以使用。 6 调用 KEY 程序,运行,观察现象。功能正确,说明按键正常,可以使用。 在把各个功能模块编写成单独的源文件进行调试,调试成功以后,再将各部分联合在一起。 除了以上所提到的模块之外,还有一些模块也很重要,也都需要认真的调试,如报警模块等。调 试了各模块之后,接下来的工作就是将各源程序段连接起来,进行综合调试了,综合调试需要我们特 别

29、注意细节部分,这样才能尽可能的减少错误的产生。 最后,在硬件全部组件全部完成后,装上电池,我们采用的是 3 节 5 号普通电池,4.5V 的电压, 14 指示灯亮,仪器工作,一段时间显示屏显示出数值,温度 28,湿度 36%。如下图 15 所示,而根据 所有的精确仪器测得目前室内温度温度为 27.6,湿度 36.2%。可计算其误差分别为 1.45%、0.55%, 能达到设计要求,测试通过。 图 15 仪器显示画面 结束语: 大学的学习中,毕业设计是一个很重要的环节,是我们步入社会参与社会实践的很好锻炼,从最 初的选题,开题构思,绘图,编程,仿真直到完成设计,这中间,查找资料,老师指导,同学交流

30、, 编写程序,直至仿真调试,以及硬件焊接,每一个过程都是一次成长和对自己的一次的检验。本次设 计是基于单片机的温湿度设计,包括硬件电路和软件两部分。设计初对于单片机的应用并不是很了解, 本科学习中初步接触过 C 语言,由于本次设计需要硬件和软件两部分,因此我是从软件部分先开始的, 然后才开始硬件电路的设计,是由于软件的不完美影响了硬件电路设计的不是很美观。 在软件设计过程中,我基本是一步步开始学起的,在学习中遇到很多问题,经过张老师的指点和 同学的讨论,我学到了很多编程技巧,同时也掌握了一些编程思想。由于原器件的局限性,硬件电路 不是很美观,其中一些电容和电阻并不是原理图中设计的大小,但是这并

31、不影响结果,再画原理图的 过程中我又进一步掌握了 Protel 的基本应用,并有了较为深入的了解。由于电路设计比较简单,所以 并没有涉及 PCB 板,直接手动焊接完成电路。通过本次设计,对于主要芯片 8051 有了基本的了解,基 本掌握了该芯片的基本功能。经过软件在硬件电路的挑时候,基本功能均能实现,如果把手放在传感 器上面,温度和湿度会立即发生变化。 致谢: 四年的大学生活接近尾声,我的毕业设计也顺利的完成了,这里首先向我的指导老师表示最诚挚 的感谢,同时也感谢那些帮助过我的同学们。 在毕业设计的过程中,指导老师不厌其烦的为我们讲解了毕业设计中可能出现的问题,同时他每 周与我们见面讨论一次,

32、要求我们详解上周所做的东西以及自己下周要做的东西,并督促我们抓紧时 间完成毕业设计,及时加以指导。老师认真负责的态度让我倍受感激。同时在此也感谢某同学,在我 设计过程中帮助解决了许多我遇到的问题,特别是单片机和编程,他给了我很大的帮助。 在此向所有毕业设计的过程中给予我帮助的老师和同学最诚挚的谢意。 参考文献: 1 张冬林,李鑫,戴梅.基于 DHT11 的低成本蚕室温湿度自动控制系统设计J.现代农业科技,2010,(18):14-15. 2 徐春河.浅谈 AT89S51J.制造业自动化,2010,(12):80-82. 3 吴汉清.常用的典型单片机资料J.无线电,2007,(11):72-80

33、. 4 叶健斌.基于单片机嵌入式系统的 GPS 应用J.电子质量,2008,(7):16-24. 15 5 刘宝元,张玉虹,姜旭,段存丽.基于单片机的温湿度监控系统设计J.国外电子测量技术,2009,(12):77-80,83. 6 王静.通用库房温湿度测控系统D.中国海洋大学,2009. 7 陈汝全.实用微机与单片机控制技术M.电子科技大学出版社.1995,7,12. 8 李建民.单片机在温度控制系统中的应用J.江汉大学学报,1996.6:210-215. 9 薛玲,孙曼,张志会,夏莉丽,魏希文.基于单片机 AT89S51 的温湿度控制仪J.2010:66-69. 10 王剑,朱涛,李冬.P

34、rotel 99se 电路仿真在电子实验教学中的应用J.2010(5):62-64. 11 汤武辉.Proteus 仿真软件与单片机实验教学J.长江大学学报(自然版),2010,07(3):408-409. 16 附录: 系统原理电路图: 17 源程序: #include #include #define uint unsigned int #define uchar unsigned char #include“1602.h“ #include uchar temp =“RH_SET:00% 0“; /设置 的湿度值显示 uchar temp_s =“RH:00% TEMP:00 0“; /

35、实时湿度显示 sbit sw3=P15; /按键定义 sbit sw1=P13; sbit sw2=P14; sbit baojing=P33; /sbit led=P35; uchar set; /变量定义 uchar num1; uchar getdata=55; uint shangxian=34; uchar temp_h,temp_t; void conv(); yunxing(); void key(); void kongzhi(); void zhuanhuan()/扫描数据转换 temp7=shangxian/10%10+0x30; temp8=shangxian%10+0x

36、30; temp_s3=temp_h/10%10+0x30; temp_s4=temp_h%10+0x30; temp_s3=temp_h/10%10+0x30; temp_s4=temp_h%10+0x30; temp_s12=temp_t/10%10+0x30; temp_s13=temp_t%10+0x30; temp_s14=0xdf; temp_s15=C; 18 /- main() baojing=0; delay(500); baojing=1; / led=0; LCD_Initial(); /液晶初始化 while(1) RH(); temp_t=U8T_data_H; te

37、mp_h=U8RH_data_H; zhuanhuan(); key();/ 按键检测 kongzhi(); GotoXY(0,0);/显示起始位置 Y=0,第一行,Y=1 第二行/显示第一行 Print(temp);/ 内容 GotoXY(0,1);/显示起始位置 Y=0,第一行,Y=1 第二行 显示第二行 Print(temp_s);/ 内容 delay(1); /getdate= GetADCResult(0)*3.9; void key() /按键检测程序 if(set=1)/上限设置 if(sw1=0) /上限 减功能 delay(50); if(sw1=0) /while(sw1=

38、0); if(shangxian0) shangxian-; else( shangxian=255); 19 if(sw2=0) /上限 加功能 delay(50); if(sw2=0) /while(sw2=0) ; if(shangxian=shangxian)|(temp_t32) /此处 设定预设温度 /led=1; num1+; if(num1=20) num1=0; baojing=baojing; else baojing=1; DHT11 传感器接受和发送信息,然后将接收来的信息作出相应的判断和处理,然后反馈到显示器。 #include #include / aem type

39、def unsigned char U8; /* defined for unsigned 8-bits integer variable 无 符号 8 位整型变量 */ typedef signed char S8; /* defined for signed 8-bits integer variable 有 符号 8 位整型变量 */ 20 typedef unsigned int U16; /* defined for unsigned 16-bits integer variable 无 符号 16 位整型变量 */ typedef signed int S16; /* define

40、d 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

41、(32bits) 单 精度浮点数(32 位长度) */ typedef double F64; /* double precision floating point variable (64bits) 双 精度浮点数(64 位长度) */ / #define uchar unsigned char #define uint unsigned int #define Data_0_time 4 /相当于用 Data_0_time 代替 4. /-/ /-IO 口定义区-/ /-/ sbit DQ = P30 ; /-/ /-定义区-/ /-/ U8 U8FLAG,k; U8 U8count,U8

42、temp; U8 U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata; U8 U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp; U8 U8comdata; U8 outdata5; /定义发送的字节数 U8 indata5; U8 count, count_r=0; U16 U16temp1,U16temp2; /以上为变量的定义. void COM(void); void Delay2(U16 j) /延时函数

43、U8 i; 21 for(;j0;j-) for(i=0;i #include #define uint unsigned int define uchar unsigned char void delay(uint z) /延时函数 uint a,b; for(a=z;a0;a-) for(b=120;b0;b-); sbit LcdRs = P10; sbit LcdRw = P11; 24 sbit LcdEn = P12; sfr DBPort = 0x80; /端口定义,LcdRs 就代表 P10 口,以下同. /P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端

44、口 unsigned char LCD_Wait(void) /内部等待函数,LCD 的显示需要一定的延迟时间. LcdRs=0; LcdRw=1; _nop_(); LcdEn=1; _nop_(); LcdEn=0; return DBPort; /向 LCD 写入命令或数据 #define LCD_COMMAND 0 / Command #define LCD_DATA 1 / Data #define LCD_CLEAR_SCREEN 0x01 / 清屏 #define LCD_HOMING 0x02 / 光标返回原点 /以上 4 行为宏定义,以后出现 LCD_HOMING 的地方就可

45、以用 0x02 来代替. void LCD_Write(bit style, unsigned char input) /LCD 写入子函数,形参为数据类型和无符号字 符型输入. LcdEn=0; LcdRs=style; /数据类型传递给 LcdRS LcdRw=0; _nop_(); DBPort=input; _nop_();/写入的数据传递给 DBPort LcdEn=1; _nop_();/注意顺序 LcdEn=0; _nop_(); LCD_Wait(); /调用内部等待函数. /设置显示模式 * #define LCD_SHOW 0x04 /显示开 #define LCD_HID

46、E 0x00 /显示关 #define LCD_CURSOR 0x02 /显示光标 #define LCD_NO_CURSOR 0x00 /无光标 #define LCD_FLASH 0x01 /光标闪动 #define LCD_NO_FLASH 0x00 /光标不闪动 25 void LCD_SetDisplay(unsigned char DisplayMode) /LCD 显示设置子函数 LCD_Write(LCD_COMMAND, 0x08|DisplayMode); /设置输入模式 * #define LCD_AC_UP 0x02 #define LCD_AC_DOWN 0x00 / default #define LCD_MOVE 0x01 / 画面可平移 #define LCD_NO_MOVE 0x00 /default void LCD_SetInput(unsigned char InputMode) LCD_Write(LCD_COMMAND, 0x04|InputMode); /初始化 LCD* void LCD_Initial() /初始化函数. LcdEn=0; LCD_Write(LCD_COMMAND,0x38); /8 位数据端口,2 行显示,5*7 点阵

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1