




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
个人资料整理 仅限学习使用前言温度和湿度的检测和控制是许多行业的重要工作之一,不论是货品仓库、生产车间,都需要有规定的温度和湿度,然而温度和湿度却是最不易保障的指标,针对这一情况,研制可靠且实用的温度和湿度检测与控制系统就显得非常重要。温湿度的检测与控制是工业生产过程中比较典型的应用之一 [1],随着传感器在生产和生活中的更加广泛的应用。在生产中,温湿度的高低对产品的质量影响很大。由于温湿度的检测控制不当,可能使我们导致无法估计的经济损失。为保证日常工作的顺利进行,首要问题是加强生产车间内温度与湿度的监测工作,但传统的方法过于粗糙,通过人工进行检测,对不符合温度和湿度要求的库房进行通风、去湿和降温等工作。这种人工测试方法费时费力、效率低,且测试的温度及湿度误差大,随机性大。由于温湿度传感器及其控制系统是20世纪90年代才兴起的行业,因此设计出一款精度高、稳定性好、成本低的温湿度检测控制系统具有一定的市场前景。此研究工程采用具有高精度,防干扰等优点的传感器,结合单片机嵌入式系统技术,设计完成的系统具有易携带、低功耗等特点,从而克服了传统温湿度检测系统需要复杂的校准过程和精度较低的缺点。本设计所介绍温湿度检测仪与传统的温湿度计相比具有读数方便,测温湿范围广,测温湿准确,其输出温湿度度采用LED数码管显示,该设计控制器使用单片机,数字温湿度传感器 DS18B20,DHT11,用LED数码管,实现温湿度度显示,能准确达到要求。b5E2RGbCAP本次论文只要有四章,其中第一章主要介绍了本次设计的主要内容;第二章主要是介绍了主要的元器件以及硬件设计及其内容;第三章主要介绍了软件流程的过程;第四章主要软硬件的调试。 p1EanqFDPw第1章 绪论1.1设计任务设计一个基于单片机的测温湿度控制系统,用单片机作为主控芯片,通过温湿度传感器监控对温湿度进行实时性控制,通过设置警戒温度,利用单片机控制,当温湿度高于设定温湿度基准值时启动报警,以达到控制的目的。DXDiTa9E3d0/61个人资料整理 仅限学习使用设计的功能如下:<1)实现LED数码管显示;<2)能通过按键选择工作模式和基准值的设定。设计技术指标如下:<1)显示三位温度三位湿度;<2)温度采集精度为±0.5℃,湿度采集精度为±5%。1.2原理描述本设计主要由电源模块、温湿度采集模块、按键模块、报警模块、单片机控制模块以及数据显示模块几部分组成。如下图1-1所示:RTCrpUDGiT温湿度度采集模块单数据显示模块片机按键模块控制模报警模块块电源模块图1-1 系统总体结构框图1.2.1 总体方案的设计用温温度传感器DS18B20,DHT11主要实现检测温度、湿度的检测,将温度湿度[2]信号通过传感器进行信号的采集并转换成数字信号,再运用单片机进行数据的分析和处理,为显示和报警电路提供信号。设定模块主要为设定温湿度报警的阈值,其流程图 1-1所示:5PCzVD7HxA1.2.2 系统原理温湿度采集模块使用的是 DS18B20,DHT11数字温湿度传感器,它使用单总线方式,接口简单,而且无需另外校准,完全能够满足日常环境温湿度的检测要求。jLBHrnAILg数据处理模块使用的是 AT89S51单片机,其完成温湿度数据的采集、运算和逻辑控制的功能。其余模块主要由按键、 LED和蜂鸣器构成。其中按键用于用户设定温湿度1/61个人资料整理 仅限学习使用阈值,LED用于数据显示,蜂鸣器用于提示用户。按照系统的设计功能所要求的,温湿度监控系统原理图如下图 1-2所示:xHAQX74J0X温湿度传感器LED温湿度显示 单片机 蜂鸣器按键模块图1-2 温湿度监控系统原理图单片机作为主控制器,主要负责处理由温湿度传感器送来数据,并把处理好的数据送向显示器模块,温湿度传感器主要用来采集周围的环境参数,并把所采集到得数据送向单片机,按键电路主要是用来完成单片机的复位操作和温湿度初始值的设定。蜂鸣器电路就是用三极管来实现的,用来判断周围的温度或者湿度是否超出设定数值,显示电路主要用来显示当前的温湿度。 LDAYtRyKfE1.3整体方案的论证1.3.1 温湿度检测电路方案一:选用DS18B20温度传感器和 HS1101湿度传感器。DS18B20是一线式数字温度传感器,具有独特的单线式接口方式,测量范围在- 55℃~125℃,10℃~85℃,误差为0.5℃。最高精度可达0.0625℃。HS1101是电容式湿度传感器,可测相对湿度范围在0%~100%RH,误差为2%RH。Zzz6ZB2Ltk方案二:选用DHT11作为温湿度检测模块。DHT11是一款数字输出的复合传感器,包含一个电阻式感湿元件和NTC式温度检测元件,可测20~90%RH湿度,误差5%RH,0~50℃,误差2℃。dvzfvkwMI1由于 HS1101所构成的测湿度电路对电阻的精度要求高并电路繁琐,而DHT11温度精度达不到要求,所以取两者方案优点用 DS18B20测温度和 DHT11测湿度来完成本设计。rqyn14ZNXI1.3.2 利用单片机实现控制系统当今,单片机的技术已经非常成熟了,它集成度高、功能强、存储量大、速度快、抗干扰性强和指令丰富等的优点,使它的应用遍及各个领域。本文设计的系统就是单片机应用于温湿度控制的一个例子,其优点如下: EmxvxOtOco2/61个人资料整理 仅限学习使用<1)片内存储容量越来越大;<2)抗干扰性好,可靠性高;<3)芯片引线齐全,容易扩展;<4)运行速度高,控制功能强。<5)单片机内部的数据信息保存时间很长,有的芯片可以达到100年以上。本系统是一种高精度、测控速度快、测控温度范围广的应用性比较强的基于单片机的温度测控系统。由于本系统对单片机的资源要求不高,故选用了廉价的51单片机AT89S51,大大提高了本系统的性价比。 SixE2yXPq51.4本章小结本章详细介绍了本次设计的主要任务,以及对于所要实现的内容加以分析。第2章 温湿度检测仪的硬件设计单片机是整个系统的控制中枢,它指挥外围器件协调工作,从而完成特定的功能,硬件实现上采用模块化设计,每一模块只实现一个特定功能,最后再将各个模块搭接在一起,这种设计方法可以降低系统设计的复杂性,本系统主要硬件设计包括电源模块、温湿度采集模块、按键模块、报警模块、单片机控制模块以及数据显示模块。 6ewMyirQFL2.1器件的介绍2.1.1 温湿度传感器温度传感器DS18B20DS18B20温度传感器[3]是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,它是单线数字温度传感器,即“一线器件”,其具有独特的优点:kavU42VRUs<1)采用单总线的接口方式与微处理器连接仅需要一条口线即可实现微处理器与 DS18B20的双向通讯。单总线具有经济性好,抗干扰能力强,适合于恶劣环境的现场温度测量,使用方便等优点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。 y6v3ALoS893/61个人资料整理 仅限学习使用<2)测量温度范围宽测量精度高 DS18B20的测量范围为-55℃~+125℃;在-10~+85℃范围内,精度为±0.5℃。M2ub6vSTnP<3)在使用中不需要任何外围元件<4)持多点组网功能多个DS18B20可以并联在惟一的单线上,实现多点测温。<5)供电方式灵活DS18B20可以通过内部寄生电路从数据线上获取电源。因此,当数据线上的时序满足一定的要求时,可以不接外部电源,从而使系统结构更趋简单,可靠性更高。0YujCfmUCw(6>测量参数可配置DS18B20的测量分辨率可通过程序设定 9~12位。(7>负压特性电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。(8>掉电保护功能DS18B20内部含有EEPROM,在系统掉电以后,它仍可保存分辨率及报警温度的设定值。DS18B20具有体积更小、适用电压更宽、更经济、可选更小的封装方式,更宽的电压适用范围,适合于构建自己的经济的测温系统。 eUts8ZQVRdDS18B20外部结构如图2-1所示图2-1DS18B20引脚图1.GND为电源地;4/61个人资料整理 仅限学习使用2.DQ为数字信号输入/输出端;3.VDD为外接供电电源输入端;DS18B20的使用注意DS18B20虽然具有测温系统简单 [4]、测温精度高、连接方便、占用口线少等优点,但在实际应用中也应注意以下几方面的问题: sQsAEJkW5TDS18B20从测温结束到将温度值转换成数字量需要一定的转换时间,这是必须保证的,不然会出现转换错误的现象。GMsIasNXkA在实际使用中发现,应使电源电压保持在5V左右,若电源电压过低,会使所测得的温度精度降低。3. 较小的硬件开销需要相对复杂的软件进行补偿,由于 DS1820与微处理器间采用串行数据传送,因此,在对 DS1820进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。在使用 PL/M、C等高级语言进行系统程序设计时,对DS1820操作部分最好采用汇编语言实现。 TIrRGchYzg在DS18B20的有关资料中均未提及单总线上所挂DS18B20数量问题,容易使人误认为可以挂任意多个DS18B20,在实际应用中并非如此,当单总线上所挂DS18B20超过8个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。7EqZcWLZNX在DS18B20测温程序设计中,向DS18B20发出温度转换命令后,程序总要等待DS18B20的返回信号,一旦某个DS18B20接触不好或断线,当程序读该DS18B20时,将没有返回信号,程序进入死循环,这一点在进行 DS18B20硬件连接和软件设计时也要给予一定的重视。 lzq7IGf02E湿度传感器DHT11DHT11为温湿度传感器[5],由于DHT11测量的温度精度不符合本设计,本设计只采用DHT11测量湿度部分,把 DHT11当做湿度传感器运用。zvpgeqJ1hkDHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,它应用专用的温湿度传感和数字模块采集技术,具有很高的稳定性和可靠性,DHT11传感器内含一个 NTC测温和一个电阻式感湿元件,并与一个 8位的高性能单片机相连接,在精确的湿度校验室中 DHT11传感器进行过校准,以程序的形式校准系数储存在 0TP内存中,检测信号的时候,在处理过程中传感器内部要调用这些校准系数,采用单线制的串行接口,使系统集成可以有较低5/61个人资料整理 仅限学习使用的功耗,而且更加简单快速,信号传输距离超过 20M,作为一个数字温湿度传感器DHT11具有响应快速、抗干扰强、性价比高等优点。 NrpoJac3v1典型的应用电路如图 2-2所示:图2-2典型的应用电路DHT11实物图如图2-3所示:图2-3DHT11实物图DHT11引脚说明如表2-1所示表2-1DHT11引脚说明pin 名称 注释1 VDD 供电3-5.5V6/61个人资料整理 仅限学习使用2DATA串行数据,单总线3NC空脚,悬空4GND接地,电源负极封装信息如图2-4:如图2-4DHT11的封装信息2.1.2 单片机[6]是美国ATMEL公司生产的低功耗、高性能CMOS的8位单片机,AT89S51片内含4K的可编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准 8051指令系统及引脚,它集 Flash程序存储器既可在线编程(ISP>,也可用传统方法进行编程及通用 8位微处理器于单片机芯片中,ATMEL公司的功能强大,低价位 AT89S51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制的领域。引脚图如下图 2-5所示:1nowfTG4KI7/61个人资料整理 仅限学习使用图2-5AT89S51引脚图8051单片机的引脚[7]主电源引脚VCC<40脚):接+5V电源正端GND<20脚):接+5V电源地端一般VCC和GND间应接高频去耦电容和低频滤波电容。2.外接晶体或外部振荡器引脚XTAL1<19脚):接外部晶振的一个引脚。在单片机内部,它是一个反相放大器的输入端,这个放大器构成了片内振荡器 OSC。当采用外部振荡器时,此引脚应接地。fjnFLDa5ZoXTAL2<18脚):接外部晶振的另一个引脚。在片内接至反相放大器的输出端和内部时钟电路的输入端。当采用外部振荡器时,此脚接外部振荡器的输出端。tfnNhnE6e5控制信号线RST/VPD<9脚):复位信号输入端,复位 /掉电时内部 RAM的备用电源输入8/61个人资料整理 仅限学习使用端ALE/PROG<30脚):地址锁存允许/编程脉冲输入。用ALE锁存从P0口输出的低8位地址;在对片内EPROM编程时,编程脉冲由此输入。HbmVN777sLPSEN<29脚):外部程序存储器读选通信号,低电平有效。EA/VPP<31脚):访问外部存储器允许 /编程电压输入。EA为高电平时,访问内部存储器;低电平时,访问外部存储器。对片内 EPROM编程时,此脚接21V编程电压。V7l4jRB8Hs3.多功能I/O口引脚8051单片机设有 4个双向I/O口<P0、P1、P2、P3),每一组 I/O口线都可以独立地用作输入或输出口,其中: 83lcPA59W9P0口<32~39脚)——双向口<三态),可作为输入/输出口,可驱动 8个LSTTL门电路。实际应用中常作为分时使用的地址 /数据总线口,对外部程序或数据存储器寻址时低 8位地址与数据总线分时使用 P0口:先送低8位地址信号到P0口,由地址锁存信号ALE的下降沿将地址信号锁存到地址锁存器后,再作为数据总线的口线对数据进行输入或输出。mZkklkzaaPP1口<1~8脚)——准双向口<三态),可驱动4个LSTTL门电路。用作输入线时,口锁存器必须由单片机先写入“1”,每一位都可编程为输入或输出线。AVktR43bpwP2口<21~28)——准双向口<三态),可驱动 4个LSTTL门电路。可作为输入/输出口,实际应用中一般作为地址总线的高 8位,与P0口一起组成16位地址总线,用于对外部存储器的接口电路进行寻址。 ORjBnOwcEdP3口<10~17脚)——准双向口<三态),可驱动 4个LSTTL门电路。双功能口,作为第一功能使用时,与 P1口一样;作为第二功能使用时,每一位都有特定用途,其特殊用途如表 2-2所示:2MiJTy0dTT表2-2 第二功能端口引脚 第二功能 注 释P3.0 RXD 串行口数据接收端P3.1 TXD 串行口数据发送端9/61个人资料整理 仅限学习使用P3.2INT0外中断请求0P3.3INT1外中断请求1P3.4T0定时/计数器0外部计数信号输入P3.5T1定时/计数器1外部计数信号输入P3.6WR外部RAM写选通信号输出P3.7RD外部RAM读选通信号输出优越性AT89S51提供以下的功能标准[8]:4K字节闪烁存储器,128字节随机存取数据存储器,2个16位定时/计数器,32个I/O口,1个串行通信口,1个5向量两级中断结构,另外,AT89S51还可以进行0HZ的静态逻辑操作,并支持两种软件的节电模式,闲散方式停止中央处理器的工作,可允许随机存取数据存储器、定时/计数器、串行通信口及中断系统继续工作。掉电方式保存随机存取数据存储器中的内容,但震荡器停止工作并禁止其它所有部件的工作直到下一个复位,在AT89C51上新增加的功能使AT89S51性能有了较大提升,它的价格甚至更低,它的工作频率可达33MHz,比AT89C51的工作频率更高,ISP在线编程功能的优越性在于它不必要将芯片从工作状态下分离,特别是在改写存储器内的程序,这是一个相当方便简单的功能,它不需要像 AT89C51那样外接看门狗计时器单元电路,由于它内部具有双工 UART串行通道内部集成看门狗计时器,它具有全新的加密算法,大大加强的程序的保密性,有效的保护知识产权不被侵犯 ,它向下完全兼容51全部字系列产品。gIiSpiue7A2.1.3LEDLED数码管实际上是由七个发光管组成 8字形构成的,加上小数点就是 8个。这些段分别由字母 a,b,c,d,e,f,g,dp 来表示。当数码管特定的段加上电压后,这些特定的段就会发亮,以形成我们眼睛看到的 字样了。如:显示一个“2”字,那么应当是 a亮b亮g亮e亮d亮f不亮c不亮dp不亮。LED数码管有一般亮和超亮等不同之分,也有 0.5寸、1寸等不同的尺寸。小尺寸数码管的显示笔画常用一个发光二极管组成,而大尺寸的数码管由二个或多个发光二极管组成,一般情况下,单个发光二极管的管压降为 1.8V左右,电流不超过 30mA。发光二极管的阳极连接到一起连接到电源正极的称为共阳10/61个人资料整理 仅限学习使用数码管,发光二极管的阴极连接到一起连接到电源负极的称为共阴数码管。常用LED数码管显示的数字和字符是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。管脚图如图2-6所示:uEh0U1Yfmh图2-6LED的管脚图及共阴共阳内部内部电路2.1.4 三端稳压管稳压电路是用三端稳压芯片构成的,本设计选用的是三端稳压集成电路lm7805是+5V稳压芯片。电子产品中,常见的三端稳压集成电路有正电压输出的 lm78×× 系列和负电压输出的 lm79××系列。顾名思义,三端 IC是指这种稳压用的集成电路,只有三条引脚输出,分别是输入端、接地端和输出端。它的样子象是普通的三极管,TO-220的标准封装,也有lm9013样子的TO-92封装。本设计采用的是TO-220封装的。管脚图如图2-7所示:IAg9qLsgBXLM78xx LM79xx图2-7三端稳压管11/61个人资料整理 仅限学习使用2.1.5 蜂鸣器蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。WwghWvVhPE1压电式蜂鸣器 压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。有的压电式蜂鸣器外壳上还装有发光二极管。多谐振荡器由晶体管或集成电路构成。当接通电源后 <1.5~15V直流工作电压),多谐振荡器起振,输出 1.5~2.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。压电蜂鸣片由锆钛酸铅或铌镁酸铅压电陶瓷材料制成。在陶瓷片的两面镀上银电极,经极化和老化处理后,再与黄铜片或不锈钢片粘在一起。 asfpsfpi4k2电磁式蜂鸣器 电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。ooeyYZTjj1本设计采用压电式蜂鸣器,如图 2-8所示图2-8 蜂鸣器2.2主要模块的电路2.2.1 单片机最小系统单片机的最小系统 [9]是指使单片机能运行程序、正常工作的最简单电路系统,是保证单片正常启动、开始工作的必须电路,缺一不可。单片机最小系统一般由单片机、程序存储器、时钟电路和复位电路组成。对于 8051单片机,由于片内有程序存储器,所以其最小系统除了单片机本身外,只需外接时钟电路12/61个人资料整理 仅限学习使用与复位电路即可。 BkeGuInkxI复位及复位电路8051单片机的复位复位是使 CPU和系统中其他功能部件都处于一个确定的初始状态,并从这个状态开始工作。8051单片机在RST输入端<9脚)出现高电平时实现系统的复位和初始化。在振荡器运行的情况下,要实现复位操作,必须使 RST端的高电平至少保持两个机器周期 <24个振荡周期)。CPU在第二个机器周期内执行复位操作,以后每一个机器周期重复一次,直到 RST降为低电平。复位期间不产生ALE及/PSEN信号。复位的内部操作使SP为07H,各端口<P0~P3)都为0FFH,特殊功能寄存器都为0,但不影响RAM的状态。当复位结束<RST变为低电平)后,CPU从0000H开始执行程序。PgdO0sRlMo值得注意的是:8051单片机通电后并不运行ROM里的程序,只有正常复位后,才能开始工作。复位电路单片机的复位分为上电自动复位、按键手动复位两种和看门狗强制复位三种等。上电复位通常利用电容的充放电来实现,按键复位则可分为按键脉冲复位和按键电平复位两种,看门狗复位则通过外接看门狗电路或软件看门狗程序实现。常见的上电复位和按键复位电路如图2-9所示。3cdXwckm15(a>上电复位 (b> 按键脉冲复位 (c> 按键电平复位图2-9 复位电路图中,(a>为最简单的单片机复位电路。当系统上电时,由于电容 C两端的电压不会瞬间改变,所以 8051的第9脚复位端会得到短暂的高电平,随后,电容通过电阻 R进行充电,经过一段时间后, RST端变为低电平。当电容的充放13/61个人资料整理 仅限学习使用电时间常数RC足够大,能保证在RST端得到超过两个机器周期的高电平时,单片机完成复位操作,开始正常运行ROM里的程序[10]。h8c52WOngM(b>为按键脉冲复位电路。当系统上电时,单片机并不复位,不能运行 ROM里的程序,只有当系统上电后,按一下复位按键 <图中未画出),反相器输出超过两个机器周期的高电平,才能完成系统复位。 v4bdyGious(c>为包括上电复位功能的按键电平复位电路,是最常见的单片机复位电路之一。当系统上电时,单片机的 RST端得到两个以上机器周期的高电平,随后电容C经电阻R充电,变为低电平,完成单片机的上最复位。在单片机的运行过程中,如果由于外界干扰等因素的影响,使单片机的程序跑飞,则可以通过按下按键K,使单片机完成复位操作。当按下 K键时,电容两端短路,RST接到电源VCC变为高电平,同时电容迅速放电,使电容的两个极板电位一致。释放按键K后,电容C通过电阻R充电,经过两个以上机器周期的时间后,RST端变为低电平,完成单片机的复位。J0bm4qMpJ9本系统采用的是上电复位,充电之后,RST被拉至高电平,单片机进入工作状态。时钟电路时钟电路[11]用于产生单片机的基本时钟信号。 8051的时钟信号可由内部振荡器产生,也可由外部电路直接提供。内部振荡器的输入和输出脚分别为XTAL1和XATL2,由XTAL2给单片机内部电路提供时钟信号。当时钟信号由外部电路提供时,外部时钟引入 XTAL2,而XTAL1脚接地。两种时钟信号的连接电路如图2-10所示。XVauA9grYP图2-10时钟电路AT89S51中有一个用于构成内部正当其的放大器,引脚 XTAL1和XTAL2分别是放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或者陶瓷谐振器构成自激振荡器,他们与电容 C1,C2接在放大器的反馈电路中构14/61个人资料整理 仅限学习使用成并联震荡电路,虽然电容没有一个严格的要求,但是电容的大小会轻微影响振荡频率的高低、温度稳定性以及振荡器工作的稳定性。 bR9C6TJscw本系统采用晶振电路[12]。单片机系统都有晶振,在单片机系统中晶振的作用非常大,全称叫做晶体振荡器,它结合单片机内部电路产生所需时钟频率,单片机晶振提供的时钟频率越高,那么单片机的运行速度就会越快,单片机的一切指令执行都是建立在单片机晶振所提供的时钟频率。在通常的工作条件下,普通的晶振频率的绝对精度可以达到百万分之五十,高级晶振精度更高,有些晶振还可以由外加的电压在一定范围内调整频率,称为压榨振荡器,在共振的状态下晶振用一种能把电能和机械能相互转化的晶体工作,以提供稳定,精确的单频振荡。pN9LBDdtrd单片机晶振的作用是为系统提供及本周的时钟信号,通常一个系统共用一个晶振,以便于各部分保持同步,有些通讯系统的基频和射频使用不同的晶振,而是通过电子调整频率的方法保持同步。晶振通常与锁相环电路配合使用,以提供系统所需的时钟频率,可以用于同一个晶振项链的不同锁相环来提供的。单片机 AT89S51的晶振电路采用无源晶振,微调电容取 22pf。图2-11即为晶振电路。 DJ8T7nHuGT图2-11晶振电路2.2.2 报警模块微型计算机控制系统中 [13],为了安全起见,对于一些重要的参数或系统,15/61个人资料整理 仅限学习使用都设定有紧急状态报警系统,以便于提醒操作人员注意,或者采取紧急措施,本设计采用把计算机采集的数据进行数据处理、标度变换、数字滤波之后,与该参数上下限与给定值进行比较,如果高于上限值则进行报警,否则就作为采样的正常值,进行显示。QF81D7bvUA本设计采用峰鸣音报警电路。如图2-12所示。蜂鸣器额定电流≤30mA,而对于AT89S51单片机,P3口的灌电流为15mA,由此可见,仅靠单片机的P3口电流是不能驱动蜂鸣器的,必须使用晶体管放大电路,为了使单片机的功率更小,所以使用 PNP型晶体管,当外部环境的温度或者湿度超过预设值的时候,基级变为低电平,蜂鸣器导通鸣叫。 4B7a9QFw9h图2-12报警模块2.2.3 数据显示模块显示器常用作单片机最简单的输出设备,用以显示单片机的运行结果和运行状态等。常用的显示器主要有 LED和LCD,它们都具有耗电少、成本低、线路简单、寿命长等优点,广泛应用于单片机显示数字量的场合。设计中采用LED显示器。ix6iFA8xoX对LED管的显示可分为静态和动态两种。本设计采用动态显示,其优点为:1.能降低显示器的功耗。2.能大大减少显示器的外部接线,给安装调试带来方便。wt6qbkCyDELED动态显示原理:由于各个数码管的段选线并联,段选码的输出对各个数码管都是相同。因此同一时刻如果各个数码管的位选线都处于选通状态的16/61个人资料整理 仅限学习使用话,四位LED将显示相同字符。若要各位LED显示出与本位相应的显示字符,就必须采用扫描显示方式。即在某一时刻只让某一位的位选线处于选通状态而其它各位的位选线处于关闭状态.同时段选线上输出相应位要显示字符的代码这样同一时刻四位LED中只有选通的那一位显示出字符,而其它位则是熄灭的。此循环下去就可以使各位数码管显示出将要显示的字符。显然,这些字符是在不同时刻出现的,而且同一时刻只有一位显示其它各位熄灭,但由于各位数码管的通断时间是非常短的,且人眼有视觉暂留现象,只要每位显示间隔足够短则可造成多位同时亮的假象达到显示的目的。 Kp5zH46zRk为了显示相应的字符,必须将该字符转换成相应的段选码。这种转换也称为译码。译码可以采用硬件的方法,也可以采用软件的方法。设计中采用软件的方法进行译码。Yl4HdOAA61在总体电路中,显示电路是设计的主要部分[14],通过单片机的P0口,控制四位七段数码管的段码,而数码管的位码由P2.0、P2.2、P2.4、P2.6四个端口来分别控制显示数字的小数位、个位、十位、百位和符号位。在位码控制端通过单片机P2口输出的高低电平来选通数码管的显示位。ch4PJx4BlI数据显示模块选用LED数码管显示,电路图如图2-13所示:图2-13 数据显示模块2.2.4 温湿度采集模块DS18B20电源供电方式17/61个人资料整理 仅限学习使用DS18B20可以采用外部电源供电和寄生电源供电两种模式。外部电源供电模式是将DS18B20的GND直接接地,DQ与单总线相连作为信号线, VDD与外部电源正极相连。如图 2-14所示qd3YfhxCzo图2-14 温度采集模块DHT11是数字型温湿度传感器,可直接以数字方式传输所采集的当前环境温湿度,DHT11采用的是单总线通信,因此只需将单片机的与 DHT11的通信接口连接就可以实现数据的采集和传送,相对于其他电路来说比较简单。如图 2-15所示:E836L11DO5图2-15湿度采集模块2.2.5 按键模块键盘是标准的输入设备,实现键盘有两种方案:一是采用现有的一些芯片实现键盘扫描,如 8279、CII451、IMC9768等,二是用软件实现键盘扫描。使用现成的芯片可以节省 CPL的开销,但增加了成本,而用软件实现具有较强的灵活性,也只需要很少的 CPL开销,可以节省开发成本。本文便使用软件实现键盘的扫描。S42ehLvE3M常见的键盘可分为独立按键式键盘和行列扫描式键盘 [15]。独立按键式键盘应用在需要少量按键的情况,按键和单片机的 I/O 口线直接连接。而行列扫描式键盘用在按键需求较多的情形下,考虑到面向大多数人群,需操作简,所以18/61个人资料整理 仅限学习使用采用独立按键式键盘。501nNvZFis本次设计采用的是 4个独立式键盘来控制对基准值的调整 S1,S2,S3,S4,分别为加,减,切换,确定四个功能,如图 2-17所示:jW1viftGw9图2-17 按键模块2.2.6 电源模块用lm78/lm79系列三端稳压IC来组成稳压电源所需的外围元件极少,电路内部还有过流、过热及调整管的保护电路,使用起来可靠、方便,而且价格便宜。该系列集成稳压IC型号中的lm78或lm79后面的数字代表该三端集成稳压电路的输出电压,如lm7806表示输出电压为正6V,lm7909表示输出电压为负9V。xS0DOYWHLP本设计采用lm7805为电路提供正5V电压,如图2-18所示:图2-18电源模块2.3主控制电路和测温湿控制电路本次硬件的核心就是 AT89S51,其他的外围电路都是围绕它所设计的。数字温湿度传感器 DS18B20,DHT11的DQ,DATA口分别连接单片机 AT89S51的19/61个人资料整理 仅限学习使用P2.1,P3.7 口。显示电路就是把 LED和单片机的P0口分别相连,当温度或湿度高于预设值的时候蜂鸣器蜂鸣报警,增加单片机的输出能力,增加单片机的输出电流,故使用电阻排来完成。 LOZMkIqI0w2.4本章小结本章节主要介绍了硬件设计的元器件及其各部分电路的主要设计方法,并且详细的给出了各个模块 <电源模块、温湿度采集模块、按键模块、报警模块、单片机控制模块以及数据显示模块)的电路设计。 ZKZUQsUJed第3章温湿度检测仪的软件设计软件是整个控制系统设计的另一个重要环节,灵活性很强,可以根据系统的要求和功能而变化。在硬件结构一定的情况下,只要改变相应的软件就能实现一些不同的功能,单片机的智能性都是由软件实现。 dGY2mcoKtT在本系统中,软件结构采用模块化设计,各功能程序分别编写和调试。各模块调试成功后,再将所有模块连接起来,构成系统的软件。这样的设计有利于程序代码的优化,而且便于编程、调试和维护。 rCYbSWRLIA3.1系统软件设计的原则应用系统中的应用软件是根据系统功能要求设计的,应可靠实现系统的各种功能在本系统中,软件设计要求做到以下几点: FyXjoFlMWh(1>软件结构清晰、简捷、流程合理。(2>并功能程序实现模块化,子程序化。这样,既便于调试,连接,又便于移植,修改。(3>程序存储区,数据存储区要合理规划,既能节约内存容量,又使操作方便。(4>运行状态实现标志化管理。这个功能程序运行状态,运行结果以及运行要求都要设置状态标志以便查询,程序的转移、运行、控制都可通过状态标志条件来控制。TuWrUpPObX(5>经过调试修改后程序应进行规范化,出去修改的痕迹,以便于交流和借鉴,也为以后的软件模块化、标准化打下基础。 7qWAq9jPqE(6>实现全面软件抗干扰设计。软件抗干扰是单片机应用系统提高可靠性的20/61个人资料整理 仅限学习使用有利措施。3.2系统流程图在主程序中,当系统上电完成,定义寄存器等初始化操作后,首先判断按键是否有按下,并判断按键标志位,根据按键标志位显示温湿度上限,实时显示温湿度及进行报警程序。llVIWTNQFk根据温湿度监控系统功能,系统软件流程图如图3-1所示;开始初始化按键设置子程序温湿度采集子程序温湿度处理子程序读取成功温湿度数据是报警是否超限显示温湿度图3-1系统软件流程图3.3按键设置流程图虽然把按键子程序直接放在了主程序中,但是作为控制模块,按键程序仍然是比较重要的模块。按键设置过程中,流程如下图 3-2所示:yhUQsDgRT121/61个人资料整理 仅限学习使用开始按键是否按下S1S2S3S4增加减少切换确定图3-2按键设置流程图3.4温湿度采集流程图温湿度子程序流程如下图 3-3,3-4所示:开始初始化从18B20读字节向18B20写字节读取温度图3-3DS18B20温度采集流程图22/61个人资料整理 仅限学习使用开始定义数据端口,数据端口启动传输函数,连接复位读写函数测量湿度函数读取湿度图3-4DHT11湿度采集流程图3.5编程思想本次设计主要是能够实时显示出当前确切的温湿度,并且在高于预设值的时候能够发出蜂鸣。一旦接通电源,蜂鸣器报警。在程序设计中,分别定义温湿度参数,根据数据转换过来的数值,判断是否超过了预设值。 MdUZYnKS8I3.6本章小结本章节主要介绍了本次设计软件部分的流程图和主体编程思想。第4章 系统软硬件调试4.1硬件调试硬件调试主要是针对电源模块、温湿度信号采集处理模块和单片机控制显示部分的调试。主要分为两部分:上电前的调试和上电调试。 09T7t6eTno4.1.1 上电前的调试在上电前,必须确保电路中不存在短路或断路情况,这一工作是整个调试的第一步,也是非常重要的一个步骤。因为本设计用到多个电源,应该确保每个电源都连接正确。在这部分调试中主要使用的工具是万用表,用来检测电路中是否存在断路或者短路情况等。 e5TfZQIUB5通过万用表的检测,没有发现短路或断路的地方,且电源电路连接正23/61个人资料整理 仅限学习使用确,则电路基本正常,可以进行下一步的调试。 s1SovAcVQM4.1.2 上电调试在确保硬件电路正常,无异常情况下方可上电调试,上电调试的目的是检测电路是否接错,同时还要检测原理是否正确。 GXRw1kFW5s<1)电源模块的调试电源模块先不连接主电路,接上 220V电源后用万用表检测输出电压,测得±5V电压正确时才能接入主电路供电。 UTREx49Xj9<2)单片机显示及按键电路的调试编写一个直接显示的简单程序,用按键控制显示值,若显示正常且按键也有效,则说明电路正确。4.2软件调试在对硬件调试后再对软件进行调试,因为先对硬件检查没有问题的的情况下在对软件进行调试。软件调试是通过对用户程序的汇编、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程。程序运行后编辑,查看程序是否有逻辑的错误,然后画出相应的电路图,导入程序对其进行系统的仿真。8PQN3NDYyP本系统调试采用了ISISProfessional,和Keil软件,ISISProfessional主要用于系统的仿真,Keil用于程序的检错,两者结合,节省很多时间方便实用。 mLPVzx7ZNw软件的调试是一个模块一个模块地进行的,在每个模块调通的基础上,进行最后的联调,即对主程序进行调试。软件调试是直接在计算机上进行的,用的是 keil4 软件。程序编写出来后要进行编译,一般都会出现一些小问题,而导致编译出错,这就需要进行纠正。 Keil 自带出错提示,可以根据错误信息进行改正,当然这只是语法错误才会发现, 语法完全正确后编译结果如图 4-1 所示:AHP35hB02d24/61个人资料整理 仅限学习使用图4-1keil 编译图对于非语法错误,keil 是不能发现的,这里就用到 proteus 仿真软件了将单片机部分的电路搭建起来。将软件编译后生成的 HEX文件载入到 proteus中,就可以仿真,测试软件是否完全正确。 NDOcB141gT4.3整机联调各部分均测试完成后就可以进行整机连调了,先将所有电路搭建起来。然后下载程序,利用软件进行下载,其界面如图 4-2所示:1zOk7Ly2vA图4-2 程序下载界面25/61个人资料整理 仅限学习使用4.4本章小结本章节介绍了在软硬件调试中如何调试并达到本设计的基本要求。结 论大学的学习中,毕业设计是一个很重要的环节,是我们步入社会参与社会实践的很好锻炼,从最初的选题,开题构思,绘图,编程,仿真直到完成设计,这中间,查找资料,老师指导,同学交流,编写程序,直至仿真调试,以及硬件焊接,每一个过程都是一次成长和对自己的一次的检验。本次设计是基于单片机的温湿度设计,包括硬件电路和软件两部分。设计初对于单片机的应用并不是很了解,本科学习中初步接触过 C语言,由于本次设计需要硬件和软件两部分,因此我是从软件部分先开始的,然后才开始硬件电路的设计,是由于软件的不完美影响了硬件电路设计的不是很美观。fuNsDv23Kh在软件设计过程中,我基本是一步步开始学起的,在学习中遇到很多问题,经过老师的指点和同学的讨论,我学到了很多编程技巧,同时也掌握了一些编程思想。由于原器件的局限性,硬件电路不是很美观,其中一些电容和电阻并不是原理图中设计的大小,但是这并不影响结果,再画原理图的过程中我又进一步掌握了protel的基本应用,并有了较为深入的了解。通过本次设计,对于主要芯片AT89S51有了基本的了解,基本掌握了该芯片的基本功能。经过软件在硬件电路的挑时候,基本功能均能实现,如果把手放在传感器上面,温度和湿度会立即发生变化。tqMB9ew4YX参考文献杨文龙.单片机原理及应用[M].陕西:西安电子科技大学出版社,1995.张洪润,张亚凡.传感器技术与应用教程[M].北京:清华大学出版社,2005.彭立,张建洲,王少华.自适应温度控制系统的研制[J].东北师大学报(自然科学版>,1994,(01>9-11.HmMJFY05dE沙占友.智能集成温度传感器原理与应用[M].北京:机械工业出版社,2002.张冬林,李鑫,戴梅.基于DHT11的低成本蚕室温湿度自动控制系统设计[J]. 现代农业科技,2018,<18):14-15.ViLRaIt6sk26/61个人资料整理 仅限学习使用蔡美琴,张为民.MCS-51系列单片机系统及其应用[M].北京:高等教育出版社,1992.李建民.单片机在温度控制系统中的应用[J].江汉大学学报,1991,<11):6-7.[8] 何立民.MCS-51系列单片机应用系统设计系统配置与接口技术 [M].北京:航空航天大学出版社,1990.9eK0GsX7H1范风强,兰婵丽.单片机语言C51应用实战集锦[J].电子工业出版社,2005,<10):2-18.naK8ccr8VI刘春起.居室温湿度监控系统设计[J].石家庄职业技术学院报,2007,<15):4-6.[11] 张杰,赵旭.单片机实验教案改革初探 [J].实验科学与技术 2008,6(1>:86-88.[12] 刘东文.嵌入式温湿度控制器的研究与设计 [J]. 贵州大学学报 ,2007,<9):21-25. B6JgIVV9ao[13]WANGSHX,WUGN,JIANGW,etal.Theprincipleandilluminationappliesoflightemittingdiode[J].LightandLighting,2006,30(4>:32-35.P2IpeFpap5[14]IsaoTakahashi,TemperatureandHumidityMonitoringSystemDevelopment[J].IEEETransonIndAppl,1986,22(5>:820-827.3YIxKpScDM[15]XUTai-zhong,ZOUGao-Ping.Lowpowerdesignofportableelectronicsystem[J].ApplicationofMCUandEmbeddedSystem,2001(8>:11-13.gUHFg9mdSs致谢四年的大学生活接近尾声,我的毕业设计也顺利的完成了,这里首先向我的指导老师表示最诚挚的感谢,同时也感谢那些帮助过我的同学们。 uQHOMTQe79在本次的毕业设计中老师给我提供了极大的帮助,首先在一开始的选题中我便遇到了难题,由于当时选题的时候过于疏忽大意,没有认真的加以分析,其次,在毕业设计的过程中,老师不厌其烦的为我们讲解了毕业设计中可能出现的问题,同时每周要求见面一次,督促我们抓紧时间完成毕业设计,每次见27/61个人资料整理 仅限学习使用面都要求我详解上周所做的东西以及自己下周要做的东西,有问题或者不合理的地方便为我指出来,加以指导。老师认真负责的态度让我倍受感激。同时在此也感谢我的同学,解决了许多我在毕业设计中遇到的问题,给了我很大的帮助。在此向所有毕业设计的过程中给予我帮助的老师和同学最诚挚的谢意。IMGWiDkflP附录附录一程序#defineset_timerTH0=0xb1。TL0=0xdf。#include<reg51.h>#include<intrins.h>//typedefunsignedcharU8。/*definedforunsigned8-bitsintegervariable无符号8位整型变量*/WHF4OmOgAwtypedefsignedcharS8。/*definedforsigned8-bitsintegervariable有符号8位整型变量*/aDFdk6hhPdtypedefunsignedintU16。/*definedforunsigned16-bitsintegervariable无符号16位整型变量*/ozElQQLi4TtypedefsignedintS16。/*definedforsigned16-bitsintegervariable有符号16位整型变量*/CvDtmAfjiAtypedefunsignedlongU32。/*definedforunsigned32-bitsintegervariable无符号32位整型变量*/QrDCRkJkxhtypedefsignedlongS32。/*definedforsigned32-bitsintegervariable有符号32位整型变量*/4nCKn3dlMXtypedeffloatF32。/*singleprecisionfloatingpointvariable(32bits>单精度浮点数<32位长度)*/ijCSTNGm0EtypedefdoubleF64。/*doubleprecisionfloatingpointvariable(64bits>双精度浮点数<64位长度)*/vfB1pxanfk//#defineucharunsignedchar28/61个人资料整理 仅限学习使用#defineuintunsignedint#defineData_0_time4voidKeyProcessTask1(void>。voidKeyProcessTask2(void>。voidKeyProcessTask3(void>。voidKeyProcessTask4(void>。voiddisbuffer_shidu(void>。voiddisbuffer_wendu(void>。voiddisbuffer_shidu_alarm(void>。voiddisbuffer_wendu_alarm(void>。voiddisplay11(void>。voiddelay_ms(uchari>。voidalarm(void>。voidReadTemperature(void>。//////////////////////////////////**************************************/unsigneddataTemp1=0。unsignedcharc=0。unsignedchard=0。unsigneda[4]。//温度数值存放unsignedcharcodeditab[16]={0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9}。JbA9VhEou1sbitDQ=P2^1。////////////////////////////////sbitP3_7=P2^6。sbitP3_5=P2^4。sbitP3_3=P2^2。sbitP3_1=P2^0。#definedigit_1_onP3_1=0。29/61个人资料整理 仅限学习使用#definedigit_1_offP3_1=1。#definedigit_2_onP3_3=0。#definedigit_2_offP3_3=1。#definedigit_3_onP3_5=0。#definedigit_3_offP3_5=1。#definedigit_4_onP3_7=0。#definedigit_4_offP3_7=1。sbitcheck1=P1^0。sbitcheck2=P1^1。sbitcheck3=P1^2。sbitcheck4=P1^3。sbitBUZZER=P3^7。#defineBUZZERonBUZZER=0#defineBUZZERoffBUZZER=1////////////////////////////////U8wendu=40。U8alarm_flag。U8shidu=60。U8alarm_work。//U8alarm_flag。U8alarm_flag=1。U8NewKey3[3]={0,0,0}。U8NewKey1[3]={0,0,0}。U8NewKey2[3]={0,0,0}。U8NewKey4[3]={0,0,0}。U8dis_buff[4] 。//----------------------------------------------////----------------IO 口定义区--------------------////----------------------------------------------//30/61个人资料整理 仅限学习使用sbitP2_0=P3^6 。//----------------------------------------------////---------------- 定义区--------------------////----------------------------------------------//U8U8FLAG,k。U8U8count,U8temp。U8 U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata。X7Ahr18pJIU8U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp。b3zqXLCqXoU8U8comdata。U8outdata[5] 。// 定义发送的字节数U8indata[5] 。U8count,count_r=0。U8str[5]={"RS232"}。U16U16temp1,U16temp2。U8HaveKey。U8codeled_7[23]={0x80,0x9b,0x42,0x0a,0x19,0x0c,0x04,0x9a,0x00,0x18,0xff,
pZyytu5rc5有点01234567890xa0,0xbb,0x62,0x2a,0x39,0x2c,0x24,0xba,0x20,0x38,0xe4,0x31} 。DVyGZezsrM//无点0123456789SendData(U8*a>{outdata[0]=a[0] 。31/61个人资料整理 仅限学习使用outdata[1]=a[1] 。outdata[2]=a[2] 。outdata[3]=a[3] 。outdata[4]=a[4] 。count=1。SBUF=outdata[0]。}voidDelay(U16j>{ U8i 。for( 。j>0。j-->{for(i=0 。i<27。i++>。}}voidDelay_10us(void>{U8i 。i-- 。i-- 。i-- 。i-- 。i-- 。i-- 。}voidCOM(void>{U8i 。for(i=0 。i<8。i++>{32/61个人资料整理 仅限学习使用U8FLAG=2。while((!P2_0>&&U8FLAG++>。Delay_10us(>。Delay_10us(> 。Delay_10us(>。U8temp=0。if(P2_0>U8temp=1 。U8FLAG=2。while((P2_0>&&U8FLAG++>。超时则跳出for循环if(U8FLAG==1>break。判断数据位是0还是1如果高电平高过预定0高电平值则数据位为1U8comdata<<=1。U8comdata|=U8temp。 //0}//rof}//--------------------------------//----- 湿度读取子程序 ------------//--------------------------------//---- 以下变量均为全局变量--------//---- 温度高8位==U8T_data_H------//---- 温度低8位==U8T_data_L------//---- 湿度高8位==U8RH_data_H-----//---- 湿度低8位==U8RH_data_L-----//---- 校验8位==U8checkdata-----//---- 调用相关子程序如下----------//----Delay(> 。,Delay_10us(>。,COM(>。//--------------------------------33/61个人资料整理 仅限学习使用voidRH(void>{主机拉低18msP2_0=0。Delay(180> 。P2_0=1。总线由上拉电阻拉高主机延时20usDelay_10us(> 。Delay_10us(> 。Delay_10us(> 。Delay_10us(> 。主机设为输入判断从机响应信号P2_0=1。// 判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行if(!P2_0> //T!{U8FLAG=2。判断从机是否发出80us的低电平响应信号是否结束while((!P2_0>&&U8FLAG++>。U8FLAG=2。判断从机是否发出80us的高电平,如发出则进入数据接收状态while((P2_0>&&U8FLAG++>。数据接收状态COM(>。U8RH_data_H_temp=U8comdata。COM(>。U8RH_data_L_temp=U8comdata。COM(>。34/61个人资料整理 仅限学习使用U8T_data_H_temp=U8comdata。COM(>。U8T_data_L_temp=U8comdata。COM(>。U8checkdata_temp=U8comdata。P2_0=1。数据校验U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp>。RQxPvY3tFsif(U8temp==U8checkdata_temp>{U8RH_data_H=U8RH_data_H_temp。U8RH_data_L=U8RH_data_L_temp。U8T_data_H=U8T_data_H_temp。U8T_data_L=U8T_data_L_temp。U8checkdata=U8checkdata_temp。}//fi}//fi}//----------------------------------------------//main(>功能描述:AT89C5111.0592MHz 串口发//送温湿度数据,波特率9600//----------------------------------------------voidmain(>{// U8i,j 。//ucharstr[6]={"RS232"} 。/* 系统初始化*/35/61个人资料整理 仅限学习使用/*TMOD=0x21。//定时器T1使用工作方式2TH1=253。//设置初值TL1=253。TR1=1。//开始计时SCON=0x50。//工作方式1,波特率9600bps,允许接收ES=1。EA=1。//打开所以中断TI=0。RI=0。SendData(str> 。 // 发送到串口Delay(1>。 // 延时100US<12M晶振>*/TMOD=0x21。SCON=0x50。RI=0。TI=0。TH0=0x70。TL0=0x00。TR0=1。P3=0XFF。打开中断IP=0x10。// 中断优先级//PT0=0 。PS=1。TR1=1。ES =1。ET0=1。EA =1。while(1>{//------------------------调用温湿度读取子程序36/61个人资料整理 仅限学习使用RH(>。串口显示程序alarm(> 。ReadTemperature(> 。//--------------------------//--------------------------将显示数据发送至缓冲区KeyProcessTask1(>。KeyProcessTask2(>。KeyProcessTask3(>。KeyProcessTask4(>。if(HaveKey==1>{if(alarm_flag==3&&wendu<85>{wendu++。}if(alarm_flag==4&&shidu<99>{shidu++。}HaveKey=0。}if(HaveKey==2>{if(alarm_flag==3&&wendu>=1>{wendu--。}37/61个人资料整理 仅限学习使用if(alarm_flag==4&&shidu>=10>{shidu--。}HaveKey=0。}if(HaveKey==3>{alarm_flag++。if(alarm_flag>=5>{alarm_flag=1 。}HaveKey=0。}if(HaveKey==4>{alarm_work++。if(alarm_work>=2>{alarm_work=0。}HaveKey=0。}if(alarm_flag==4>{disbuffer_shidu_alarm(> 。}if(alarm_flag==1>38/61个人资料整理 仅限学习使用{disbuffer_wendu(> 。}if(alarm_flag==2>{disbuffer_shidu(> 。}if(alarm_flag==3>{disbuffer_wendu_alarm(> 。}str[0]=U8RH_data_H 。str[1]=U8RH_data_L 。str[2]=U8T_data_H 。str[3]=U8T_data_L 。str[4]=U8checkdata 。SendData(str> 。// 发送到串口读取模块数据周期不易小于2S//Delay(20000>。}//elihw}//mainvoidRSINTR(>interrupt4using2{U8InPut3。if(TI==1>// 发送中断{TI=0。if(count!=5>// 发送完5位数据{39/61个人资料整理 仅限学习使用SBUF=outdata[count] 。count++。}}if(RI==1> // 接收中断{InPut3=SBUF。indata[count_r]=InPut3 。count_r++。RI=0。if(count_r==5>// 接收完4位数据{数据接收完毕处理。count_r=0。str[0]=indata[0] 。str[1]=indata[1] 。str[2]=indata[2] 。str[3]=indata[3] 。str[4]=indata[4] 。P0=0。}}}voidKeyProcessTask1(void>{//uchari 。uchartemp1,temp2 。do // 读键值{40/61个人资料整理 仅限学习使用temp1=check3。temp2=check3。}while(temp1!=temp2> 。存储键值NewKey1[0]=NewKey1[1]。NewKey1[1]=NewKey1[2]。NewKey1[2]=temp1。键值处理if((NewKey1[0]!=NewKey1[1]>&&(NewKey1[1]==NewKey1[2]>&&(NewKey1[2]!=0>>5MxX1IxuU9{HaveKey=3。}}voidKeyProcessTask2(void>{//uchari 。uchartemp3,temp4 。do // 读键值{temp3=check2。temp4=check2。}while(temp3!=temp4> 。存储键值NewKey2[0]=NewKey2[1]。NewKey2[1]=NewKey2[2]。NewKey2[2]=temp3。键值处理41/61个人资料整理 仅限学习使用if((NewKey2[0]!=NewKey2[1]>&&(NewKey2[1]==NewKey2[2]>&&(NewKey2[2]!=0>>jIw5xs0v9P{HaveKey=2。}}voidKeyProcessTask3(void>{//uchari 。uchartemp5,temp6 。do // 读键值{temp5=check1。temp6=check1。}while(temp5!=temp6> 。存储键值NewKey3[0]=NewKey3[1]。NewKey3[1]=NewKey3[2]。NewKey3[2]=temp5。键值处理if((NewKey3[0]!=NewKey3[1]>&&(NewKey3[1]==NewKey3[2]>&&(NewKey3[2]!=0>>xEve2buwnw{HaveKey=1。}}voidKeyProcessTask4(void>42/61个人资料整理 仅限学习使用{//uchari 。uchartemp7,temp8 。do // 读键值{temp7=check4。temp8=check4。}while(temp7!=temp8> 。存储键值NewKey4[0]=NewKey4[1]。NewKey4[1]=NewKey4[2]。NewKey4[2]=temp7。键值处理if((NewKey4[0]!=NewKey4[1]>&&(NewKey4[1]==NewKey4[2]>&&(NewKey4[2]!=0>>KAvmyVYxCd{HaveKey=4。}}//***************** 时间显示扫描**************//voiddisplay11(void>{uchari 。P0=led_7[dis_buff[i]] 。digit_1_on 。i++。delay_ms(2>。P0=led_7[dis_buff[i]] 。43/61个人资料整理 仅限学习使用digit_1_off 。digit_2_on 。i++。delay_ms(2>。P0=led_7[dis_buff[i]] 。digit_2_off 。digit_3_on 。i++。delay_ms(2>。P0=led_7[dis_buff[i]] 。digit_3_off 。digit_4_on 。i=0。delay_ms(2>。digit_4_off 。}/////////////////////////////////////////////voidalarm(void>{if(U8T_data_H>=wendu&&alarm_work==0>{BUZZERon。}if(U8RH_data_H>=shidu&&alarm_work==0>{BUZZERon。}if(U8RH_data_H<shidu&&U8T_data_H<wendu&&alarm_work==0>Ywuu4FszRT44/61个人资料整理 仅限学习使用{BUZZERoff。}if(alarm_work==1>{BUZZERoff。}}//***************** 数据送到缓冲区**************//voiddisbuffer_shidu(void>{dis_buff[0]=U8RH_data_H/10+0x0b 。dis_buff[1]=U8RH_data_H%10 。dis_buff[2]=U8RH_data_L_temp/10+0x0b 。dis_buff[3]=0x16 。}voiddisbuffer_wendu(void>{dis_buff[0]=Temp1/10+0x0b 。dis_buff[1]=Temp1%10 。dis_buff[2]=ditab[c]+0x0b 。dis_buff[3]=0x15 。}voiddisbuffer_shidu_alarm(void>{dis_buff[0]=shidu/10+0x0b 。dis_buff[1]=shidu%10 。dis_buff[2]=0x0a 。dis_buff[3]=0x16 。45/61个人资料整理 仅限学习使用}voiddisbuffer_wendu_alarm(void>{dis_buff[0]=wendu/10+0x0b 。dis_buff[1]=wendu%10 。dis_buff[2]=0x0a 。dis_buff[3]=0x15 。}voiddelay_ms(uchari>{ucharj 。for(。i>0。i-->{for(j=0 。j<=120。j++>{
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- YC/T 593-2023打叶复烤加工服务能力评价办法
- LY/T 3389-2024植物新品种特异性、一致性、稳定性测试指南蚊母树属
- 2025年中考语文二模试卷-1
- 福建省厦门市一中2020届高三最后一模考试试题(语文解析版)
- (广东高考卷 自主命题6科)2022年广东省普通高中学业水平选择性考试高考物化生+政史地真题试卷及答案
- 白酒的生产工艺以大曲酒为例77课件
- 《风景园林招投标与概预算》试题A附参考答案详解(预热题)
- 2025年黑龙江省五常市辅警招聘考试试题题库含答案详解(研优卷)
- 2024-2025学年度下学期七年级历史期末复习+期末考试押题课件(一)-2024-2025学年度下学期七年级历史期末复习
- ARDS患者的液体管理策略2025
- 触电急救97课件
- T/CAQI 96-2019产品质量鉴定程序规范总则
- 浙江省六校联盟2025届高三下学期5月模拟考试英语试卷(含音频)
- 河南省青桐鸣大联考普通高中2024-2025学年高三考前适应性考试语文试题及答案
- 第22讲 杠杆 滑轮 2025年中考物理专题复习(广东)课件
- 火电厂安全培训
- 山东省烟台市、德州市、东营市三市东营2025年高考适应性考试烟台德州东营二模英语试卷+答案
- 护理带教教学课件
- 游泳馆合同协议书模板
- 山东财经面试试题及答案
- 2025年租房合同房东模板
评论
0/150
提交评论