《基于51单片机的温湿度报警器(共38页).docx》由会员分享,可在线阅读,更多相关《基于51单片机的温湿度报警器(共38页).docx(38页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上引 言网络通信技术的发展,使监控系统广泛应用于工农业生产等领域,因此,粮情检测技术粮情检测属监控系统范畴,近年来,由于计算机技术、超大规模集成电路技术和的研究在软、硬件等方面都有了一定的进展。早期粮情监测主要采用温度计测量法,它是将温度计放入特制的插杆中,根据经验插在粮堆的多个测温点,管理人员定期拔出读数,确定粮温的高、低,决定是否倒粮。这种方法对储粮有一定的作用,但由于温度计精度、人工读数的人为因素等原因,温度检测不仅速度慢,而且精度低,抽样不彻底,局部粮温过高不易被及时发现,导致因局部粮食发霉变质引起大面积坏粮的情况时有发生。随着科技的发展,从 1978 年开始,
2、采用电阻式温度传感器、采样器、模数转换器、报警器等组成的储粮监测系统出现,它可对各粮库的各个测温点进行巡回检测,检测速度、精度大大提高,降低了劳动强度,但由于电阻传感器的灵敏度低,致检测精度、系统可靠性还不够理想。至 1990 年,粮情检测系统有了很大的改善和提高,系统在布线上采用矩阵式布线技术,简化了数据采集部分的线路,在传感器方面应用了半导体、热电偶等器件;在线路传输上采用了串行传输方式,从而减少了传输线根数;采用单板机进行数据处理,并采用各种手段提高数据传输及检测速度,通过软硬件技术的结合,检测精度和可靠性较前有很大提高。但温度传感器的线性度差,系统的检测精度仍不理想,无法大面积推广。近
3、年来,随着单片机功能的日益强大和计算机的广泛应用,粮情检测的准确性、稳定性要求越来越高。寻找最佳配置和最好的性价比成为粮情监测研究的热点国外在粮情监控技术上已达到了很成熟的地步,高科技数字式传感器广泛应用于粮情检测系统。这种传感器采用了半导体集成电路与微控制器最新技术,在一个管芯上集成了半导体温度检测芯片、数据信号转换芯片、计算机接口芯片,转换、温度补偿等功能。由于数字温度传感器直接传出数字量,从而解决了温度信号长距离传输问题及传输过程中因干扰和衰减而导致的精度降低等问题。目前,国内出现了丰富的数字传感器配套产品,如远程控制模块、中继器、接插器、分线器等,技术也比较成熟。数字传感技术、通信技术
4、、计算机成为当今信息技术的的三大基础,计算机监控技术已成人们关注的热点。1 项目说明防潮、防霉、防腐、防爆是粮库日常工作的重要内容,是衡量粮库管理质量的重要指标。它直接影响到储备物资的寿命和工作可靠性。为保证日常工作的顺利进行,首要问题是加强仓库内温度的监测工作,因为温度的升高,就意味着粮库内的有氧呼吸的加强,就意味着马上就要发生腐烂霉变。因此我们需要一种造价低廉、使用方便且测量准确的温度测量仪。1.1 设计目标设计一个基于51单片机的温度湿度报警器,实现运行参数设置和显示功能,通过485总线方式和上位机通信。设计要求:(1)掌握温度报警器的工作原理和设计方法;(2)掌握51系列单片机编程;(
5、3)掌握485总线通信机理;(4)学会Protell99SE画图工具;1.2研究内容和研究方法(1)根据系统功能要求并且考虑系统的实用性和可操作性,进行系统的整体方案设计。该方案采用模块化设计方法,以方便系统调试和用户的使用。(2)系统硬件设计。主要内容包括芯片的选择、芯片的功能介绍、芯片外围电路的设计等。(3)系统软件设计。主要包括系统主程序,记数程序,采样子程序,读显示子程序,写显示RAM子程序,报警子程序。本设计以实用为出发点,力求设计原理简单,开发成本低,易于实现。器件选择上,也考虑到实际应用的具体情况。单片机控制可靠性高,温湿度传感器采集信号误差小,稳定度高,整个系统使用简单,经济,
6、有很强实用性。 1.3 方案选择1.3.1 单片机芯片的选择方案和论证方案一 采用MSP430F449芯片作为硬件核心,采用Flash ROM,内部具有4KB ROM 存储空间,能于1.8V-3.6V的超低压工作,适合手持设备。但是编程环境复杂,编程风格与MS-51相差很大。用MSP430编程较之MS-51繁琐,故不采用MSP430F449。方案二采用AT89C52,片内ROM全都采用Flash ROM;能在4V-5.5V电压工作;同时也与MCS-51系列单片机完全兼容。该芯片内部存储器为8KB ROM 存储空间,同样具有89C51的功能。由于其与MS-51完全兼容,故编程简单。AT89C52
7、的性能完全满足本设计对单片机的要求。所以选择采用AT89C52作为主控制系统。1.3.2显示模块的选择方案和论证方案一采用LED数码管动态扫描,LED数码管价格适中,对于显示数字最合适,但是显示字母不合适。而且采用动态扫描法与单片机连接时,占用的单片机时间多。所以不采用此种作为显示。方案二采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显得太浪费,且价格也相对较高,所以也不用此种作为显示。方案三采用LCD液晶显示屏,液晶显示屏的显示功能强大,可显示大量字母,图形,显示多样,清晰可见,但是价格一般,需要的接口线较少,所以在此设计中采用LCD液
8、晶显示屏作为显示。1.3.3 温湿度传感器的选择方案和论证方案一分别采用温度传感器和湿度传感器分开采集温度和湿度,这种设计需要用到两个传感器分别采集数据而且还需要用到A/D转换电路,实际连接电路比较麻烦。方案二 进而考虑到用温湿度继集成传感器,在单片机电路设计中,所以可以采用一只温湿度集成传感器SHT75,此传感器可以很容易直接读取被测温湿度值,内部进行转换,直接输出数字信号,可以满足设计要求。所以选择方案二。综上各方案所述,对此次作品的方案选定: 采用AT89C52作为主控制系统;SHT75作为温湿度传感器;LCD1602显示屏作为显示。2 系统的整体设计2.1系统的组成根据系统总体功能,将
9、其划分为以下几个功能模块:微处理器CPU、温湿度传感器、键盘、LCD显示,LED状态报警,蜂鸣器报警,整个系统的构成如图2.1所示。图2.1 整体系统构成2.2系统工作流程AT89C52单片机是整个系统的核心,他来接收温湿度信号并控制协调各个模块使其能正常工作。SHT75温湿度传感器采集温湿度信号,将信号直接送至单片机进行运算,得到合适的温湿度。显示部分由液晶芯片LCD1602配合单片机完成。报警部分由按键控制设置,配合显示部分来设置温湿度的报警阈值,实际温湿度超过阈值是有蜂鸣器和LED灯共同报警。单片机通过RS485总线方式与上位机进行通讯,并实时显示温湿度值。因89C52内含8KB的EEP
10、ROM,不需外扩展存储器,可使系统整体结构简单。2.3系统的功能介绍本系统可对温湿度值进行实时检测,测温范围可为-40+123.8,根据粮仓内实际温度变化情况,将测温范围设定为0-70。C。可测湿度测量范围是(0-100)%RH,这也足以满足对湿度的测量要求。所测温湿度值通过LCD1602显示芯片显示。整个系统测量精度高、稳定性好,性能上能够达到远距离测量温湿度的要求,适于安置在粮仓内进行检测。3系统的硬件设计本章从器件选择、性能特点、电路分析等方面对硬件系统进行了讨论。3.1 AT89C52单片机功能介绍3.11 芯片简介AT9C52是一个低电压,高性能CMOS8位单片机,片内含8k byt
11、es的可反复擦写的只读程序存储器(PEROM)和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,内置功能强大的微型计算机的AT89C52提供了高性价比的解决方案。主要性能参数如下。主要性能 与MCS-51单片机产品兼容 8K字节在系统可编程Flash存储器 1000次擦写周期 全静态操作:0Hz33Hz 三级加密程序存储器 32个可编程I/O口线 三个16位定时器/计数器 八个中断源 全双工UART串行通道 低功耗空闲和掉电模式 掉电后中断可唤醒 看门狗定时器 双
12、数据指针 掉电标识符 图3.1 AT89C52引脚图3.12 AT89C52各引脚在设计中的应用引脚图如图3.1 P0 口:P0 口是一组 8 位漏极开路型双向 IO 口,也即地址数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动 8 个 TTL 逻辑门电路,对端口 P0 写“l”时,可作为高阻抗输入端用。 在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低 8 位)和数据总线复用,在访问期间激活内部上拉电阻。 在 Flash 编程时,P0 口接收指令字节。而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。 本系统P0口用于与LCD1602进行数据传输。P1 口:P1 是
13、一个带内部上拉电阻的 8 位双向 IO 口,P1 的输出缓冲级可驱动(吸收或输出电流)4 个 TTL 逻辑门电路。对端口写“l”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。P2 口:P2 是一个带有内部上拉电阻的 8 位双向 IO 口,P2 的输出缓冲级可驱动(吸收或输出电流)4 个 TTL 逻辑门电路。对端口 P2 写“l”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。本系统P2口用于进行报警系统的信
14、号传输。P3 口:P3 口是一组带有内部上拉电阻的 8 位双向 IO 口。P3 口输出缓冲级可驱动(吸收或输出电流)4 个 TTL逻辑门电路。对 P3 口写入“l”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的 P3 口将用上拉电阻输出电流(IIL)。本系统P3口用于接收SHT75传感器的温湿度信号,P3.2和P3.3用于键盘输入的外部中断,P3.2用于INT0(外部中断0),P3.3用于INT1(外部中断1)。RST:复位输入。当振荡器工作时,RST 引脚出现两个机器周期以上高电平将使单片机复位。 ALEPROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出
15、脉冲用于锁存地址的低 8 位字节。一般情况下,ALE 仍以时钟振荡频率的 l6 输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个 ALE 脉冲。 对 Flash 存储器编程期间,该引脚还用于输入编程脉冲(PROG)。 如有必要,可通过对特殊功能寄存器(SFR)区中的 8EH 单元的 D0 位置位,可禁止 ALE 操作。该位置位后,只有一条 MOVX 和 MOVC 指令才能将 ALE 激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置 ALE 禁止位无效。 PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当 AT
16、89C52 由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次PSEN信号。 EAVPP:外部访问允许。欲使 CPU 仅访问外部程序存储器(地址为 0000HFFFFH),EA 端必须保持低电平(接地)。需注意的是:如果加密位 LB1 被编程,复位时内部会锁存 EA 端状态。 如 EA 端为高电平(接 Vcc 端),CPU 则执行内部程序存储器中的指令。 Flash 存储器编程时,该引脚加上+12V 的编程允许电源 Vpp,当然这必须是该器件是使用 12V 编程电压 Vpp。 XTAL1:振荡器反相放大器的及内部时钟发生
17、器的输入端。 XTAL2:振荡器反相放大器的输出端。3.13 时钟振荡器AT89C52中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器,振荡电路参见图3.2。图3.2 振荡电路3.2 温湿度采集系统 3.2.1 集成温湿度传感器的选择 SHT75(如图3.3)是盛世瑞恩温湿度传感器系列中插针型的传感器。传感器把传感元件和信号处理集成起来,输出全标定的数字信号。传感器采用专利的 CMOSens 技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电容性聚合体测湿敏
18、感元件、一个用能隙材料制成的测温元件,并在同一芯片上,与 14 位的 A/D 转换器以及串行接口电路实现无缝连接。因此,该产品具有品质卓越、超快响应、抗干扰能力强、极高的性价比等优点。每个传感器芯片都在极为精确的湿度腔室中进行标定,校准系数以程序形式储存在 OTP 内存中,在标定的过程中使用。传感器在检测信号的处理过程中要调用这些校准系数。两线制的串行接口与内部的电压调整,使外围系统集成变得快速而简单。微小的体积、极低的功耗,使SHT75 成为各类应用的首选。 图3.3 SHT75传感器 3.2.2 SHT75的性能特点 (如图3.4)图3.4 SHT75性能特点3.2.3 温湿度测量电路电源
19、引脚:SHT75 的供电电压为 2.4-5.5V, 建议供电电压为 3.3V。在电源引脚(VDD,GND)之间可增加一个 100nF的电容,用以去耦滤波。SHT75 的串行接口,在传感器信号的读取及电源损耗方面,都做了优化处理;传感器不能按照 I C 协议编址,但是,如果 I C 总线上没有挂接别的元件,传感器可以连接到 I C 总线上,但单片机必须按照传感器的协议工作。图3.5为典型应用电路连接。图3.5 电路连接图串行时钟输入(SCK): SCK 用于微处理器与 SHT75 之间的通讯同步。由于接口包含了完全静态逻辑,因而不存在最小 SCK 频率。 串行数据(DATA): DATA 三态门
20、用于数据的读取。DATA 在 SCK 时钟下降沿之后改变状态,并仅在 SCK 时钟上升沿有效。数据传输期间,在 SCK 时钟高电平时,DATA 必须保持稳定。为避免信号冲突,微处理器应驱动 DATA 在低电平。需要一个外部的上拉电阻(例如:10k)将信号提拉至高电平。上拉电阻通常已包含在微处理器的 I/O 电路中。3.2.4 输出转换为物理量相对湿度:为了补偿湿度传感器的非线性以获取准确数据,请参阅图 3.6,建议使用如下公式修正读数:RHlinear=c1+c2SORH+c3SORH2(%RH)图 3.6 相对湿度转换相对湿度对于温度依赖性的补偿:由于实际温度与测试参考温度25 (77)的显
21、著不同, 湿度信号需要温度补偿。温度校正粗略对应于0.12%RH/50%RH,温度补偿系数请参阅图3.7。RHtrue = (TC - 25)(t1 +t2 SORH)+RHlinear 图3.7 温度补偿系数温度:由能隙材料 PTAT (正比于绝对温度) 研发的温度传感器具有极好的线性。可用如下公式将数字输出转换为温度值,温度转换系数请阅图3.8:图3.8 温度转换系数露点:SHT75 不能直接测量露点,但可由温度和湿度值计算。SHT75 系列产品可以同时实现高质量的露点测量。对于温度范围为-40-50,如下的近似计算可得出高精度的露点值,系数请参阅图3.9:图3.9 露点系数3.3 显示电
22、路1602液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在各类仪表和低功耗系统中得到广泛的应用。1602液晶为16字X2行的字符型液晶。该液晶与数码管相比有如下优点:1.位数多,可显示32位,32个数码管体积相当庞大了。2.显示内容丰富,可显示所有数字和大、小写字母。3.程序简单,如果用数码管动态显示,会占用很多时间来刷新显示,而1602自动完成此功能。图3.10为字符型LCD的引脚定义图3.11为液晶与单片机接法图3.10 引脚定义图3.11 液晶与单片机接法1602液晶模块内部的字符发生存储器(CGROM)已经存储了不同的点阵字符图形,这些字符有,阿拉伯数字、英文字母的大
23、小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,其中数字与字母同ASCII码兼容。其内部还有自定义字符(CGRAM),可用于存储自已定义的字符。1602模块的设定,读写,与光标控制都是通过指令来完成,共有11条指令,如表3.1:表3.1:指令RSRWD7D6D5D4D3D2D1D01清屏00000000012光标返回000000001*3输入模式00000001I/DS4显示控制0000001DCB5光标/字符移位000001S/CR/L*6功能00001DLNF*7置字符发生器地址0001字符发生存贮器地址8置数据存贮器地址001显示数据存贮器地址9读忙标志和地址01BF计数器
24、地址10写数据到指令7.8所设地址10要写的数据11从指令7.8所设的地址读数据11读出的数据3.4 按键电路单片机应用系统中的按键或键盘都是以开关状态来设置控制功能或输入数据。为了方便设置温湿度报警阈值的修改,我一共涉及了5个按键。如图3.12当有按键按下时,信号变为低电平,系统做完与门运算后像单片机P3.2口输入低电平,这时系统执行外部中断。图3.12 按键电路3.5 超温报警本设计采用蜂鸣器报警方式,当采集到的温度经过修正后超过了系统设置的阈值时,则P3.0口输出低电平,U6是光耦,此处起电平匹配作用,3脚输入低电平,6脚即输出低电平,此时Q1即PNP三极管导通,蜂鸣器有电流流过即发声报
25、警。连接方式如图 3.13图3.13 蜂鸣器连接方式3.6 RS485远程通讯串口是一种接口标准,它规定了接口的电气标准,简单说只是物理层的一个标准。没有规定接口电缆以及使用的协议,所以只要我们使用的接口插件电缆符合串口标准就可以在实际中灵活使用,在串口接口标准上使用各种协议进行通讯及设备控制。RS-485总线,在要求通信距离为几十米到上千米时,广泛采用RS-485 串行总线。RS-485采用平衡发送和差分接收,因此具有抑制共模干扰的能力。加上总线收发器具有高灵敏度,能检测低至200mV的电压,故传输信号能在千米以外得到恢复。RS-485采用半双工工作方式,任何时候只能有一点处于发送状态,因此
26、,发送电路须由使能信号加以控制。RS485标准接口是单片机系统种常用的一种串行总线之一。与RS232C比较,其性能有许多改进,细节如图3.14所示图3.14 RS485改进 RS485接口可连接成半双工和全双工两种通信方式。常见的半双工通信芯片有MAX481、MAX483、MAX485、MAX487等,全双工通信芯片有MAX488、MAX489、MAX490、MAX491等。下面以MAX485为例来介绍RS485串行接口的应用。MAX485的封装有DIP、SO和uMAX三种,其中DIP封装的管脚如图3.15所示。图3.15 MAX封装管脚管脚的功能如下:RO:接收器输出端。若A比B大200mV
27、,RO为高;反之为低电平。RE:接收器输出使能端。RE为低时,RO有效;为高时,RO呈高阻状态。DE:驱动器输出使能端。若DE1,驱动器输出A和B有效;若DE0,则它们呈高阻态。若驱动器输出有效,器件作为线驱动器用,反之作为线接收器用。DI:驱动器输入端。DI0,有A0,B1;当DI1,则A1,B0。GND:接地。A:同相接收器输入和同相驱动器输出。B:反相接收器输入和反相驱动器输出。VCC:电源端,一般接+5V。MAX485典型的工作电路如图3.16所示,其中平衡电阻Rp通常取100300欧姆。MAX485的收发功能见图3.17。图3.16 MAX485典型工作电路图3.17 MAX收发功能
28、89C52与MAX485的接口电路如图3.18所示。P1.7用来控制MAX485的接收或发送,其余操作同串口 。图3.18 89C52与MAX485的接口电路 4系统整体硬件电路系统整体硬件电路包括,传感器数据采集电路,温度显示电路,上下限报警电路,按键电路,单片机主板电路,LED状态电路等,如图4.1 所示。图4.1中有五个独立式按键可以分别调整温度计的上下限报警设置,并且切换显示。图中蜂鸣器可以在被测温度不在上下限范围内时,发出报警鸣叫声音,同时LED灯闪烁。显示电路的液晶是使用的并行传输,这种显示最大的优点就是传输速度快,而且液晶显示比较清晰。系统还配置了利用RS485总线方式与上位机通
29、讯的功能,上位机能够实时获得系统所收集的温湿度信息并实时显示。图4.1 系统整体硬件电路5 系统软件算法分析系统程序主要包括主程序,读出温湿度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。5.1 主程序主程序的主要功能是负责温湿度的实时显示、读出并处理SHT75的测量的当前温湿度值,温湿度测量每1s进行一次。这样可以在一秒之内测量一次被测温湿度,其程序流程见图5.1所示。图5.1 主程序流程图部分源程序:#include /AT89C52单片机头文件#include #include /SHT75操作头文件#include /LCD1602操作头文件#include /51
30、中断初始化头文件/-/宏定义#define HI0x01#define LOW0x00#define Y0XFF#define N0X00#define TEMP_FLG0X01#define HUMI_FLG0X02#define DEW_FLG0X03#define NON_FLG0X04/定义按键接口-#define SET(P1&(12)/p1.2,设置(切换)#define TEN(P1&(13) /P1.3,10#define ADD(P1&(14) /P1.4,增加#define DEC(P1&(15) /P1.5,减少#define OK(P1&(16) /P1.6,确认退出/
31、变量定义-signed int TEMP_value=0;/温度值signed int HUMI_value=0;/湿度值signed int DEW_value=0;/露点值signed int temp_alarm_value=90; /预置温度上限报警值,大于此值报警,可通过键盘调节signed int humi_alarm_value=90;/预置湿度上限报警值,大于此值报警,可通过键盘调节signed int dew_alarm_value=90;/预置露点上限报警值,大于此值报警,可通过键盘调节unsigned char setting_model=N;/是否进入设定状态的标志变量
32、unsigned char setting_item_num=0;/设置内容序号,0-无,1-temp,2-humi,unsigned char setting_item=NON_FLG;/标记设定项目的变量unsigned char times=1;/增减倍率/定义输出信号接口sbit buzzer_alarm=P30;/蜂鸣器sbit working_led=P33; /系统工作指示灯sbit setting_led=P34;/设置状态指示灯sbit ten_led=P35;/10状态指示sbit temp_alarm_led=P36; /温度超限报警指示灯sbit humi_alarm_
33、led=P37; /湿度超限报警指示灯sbit dew_alarm_led=P17; /露点超限报警指示灯unsigned int loop1_roll=0;/控制滚动显示速度unsigned int loop2_led=0;/控制状态指示灯闪烁快慢5.2 读出温湿度子程序读出温湿度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温湿度数据的改写。其程序流程图如图5.2示部分源程序:/函数名:display_temp()/功能:输出显示温度及限值信息/-void display_temp()display_from(1); /设置显示起始位置,第一行lcd_p
34、rintchar(Temperature: );/输出字符display_from(18); /设置显示起始位置,第二行display_full_num(TEMP_value);/输出温度数值lcd_printchar(/);display_full_num(temp_alarm_value);/输出设定的温度报警限值lcd_printchar( );lcd_wdata(0xdf); /lcd_wdata(0x43); /Clcd_printchar( );/-/函数名:display_humi()/功能:输出显示湿度及限值信息/-void display_humi()display_from
35、(1); /设置显示起始位置,第一行lcd_printchar(Humidity: );/输出字符display_from(18); /设置显示起始位置,第二行display_full_num(HUMI_value);/输出湿度数值lcd_printchar(/);display_full_num(humi_alarm_value);/输出设定的湿度报警数值lcd_printchar( % );/-/函数名:display_dew()/功能:输出显示露点及限值信息/-void display_dew()display_from(1); /设置显示起始位置,第一行lcd_printchar(De
36、w Point: );/输出字符display_from(18); /设置显示起始位置,第二行display_full_num(DEW_value);/输出露点数值lcd_printchar(/);display_full_num(dew_alarm_value);/输出设定的露点报警数值lcd_printchar( );lcd_wdata(0xdf); /lcd_wdata(0x43); /Clcd_printchar( );图5.2 读温湿度流程图5.3 温湿度转换命令子程序温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程
37、序延时法等待转换的完成。温度转换命令子程序流程图如图5.3所示图5.3 温湿度转换流程图5.4 LED状态子程序系统设置了5个LED状态灯,分别用作工作指示、设置状态指示、x10状态指示、温度过超限报警指示、湿度超限报警指示和露点超限报警指示。void led_control()/工作指示working_led=0;/设置状态指示if(setting_model=Y) if(loop2_led=temp_alarm_value) if(loop2_led=humi_alarm_value) if(loop2_led=dew_alarm_value) if(loop2_led=2)/使LED闪烁
38、dew_alarm_led=0;else dew_alarm_led=1;else dew_alarm_led=1;/发声报警if(temp_alarm_led=0)|(humi_alarm_led=0)|(dew_alarm_led=0) if(loop2_led=1) /使LED闪烁buzzer_alarm=0;else buzzer_alarm=1;else buzzer_alarm=1;5.5 显示数据刷新子程序显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高显示位为0时将符号显示位移入下一位。程序流程图如图5.5。图5.5 显示刷新流程图void main() i
39、nt_ini(); /外部中断初始化lcd_init(); /lcd初始化init_uart(); /串口初始化while(1) sht75_sample(); /采集一次温度湿度数据,并更新现有数据display_1602();/输出显示数据 led_control();/监控温湿度数据,并及时输出报警等信息 loops(); 6 实际仿真截图6.1 SHT75传感器仿真截图如图6.1中,显示的为SHT75运行时的状态,当前检测到的温度为20,湿度为27%。图6.1 SHT75运行时的状态6.2 LCD1602液晶屏仿真截图下图中显示的为LCD1602运行时的状态,图6.2中显示的是当前检测到的温度为20。图6.2 当前检测的温度图6.3中显示的为当前检测到的湿度为27%图6.3 当前检测的湿度图6.4显示的为当前检测到的露点为图6.4 当前检测的露点6.3 设置温湿度报警阈值界面仿真截图图6.5为设置温度阈值界面,当前阈值为90度,通过按键可更改为任意值。图6.5 当前温度阈值图6.6为更改阈值到80度。图6.6 更改后的阈值图6.7为设置湿度阈值界面,当前阈值为60%,通过按键可更改为任意值。 图6.7 当前湿度阈值图6.8为更改阈值到40%。图6.8 更改后的阈值图6.9为设置露点阈值界面,当前阈值为50。图6.9 当前露点阈值