《基于AT89S52单片机的温湿度检测仪-毕业设计(46页).doc》由会员分享,可在线阅读,更多相关《基于AT89S52单片机的温湿度检测仪-毕业设计(46页).doc(46页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-基于AT89S52单片机的温湿度检测仪-毕业设计-第 41 页基于AT89S52单片机的温湿度检测仪摘 要随着社会的发展,人们对环境中的温度和湿度的要求也越来越高,尤其是在医学、电子电力、航天航空、食品发酵等领域中对温湿度的要求尤其严格,鉴于如此设计出一个能够精确、稳定、实时测量出环境中温湿度的实用型温湿度检测仪显得尤为重要。本温湿度检测仪是以AT89S52单片机的为核心控制芯片,该单片机有很好的抗干扰能力、响应速度快。基于此单片机的温湿度检测仪可以实时、准确的测量环境中的温度和相对湿度。本检测仪的硬件部分的设计采用了0809A/D转换器以高灵敏度采集湿敏电阻阻值变化,在经过单片机处理得到相
2、应湿度; 单片机直接控制温度传感器DS18B20对温度实时采集和监控。本仪器还增加了报警装置,用户可根据需要设定温湿度上下限,若当前温湿度超限便会报警。接入独立键盘键盘实现人机交换功能,并用LCD12864作为显示设备的硬件设计方案。软件部分则采用模块化的方法将其分成几个部分,然后逐模块设计程序,用C语言来实现,使各部分结合起来协调工作,最终实现对环境中温湿度的实时检测。该温湿度检测仪能够基本完成的温湿度检测,但由于个人经验不足等因素,本设计还有一些不足之处,离产品实用还有一定的差距,还有一些方面需要进一步完善。关键词:AT89S52单片机,A/D转换器,传感器,LCD,温湿度MEASURIN
3、G INSTRUMENT FOR HUMIDITY BASEED ON AT89S52MICROCONTROLLERABSTRACT With the development of society, people on the environment of temperature and humidity requirements are also increasing, especially in the medical, electronic power, aerospace, food fermentation, such as temperature and humidity in t
4、he field of the harsh demands in particular, in view of such a design that Can be precise, stable, real-time measurement of temperature and humidity environment to the practical temperature and humidity detector it is particularly important. The temperature and humidity detector is AT89S52 as the co
5、re chip, the microcontroller has a very good anti-disturbance capacity, fast response. Based on this MCU temperature and humidity detector can be real-time, accurate measurement of environmental temperature and relative humidity. The detector part of the design of the hardware used to with AT89S52mi
6、crocontroller as the core of the control devices, with high sensitivity AD0809 colect humidity resistance change then through the MCU handle data acquisition components for humidity.AT89S52 direct control the DS18B20 obtain now temperature.The device add an alarm,it can set range.if temprature and h
7、umidity over limit it will alarming. Analog input keyboard to achieve human-computer interface exchange function and used as an LCD display hardware design. The software part is divided into several parts, and then each module design process, with C language to achieve, to combine the various parts
8、of coordination, and eventually realize the environmental temperature and humidity in the real-time detection. The temperature and humidity detector can basically complete the temperature and humidity testing, but because of personal factors such as lack of experience, the design of some deficiencie
9、s, there are certain practical products from the gap, there are some aspects need to be improved.KEYWORDS:AT89S52MCU,A/Dconversion, Sensor, LCD, Temperature and humidity目录前言1第1章 温湿度检测仪总体技术方案21.1 温湿度检测仪的主要性能指标及其工作原理21.1.1 性能指标21.1.2 温湿度检测仪的工作原理21.2 温湿度检测仪的硬件设计总体结构方案31.3 温湿度检测仪应用软件系统的设计方案31.4 温湿度检测仪AT
10、89S52单片机电路的设计51.5 温湿度检测仪的硬件电路设计71.5.1 温度检测电路71.5.2 湿度检测电路81.5.3 其它模块电路设计9第2章 温湿度检测仪的软件设计112.1 主程序模块设计112.2 温湿度检测模块程序设计122.2.1 温度检测模块程序设计122.2.2 湿度检测模块程序设计142.3 键盘扫描和LCD显示模块程序设计192.3.1 键盘扫描192.3.2 I2总线程序设计23结论27参考文献28致谢29附录30前言在日常实际生产生活中,科研、农业、暖通、纺织、机房、航空航天、电力等工业部门对产品质量的要求越来越高,对环境温、湿度的控制以及对工业材料的水分值的监
11、测与分析都已成为比较普遍的技术条件之一。随着科技的进步,检测仪表也向着智能化、小型化、低功耗的方向发展。在这个发展过程中,以单片机为核心控制器的温湿度检测以体积小、操作简单、性能稳定、测量精度高等诸多有点正逐步进入生产生活的各个方面。本文介绍的湿度检测仪就是以AT89S52单片机作为核心控制器设计的,它具有体积小、操作简单、性能稳定、测量精度高和抗干扰能力强等优点,可广泛应用于需要对温湿度进行测控的领域中。先根据实际生产生活的需要提出温湿度检测仪的设计功能要求,然后由这些具体要求和现有的设计条件设计出了适合的硬件原理图,尽量采用模块化的方法将其分成几个部分,然后分模块设计程序,最使各部分结合起
12、来协调工作,实现功能要求。它是以单片机的在控制方面的突出优势,并综合运用现代检测技术、微控制技术、数据处理和通信技术以及LCD显示技术而设计的数字温湿度检测系统,可以实时、准确的测量环境中的温度和相对湿度,对生产生活有较好的知道意义。论文的第一章介绍了温湿度检测仪的主要性能指标及其工作原理,主要介绍了温湿度检测仪的硬件设计总体方案和温湿度检测仪的应用软件系统的总体设计方案;第二章主要介绍了温湿度检测仪的硬件电路设计,重点介绍了温度检测电路、键盘LCD显示电路和湿度检测电路;第三章主要介绍了基于AT89S52单片机的湿度检测仪的软件设计,软件设计部分采用模块化设计,重点介绍了湿度检测模块程序设计
13、中键盘扫描、LCD显示。第1章 温湿度检测仪总体技术方案温湿度作为环境中的两项重要参数,在很多方面都起着重要的作用。本文中的基于AT89S52单片机的湿度检测仪就是针对这一需求而设计的。它综合运用了现代检测技术、数据处理和通信技术以及LCD显示技术,可以实时、准确、稳定的测量环境中的温度和相对湿度。在此设计过程中,本设计综合分析了不同用户在不同场合的不同需求,经研究之后,采用了AT89S52单片机为核心控制器件,A/D0809转换器以高灵敏度温度传感器和湿度传感器为数据获取元件的方案。该设计主要分为硬件设计和软件部分的设计,下面先总体介绍设计的性能指标和软硬件的总体设计方案。1.1 温湿度检测
14、仪的主要性能指标及其工作原理1.1.1 性能指标1. 相对湿度测量精度和范围: 5%,检测范围0100%;2. 温度测量精度: 1,检测范围0100;3. 温湿度上下限设定范围:20100,020;4. LCD实时显示;5. 电源:DC5V10%;6. 工作环境温度90 ,工作环境湿度90%;1.1.2 温湿度检测仪的工作原理加载有相应程序的AT89S52单片机定时采集温度传感器信号和相对湿度测量电路电压输出信号此电压由两位数码管显示出来,从而获得温度和相对湿度数据,分别将这些数据存储于数据存储器中,用户可根据需要设定温湿度上下限值,若单片机采集的数据超限便会报警。温湿度上下限显示和当前显示都
15、由LCD12864显示屏显示,可通过键盘电路来选择检测湿度或者检测温度。 1.2 温湿度检测仪的硬件设计总体结构方案该检测仪采用AT89S52单片机为核心,整个硬件系统分为以下几个部件,具体如图1-1所示:键盘扫描LCD显示报警装置湿度检测温度检测电源部分 A T89S51图1-1 硬件电路框图温度检测电路由传感器DS18B20和电阻构成,电阻接在电源和数据线之间,因为DS18B20是单总线温度传感器,数据线是漏极开路,如果DS18B20没接电源,则需要数据线强上拉,给DS18B20供电;如果DS18B20接有电源,则需要一个上拉即可稳定的工作,在经过单片机应用软件处理得到环境温度。湿度测量电
16、路由0809A/D转换器和湿敏电阻组成,湿敏电阻阻值随环境相对湿度的变化而变化,从而导致其两端电压的变化变化,由0809A/D把模拟量转换成数字量,单片经过软件处理后,获得相对电压值和湿度值。键盘输入电路与LCD显示电路实现人机对话的功能。ISP接口电路与PC机的联接,实现下载程序等通讯功能。1.3 温湿度检测仪应用软件系统的设计方案该仪表的系统程序设计采用模块化的程序设计方法,其结构见图1-2:主程序存储程序湿度检测LCD显示 键盘扫描温度检测湿度显示温度显示温度读取湿度转换图1-2 软件设计模块图检测仪的应用软件系统包括:主程序模块、温度检测模块、相对湿度检测模块、掉电存储模块,键盘和显示
17、模块等。主程序的内容包括:主程序的起始地址,中断服务程序的起始地址,有关内存单元及相关部件的初始化和一些子程序相互调用,主程序是整个程序的框架,决定了检测仪的工作性能。温度检测模块实现对湿度数据的存储 、显示。储、显示;相对湿度检测模块主要是完成测湿度电路所得电压与实际湿度的转换,和对湿度数据的存键盘、显示模块完成检测仪的检测数据的显示功能,反映出要检测的的数据。1.4 温湿度检测仪AT89S52单片机电路的设计At89S52 是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非 易失性存储器技术制造,与工业80C51 产品指令和引
18、脚完 全兼容。片上Flash允许程序存储器在系统可编程,亦适于 常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统 可编程Flash,使得AT89S52为众多嵌入式控制应用系统提 供高灵活、超有效的解决方案。 AT89S52具有以下标准功能: 8k字节Flash,256字节RAM, 32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口, 片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻 辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工 作。掉电保护
19、方式下,RAM内容被保存,振荡器被冻结, 单片机一切工作停止,直到下一个中断或硬件复位为止。8 位微控制器 8K 字节在系统可编程 Flash AT89S52 P0 口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻 辑电平。对P0端口写“1”时,引脚用作高阻抗输入。 当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下, P0不具有内部上拉电阻。 在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验 时,需要外部上拉电阻。 P1 口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动
20、4 个 TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入 口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。 此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2 的触发输入(P1.1/T2EX),具体如下表所示。 在flash编程和校验时,P1口接收低8位地址字节。 引脚号第二功能 P1.0 T2(定时器/计数器T2的外部计数输入),时钟输出 P1.1 T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制) P1.5 MOSI(在系统编程用) P1.6 MISO(在系统编程用)
21、P1.7 SCK(在系统编程用) P2 口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个 TTL 逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入 口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。 在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX DPTR) 时,P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部上拉发送1。在使用 8位地址(如MOVX RI)访问外部数据存储器时,P2口输出P2锁存器的内容。 在flash编程和校验时,P2口也接收高8位地址字节和一
22、些控制信号。 P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p3 输出缓冲器能驱动4 个 TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入 口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。 P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。 在flash编程和校验时,P3口也接收一些控制信号。 端口引脚 第二功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 INTO(外中断0) P3.3 INT1(外中断1) P3.4 TO(定时/计数器0) P3.5 T1(定时/
23、计数器1) P3.6 WR(外部数据存储器写选通) P3.7 RD(外部数据存储器读选通) 此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。 RST复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。 ALE/PROG当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。 对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。 如有必要,可通过对特
24、殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。 PSEN程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。 EA/VPP外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存E
25、A端状态。 如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。 FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。1.5 温湿度检测仪的硬件电路设计该温湿度检测仪的硬件系统由以下部分组成:温度测量电路、相对湿度度测量电路、键盘扫描电路、LCD显示电路、ISP下载电路,各部分设计如下。1.5.1 温度检测电路DS18B20数字温度计是DALLAS公司生产的1Wire,即单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。 1、DS18B20
26、产品的特点 (1)、只要求一个端口即可实现通信。 (2)、在DS18B20中的每个器件上都有独一无二的序列号。 (3)、实际应用中不需要外部任何元器件即可实现测温。 (4)、测量温度范围在55。C到125。C之间。 (5)、数字温度计的分辨率用户可以从9位到12位选择。 (6)、内部有温度上、下限告警设置。2、DS18B20的引脚介绍 引脚功能描述1 GND 地信号2 DQ 数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源。3VCC电源1.5.2 湿度检测电路湿敏电阻是利用湿敏材料吸收空气中的水分而导致本身电阻值发生变化这一原理而制成的。工业上流行的湿敏电阻主
27、要有半导体陶瓷湿敏元件,氯化锂湿敏电阻,有机高分子膜湿敏电阻主要参数湿敏电阻器的主要参数1)相对湿度:指在某一温度下,空气中所含水蒸气的实际密度与同一温度下饱和密度之比,通常用“RH”表示。例如20RH2)湿度温度系数(RH/):指在环境湿度恒定时,湿敏电阻器在温度每变化1时,其湿度指示的变化量。3)灵敏度:指湿敏电阻器检测湿度时的分辨率。4)测湿范围(RH):指湿敏电阻器的湿度测量范围。5)湿滞效应:指湿敏电阻器在吸湿和脱湿过程中电气参数表现的滞后现象。6)响应时间(s):指湿敏电阻器在湿度检测环境快速变化时,其电阻值的变化情况。(反应速度)。特性湿敏电阻器特性:是一种对环境湿度敏感的元件,
28、它的电阻值能随着环境的相对湿度变化而变化。应用湿敏电阻器的应用:广泛应用于洗衣机、空调器、录音机、微波炉等家用电器及工业、农业等方面作湿度检测和湿度控制用。1.5.3 其它模块电路设计键盘模块采用动态扫描的方式,键盘扫描电路控制温度和湿度界面的选择同时还能修改上下限的设定温度。本设计中采用两个数码管进行动态显示,用三极管C8550驱动来显示相对湿度的电压。带中文字库的图形液晶12864用来显示温湿度界面,由于单片机的I/O口有限,我采用了两片74HC573锁存器来扩大I/O口以便连接所有器件。具体电路如下图所示:128X64HZ 引脚说明引脚号引脚名称方向功能说明1VSS-模块的电源地2VDD
29、+5V模块的电源正端3V0-LCD驱动电压输入端4RS(CS)H/L并行的指令/数据选择信号;串行的片选信号5R/W(SID)H/L并行的读写选择信号;串行的数据口6E(CLK)H/L并行的使能信号;串行的同步时钟7DB0H/L数据08DB1H/L数据19DB2H/L数据210DB3H/L数据311DB4H/L数据412DB5H/L数据513DB6H/L数据614DB7H/L数据715PSBH/L并/串行接口选择:H-并行;L-串行16NC空脚17RESETH/L复位 低电平有效18NC空脚19LED_A(LED+5V)背光源正极20LED_K(LED-OV)背光源负极逻辑工作电压(VDD):
30、4.55.5V电源地(GND):0V工作温度(Ta):-10 60(常温) / -2070(宽温)三、接口时序模块有并行和串行两种连接方法(时序如下):8位并行连接时序图MPU写资料到模块MPU从模块读出资料2、串行连接时序图串行数据传送共分三个字节完成:第一字节:串口控制格式 11111ABC A为数据传送方向控制:H表示数据从LCD到MCU,L表示数据从MCU到LCDB为数据类型选择:H表示数据是显示数据,L表示数据是控制指令C固定为0第二字节:(并行)8位数据的高4位格式 DDDD0000第三字节:(并行)8位数据的低4位格式 0000DDDD串行接口时序参数:(测试条件:T=25 VD
31、D=4.5V)1、指令表1:(RE=0:基本指令集)指令指令码说明执行时间(540KHZ)RSRWDB7DB6DB5DB4DB3DB2DB1DB0清除显示0000000001将DDRAM填满“20H”,并且设定DDRAM的地址计数器(AC)到“00H”4.6ms地址归位000000001X设定DDRAM的地址计数器(AC)到“00H”,并且将游标移到开头原点位置;这个指令并不改变DDRAM的内容4.6ms进入点设定00000001I/DS指定在资料的读取与写入时,设定游标移动方向及指定显示的移位72us显示状态开/关0000001DCBD=1:整体显示ONC=1:游标ONB=1:游标位置ON7
32、2us游标或显示移位控制000001S/CR/LXX设定游标的移动与显示的移位控制位元;这个指令并不改变DDRAM的内容72us功能设定00001DLX0REXXDL=1 (必须设为1)RE=1: 扩充指令集动作RE=0: 基本指令集动作72us设定CGRAM地址0001AC5AC4AC3AC2AC1AC0设定CGRAM地址到地址计数器(AC)72us设定DDRAM地址001AC6AC5AC4AC3AC2AC1AC0设定DDRAM地址到地址计数器(AC)72us读取忙碌标志(BF)和地址01BFAC6AC5AC4AC3AC2AC1AC0读取忙碌标志(BF)可以确认内部动作是否完成,同时可以读出
33、地址计数器(AC)的值0us写资料到RAM10D7D6D5D4D3D2D1D0写入资料到内部的RAM(DDRAM/CGRAM/IRAM/GDRAM)72us读出RAM的值11D7D6D5D4D3D2D1D0从内部RAM读取资料(DDRAM/CGRAM/IRAM/GDRAM)72us指令表2:(RE=1:扩充指令集)指令指令码说明执行时间(540KHZ)RSRWDB7DB6DB5DB4DB3DB2DB1DB0待命模式0000000001将DDRAM填满“20H”,并且设定DDRAM的地址计数器(AC)到“00H”72us卷动地址或IRAM地址选择000000001SRSR=1:允许输入垂直卷动地
34、址SR=0:允许输入IRAM地址72us反白选择00000001R1R0选择4行中的任一行作反白显示,并可决定反白与否72us睡眠模式0000001SLXXSL=1:脱离睡眠模式SL=0:进入睡眠模式72us扩充功能设定000011X1REG0RE=1: 扩充指令集动作RE=0: 基本指令集动作G=1 :绘图显示ONG=0 :绘图显示OFF72us设定IRAM地址或卷动地址0001AC5AC4AC3AC2AC1AC0SR=1:AC5AC0为垂直卷动地址SR=0:AC3AC0为ICON IRAM地址72us设定绘图RAM地址001AC6AC5AC4AC3AC2AC1AC0设定CGRAM地址到地址
35、计数器(AC)72us74HC573八进制 3 态非反转透明锁存器 高性能硅门 CMOS 器件 SL74HC573 跟 LS/AL573 的管脚一样。器件的输入是和标准 CMOS 输出兼容 的;加上拉电阻,他们能和 LS/ALSTTL 输出兼容。当锁存使能端LE为高时,这些器件的锁存对于数据是透明的(也就是说输出同 步)。当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。u36755X出能直接接到 CMOS,NMOS 和 TTL 接口上 u25805X作电压范围:2.0V6.0V ,u20302X输入电流:1.0uA CMOS 器件的高噪声抵抗特性 OE1 20 Vcc 1D 2 19
36、1Q 2D 3 18 2Q 3D 4 17 3Q 4D 5 16 4Q 5D 6 15 5Q 6D 7 14 6Q 7D 8 13 7Q 8D 9 12 8Q GND 10 11 LE 1脚三态允许控制端低电平有效 1D8D为数据输入端 1Q8Q为数据输出端 74HC573引脚图 LE为锁存控制端另外本产品还增加了掉电存储功能和报警装置,掉电存储就是用户在重新启机时或断电的情况下温度上下限设定的值会被保存用户不必再重新修改,若当前温湿度超过了用户设定的上下限值报警装置会自动报警。掉电存储芯片我采用了AT24C01,报警装置选用三极管驱动蜂鸣器报警,具体电路如下图所示:AT24C02支持IC,总
37、线数据传送协议IC,总线协议规定任何将数据传送到总线的器件作为发送器。任何从总线接收数据的器件为接收器。数据传送是由产生串行时钟和所有起始停止信号的主器件控制的。主器件和从器件都可以作为发送器或接收器,但由主器件控制传送数据(发送或接收)的模式,通过器件地址输入端A0、A1和A2可以实现将最多8个AT24C02器件连接到总线上。 表2 管脚描述 管脚名称 功能 A0 A1 A2 器件地址选择 SDA 串行数据/地址 SCL 串行时钟 WP 写保护 Vcc +1.8V 6.0V 工作电压 Vss 地 SCL 串行时钟 AT24C02串行时钟输入管脚用于产生器件所有数据发送或接收的时钟,这是一个输
38、入管脚。 SDA 串行数据/地址 AT24C02 双向串行数据/地址管脚用于器件所有数据的发送或接收,SDA 是一个开漏输出管脚,可与其它开漏输出或集电极开路输出进行线或(wire-OR)。 A0、A1、A2 器件地址输入端 这些输入脚用于多个器件级联时设置器件地址,当这些脚悬空时默认值为0。当使用AT24C02 时最大可级联8个器件。如果只有一个AT24C02被总线寻址,这三个地址输入脚(A0、A1、A2 )可悬空或连接到Vss,如果只有一个AT24C02被总线寻址这三个地址输入脚(A0、A1、A2 )必须连接到Vss。 WP 写保护 如果WP管脚连接到Vcc,所有的内容都被写保护只能读。当
39、WP管脚连接到Vss 或悬空允许器件进行正常的读/写操作第2章 温湿度检测仪的软件设计2.1 主程序模块设计主程序是控制和管理的核心,主要完成在系统上电后进行定时和中断图3-1 主程序流程图处理操作的初始化。它的内容包括主程序的起始地址,中断服务程序的起始地址,有关内存单元及相关部件的初始化和一些子程序调用等等。主程序设计框图如上图3-1。主程序初始化的具体内容包括:时间中断的初始化、外部中断源的初始化、单片机I/O口初始化、RAM初始化、LCD初始化、对各个子程序的调用,然后对温度和湿度进行检测并将结果显示在LCD上。初始化对单片机的工作非常重要,因为单片机经过复位以后一些状态字,寄存器的初
40、值可能是随机分配的值也可能是全置0或置1,程序在运行过程中,程序状态字起着重要的作用,为了不影响程序的正常运行初始化是十分必要的。2.2 温湿度检测模块程序设计2.2.1 温度检测模块程序设计1. 程序设计方案开始始初始化DS18B20,LCD读DS18B20序列号DS18B20是否存在 发送跳过RAM指令温度转换LCD显示NO2. 部分源程序如下: void init_lcd() write_zl(0x38);/开显示 write_zl(0x01);/清屏 write_zl(0x06);/整屏不移动 write_zl(0x0C);/不开光标void init_18b20() DQ=1; de
41、lay(8);/延时 DQ=0; delay(80); DQ=1; delay(20);void write_dat(uchar dat) uchar i,k; k=dat; for(i=0;i=1;delay(4);int read_sj()uchar j,date;for(j=0;j1; DQ=1; if(DQ=1) / date|=0x80; delay(4); return(date); void temperaturechange() uint tempH,tempL; init_18b20(); write_dat(0xcc);/只对一个操作就跳过读序列号操作 write_dat(
42、0x44); /启动温度转换 delay(60000); delay(33750);/需要93.75ms init_18b20(); write_dat(0xcc); write_dat(0xbe);/读温度寄存器 tempL=read_sj();/读取温度低位LSB tempH=read_sj();/读取温度高位MSB if(tempH&0x80)/高5位是1为负数 a=1; tem=tempH; tem0) write_zl(0x80+0x40+3); write_sj(-); write_zl(0x80+0x40+4); write_sj(0x30+shi);elsewrite_zl(0x80+0x40+3); write_sj(0x00);write_zl(0x80+0x40+4); write_sj(-);else if(bai0) /若bai显示shi肯定显示 write_zl(0x80+0x40+3); writ