【《基于单片机的温度检测和报警装置设计》12000字(论文)】_第1页
【《基于单片机的温度检测和报警装置设计》12000字(论文)】_第2页
【《基于单片机的温度检测和报警装置设计》12000字(论文)】_第3页
【《基于单片机的温度检测和报警装置设计》12000字(论文)】_第4页
【《基于单片机的温度检测和报警装置设计》12000字(论文)】_第5页
已阅读5页,还剩36页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGE51基于单片机的温度检测和报警装置设计摘要近年来,主要在收集设备广泛分布的情况下使用数据收集系统。本设计主要由AT89C51单片机,温度检测电路,温度检测电路,显示,报警电路等控制系统组成。当收集的数据值超过阈值时,使用传感器测量库中各处的温度,实时收集和显示温度设置,闹钟和其他任务,以实现温度监控功能,蜂鸣器警告并点亮以提醒用户安全的。关键词:数据采集;温度;蜂鸣器目录TOC\o"1-3"\h\z\u25459摘要 1303411绪论 4197691.1课题研究的背景 4322651.2课题研究的意义 4212521.3课题研究的主要内容 5192602系统总体方案设计 5135112.1功能要求 567862.2设计思路 5305752.3方案选择 558242.4总体设计框图 7136213系统硬件设计 8185733.1概述 8221573.2最小系统 8224963.3温度控制电路设计 1019533.4液晶显示电路设计 32317733.5报警电路设计 35303643.6上下位机通信电路设计 3655614系统软件设计 3823794.11602液晶显示模块设计 3914804.2温度测量模块设计 40278794.3上下位机通信连接设计 41151565系统分析与调试 44145935.1分步调试 44272455.2统一调试 441绪论1.1课题研究的背景随着社会科学的进步,我国的温室温度监测系统经历了从零到简单到复杂的过程,其质量也越来越高。但是,我国许多地区的温度调节都是使用非常传统的开关。为此,该方法既费时又费时,效率低,精度低,随机性大且非常不科学。因此,有必要设计一种结构简单,温度检测成本低的监测系统。温度监控是当今社会许多行业的重要工作目标之一,并且温度传感器技术的发展也取得了飞跃,尤其是在环境温度测量中使用最广泛的情况下。如今,国内外使用了多种温度元件,使用范围也越来越广。随着单芯片和大规模集成电路的不断改进,温度传感器已广泛应用于汽车,食品中。制冷,农业,畜牧业等领域。现在用于温度研究,正在智能,小型化和低功耗领域开发温度检测系统。在开发过程中,以单片机为核心的温度控制系统变得越来越小,操作简单,范围宽,性能稳定,测量精度高等许多优点在生活的各个方面都起着重要作用。1.2课题研究的意义现代工业控制和智能仪器对多温度控制和恒温有更高的要求,例如食品管理,恒定冰箱温度控制和工厂锅炉温度设置。现在,越来越多的地方使用了多点温度测量。例如,冰箱的清洁剂包含层和冷冻层处于不同的温度。这需要多点测量和显示,以便用户可以直观地看到温度值。并根据需要调整冰箱温度。即使是人们的客厅,也经常需要根据实际需要设置大气温度并控制实际温度。似乎温度测量在确保产品质量,提高生产效率,节约能源,安全生产以及发展国民经济方面发挥了重要作用。因此,温度检测的研究具有重要的理论意义和推广价值。咨询相关文献,进行图书馆整体布局的实地研究和研究,深入分析图书馆中许多地方的温度,了解国内外情况,并确定研究的主要方向和方向主题设计的内容。分析基本电路的原理和工作过程,例如湿度检测方案,显示电路,报警电路,并以C8951单片机为主要控制系统,确定总体系统设计方案。根据软件管理系统的自动控制过程,编写了多点温度监控系统的控制程序,实现了多种仿真和调试仿真。1.3课题研究的主要内容这里主要设计AT89C51单片机,温度检测电路,温度检测电路,显示电路,报警电路等控制系统。利用传感器到处测量温度,实时采集并显示温度设置,闹钟等任务,实现温度监控功能,当采集的数据值超过阈值时,蜂鸣器会报警并闪烁一眼就会提醒你。2系统总体方案设计2.1功能要求温度采集节点意味着在本地定位散布的采集点的采集温度值并将其发送到监视子系统。顶级计算机程序在Windows环境中使用vb开发。用户可以通过vb查看相关的收集点温度信息,也可以通过Windows发送相关的指令以控制来自底部计算机的反馈。2.2设计思路分布式数据挖掘系统的集成购买单元包括一个单核控制模块,一个通信模块,一个驱动模块,一个LCD显示模块和一个温度采集模块。底层捕获节点使用主控制单片机作为控制处理中心,通过温度吸收模块和外部LCD显示模块收集并处理温度信息,以显示特定的温度。当收集的数据的值超过限制信号时,该信号将成为信号。设备发出警告并闪烁以提醒。2.3方案选择2.3.1传感器选择方案解决方案1:带DHT11的温度检测模块是一种高质量,高质量和高效的温度复合传感器。体积小,功耗低,操作简便,方便用户。四针安装,完全可更换。长期稳定,抗干扰能力强。测量范围:湿度20-90%RH,温度0-50℃;测量精度:湿度±5%RH,温度±2。选项2:用于温度检测模块的DS18B20。DS18B20产生的是数字信号。它具有很强的可塑性,其形状可以根据不同情况而变化;它具有广泛的应用范围,可用于各种领域。精度高,成本低,体积小。根据以上分析,第二个选项非常准确,但有点复杂。方案一可能无法实现电路的两次高精度测量,但通常可以满足设计要求。操作简单,抗干扰性强,效果好。请选择选项二。2.3.2显示器选择方案HJ1602是具有16针的工业字符LCD。通过编程总共有11条控制命令,1个高电平,0个低电平以及读/写,显示和其他液晶操作。HJ1602可以显示32个字符,这些字符可以通过两种方式显示,效果简单明了。购买价格低廉,性价比高。选项2:使用12864LCD屏幕。12864屏幕可以显示各种功能,包括数字,图形,汉字和符号。汉字是8*4字符串16*16点矩阵,而符号是12816*8点ASCII集。12864与其他屏幕监视器相比,它具有程序简单,易于操作,购买价格低,电压低和功耗低的优点,并且具有两种通讯方式:串行和并行。您可以选择一个。工作温度0℃-55℃,储存温度-20℃-+60℃,抗干扰能力强。内置的DC-DC转换方案不需要外部负压,因此非常流行并且具有广泛的应用。简介:两种显示器在编程复杂度和原理上都相似。12864比1602更完美,字符更多,图像更具体,价格更高,而便宜的价格超过40元。1602比12864稍微差一点,但它可以基本满足要求,并且购买价格低,仅为4元。因此,考虑到所有方面,最终选择了1602屏幕保护程序。2.3.3单片机主芯片选择方案ATMELAT89C51由高性能的8位CMOS微控制器制造,该设备是内置于中央处理器8中的通用芯片,与易失性存储技术(CPU)和闪存设备兼容制造,功能强大。4K芯片上的内存是闪存技术。这种类型的微控制器需要很少的设备处理,并显着减少了时间。为微控制器编写的程序也可以加密以保护我们的员工。此外,AT89C51的当前价格低于8031,市场供应充足。AT89C51构建了一个MCU最小程序,可以减小系统尺寸,提高系统可靠性并降低系统成本。由于程序小于4K,因此为客户提供了四个I/O端口。可以用5V编程,取消时间仅为10秒。AT89C51芯片提供了三个级别的软件级别加密,并提供了可靠,简单,灵活且受信任的加密方法,以确保复制应用程序或系统。PO端口是三脚架双字符,通常称为传输端口。该端口可直接用于外部读取/写入操作。所以选择AT89C51。2.4总体设计框图下图显示了系统的总体设计,以确保根据要求并考虑到所有方面来实现其功能。从图中可以看出,采用了模块化设计方法来遵守工作的简单性和简化性原则。该系统分为微处理器模块,1602晶体原型字符,传感器模块DS18B20和警报模块。。AT89C51MCU是用于收集温度和湿度信息并执行其他功能的控制核心。并且系统的外围模块不使用并行端口连接模式,而是使用串行端口连接模式作为与微处理器模块的接口,这大大简化了系统。单片机单片机LCD显示模块温度采集模块报警模块PC图2-1系统设计框图

3系统硬件设计3.1概述该系统由1602个模块和AT89C51基本控制模块组成。其中,AT89C51是系统控制的关键部分,控制每个模块并强制每个模块协同工作以创建完整性。警报模块由蜂鸣器和LED灯组成。当温度超过上限和下限时,将发生警报。五个DS18B20传感器收集环境温度并将数据传输到单片机。1602LCD显示模块实时显示环境温度,从而便于温室控制和管理。3.2最小系统3.2.1电源设计功能特点:AT89C51是一款8位CMOS微控制器,具有高能效和低功耗。系统内存为8K。它完全符合80C51工业产品认证和针头标准。芯片上的闪存使系统中的应用成为可能,并且适合于传统的程序员。AT89C51非常灵活,可用于单个芯片上的多个管理器。极其高效的解决方案,具有如图3-1所示的智能8位处理器和可编程存储器,它提供AT89C51、8K字节的闪存,256字节的RAM,32位I/O线,时钟,时钟,秒箭头和三个16位计时器。/仪表结构在晶体时钟中的芯片上进行6级2时隙矢量数字全双工转换。此外,AT89S52可以按比例缩小至0Hz的操作逻辑,并支持通过选择模式可以保存的程序。在待机模式下,处理器停止工作并恢复RAM,计时器/计数器,串行端口和中断的操作。在登陆模式下,电源,RAM内容,数字振荡器冻结以及微控制器的所有操作都将暂停,直到下一次关闭或硬件关闭为止。主要产品功能:MCS518MB闪存微控制器,8km擦除和写入电路,完整的0Hz至33Hz,3级加密软件,I/O线,用于静态操作的32个可编程定时器Hr/hr8个暂停因子,全双工UART通道,低功耗和功率反转模式,关机后产生干扰信号图3-1AT89C51芯片引脚图链接说明:VCC:电源。端口P0:端口P0是具有8位漏极的开放I/O端口,每个引脚吸收8条TTL电源线。当P1端口引脚写为数字1时,确定它是高电平输入。P0可用于存储数据和外部应用程序。外部数据存储器可以设置为8个数据位。在FIASH中,端口P0用作源代码输入端口,并且FIILASH完成验证后,PIL输出原始代码。此时,有必要将P0调高。P1端口:P1端口是一个8位双端口I/O端口,具有连接电阻,而P1端口缓冲区可以接收和输出4个TTL网关。将1写入P1端口引脚时,它会在内部烧毁并可用作输入。当端口P1的外部低电平时,它释放电流。在程序记录和验证P1中,光被接收为地址8。P2端口:P2端口是一个8位双I/O端口,具有一个内部上拉电阻。P2端口缓冲区可以输入/输出四个TTL变压器。当在端口P2中写入“1”时,是通过强制上拉来实现的。进入之前。因此,在插入时,将针P2拔出并取下。这是由于天生的吸引力。当使用端口P2访问外部16位终端的外部或外部存储器时,端口P2显示最高的8位地址。给定地址“1”时,将使用内部分隔符。读取或写入外部8位外部存储器时,结果是特定功能列表的内容。在编程和认证期间,端口P2接收第八个地址和第一个控制信号。端口3:端口P3是一个双I/O端口,具有一个内置感应传感器,能够接收和提供四个TTL升级。当将“1”写入端口P3时,它会在内部烧录并用作输入。拉出卡舌后,退出P3(ILL)。3.2.2复位设计单片机的基本模块通过读取五个DS18B20传感器收集的信号来分析接收到的数据,并将处理后的信号传输到液体电子模块。填写收据并获取完整信息。通话提醒。如图3-2所示。图3-2复位电路3.3温度控制电路设计3.3.1传感器选择数字温度传感器DS18B20数字和温度是具有数字信号输出的温度/湿度传感器。为了确保高可靠性和可持续稳定性,我们使用了数字技术,采集技术以及温度和湿度探针技术。该传感器由连接到高性能8位微控制器的电阻式湿度传感器和一个NTC温度传感器组成。因此,该产品具有质量好,反应快,耐药性高,成本高的优点。每个DS18B20传感器均使用正确的温度矩阵按字符串分类。校准率作为程序存储在OTP存储器中,并在检测算法期间检测到。一个电缆接口使系统集成变得简单而容易。在大多数应用中,最节能的方式是最小的传输距离,最长可达20米。该产品具有一排包装4。可以根据需要轻松包装特殊包装。DS18B20传感器图如下图3-3所示:图3-3DS18B20传感器实物图DS18B20由四个主要组件组成。①64位光刻ROM数据存储器②电磁温度传感器③电子耗散的温度不稳定警报动作会触发TH和TL④不稳定的电子可擦除参数的寄存器如图3-3所示,该器件只有3个外部引脚,其中VDD和GND是电源引脚,而另一条DQ线用作I/O总线,因此被称为单条数据线。可以将多个DS18B20设备连接到每个干扰单个单片机的I/O端口。每个DS18B20都包含唯一的64位ROM代码。前八位数字是代表产品分类号的产品序列号;接下来的48位数字是唯一产品的序列号,它是一个15位代码,每个芯片的唯一代码可以通过地址来确定,在通信数据中。因此,可以将多个DS18B20连接到单行数据而不会造成混乱。这为测量多点温度带来了极大的便利。DS18B20传感器数据的内部存储器由9个字节组成。第一个和第二个字节是温度数据(MSB,LSB)。您可以在系统配置注册表中设置数据位数(9-12位)。数据位越大,温度分辨率越高,并且位过高。是温度数据。标记扩展位。第三和第四字节是温度上限和下限警报值(TH,TL)。第五个字节是系统配置寄存器。注册表位的定义如下:第八位用于将传感器设置为工作状态,“1”为测试状态,“0”为工作状态,出厂设置为工作状态,用户无法更改它;第七位和第六位是温度转换数据位参数(00、01、10、11分别对应于9、10、11和12个温度数据位),出厂设置为12个温度数据位,用户可以更改如所须。其余位不正确。第六,第七和第八个字节受到保护,不被使用。第9个字节是CRC校验码,它是前8个字节的循环校验码,用于检查通信期间数据传输的准确性。GNDGND存储器和控制逻辑温度传感器高温度触发器TH低温度触发器TL64位ROM和单线接口VDDVDDDQ供电方式检测便笺式存储器CRC发生器图3-3DS18B20的结构框图温度传感器转换的结果作为16位的两部分代码存储在符号类型的存储器中。第一个字节(字节0)存储温度测量结果的低位(LS字节),而第二个字节(字节1)存储测量结果。对于高温位(MS字节),S是字符位,其他位是数据位。当温度为负时,S=1;当温度为负时,S=1。当温度为正时,S=0。格式如下表所示:表3-1低位存放数据LSBytsBit0Bit1Bit2Bit3Bit4Bit5Bit6Bit7232221202-12-22-32-4表3-2高位存放数据MSBytsBit8Bit9Bit10Bit11Bit12Bit13Bit14Bit15SSSSS262524如果测得的温度值大于TH或小于TL引起温度信号,则DS18B20内部将设置一个警报标志位,指示温度测量值不在此范围内。DS18B20的温度转换位数可以从9到12位之间选择,并且相应的温度测量分辨率分别为0.5℃,0.25℃,0.125℃和0.062℃。但是,温度转换系数越高,转换时间越长。12位精度的最大转换时间为7.5亿。DS18B20的温度测量范围为-55〜+125。并且,温度转换结果以16位二进制单模模式输出。可以通过写入配置寄存器(字节4)来设置转换位数,格式如下:表3-3输出位数配置寄存器Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit00R1R011111指定值R1和R0与位数,分辨率和最大转换时间之间的关系如表3-1所示。可以看出,每当数字位数减少一位时,分辨率就会降低一年,转换时间也会增加一倍。该设备由默认的12位分辨率供电。表3-4配置寄存器设置R1R0分辨率℃最大转换时间ms有效位数000.593.759位(Bit11~Bit3)010.25187.5010位(Bit11~Bit2)100.125375.0011位(Bit11~Bit1)110.0625750.0012位(Bit11~Bit0)温度报警触发器和设置寄存器都由非易失性电可擦写存储器(EEPROM)组成,设置值通过相应命令写入,一旦写入后不会因为掉电而丢失。2.DS18B20的测温原理DS18B20的温度传感器是通过温度对振荡器的频率影响来测量温度,如图3-4所示。DS18B20内部有两个不同温度系数的振荡器。低温系数振荡器输出的时钟脉冲信号通过由高温系数振荡器产生的门开通周期而被计数,通过该计数值来测量温度。计数器被预置为与-55℃对应的一个基数值,如果计数器在高温系数振荡器输出的门周期结束前计数到零,表示测量的温度高于-55℃,被预置在-55℃的温度寄存器的值就增加一个增量,同时为了补偿和修正温度振荡器的非线性,计数器被斜率累加器所决定的值进行预置,时钟再次使计数器计数直至零,如果开门通时间仍未结束,那么重复此过程,直到高温度系数振荡器的门周期结束为止。这时温度寄存器中的值就是被测的温度值。这个值以16位二进制补码的形式存放在便笺式存储器中。温度值由主机通过发读存储器命令读出,经过取补和十进制转换,得到实测的温度值。3.DS18B20的封装和供电方式DS18B20是DS1820的升级产品,一般封装为TO-92,比DS1820的PR-35封装更小。DS18B20只有三根外引线:单线数据传输端口DQ、共用地线GND、外供电源线VDD。DS18B20有两种供电方式:一种为数据线供电方式,此时VDD接地,它是通过内部电容在空闲时从数据线获取能量,来完成温度转换,完成温度转换的时间较长。为了保证在有效的时钟周期内,提供足够的电流,这种情况下,用一个MOSFET管和单片机的一个I/O口来完成对DS18B20总线的上拉。另一种是外部供电方式(VDD接+5V),完成温度测量的时间较短。当使用数据总线寄生供电时,供电端必须接地,同时总线口在空闲的时候必须保持高电平,以便对传感器充电。但当所测温度超过100℃时,DS18B20的漏电流增大,传感器从I/O线上获取的电流不足以维持DS18B20通讯所需的电流,此时只能选用外部供电方式。比较而言,寄生电源方式少用一根导线,但它完成温度测量所需的时间较长,而外部电源方式测量速度则要快些。低温度低温度系数振荡器高温度系数振荡器停止+1预置计数器温度寄存器=0计数器=0斜率累加器预置比较器图3-4DS18B20测温原理温度传感器DS18B20主要用于检测温度。检测原理是晶体振荡器的低温系数和晶体振荡器的高温系数分别发送脉冲信号1和计数器2。因此,可以在温度寄存器中获得准确的值。3.3.2电路设计连接到STCAT89C51MCU系列的DS18B20传感器非常简单。MCUP2.0端口用于发送/接收串行数据,即数据端口。连接针传感器2(单总线,数据系列)。由于测量范围小于20米,建议添加5K压缩机。因此,在传感器的2个引脚和电源之间连接电流5K电阻。Pin1和Pin4电源端口连接到微控制器的VDD和GND端子。传感器的第三部分被悬挂。原始DS18B20传感器的电路图如图3-9所示。:图3-9DS18B20电路原理图3.4液晶显示电路设计3.4.11602液晶显示屏简介HJ1602A是一款工业电子产品,能够同时显示16x02或32s。(第16行和第2行)。在日常生活中,我们不是液晶显示器。LCD模块用于传输许多电子产品,例如计算器,电磁场,电子时钟和许多家用电器。屏幕上的特殊数字和特殊符号。小型计算机的用户友好界面的常规输出模式是ABD解码器和LCD面板。通常使用LED灯管和LED数字灯,硬件和应用非常简单。在小型计算机系统中使用晶体显示输出工具,该芯片具有许多优势:为了保持液晶显示器上每个点的颜色和亮度,在接收到信号后,必须使用始终发光的新亮点(CRT)更新阴极触摸屏。因此,LCD显示装置具有高图像质量并且没有闪烁。LCD显示是全数字的,而单芯片系统接口则更简单,更可靠并且更易于操作。LCD显示器控制屏幕上电子LCD分子的状态,并且比同一屏幕表面上的普通显示器亮。或者,液晶显示器的功耗主要由内部电子设备和驱动器IC使用,因此与其他屏幕相比,功耗显着降低。液晶和LCD模块专门用于字母,数字,徽标等。以电子方式显示。当前通常使用诸如16×1、16×2、20×2和40×2线的模块。下面我将向您展示如何使用长沙电子有限公司的1602字符LCD示例。图3-10和图3-11显示了一个典型的1602字符LCD屏幕。图3-10液晶屏正面图3-11液晶屏背面(1)引脚说明:引脚1:VSS是电源。引脚2:VDD连接到5V正电源。引脚3:VL是LCD对比度调节。引脚4:RS是注册选项。引脚5:R/W是读/写信号线。当RS和R/W完全低时,您可以编写指令或在RS低时显示。R/W为高电平,R/W为高电平和低电平时读取RS。引脚6:电子端子是开关端子,当液晶块电平从高电平变为低电平时,端子E执行命令。引脚7至14:D0至D7是8位数据线。引脚15:尾灯为正。引脚16:尾灯底片。(2)1602LCD的RAM地址映射以及标准字库表对于阿拉伯数字,英文字符,通用符号,日语假名等。代号“A”在数字01000001B(41H)中,数学地址中41H字符的位置是显示模块。所有读/写操作和光标操作均由导入的程序执行(注:1个高电平,0个低电平)。有以下命令:1:命令间隙显示代码01H将光标置于位置00H。2:光标过载,并且光标返回00H。3:光标和设置I/D显示模式:光标移动方向,低电平变化,低电平开关在左侧。S:向左或向右移动屏幕上的所有字符。高级别指示有效性级别,而低级别指示错误状态。4:控制屏幕命令。D:禁用整个显示。高级表示打开屏幕,下部表示关闭屏幕。C:光标控制处于打开/关闭状态。高屏幕显示光标的存在,而低屏幕显示光标。B:指示灯闪烁,亮度高而亮度低。5:ShiftEcho/ECHC/C:当文本显示高时移动,而当光标低时移动光标。6:DL分离命令:高等级4位总线,低等级8位机器。N:低线为单行显示,高线为双行显示。F:5×7字符显示,矩阵点阵5×10字符(某些模块为DL:8位高位机器,4位低位总线)为高。7:设置字符发生器的RAM地址。8:设置DDRAM地址。9:读取忙信号和光标地址。如果BF加载了一个标志,并且它不忙于接收模块或高级数据命令,则该模块为低电平,如果它可以接收相应的命令或数据。10:写入数据11:读取数据因为晶体显示模块是一个慢速显示设备,所以这表明指令已中断且忙碌,否则每个指令模块必须确认忙碌标志为低。输入字符的屏幕地址以显示第一个字符。它告诉模块显示字符。内部屏幕地址1602如图3-12所示。图3-121602内部显示地址例如,如果第二行的第一个字母是40H,可以将光标直接放在第二行的第一个字母上吗?是不可能的。这是因为在写入时,屏幕地址必须显示D7位为1,而保持数据=11000000B(C0H)时,实际写入必须为01000000B(40H)+10000000B(80H)。激活LCD模块时,必须首先设置手动显示模式。当LCD模块显示光标符号时,光标将自动向右移动。输入命令之前,请检查LCD模块是否已关闭。1602点矩阵符号存储在LCD模块内存生成器(CGROM)中(请参见下图)。例如,字母“A”的代码为01000001B(41H),当点符号出现在41H时,字母“A”出现。3.4.21602液晶显示模块电路原理图液晶显示器的原理是控制晶体的电压敏感区域并在有电流的情况下显示和显示能量。易于使用的晶体显示器,易于使用的微电路,易于使用的全彩显示器,并广泛用于移动计算机,数码相机,移动通信设备,PDA和其他设备中。图3-131602显示模块3.5报警电路设计声光警报方案如图9所示。当声学光学浓度或温度超过极限值时,单片机发送低电平信号使LED灯变暗以达到报警状态。同时,将SPEAKER端口设置为低电平以触发三极管CD9012。图9声音报警电路图3.6上下位机通信电路设计(1)上位机与单片机的连接,如图3-17所示:图3-17通信模块与主控单片机的连接其中,具体的连接基本上分为三个阶段:第一,主MCUGND引脚连接至无线模块的地面接口;第二,主MCUGND引脚连接至无线模块的地面接口。其次,将与主串行端口TXMCU对应的GPIO端口连接至无线模块引脚的DART_RXD。第三阶段,与用于主控的单片机的串行端口RX相对应的GPIO端口连接到无线模块的DART_TXD引脚。可以通过外部模块驱动器板自动连接模块其余引脚的连接。(2)模块使用透明数据传输模式,即完整接收由与模型连接的主控制MCU串行端口发送的数据,并将其发送到无线局域网。由于RS-232标准使用负逻辑,即逻辑1为-3V-15V,逻辑0为+3V+15V。该单芯片计算机系统是TTL信号系统。根据TTL电平,+5V等于逻辑“1”,而0V等于逻辑“0”。因此,DB-9与单片机之间的连接需要一个电平开关。如上图所示,选择了MAX232芯片。图6如图所示,P1组件(COMPIM)是DB-9接口,经过电平转换后,该DB-9接口使用P3.0/RXD和P3.1/TXDMAX232芯片连接到AT89C51串行端口。(由于特殊软件的处理,将MAX232芯片1通道R1OUT和T1OUT添加到74LS04NOT门。实际上,不需要对其进行反转)。图像中带有用于抗议的组件RECEIVE和SEND的虚拟终端(虚拟终端)可用于监视AT89C52接收和发送的数据。仅用于调试和监视。

4系统软件设计一旦介绍了我们开发的通用主题,就首先创建一个模块分发框架图,以在整个设计中实现每个模块的功能模块。最后,必须将合理化的子模块正式链接以创建完整的程序。第一个主程序生成整个系统,并传输在系统主流中收集的温度命令,如图4-1所示。图4-1主程序流程图

4.11602液晶显示模块设计LCD模块是较慢的指示器。在每个操作之前保留的标志指示该标志不忙并且该标志无效。要显示第一个字符,请在字符模块上输入屏幕上字符的地址。LCD1602模块可以直接连接到AT89C51。程序流程图如图4-2所示。图4-21602液晶显示模块程序流程图4.2温度测量模块设计DS18B20数字温度传感器广泛用于各种电器,汽车,空调和干燥机。它已进入许多人的日常生活,许多电子设备不会干扰环境因素的需求。因此,越来越多地使用温度传感器。新一代数字无需外部A/D转换模块,并具有简单,直观和用户友好的界面。作为一种新型的数字温度设备,DS18B20具有比其易于使用的设计,易于使用的管理和易于实施的优势。总线通信概述1I2C总线,SPI总线和SCI总线主要用作串行总线进行数据传输,通常在微型计算机和外围设备之间使用。如何在时钟线(行)跑车I2C,SPI,串行通信方法(时钟线,数据输入线,时间数据总线,异步串行通信数据(线数据),数据)中连接数据线。下图是DS18B20传感器模块的示意图。图4-3DS18B20传感器模块程序流程图4.3上下位机通信程序设计由于该芯片具有其自己的硬件UART功能,并且由于实验环境的限制,该实验中的发送和接收是通过配置适当的注册表来控制硬件模块来完成的,并且软件定时器不用于模拟通信时间。该程序基本上包括以下三个部分:基本功能,串行端口配置功能,发送功能和串行端口终止服务功能。a)

程序变量定义及函数声明b)

程序主函数c)

其他子函数附录1中列出了主要功能中其他特定子功能的实现。4)准备窗口程序该实验的程序窗口是使用VB.NET语言在VS2010中编写的。该程序主要实现.NET提供的SerialPort控件,并由其他必要的窗口控件进行补充。窗口布局如图所示:图7a)

参数设置函数b)

数据接收函数DataReceivedSerialPort事件要求Sp_Receiving检索数据。当输入缓冲区接收到1个字符时,将触发事件,并且Sp_Receiving函数准备开始接收数据。当您返回笔架并阅读剪贴板中的换行符时,接收到的数据将反映在TextBox控件中。如果在到期日期后未读取货车返回和换行符号,则接收程序将不进行任何操作而退出,并且接收缓冲区将在离开前被清除。c)

数据发送函数引导数据发送过程,称为按键事件。在判断是否发送新字符串(在此实验中应进行检查),是否处于通话模式之后,发送数据。

5系统分析与调试5.1分步调试1.测试环境和工具试验温度:0〜100摄氏度。(模拟具有不同温度值的不同点环境)测试设备及软件:数字万用表,0〜100摄氏度温度计,串口调试助手。测试方法:目视检查。2.测试方法运行系统,查看其是否检测到正常的系统硬件(包括单片机,键盘,屏幕圆圈,温度测试电路等的最低系统)。系统附带测试表数据,只需确保显示的数据一致即可。温度传感器和温度计用于同时测量多个点的水温变化(取多个具有不同温度值的点),并目视检查圆圈是否正常。写下每个点的温度值,比较实际温度值,得到系统温度指数。使用串行端口设置向导与单片机通信,并查看在单片机和串行端口之间传输的数据是否是正确的单位。3.测试结果分析自检是正常的,每个点的温度都可以正常反映,并且串行端口正确传输数据。因为芯片是用塑料包装的,所以温度敏感性不是很高,并且需要很短的时间才能达到稳定性。5.2统一调试 结合硬件和软件以进行单个系统引导。了解计算机和单片机之间的通信,这两个可以实时更新并显示每个点的温度值。

6结论与展望该系统的主要部分是温度传感器和单片机。单片机分析并处理由温度传感器发送的信号,并将其传输到屏幕显示。显示屏实时显示当前温度。当检测到的温度超过设定值时,系统将发出声音和视觉警报。即使满足基本要求,我仍然有一些缺点。例如,我不了解温度传感器,串行输入程序没有概念,等等。但是,经过两个多月的工作,从最初的理论研究到零件的最终购买以及成品的焊接,都已经达到了预期的结果,这对我来说是不小的成功。随着科学技术的进步,温度测量已从传统的手动测量逐步发展为全自动智能测量。温度检测系统正朝着高质量,高精度,自动化和智能化的方向发展。但是,国外从1970年代开始研究温度控制技术,如今已达到很高的水平。我们的国家发生在1980年代。为了适应国际发展步伐,我国在研究基于发达国家温度测量和控制的温度检测系统及其自身技术和发展要求方面取得了重大进展。多种类型和多系统的温度监控系统层出不穷,极大地满足了温度监控系统人员的不同需求。目前,在综合创新和多方面发展的基础上,我国进一步探索了温度检测系统,使其达到世界先进水平。

附录#include<reg52.h> //调用单片机头文件#defineucharunsignedchar//无符号字符型宏定义 变量范围0~255#defineuintunsignedint //无符号整型宏定义 变量范围0~65535#include<intrins.h>sbitbeep=P1^5;//蜂鸣器IO口定义sbitrelay1=P3^4;//温度报警继电器IO口定义sbitrelay2=P3^5;//温度报警继电器IO口定义uchara_a;ucharflag_en=1;bitflag_300ms;//按键的IO变量的定义ucharkey_can; //按键值的变量ucharmenu_1;//菜单设计的变量uintt_high=30,t_low=10; //温度报警参数ucharkey_time,flag_value;//用做连加的中间变量bitkey_500ms;ucharflag_clock; //温度报警变量ucharflag_fuzi;//用做菜单内的初始化的/****************************************************************名称:delay_1ms()*功能:延时1ms函数*输入:q*输出:无****************************************************************/voiddelay_1ms(uintq){ uinti,j; for(i=0;i<q;i++) for(j=0;j<120;j++);}sbitdht11=P2^7; //温度传感器IO口定义uchartable_dht11[5]={1,2,3,4,5};#defineRdCommand0x01//定义ISP的操作命令#definePrgCommand0x02#defineEraseCommand0x03#defineError0#defineOk1#defineWaitTime0x07//定义CPU的等待时间sfrISP_DATA=0xe6;//寄存器申明sfrISP_ADDRH=0xe5;sfrISP_ADDRL=0xe4;sfrISP_CMD=0xe3;sfrISP_TRIG=0xe2;sfrISP_CONTR=0xe1;/*================打开ISP,IAP功能=================*/voidISP_IAP_enable(void){ EA=0;/*关中断*/ ISP_CONTR=ISP_CONTR&0x18;/*0001,1000*/ ISP_CONTR=ISP_CONTR|WaitTime;/*写入硬件延时*/ ISP_CONTR=ISP_CONTR|0x80;/*ISPEN=1*/}/*===============关闭ISP,IAP功能==================*/voidISP_IAP_disable(void){ ISP_CONTR=ISP_CONTR&0x7f;/*ISPEN=0*/ ISP_TRIG=0x00; EA=1;/*开中断*/}/*================公用的触发代码====================*/voidISPgoon(void){ ISP_IAP_enable();/*打开ISP,IAP功能*/ ISP_TRIG=0x46;/*触发ISP_IAP命令字节1*/ ISP_TRIG=0xb9;/*触发ISP_IAP命令字节2*/ _nop_();}/*====================字节读========================*/unsignedcharbyte_read(unsignedintbyte_addr){ EA=0; ISP_ADDRH=(unsignedchar)(byte_addr>>8);/*地址赋值*/ ISP_ADDRL=(unsignedchar)(byte_addr&0x00ff); ISP_CMD=ISP_CMD&0xf8;/*清除低3位*/ ISP_CMD=ISP_CMD|RdCommand;/*写入读命令*/ ISPgoon();/*触发执行*/ ISP_IAP_disable();/*关闭ISP,IAP功能*/ EA=1; return(ISP_DATA);/*返回读到的数据*/}/*==================扇区擦除========================*/voidSectorErase(unsignedintsector_addr){ unsignedintiSectorAddr; iSectorAddr=(sector_addr&0xfe00);/*取扇区地址*/ ISP_CMD=ISP_CMD|EraseCommand;/*擦除命令3*/ ISP_ADDRL=0x00; ISP_CMD=ISP_CMD&0xf8;/*清空低3位*/ ISPgoon();/*触发执行*/ ISP_IAP_disable();/*关闭ISP,IAP功能*/}/*====================字节写========================*/voidbyte_write(unsignedintbyte_addr,unsignedcharoriginal_data){ EA=0; SectorErase(byte_addr); ISP_ADDRH=(unsignedchar)(byte_addr>>8);/*取地址*/ ISP_DATA=original_data;/*写入数据准备*/ ISP_ADDRL=(unsignedchar)(byte_addr&0x00ff); ISP_CMD=ISP_CMD|PrgCommand;/*写命令2*/ ISPgoon();/*触发执行*/ ISP_IAP_disable();/*关闭IAP功能*/ EA=1;}/******************把数据保存到单片机内部eeprom中******************/voidwrite_eeprom() //保存数据{ SectorErase(0x2000); byte_write(0x2000,t_high); byte_write(0x2001,t_low); byte_write(0x2002,s_high); byte_write(0x2003,s_low); byte_write(0x2055,a_a); }/******************把数据从单片机内部eeprom中读出来*****************/voidread_eeprom() //读出保存数据{ t_high=byte_read(0x2000); t_low=byte_read(0x2001); s_high=byte_read(0x2002); s_low=byte_read(0x2003); a_a=byte_read(0x2055);}///**************开机自检eeprom初始化*****************/voidinit_eeprom() ////开始初始化保存的数据{ read_eeprom(); //读出保存数据}ucharcodetable_num[]="0123456789abcdefg";sbitrs=P1^0; //寄存器选择信号H:数据寄存器 L:指令寄存器sbitrw=P1^1; //寄存器选择信号H:数据寄存器 L:指令寄存器sbite=P1^2; //片选信号下降沿触发/*********************************************************************名称:delay_uint()*功能:小延时。*输入:无*输出:无***********************************************************************/voiddelay_uint(uintq){ while(q--);}/*********************************************************************名称:write_com(ucharcom)*功能:1602命令函数*输入:输入的命令值*输出:无***********************************************************************/voidwrite_com(ucharcom){ e=0; rs=0; rw=0; P0=com; delay_uint(25); e=1; delay_uint(100); e=0;}/*********************************************************************名称:write_data(uchardat)*功能:1602写数据函数*输入:需要写入1602的数据*输出:无***********************************************************************/voidwrite_data(uchardat){ e=0; rs=1; rw=0; P0=dat; delay_uint(25); e=1; delay_uint(100); e=0; }/***********************lcd1602上显示特定的字符****0XDF度********************/voidwrite_zifu(ucharhang,ucharadd,uchardate){ if(hang==1) write_com(0x80+add); else write_com(0x80+0x40+add); write_data(date); }/***********************lcd1602上显示两位十进制数************************/voidwrite_sfm2(ucharhang,ucharadd,uintdate){ if(hang==1) write_com(0x80+add); else write_com(0x80+0x40+add); write_data(0x30+date/10%10); write_data(0x30+date%10); }/***********************lcd1602上显示这字符函数************************/voidwrite_string(ucharhang,ucharadd,uchar*p){ if(hang==1) write_com(0x80+add); else write_com(0x80+0x40+add); while(1) { if(*p=='\0')break; write_data(*p); p++; } }/***********************lcd1602初始化设置************************/voidinit_1602() //lcd1602初始化{ write_com(0x38); write_com(0x0c); write_com(0x06); write_string(1,0,"Wd:00H00L00"); write_string(2,0,"Sd:00%H00%L00%"); write_zifu(1,5,0xdf); //显示度 write_zifu(1,15,0xdf); //显示度 write_sfm2(1,3,table_dht11[2]); //显示温度 write_sfm2(1,13,t_low); //显示温度}/*************定时器0初始化程序***************/voidtime_init() { EA=1; //开总中断 TMOD=0X01; //定时器0、定时器1工作方式1 ET0=1; //开定时器0中断 TR0=1; //允许定时器0定时}/********************独立按键程序*****************/ucharkey_can; //按键值voidkey() //独立按键程序{ staticucharkey_new; key_can=20;//按键值还原 P2|=0x0f; if((P2&0x0f)!=0x0f) //按键按下 { delay_1ms(1); //按键消抖动 if(((P2&0x0f)!=0x0f)&&(key_new==1)) { //确认是按键按下 key_new=0; switch(P2&0x0f) { case0x07:key_can=1;break; //得到k1键值 case0x0d:key_can=2;break; //得到K2键值 case0x0e:key_can=3;break; //得到k3键值 } beep=0; delay_1ms(50); beep=1; } } else key_new=1; }/****************按键显示函数***************/voidkey_with(){ if(key_can==1) //设置键 { menu_1++; if(menu_1>2) { menu_1=0; init_1602();//lcd1602初始化 } } if(menu_1==1) //设置高温报警 { if(key_can==2) { t_high++; //设置高温值加1 if(t_high

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论