最新多功能温湿度计设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
多功能温湿度计设计
多功能数字温湿度计设计
【摘要】温度和湿度是两个最基本的环境参数,人们生活与温湿度息息相关。
在工农业生产、气象、环保、国防、科研等部门,经常需要对环境温度与湿度进行测量。
准确测量温湿度在生物制药、食品加工、造纸等行业更是至关重要的。
因此研究温湿度的测量方法具有重要的意义。
本论文讲述了一种以单片机AT89C52为主要控制器件,以DHT22为数字温湿度传感器的新型数字温湿度计,具有时间、温湿度显示,并且可以自行设置温度预警值,当温度超出预警值时报警,存储温湿度的功能。
【关键词】温度;湿度;DHT22;时间
Multifunction digital hygrometer design [Abstract]Temperature and humidity are the two most basic environmental parameters, people's life is closely related to temperature and humidity. In industrial and agricultural production, meteorology, environmental protection, national defense, scientific research departments, often need to measure temperature and humidity to the environment. Accurate measurement of temperature and humidity in biological pharmaceutical, food processing, paper making industries is of vital importance. So the temperature and humidity measurement method has the vital significance.
This paper tells the story of a single chip microcomputer AT89C52 as the main control device, a new type of digital temperature and humidity for DHT22 digital temperature and humidity meter, time, temperature and humidity display, and was able to set temperature warning value, when temperature exceeds the warning alarm, the function of storage temperature and humidity.
[Keyword] Temperature; humidity; DHT22; time
目录
1.温湿度计发展史 --------------------------------------------------------------------------------------- 1
1.1温度计的发展史 -------------------------------------------------------------------------------------- 1
1.2湿度计的发展史 -------------------------------------------------------------------------------------- 2
2. 设计任务分析及方案论证 ----------------------------------------------------------------------------------- 3
2.1设计数字温湿度计的需求分析 ------------------------------------------------------------------- 3
2.2设计任务及要求 -------------------------------------------------------------------------------------- 3
2.3 设计总体方案及方案论证 ------------------------------------------------------------------------- 3
2.4器件的选择 -------------------------------------------------------------------------------------------- 4
2.4.1主控制器芯片--------------------------------------------------------------------------------- 4
2.4.2温湿度传感器--------------------------------------------------------------------------------- 7
2.4.3时钟芯片 --------------------------------------------------------------------------------------- 8
2.4.4存储芯片 --------------------------------------------------------------------------------------- 8
2.4.5 LCD12864--------------------------------------------------------------------------------------- 9
2.5温湿度测量的方法及分析------------------------------------------------------------------------- 11
3. 硬件电路的设计 ---------------------------------------------------------------------------------------------- 12
3.1总体结构框图 ---------------------------------------------------------------------------------------- 12
3.2 主控制电路和测温湿电路 ------------------------------------------------------------------------ 12
3.3 存储模块与时钟模块电路 ------------------------------------------------------------------------ 13
3.4 显示模块电路---------------------------------------------------------------------------------------- 14
4.软件设计及分析 ---------------------------------------------------------------------------------------------- 15
4.1程序流程图 ------------------------------------------------------------------------------------------- 15
4.2 DHT22工作原理 ------------------------------------------------------------------------------------- 16
4.3 DS1302工作原理------------------------------------------------------------------------------------ 22
4.4 AT24C02工作原理------------------------------------------------------------------------------------ 25
4.5 LCD12864的工作原理 ----------------------------------------------------------------------------- 31参考文献 ------------------------------------------------------------------------------------------------------- 34附录A 实物图 ----------------------------------------------------------------------------------------------------- 35附录B 元件清单 -------------------------------------------------------------------------------------------------- 37
1.温湿度计发展史
1.1温度计的发展史
世界上记录最热的温度是在利比亚,时间是1922年9月13日,温度是摄氏58度,之后1953年在墨西哥记录到60度。
美国记录的最高温度是在加州的死亡谷,1913年7月10日,温度是56.7度,曾经有人描述过在这个温度下的感受,人可以感受到死亡的威胁,鸟热的从天上掉下来。
古希腊人早就知道空气在受热的时候会膨胀,在大约2000年前,亚历山大的英雄(Hero of Alexandria),这其实是一希腊人,生活在埃及的亚历山大,名字叫"Hero”,他发明了一个类似蒸汽机的东西,用的就是热气膨胀的原理,但这个还不是温度计。
直到1592年,伽利略发明了一个类似温度计的东西,这个也可以测定气压,1612年,伽利略的朋友Santorio Santorio (1561-1636),(并不是我把名字打重了,他的名字和姓氏就是一样的,)他把伽利略的温度计改造了一下,在一个封闭的系统里,随着温度的变化,空气收缩膨胀,彩色的液体高度也随着变化,他用这个测定人体的温度变化,算是世界上第一个体温表。
直到1713年,Daniel Fahrenheit(1686-1736)在温度计上放上了刻度,首先把冰融化的温度和健康人体的温度两个刻度标上,但他很快意识到,冰融化的温度是不变的,但水结冰的温度则是变化的,他把冰,水和盐混在一起,这个温度作为0度,而冰融化的温度是32度,人体的温度是96度。
1835年,人们发现人体的正常温度是98.6度(就是摄氏37度)。
Fahrenheit有的时候
用酒精作为表示温度的液体,但后来他选择了水银,以后这个温度计的上限订到了水沸腾的点,212度。
这个就是英国美国使用的华氏度。
1742年,瑞典的天文学家Anders Celsius(1701-1744)把水结冰的点定位0度,水沸腾的点定位100度,之后Carolus Linnaeus(1707-1778)把这个顺序倒了过来,就是现在世界上使用最广泛的摄氏度。
从摄氏度的国家来到使用华氏度的国家非常不习惯,要经常把华氏度转换成摄氏度,才能明白天气预报是什么意思,很多年后才习惯华氏度,具体转换是F=9/5C+32,C=5/9(F-32),心算还是比较困难的。
1848年Kelvin引入一个绝对0度的概念,就是摄氏零下273.5度,然后摄氏0度就是273.15K, 100摄氏度就是373.15K。
1.2湿度计的发展史
湿度计是测量空气内含水分多少的仪器。
《史记·天官书》中即有测湿的记载。
我国汉朝初年就已出现湿度计,它是利用天平来测量空气干燥或潮湿的。
天平湿度计的使用方法,是把两个重量相等而吸湿性不同的物体,例如灰和铁,分别挂在天平两端。
当空气湿度发生变化时,由于两个物体吸入的分水不同,重量也就起了变化,于是天平发生偏差,从而指示出空气潮湿的程度。
这就是湿度计的由来。
空气的湿度可通俗地理解为空气的潮湿程度.它有绝对湿度和相对湿度之分.
绝对湿度:空气中水蒸气的压强 p 叫做空气的绝对湿度.
空气的湿度可以用空气中所含水蒸汽的密度,即单位体积的空气中所含水蒸汽的质量来表示.由于直接测量空气中水蒸气的密度比较困难,而水蒸气的
压强随水蒸气密度的增大而增大,所以通常用空气中水蒸气的压强来表示空气的湿度,这就是空气的绝对湿度.
相对湿度:
(1)概念的引入:为了表示空气中水蒸气离饱和状态的远近而引入相对湿度的概念.
(2)相对湿度 B :某温度时空气的绝对湿度 p 跟同一温度下水的饱和汽压 ps 的百分比叫做这时空气的相对湿度
①不同温度下水的饱和汽压可以查表得到
②在绝对湿度 p 不变而降低温度时,由于水的饱和汽压减小而使空气的相对湿度增大。
③居室的相对湿度以 60 %~ 70 %较适宜。
2. 设计任务分析及方案论证
2.1设计数字温湿度计的需求分析
温度与湿度与人们的生活息息相关。
在工农业生产、气象、环保、国防、科研等部门,经常需要对环境温度与湿度进行测量及控制。
准确测量温湿度在生物制药、食品加工、造纸等行业更是至关重要的。
传统的温度计是用水银柱来显示的,虽然结构简单、价格便宜,但是它的精确度不高,不易读数。
传统湿度计采用干湿球显示法,不仅复杂而且测量精度不高。
而采用单片机对温湿度进行测量,不仅具有控制方便,简单和灵活等优点,而且可以提高温湿度的测量精度。
用12864液晶显示屏来显示温湿度的数值和时间,看起来更加直观。
测量温湿度的关键是温湿度传感器。
过去测量温度与湿度是分开的。
随着技术的进步和人们生活的需要出现了温湿度传感器。
温度传感器的发展经历了3个阶段:传统的分立式温度传感器、模拟集成温度传感器、智能集成温度传感器。
目前,国际上新型温度传感器正从模拟式向数字式、从集成化向智能化、网络化的方向发展。
湿度传感器也是经历了这样一个阶段逐渐走向数字智能化。
总之,无论在日常生活中还是在工业、农业方面都离不开对周围环境进行温湿度的测量。
因此,研究温湿度的测量具有非常重要的意义。
2.2设计任务及要求
设计一个以单片机为核心的多功能温湿度测量系统,可实现的功能为:
(1)有日期,时间等显示功能;
(2)用户还可自行设置合适的温度;
(3)超出设置的合适温度时,蜂鸣器会提示;
(4)可存储并查看温湿度。
2.3 设计总体方案及方案论证
按照系统设计功能的要求,确定系统由7个模块组成:主控制器模块,温湿度传感模块,键盘输入模块,时钟模块,存储模块,LCD显示电路及蜂鸣器模块。
主控制器的功能有单片机来完成,主要负责处理由温湿度传感器、时钟芯片传递来的数据,并把处理好的数据送向显示模块,以及把数据发给存储芯片和接收存储芯片发来的数据。
温湿传感器主要用来采集周围环境参数,并把所采集来的参数送往主控制器。
按键电路主要用来完成时间的调整,设定温湿度适宜范围,存储和查询温湿度。
这里需要6个按键,两个用来调整时间,两个用来设定温湿度适宜范围,还有两个用来存储和查询温湿度。
蜂鸣器模块是由一个蜂鸣器组成,用来判断周围环境的温度是否超出设定值了,当温度超出设置的预警值时,蜂鸣器会发出声响。
2.4器件的选择
2.4.1主控制器芯片
AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标
准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。
AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2 个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的 Flash存储器可有效地降低开发成本。
AT89C52为8 位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要用于会聚调整时的功能控制。
功能包括对会聚主IC 内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。
主要管脚有:XTAL1(19 脚)和XTAL2(18 脚)为振荡器输入输出端口,外接12MHz 晶振。
RST/Vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。
VCC(40 脚)和VSS(20 脚)为供电端口,分别接+5V电源的正负端。
P0~P3 为可编程通用I/O 脚,其功能用途由软件定义,在本设计中,P0 端口(32~39 脚)被定义为N1 功能控制端口,分别与N1的相应功能管脚相连接,13 脚定义为IR输入端,10 脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12 脚、27 脚及28 脚定义为握手信号功能端口,连接主板CPU 的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。
P0:P0 口是一组8 位漏极开路型双向I/O 口,也即地址/数据总线复用口。
作为输出口用时,每位能吸收电流的方式驱动8 个TTL逻辑门电路,对端口P0 写“1”时,可作为高阻抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8 位)和数据总线复用,在访问期间激活内部上拉电阻。
在Flash编程时,P0 口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
P1:P1口是一个带内部上拉电阻的8 位双向I/O 口, P1 的输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
与AT89C51 不同之处是,P1.0 和P1.1 还可分别作为定时/计数器2 的外部计数输入(P1.0/T2)和输入(P1.1/T2EX),Flash 编程和程序校验期间,P1 接收低8 位地址,其第二功能如表2.1所示。
P2:P2口是一个带有内部上拉电阻的8 位双向I/O 口,P2 的输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。
对端口P2 写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
在访问外部程序存储器或16 位地数据存储器(例如执行MOVX @DPTR 指令)时,P2 口送出高8 位地址数据。
在访问8 位地址的外部数据存储器(如执行MOVX@RI 指令)时,P2 口输出P2锁存器的内容。
Flash编程或校验时,P2亦接收高位地址和一些控制信号。
P3:P3 口是一组带有内部上拉电阻的8 位双向I/O 口。
P3 口输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。
对P3 口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。
此时,被外部拉低的P3 口将用上拉电阻输出电流(IIL)。
P3 口除了作为一般的I/O 口线外,更重要的用途是它的第二功能,如表2.2所示。
表2.2 P3的第二功能
P3 口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。
AT89C52的电路仿真图如图2.1。
图2.1 AT89C52仿真图
2.4.2温湿度传感器
温湿度传感器采用DHT22,DHT22数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。
它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。
传感器包括一个电容式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。
因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。
每个DHT22传感器都在极为精确的湿度校验室中进行校准。
校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。
单线制串行接口,使系统集成变得简易快捷。
超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。
产品为4针单排引脚封装。
连接方便,特殊封装形式可根据用户需求而提供。
其引脚功能如图2.2所示。
引脚名称描述
①VDD 电源(3.3V~5.5V)
②SDA 串行数据,双向口
③NC 空脚
④GND 地
图2.2 DHT22的引脚
2.4.3时钟芯片
时钟芯片采用DS1302,DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。
采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。
DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。
DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。
其引脚如图2.3所示。
图2.3 DS1302的引脚图
2.4.4存储芯片
本次设计采用的是AT24C02存储模块,AT24C02是一个2K位串行CMOS E2PROM,内部含有256个8位字节,CATALYST公司的先进CMOS技术实质上减少了器件的功耗。
AT24C02有一个8字节页写缓冲器。
该器件通过IIC总线接口进行操作,有一个专门的写保护功能。
AT24C02支持I2C,总线数据传送协议I2C,总线协议规定任何将数据传送到总线的器件作为发送器。
任何从总线接收数据的器件为接收器。
数据传送是由产生串行时钟和所有起始停止信号的主器件控制的。
主器件和从器件都可以作为发送器或接收器,但由主器件控制传送数据(发送或接收)的模式,由于A0、A1和A2可以组成000~111八种情况,即通过器件地址输入端A0、A1和A2可以实现将最多8个AT24C02器件连接到总线上,通过进行不同的配置进行选择器件。
其封装及引脚如图2.4所示。
图2.4 AT24C02的三种封装图及引脚图
2.4.5 LCD12864
带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64, 内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。
可以显示8×4行16×16点阵的汉字. 也可完成图形显示.低电压低功耗是其又一显著特点。
由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。
主要技术参数和显示特性:电源:VDD 3.3V~+5V(内置升压电路,无需负压);显示内容:128列× 64行;显示颜色:黄绿屏,蓝屏;显示角度:6:
00钟直视;LCD类型:STN;与MCU接口:8位并口或串行;配置LED背光;多种软件功能:光标显示、画面移位、自定义字符、睡眠模式等。
12864的引脚功能如表2.3所示:
表2.3 LCD12864的引脚功能
2.5温湿度测量的方法及分析
DHT22是一个单总线接口的数字温湿度传感器。
它是四针单排封装,一个接电源,一个接地线,DATA接口直接和单片机的P2^7相连,另外一个是空引脚,不接线。
连接线长度短于20米时用5K上拉电阻。
单片机通过
P2^7向DHT22发送命令,DHT22接收到命令后做出相应的应答。
由于DHT22内部包含一个14位A/D转换器,所以单片机接收到就是数字信号,只需要做相应的处理就能得到所需要的数据。
这里减少了很多外部的电路的连接,用起来比较方便。
3. 硬件电路的设计3.1总体结构框图
图3.1 总结构框图
3.2 主控制电路和测温湿电路
本次硬件设计的核心就是AT89C52,其他部位的硬件都是围绕着它来设计的。
数字温湿度传感器DHT22的DATA口与AT89C52的P2^7口相连。
按键电路就是7个按键分别与AT89C52的P3^2,P3^3,P2^3,P2^4,P2^5,P0^0和P0^1口相连。
当有按键按下时单片机接收到有效的信号,S1键和S2键用来调整温度报警范围,S1键是增加温度值,S2键是减少温度值;S3,S4和S5键是用来调整时间和日期的,S3键用来移动设置的光标,S4键是增加键,S5键是减少键;S6和S7键是用来保存和查询温湿度的,S6键用来查询温湿度和退出界面,S7键用来保存温湿度和日期。
报警电路就是蜂鸣器与单片机的P2^6口相连,当温度超过设置的预警值时,蜂鸣器就会发出警报。
其电路接线图如图3.2所示。
图3.2 DHT22电路接线图
3.3 存储模块与时钟模块电路
本次设计使用的存储模块是以AT24C02存储芯片为核心的,该模块有四个引脚,其中的VCC和GND引脚分别接电源和接地,SDA引脚与单片机的P3^6口连接,SCL引脚与单片机的P3^7口连接,存储芯片主要是用来存储想要保存的温湿度。
时钟模块是以DS1302芯片为核心的,该模块有五个引脚,其中VCC引脚悬空,GND引脚接地,CLK引脚与单片机的P2^0口连接,DAT引脚与单片机的P2^1口连接,RST引脚与单片机的P2^2口连接,时钟芯片主要是用来提供秒分时日日期月年的信息,并具有掉电存储的功能。
DS1302的电路接线图如图3.3所示:
图3.3 DS1302的电路接线图
AT24C02的电路接线图如图3.4所示:
图3.4 AT24C02电路图
3.4 显示模块电路
本次设计采用的显示屏是LCD12864,LCD12864一共有20个引脚,其中RS引脚与单片机的P0^3口连接,R/W引脚与P0^4口连接,E引脚与P0^5口连接,PSB引脚与P0^6口连接,D0~D7分别与P1^0~P1^7连接,其他的电源口、接地口和空引脚分别对应相应的引脚或悬空。
LCD显示的时候分为四行,第一行显示日期,第二行显示时间,第三行显示湿度,第四行显示温度和预警值。
12864的接线电路图如图3.5所示。
图3.5 12864接线电路图
4.软件设计及分析4.1程序流程图
图4.1 程序流程图
4.2 DHT22工作原理
DHT22为单总线接口,DATA 用于微处理器与DHT22之间的通讯和同步,采用单总线数据格式,一次通讯时间5ms左右,具体格式在下面说明,当前数据传输为40bit,高位先出。
如下:
数据格式: 40bit数据=16bit湿度数据+16bit温度数据+8bit校验和
例子:接收40bit数据如下:
0000 0010 1000 1100 0000 0001 0101 1111 1110 1110
湿度数据温度数据校验和
湿度高8位+湿度低8位+温度高8位+温度低8位=的末8位=校验和
例如:0000 0010+1000 1100+0000 0001+0101 1111=1110 1110
湿度=65.2%RH 温度=35.1℃
当温度低于0℃时温度数据的最高位置1。
例如:-10.1℃表示为1000 0000 0110 0101
用户主机(MCU)发送一次开始信号后,DHT22从低功耗模式转换到高速模式,等待主机开始信号结束后,DHT22发送响应信号,送出40bit的数据,并触发一次信号采集。
如图4.2所示:
图4.2 接收开始信号
空闲时总线为高电平,通讯开始时主机(MCU)拉低总线500us后释放总线,延时20-40us后主机开始检测从机(DHT22)的响应信号。
从机的响应信号是一个80us左右的低电平,随后从机在拉高总线80us左右代表即将进入数据传送。
如图4.3所示:
图4.3 进入数据传送
高电平后就是数据位,每1bit数据都是由一个低电平时隙和一个高电平组成。
低电平时隙就是一个50us左右的低电平,它代表数据位的起始,其后的高电平的长度决定数据位所代表的数值,较长的高电平代表1,较短的高电平代表0。
共40bit数据,当最后一Bit数据传送完毕后,从机将再次拉低总线
50us左右,随后释放总线,由上拉电阻拉高。
数字1信号表示方法如图4.4所示:
图4.4 数字1信号表示方法
数字0信号表示方法.如图4.5所示:
图4.5 数字0信号表示方法
DHT22的的电气特性如表4.1所示:
表4.1 DHT22的电气特性VDD=5V,T = 25℃,除非特殊标注
注:采样周期间隔不得低于2秒钟(建议2秒以上)读八位数据子程序:
void COM(void)
{
uchar i;
for(i=0;i<8;i++)
{
FLAG=2;
while((!DATA)&&FLAG++);
Delay_10us();
Delay_10us();
Delay_10us();
u8temp=0;
if(DATA)
u8temp=1;
FLAG=2;
while((DATA)&&FLAG++);
if(FLAG==1)break;
comdata<<=1;
comdata|=u8temp;
}
}
温湿度读取子程序:
void RH(void)
{
uchar T_data_H_temp,T_data_L_temp;
uchar RH_data_H_temp,RH_data_L_temp,checkdata_temp; DATA=0;
Delay(5);
DATA=1;
Delay_10us();
Delay_10us();
Delay_10us();
Delay_10us();
DATA=1;
if(!DATA)
{
FLAG=2;
while((!DATA)&&FLAG++);
FLAG=2;
while((DATA)&&FLAG++);
COM();
RH_data_H_temp=comdata;
COM();
RH_data_L_temp=comdata;
COM();
T_data_H_temp=comdata;
COM();
T_data_L_temp=comdata;
COM();
checkdata_temp=comdata;
DATA=1;
u8temp=(T_data_H_temp+T_data_L_temp+RH_data_H_temp+RH_dat a_L_temp);
if(u8temp==checkdata_temp)
{
RH_data_H=RH_data_H_temp;
RH_data_L=RH_data_L_temp;
T_data_H=T_data_H_temp;
T_data_L=T_data_L_temp;
checkdata=checkdata_temp;
}
}
}
湿度转换子程序:
void read_RH(void)
{
RH();
TE_RH[0]=(RH_data_H*256+RH_data_L)/100+'0';
TE_RH[1]=(RH_data_H*256+RH_data_L)%100/10+'0';
TE_RH[2]='.';
TE_RH[3]=(RH_data_H*256+RH_data_L)%100%10+'0';
}
温湿度转换子程序:
void read_TE_RH(void)
{
uchar Temper_shi_ge;
read_RH();
set_Temper_chu();
if((T_data_H&0x8f)!=0x00) //负温度
{
T_data_H=T_data_H&0x7f;
TEMPER[0]='-';
TEMPER[1]=(T_data_H*256+T_data_L)/100+'0';
TEMPER[2]=(T_data_H*256+T_data_L)%100/10+'0';
TEMPER[3]='.';
TEMPER[4]=(T_data_H*256+T_data_L)%100%10+'0';
Temper_shi_ge=(T_data_H*256+T_data_L)/100*10 +
(T_data_H*256+T_data_L)%100/10;
Temper_reg[1]=Temper_chu/10+'0';
Temper_reg[2]=Temper_chu%10+'0';
}
else
{
TEMPER[0]=(T_data_H*256+T_data_L)/100+'0';
TEMPER[1]=(T_data_H*256+T_data_L)%100/10+'0';
TEMPER[2]='.';
TEMPER[3]=(T_data_H*256+T_data_L)%100%10+'0';
Temper_shi_ge=(T_data_H*256+T_data_L)/100*10+
(T_data_H*256+T_data_L)%100/10;
Temper_reg[0]=Temper_chu/10+'0';
Temper_reg[1]=Temper_chu%10+'0';
}
if(Temper_shi_ge > Temper_chu)
{
beep=0;
delayms(10);
}
else
{
beep=1;
}
}
4.3 DS1302工作原理
DS1302的控制字如表4.2所示:
控制字的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入到DS1302中。
位6:如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1(A4~A0):指示操作单元的地址;位0(最低有效位):如为0,表示要进行写操作,为1表示进行读操作。
控制字总是从最低位开始输出。
在控制字指令输入后的下一个 SCLK时钟的上升沿时,数据被写
入 DS1302,数据输入从最低位(0位)开始。
同样,在紧跟8位的控制字指令后的下一个 SCLK脉冲的下降沿,读出 DS1302的数据,读出的数据也是从最低位到最高位。
DS1302的时序:
图4.6 单个字节读
图4.7 单个字节写
如以上图4.6和图4.7所示:
CE 输入驱动高启动所有的数据传输。
CE 输入有两个功能。
首先,CE 打开控制逻辑,允许访问的移位寄存器的地址/命令序列。
其次,CE 提供了一个终止单字节或多字节数据传输方法。
一个时钟周期是由一个下降沿之后的上升沿序列。
对于数据传输而言,数据必须在有效的时钟的上升沿输入,在时钟的
下降沿输出。
如果CE 为低,所有的I/ O 引脚变为高阻抗状态,数据传输终止。
对于数据输入:
开始的8 个SCLK 周期,输入写命令字节,数据字节在后8 个SCLK 周期的上升沿输入。
数据输入位0 开始。
对于数据输出:
开始的8 个SCLK 周期,输入一个读命令字节,数据字节在后8 个SCLK 周期的下降沿输出。
注意,第一个数据字节的第一个下降沿发生后,命令字的最后一位被写入,命令字节的最后一位被写入。
当CE 仍为高时。
如果还有额外的SCLK 周期,DS1302 将重新发送数据字节,这使DS1302 具有连续突发读取的能力。
DS1302的写字节子程序:
void DS1302WriteByte(uchar dat)
{
uchar i;
SCLK=0;
delayus(2);
for(i=0;i<8;i++)
{
SDA=dat&0x01;
delayus(2);
SCLK=1;
delayus(2);
SCLK=0;
dat>>=1;
}
}
DS1302的读字节子程序:uchar DS1302ReadByte()
{
uchar i,dat;
delayus(2);
for(i=0;i<8;i++)
{
dat>>=1;
if(SDA==1)
dat|=0x80;
SCLK=1;
delayus(2);
SCLK=0;
delayus(2);
}
return dat;
}
DS1302的读数据子程序:uchar DS1302Read(uchar cmd) {
uchar dat;
RST=0;
SCLK=0;
RST=1;
DS1302WriteByte(cmd);
dat=DS1302ReadByte();
SCLK=1;
RST=0;
return dat;
}
DS1302的写数据子程序:
void DS1302Write(uchar cmd, uchar dat)
{
RST=0;
SCLK=0;
RST=1;
DS1302WriteByte(cmd);
DS1302WriteByte(dat);
SCLK=1;
RST=0;
}
4.4 AT24C02工作原理
AT24C02的使用方法:
时钟及数据传输:SDA引脚通常被外围器件拉高。
SDA引脚的数据应在 SCL 为低时变化;当数据在SCL 为高时变化,将视为下文所述的一个起始或停止命令。
起始命令:当 SCL 为高,SDA由高到低的变化被视为起始命令,必须以起始命令作为任何一次读/写操作命令的开始。
停止命令:当 SCL为高,SDA 由低到高的变化被视为停止命令,在一个读操作后,停止命令会使 EEPROM 进入等待态低功耗模式。
应答:所有的地址和数据字节都是以 8 位为一组串行输入和输出的。
每收到一组 8 位的数据后,EEPROM都会在第9 个时钟周期时返回应答信号。
每当。