




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于单片机空调温度控制系统设计作者姓名:杨耀武专业名称:信息工程指引教师:黄宇讲师摘要在自动控制领域中,温度检测与控制占有很重要地位。温度测控系统在工农业生产、科学研究和在人们生活领域,也得到了广泛应用。因而,温度传感器应用数量居各种传感器之首。当前,温度传感器正从模仿式向数字集成式方向飞速发展。本论文概述了温控器发展及基本原理,简介了温度传感器原理及特性。分析了DS18B20温度传感器优劣。在此基本上描述了系统研制理论基本,温度采集等某些电路设计,并对测温系统某些重要参数进行了讨论。同步在简介温度控制系统功能基本上,提出了系统总体构成。针对测温系统温度采集、接受、解决、显示某些总体设计方案进行了论证,进一步简介了单片机在系统中应用,分析了系统各某些硬件及软件实现。运用Proteus7.6进行了可行性仿真,运用单片机开发板验证在实际电路中能起到效果。实验证明,这套温度控制器具备较强可操作性,较好可拓展性,控制简朴以便。课题初步筹划是在普通环境下测温,系统设计及器件选取也正是在这个基本上进行。核心词:DS18B20单片机温度控制1602液晶显示AbstractIntheautomaticcontrolarea,temperaturemonitoringandcontrolinghaveaveryimportantposition.Thetemperaturemonitoringsystemhasawildlyapplyinginindustry,agriculture,sciencereasearchinganddailylifeofpeople.Therefore,thenumberofapplyingofthetemperaturemonitoringcomesfirstofallkindsofsensor.Atpresent,thetemperaturemonitoringistransformedfromanalogtypetodigitalintegratedtypewithaveryfastspeed.Thispaperintroducesthedevelopingandfundamentalofthetemperaturemonitoring,includingthecharacterofthiskindofsensor.ItalsoanalysestheadvantageanddisadvantageofthetemperaturemonitoringwhichnamedDS18B20.Onthatbasis,thepaperalsohasafurtheranalysisofthetheoreticalbasisofthesystemdevelopingandthecircuitdesignoftemperaturemonitoring.Besides,somediscussionsabouttheimportantparametersalsotookondesk.Atthesametime,theautherofthispaperalsoputsforwardthecompositionoftotalityaboutthissystem,whichincludingthedifferentfunctionofthethermometersystem.ThenadetailedanalysiswhichisabouttheapplyingofMicrocontrollersandtheapplyingofdifferentpartsmadebydifferenthardwaresandsoftwaresinthesystem.InordertocheckthemaneuverabilityandtheexpansibilityoftheMicrocontrollerssystem,theautherusedProteus7.6todothetestingandgotaprettygoodresult.Thissystemputsthetemperaturemeasuredinnormalsituationasaconfirmcondition.Alldesignandselectionofcomponentisalsobasedonthissuppose.keywords:DS18B20,Microcontrollers,TemeperatureControling,1602LiquidCrystalDisplay目录摘要 IAbstract II目录 III前言 11系统总体设计方案及功能 21.1温度传感器产品分类与选取 21.1.1惯用测温办法 21.1.2温度传感器产品分类 21.1.3温度传感器选取 41.2总体方案拟定 61.3系统实现框图 62系统单元电路设计 72.1系统工作原理 72.2系统有关硬件及模块简介 72.2.1温度采集电路 72.2.2信号解决与控制电路 82.2.3温度显示电路 92.2.4按键功能设立电路 102.2.5继电器控制电路 112.2.6存储数据电路 112.2.7报警、音乐电路 122.2.8电动机电路 123仿真软件简介 143.1KeiluVision2软件 143.2Proteus软件 154系统硬件设计 175系统软件设计 195.1DS18B20数据通信概述 195.2LCD1602液晶数据显示概述 215.2.1接口信号阐明 215.2.2控制器接口阐明 215.2.3控制接口时序阐明 235.3存储器24C02数据存储概述 245.3.1I2C总线定义 245.3.2I2C总线时序 245.3.3数据传送 255.4软件程序设计 256仿真及实验成果 286.1程序调试过程中遇到问题及解决办法 286.2调试成果 28总结 30道谢 31参照文献 32附件1系统硬件电路图 33附件2系统软件程序 34前言当代信息技术三大基本是信息采集控制(即温度控制器技术)、信息传播(通信技术)和信息解决(计算机技术)。温度控制器属于信息技术前沿尖端产品,特别是温度控制器被广泛用于工农业生产、科学研究和生活等领域,数量日渐上升。温度控制器是一种温度控制装置,它依照顾客所需温度与设定温度之差值来控制中央空调末端之水阀(风阀)及风机,从而达到变化顾客所需温度目。实现以上目办法理论上有诸多,但当前业界重要有机械式温度控制器及智能电子式两大系列。
普通风机盘管空调温控器基本上是一种独立闭环温度调节系统,重要由温度传感器、双位控制器、温度设定机构、手动三速开关和冷热切换装置构成。其控制原理是空调温控器依照温度传感器测得室温与设定值比较成果发生双位控制信号,控制冷热水循环管路电动水阀(两通阀或三通阀)开关,即用切断和打开盘管内水流循环方式,调节送风温度(供冷量)。
第一代空调温控器重要是电气式产品,空调温控器温度传感器采用双金属片或气动温包,通过“给定温度盘”调节预紧力来设定温度,风机三速开关和季节转换开关为泼档式机械开关。此类空调温控器产品普遍存在“温度设定分度值过粗”、“时间常数太大”、“机械开关易损坏”等问题。
第二代空调温控器为电子式产品,温度传感器采用热敏电阻或热电阻,某些产品温度设定和风速开关通过触摸键和液晶显示屏实现人机交互界面,冷热切换自动完毕,运算放大电路和开关电路实现双位调节。此类智能空调温控器产品改进了人机交互界面,解决了“温度设定分度值过粗”等问题,但仍存在“控制精度不高”、“时间常数大”、“操作较复杂”等问题。
当前国内外生产厂家正在研究开发第三代智能型室温空调温控器,应用新型控制模型和数控芯片实现智能控制。当前已有国内厂家生产出了智能型室温空调温控器,并已应用于实际工程。1系统总体设计方案及功能1.1温度传感器产品分类与选取温度是寻常生活中经常遇到一种物理量,它也是科研和生产中最常用、最基本常量之一。在诸多场合都需要对温度进行测控,而温度测控离不开温度传感器,因而,掌握对的测温办法及温度传感器用法极为重要。1.1.1惯用测温办法物体受热后温度就要升高,任何两个温度不同物体相接触都必然产生热互换,直到两者温度达到平衡为止。据此,可以选取某种温度传感器与被测物体接触进行温度测量,这种办法称为接触式测温。接触式测温惯用于较低温度测量。此外,物体受热后温度升高同步还伴有热辐射,因而,可运用温度传感器接受被测物体在不同温度下辐射能量不同来测量温度,这种测温办法称为非接触式测温。非接触式测温惯用于高温测量。1.1.2温度传感器产品分类当前,温度传感器没有统一分类办法。按输出量分类有模仿式温度传感器和数字式温度传感器。按测温方式分类有接触式温度传感器和非接触式温度传感器。按类型分类有分立式温度传感器、模仿集成式温度传感器和智能温度传感器(数字温度传感器)。模仿式温度传感器输出是随温度变化模仿量信号。其特点是输出响应速度较快和MPU(微解决器)接口较复杂。数字式温度传感器输出是随温度变化数字量,同模仿输出相比,它输出响应较慢,但容易与MPU接口。下面对工程中惯用温度传感器做简朴简介。1、热敏电阻式温度传感器电阻式温度传感器分为热电阻式温度传感器和热敏电阻温度传感器,她们特点是自身电阻值随温度而变化。热敏电阻式运用半导体材料制成敏感组件,普通所用热敏电阻温度传感器都是具备负温度系数热敏电阻,它电阻率受温度影响很大,并且随温度升高而减少,简称NTC。其长处是敏捷度高,体积小,寿命长,工作稳定,易于实现远距离;缺陷是互换性差,非线性严重。2、热电阻式温度传感器运用热电阻温度系数随温度变化特性而制成温度传感器。称为热电阻温度传感器。对于大多数金属导体,其电阻值都具备随温度升高而增大特性。由于纯金属温度系数比合金高,因而均采用纯金属作为热电阻组件。惯用金属导体材料有铂、铜、铁和镍。3、热电偶式温度传感器热电偶是一种老式温度传感器,其测温范畴普通为-50到+1600℃,最高可达+2800℃,并且有较高测量精度。此外,热电偶产品已实现原则化、系列化,使用时易于选取,可以便地用计算机做线性补偿,因而,至今在测温领域内仍被广泛使用。它理论基本是建立在热电效应上,将热能转化为电能。4、模仿集成温度传感器集成传感器是采用硅半导体集成工艺而制成,因而亦称硅传感器或单片集成传感器。模仿集成温度传感器是在20世纪80年代问世。它是将温度传感器集成在一种芯片上、可完毕温度测量及模仿信号输出功能专用IC,它属于最简朴一种集成温度传感器。模仿集成温度传感器重要特点是功能单一(仅测量温度)、测温误差小、价格低、响应速度快、传播距离远、体积小、微功耗,适合远距离测温、控温,不需要进行非线性校准。外围电路简朴,它是当前在国内外应用较为普遍一种集成传感器。5、智能温度传感器智能温度传感器(亦称数字温度传感器)是在20世纪90年代中期问世。智能温度传感器是微电子技术、计算机技术和自动测试技术结晶,它也是集成温度传感器领域中最具活力和发展前程一种新产品。当前,行许多知名集成电路生产已开发出上百种智能温度传感器产品。智能温度传感器具备如下三个明显特点:第一,能输出温度数据及有关温度控制量,适配各种微控制器(MCU);第二,能以最简方式构成高性价比、多功能智能化温度测控系统;第三,它是在硬件基本上通过软件来实现测试功能,其智能化限度也取决于软件开发水平。智能温度传感器内部都包括温度传感器、A/D传感器、存储器(或寄存器)和接口电路。有产品还带多路控制器、中央控制器(CPU)、随机存取储存器(RAM)和只读存储器(ROM)。1.1.3温度传感器选取在简介温度传感器选取原则之前,一方面简介在测控系统中选取传感器总原则,本原则合用于各种传感器选取。1、选取传感器总原则当代传感器在原理和构造上千差万别,如何依照详细测控目、测控对象以及测控环境合理地选取传感器,是单片机测控系统一方面要解决温度。当传感器选定之后,与之相配套测控电路也就可以拟定了。测控成果成败,在很大限度取决于传感器选取与否合理。作为单片机测控系统前向通道核心部件,在选取传感器时应考虑一下几种方面:(1)依照测控对象与测控环境拟定传感器类型一方面要考虑采用何种原理传感器,这需要分析多方面因素之后才干拟定。由于,虽然是测量同一物理量,也有各种原理传感器可供选取,哪一种原理传感器更为适当,则需要依照被测量对象特点和传感器使用条件综合考虑一下某些详细问题:1)传感器量程;2)被测位置对传感器体积规定;3)测量方式为接触式还是非接触式;4)传感器信号引出是有线还是无线;5)是购买传感器还是自行研制传感器以及价格因素等。在综合考虑上述因素之后就能拟定选取何种类型传感器,然后再考虑传感器详细性能指标。(2)敏捷度选取普通状况下,在传感器线性范畴内,但愿传感器敏捷度越高越好。(3)频率响应特性传感器频率响应特性决定了被测量频率范畴,传感器频率响应好,可测信号频率范畴就宽,传感器输出信号必要在容许频率范畴内保持不失真,事实上传感器响应总有一定得延迟,但愿延迟时间越短越好。(4)线性范畴传感器线形范畴是指输出信号与输入量成正比范畴。从理论上讲,在此范畴内敏捷度应保持定值。传感器线性范畴越宽,其量程越大,并且能保证一定测量精度。在选取传感器时,当传感器种类拟定之后一方面要看其量程与否满足规定。(5)稳定性传感器使用一段时间后,其性能保持不变化能力称为稳定性。影响传感器长期稳定性因素除传感器自身构造外,重要是传感器使用环境。因而,要使传感器具备良好稳定性,传感器必要要有较强环境适应能力。(6)精度选取精度是传感器一种重要性能指标,它是关系到整个测控系统测量精度一种重要环节。传感器精度越高,其价格越昂贵,因而,传感器精度只要能满足整个测控系统精度规定就可以了,不必选得太高。这样就可以在满足同一测量目诸多传感器中选取比较便宜和简朴传感器。2、温度传感器选取温度传感器技术被广泛应用于消费类电子产品、玩具、家用电子产品、工业测控系统以及个人计算机应用中。老式上分立式温度传感器是最惯用温度传感器元件,而集成温度传感器特点是测温误差小、价格低、响应速度快、传播距离远、体积小、微功耗,适合远距离测温、控温,不需要进行非线性校准,外围电路简朴,它是当前在国内外应用最为普遍一种温度传感器。综上所述,不同传感器具备不同应用场合,由于在温度测控系统中,传感器是前向通道核心部件,因而选取适当传感器是非常重要。选取原则要考虑温度范畴、温控精度、测温场合、价格等几方面因素。1.2总体方案拟定考虑到该制冷控制系统功能比较少,由单片机控制即可实现。而89C52单片机体积小、重量轻、抗干扰能力强、对环境规定不高、价格低廉、可靠性高、灵活性好,故本系统选取采用89C52单片机。在温度采集方面,采用单线数字温度传感器DS18B20进行数据采集。DSB18B20S数字温度计提供9到12位温度读数,批示器件温度信息通过单线接口送入DS18B20送出,因而从中央解决器到DS18B20仅需连接一条线和地,读写和完毕温度变换所需电源可以由数据线自身提供,甚至不需要外部电源。而总体方案和系统电路图方面基本上和热敏式传感器相似,只在数据采集方面有所差别。在上面也已经提及,热敏电阻式温度传感器互换性差,非线性严重。而数字温度传感器DS18B20接线简朴,数字输出量能直接作为单片机输入数据,同步考虑到只是在普通环境下测量,无论在敏捷度、线性范畴、稳定性,还是在精度方面,DS18B20强大功能已足够满足设计需要。但是DS18B20也有缺陷,就是软件实行方面比较复杂,但相对于模仿量输出硬件实现方面来说会简朴诸多。在本次设计中,温度数据采集用到传感器是DS18B20。1.3系统实现框图图1单片机控制温度调节系统构造图2系统单元电路设计2.1系统工作原理该空调控制系统用到89C52单片机作为系统CPU进行控制控制,由数字传感器DS18B20进行数据采集,89C52对采集到数据进行解决,得到各种信号。而这些信号将分别作为1602液晶显示信号输入、启动报警装置信号输入和启动制冷设备、电暖设备输入。同步将运用单片机其他使能端口实现系统复位,手动调节和自动调节。2.2系统有关硬件及模块简介2.2.1温度采集电路本系统中采集温度使用是DS18B20数字温度传感器。DS18B20是Dallas半导体公司生产世界上第一片支持“一线总线”接口温度传感器。与之前传感器相比,DS18B20体积更小、合用电压更宽、更经济。一线总线独特并且经济特点,使顾客可轻松地组建传感器网络,为测量系统构建引入全新概念。DS18B20“一线总线”数字化温度传感器支持“一线总线”接口,测量温度范畴为-55℃到+125℃,在-10到+85℃范畴内,精度为±0.5℃。现场温度直接以“一线总线”数字方式传播,大大提高了系统抗干扰性。适合于恶劣环境现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。与前一代产品不同,新产品支持3V到5.5V电压范畴,使系统设计更灵活、以便。并且新一代产品更便宜,体积更小。DS18B20可以程序设定9到12位辨别率,精度为±0.5℃。当辨别率为12位时,转换时间为750ms。使得顾客可选取更小封装方式,更宽电压合用范畴和辨别率设定,同步顾客设定报警温度存储在EEPROM中,掉电后依然保存。DS18B20普通为三极管型封装,其引脚图如图4所示。这三个引脚分别为:GND——电源地;QD——数字信号输入/输出端;VDD——外接供电电源(可选5V)。图2.1DS18B20引脚图在该系统中,DS18B20数字信号输入/输出端连接到89C52P2.3中,作为89C52数据输入。2.2.2信号解决与控制电路信号解决与控制采用52单片机基本电路。此电路以52单片机为核心,52详细引脚图如图2.2。图2.289C52引脚图在该系统中,要使单片机实现信号解决与控制,则要使单片机20脚(GND)接地,40脚(Vcc)和31脚(/EA)接正5V电源。18、19脚(XTAL2、XTAL1)接12MHz晶振和两个电容,构成片内振荡电路,为单片机提供时钟脉冲。9脚(RST)接按键复位电路,提供复位信号给单片机。89C52芯片内部有一种高增益反相放大器,用于构成振荡器。反相放大器输入端为XTAL1,输出端为XTAL2,两端跨接石英晶体及两个电容就可以构成稳定自激振荡器。两个电容普通取30pF左右,稳定频率并对震荡频率有微调作用。如图2.3所示。图2.3时钟电路手动复位是通过接通一按钮开关,使单片机进入复位状态。系统上电运营后,若需要复位,则通过手动复位来实现。如图2.4所示。图2.4复位电路2.2.3温度显示电路本系统中,温度显示硬件由lcd1602液晶和上拉电阻构成。1602采用原则14脚接口,其中:涉及8根数据线(D0-D7),三根控制线(rs,rw,e)电源地,电源以及液晶驱动电压引脚(VSS,VDD,VEE)。液晶显示原理是运用液晶物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。液晶显示屏具备厚度薄、合用于大规模集成电路直接驱动、易于实现全彩色显示特点,当前已经被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。图2.5液晶显示电路2.2.4按键功能设立电路温度调节由三个不锁按键电路实现。电路图如图2.6所示。按键K1一端与单片机外部中断0(/INT0,12脚)相连,另一端接地。其功能是当按键按下一次时,给单片机一种低电平,进入温度设定状态;再次按下时,进入风速设计状态,再次按下时则退出温度设定状态。按键K2、K3,一端接地,另一端与单片机13脚、14脚相连,其功能是每按下一次按键,显示设定值加1或减1。图2.6温度设立电路2.2.5继电器控制电路继电器控制电路由两个继电器构成,由单片机P3.0、P3.1输出控制信号,控制继电器。在该系统中,当温度超过设定值,单片机P3.1输出高电平,驱动制冷电路继电器,启动制冷设备。当温度低于设定值时,单片机P3.0输出高电平,驱动供暖继电器,启动电暖设备。当不满足条件时,不工作。继电器是一种电控制器件。它具备控制系统(又称输入回路)和被控制系统(又称输出回路)之间互动关系。普通应用于自动化控制电路中,它事实上是用小电流去控制大电流运作一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。图2.7继电器原理图2.2.6存储数据电路储存数据电路由24C02芯片构成,有256字节,由单片机P3.5、P3.6输出信号。在该系统中,每隔20ms记录一次测得温度,实现实时温度存储。24C02是串行E2PROM,基于I2C-BUS存储器件,遵循二线制合同,由于其具备接口以便,体积小,数据掉电不丢失等特点,在仪器仪表及工业自动化控制中得到大量应用。2.2.7报警、音乐电路蜂鸣器是一种一体化构造电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定期器等电子产品中作发声器件。由单片机P3.7输出信号。蜂鸣器重要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。通过输出方波,这个方波输入进蜂鸣器就会产生声音,通过控制方波频率、时间,还能产生简朴音乐。图2.8蜂鸣器报警电路2.2.8电动机电路步进电机由单片机P1.4、P1.5、P1.6、P1.7输出信号。是将电脉冲信号转变为角位移或线位移开环控制元步进电机件。在非超载状况下,电机转速、停止位置只取决于脉冲信号频率和脉冲数,而不受负载变化影响,当步进驱动器接受到一种脉冲信号,它就驱动步进电机按设定方向转动一种固定角度,称为“步距角”,它旋转是以固定角度一步一步运营。可以通过控制脉冲个数来控制角位移量,从而达到准拟定位目;同步可以通过控制脉冲频率来控制电机转动速度和加速度,从而达到调速目。普通电机转子为永磁体,当电流流过定子绕组时,定子绕组产生一矢量磁场。该磁场会带动转子旋转一角度,使得转子一对磁场方向与定子磁场方向一致。当定子矢量磁场旋转一种角度。转子也随着该磁场转一种角度。每输入一种电脉冲,电动机转动一种角度迈进一步。它输出角位移与输入脉冲数成正比、转速与脉冲频率成正比。变化绕组通电顺序,电机就会反转。因此可用控制脉冲数量、频率及电动机各相绕组通电顺序来控制步进电机转动。图2.9步进电机工作原理图3仿真软件简介3.1KeiluVision2软件Keilc51开发工具提供数个十分有用特性,可以协助你迅速地成功开发嵌入式应用。这些工具使用简朴并保证你达到你设计目uVision2IDE是一种基于Window开发平台,包括一种高效编辑器,一种项目管理器和一种MAKE工具。uVision2支持所有KEIL8051工具,涉及C编译器,宏汇编器,连接/定位器,目的代码到HEX转换器。uVision2通过如下特性加速你嵌入式系统开发过程:全功能源代码编辑器。器件库用来配备开发工具设立。项目管理器用来创立和维护你项目。集成MAKE工具可以汇编,编译和连接你嵌入式应用。所有开发工具设立都是对话框形式。真正源代码级对CPU和外围器件调试器。高档GDI(AGDI)接口用来在目的硬件上进行软件调试,以及和Monitor-51进行通信。与开发工具手册和器件数据手册和顾客指南有直接链接。uVision2界面提供一种菜单,一种工具条以便你迅速选取命令按钮,此外尚有源代码显示窗口,对话框和信息显示。uVision2容许同步打开浏览各种源文献。图3.1keiluVision2软件界面3.2Proteus软件Proteus是英国Labcenter公司开发电路及单片机系统设计与仿真软件。Proteus可以实现数字电路、模仿电路及微控制器系统与外设混合电路系统电路仿真、软件仿真、系统协同仿真和PCB设计等功能。Proteus是当前唯一能对各种解决器进行实时仿真、调试与测试EDA工具,真正实现了在没有目的原形时就可对系统进行调试、测试和验证。Proteus软件大大提高了公司产品开发效率,减少了开发风险。Proteus重要由两个设计平台构成:ISIS(IntelligentSchematicInputSystem)——原理图设计与仿真平台,它用于电路原理图设计以及交互式仿真。ARES(AdvancedRoutingandEditingSoftware)——高档布线和编辑软件平台,它用于印制电路板设计,并产生光绘输出文献。 在Proteus中,从原理图设计、单片机编程、系统仿真到PCB设计可以一气呵成,具备从概念到产品完整设计能力。ProteusISIS工作界面是一种原则Windows界面,如图所示。涉及:标题栏、主菜单、原则工具栏、绘图工具栏、状态栏、对象选取按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选取器窗口、图形编辑窗口。图3.2ProteusISIS软件界面4系统硬件设计拟定了有关模块功能、功能以及用到器件后,系统做如下连接设计:图4.1总体硬件电路图其中各引脚相应端口如下表所示:表4.1单片机引脚与各器件相应表接口相应器件引脚接口相应器件引脚P0.0接LCD1602D0端P2.4空置P0.1接LCD1602D1端P2.5接LCD1602RS端P0.2接LCD1602D2端P2.6接LCD1602R/W端P0.3接LCD1602D3端P2.7接LCD1602E端P0.4接LCD1602D4端P3.0接warm继电器端接口相应器件引脚接口相应器件引脚P0.5接LCD1602D5端P3.1接cool继电器端P0.6接LCD1602D6端P3.2接S1按键P0.7接LCD1602D7端P3.3接S2按键P1.0空置P3.4接S3按键P1.1空置P3.5接24C02SCK端P1.2空置P3.6接24C02SDA端P1.3空置P3.7接蜂鸣器报警电路P1.4接步进电机A极XTAL1接晶振时钟电路P1.5接步进电机B极XPAL2接晶振时钟电路P1.6接步进电机C极RST接复位电路P1.7接步进电机D极空置P2.0空置ALE空置P2.1空置空置P2.2空置VCC接电源P2.3接DS18B20DQ端GND接地5系统软件设计5.1DS18B20数据通信概述和DS18B20通信,其命令序列有3步:初始化、ROM命令(跟随需要互换数据)和功能命令(跟随需要互换数据)。每次访问DS18B20,必要严格遵守这个命令时序,如果浮现序列混乱,则单总线则单总线器件不会响应主机。这个准则对于搜索ROM命令和报警搜索命令例外,在执行两者中任何一条命令之后,主机不能执行其后功能命令,而必要返回至第一步。1.初始化单总线上所有传播过程都是以初始化开始,初始化过程由主机发出复位脉冲和从机响应应答脉冲构成,应答脉冲使主机懂得总线上有从机设备且准备就绪。2.ROM命令在主机检测到应答脉冲后,就可以发出ROM命令。ROM命令与各个从机设备唯一64位ROM代码有关,容许主机在单总线上连接各种从机设备时,指定操作某个从机设备。ROM命令还容允许以检测到总线上有多少个从机设备及其设备类型,或者有无设备处在报警状态。(1)搜索ROM[F0h]当系统初始上电时,主机必要找出总线上所有从机设备ROM代码,这样主机才可以判断出从机数目和类型。主机通过重复执行搜索ROM循环(搜索ROM命令跟随着位数据互换),以找出总线上所有从机设备。如果总线只有一种从机设备,则可以采用读ROM命令来代替搜索ROM命令。在每次执行完搜索ROM循环后,主机必要返回至命令序列第一步:初始化。(2)读ROM[33h](仅适合于单节点)该命令仅合用于总线上只有一种从机设备,它容许主机直接读出从机64位ROM代码,而不必执行搜索ROM过程。如果该命令用于多节点,系统则必然发生数据冲突,由于每个从机设备都会响应当命令。(3)匹配ROM[55h]匹配ROM命令跟随64位ROM代码,从而容许主机访问多节点系统中某个指定从机设备。仅当从机完全匹配64位ROM代码时,才会响应主机随后发出功能命令,其她设备将处在等待复位脉冲状态。(4)跳跃ROM[CCh](仅适合于单节点)主机可以采用该命令同步访问总线上所有从机设备,而不必发出任何ROM代码信息。例如,主机通过在发出跳越ROM命令后,跟随转换温度命令[44h]就可以同步命令总线上所有DS18B20开始转换速度,这样大大节约了主机时间。注意:如果跳越ROM命令跟随是读操作命令,则该命令只能应用于单节点系统,否则将由于各种节点都响应当命令而引起数据冲突。(5)报警搜索[Ech]除那些设立了报警标志从机响应外,该命令工作方式完全等同于搜索ROM命令,该命令容许主机设备判断哪些从机设备发生了报警(如近来测量温度过高或过低等)。同搜索ROM命令同样,在完毕报警搜索循环后,主机必要返回至命令序列第一步。3.功能命令在主机发出ROM命令,以访问某个指定DS18B20,接着就可以发出DS18B20某个功能命令。这些命令容许主机写入或读出DS18B20存储器,启动温度转换以及判断从机供电方式。(1)读RAM存储器[BEh]此命令读RAM存储器内容,开始读字节0,并继续读到第九个字节(CRC)。如果不是所有位置均可读,那么主机可以再任何时候发出一复位命令以中断读操作。(2)复制RAM存储器(48h)此命令读RAM存储器内容,开始读字节0,并继续读到第九个字节(CRC)。如果不是所有位置均可读,那么主机可以再任何时候发出一复位命令以中断读操作。(3)重新调出EERAM[B8h]此命令把存储在EERAM中TH、TL、CONF值重新调至RAM存储器。这种重新调出操作在对DS18B20上电时也自动发生,因而只要器件一接电,暂存存储器内就有有效数据可供使用。(4)读电源[B4h]在此命令送至DS18B20之后最先发出读数据时间片,器件都会给其电源方式信号:0=强上拉电阻供电;1=电源供电。(5)写RAM存储器[44h]写数据到RAM存储器,地址为第2、第3、第4字节(TH、TL、CONF)。(6)温度变换[44h]此命令开始温度变换,不需要此外数据。温度变换将被执行,接着DS18B20便保持在空闲状态。5.2LCD1602液晶数据显示概述5.2.1接口信号阐明表5.1编号符号引脚阐明编号符号引脚阐明1VSS电源地9D2DataI/O2VDD电源正极10D3DataI/O3VL液晶显示偏压信号11D4DataI/O4RS数据/命令选取端(H/L)12D5DataI/O5R/W读/写选取端(H/L)13D6DataI/O6E使能信号14D7DataI/O7D0DataI/O15BLA背光源正极8D1DataI/O16BLK背光源负极5.2.2控制器接口阐明1、基本操作时序读状态:输入:RS=L,RW=H,E=H 输出:D0~D7=状态字写指令:输入:RS=L,RW=L,D0~D7=指令码,E=高电平 输出:无读数据:输入:RS=H,RW=H,E=H 输出:D0~D7=数据写数据:输入:RS=H,RW=L,D0~D7=数据,E=高脉冲 输出:无2、状态字阐明表5.2STA7D7STA6D6STA5D5STA4D4STA3D3STA2D2STA1D1STA0D0STA0-6当前数据地址指针数值STA7读写操作时能1:禁止0:容许注:对控制器每次进行读写操作前,都必要进行读写检测,保证STA7为03、指令阐明表5.3显示模式设立指令码功能00111000设立16×2显示,5×7点阵,8位数据口表5.4初始化设立指令码功能00001DCBD=1开显示;D=0关显示C=1显示光标;C=0不显示光标B=1光标闪烁;B=0光标不显示000001NSN=1当读或写一种字符后地址指针加一,且光标加一N=0当读或写一种字符后地址指针减一,且光标减一S=1当写一种字符,整屏显示左移(N=1)或右移(N=0),以得到光标不移动而屏幕移动效果。S=0当写一种字符,整屏显示不移动4、数据控制控制器内部设有一种数据地址指针,顾客可通过她们来访问内部所有80字节RAM。表5.5数据指针设立指令码功能80H+地址码(0-27H,40H-67H)设立数据地址指针5.2.3控制接口时序阐明1.读操作时序图5.12.写操作时序图5.25.3存储器24C02数据存储概述5.3.1I2C总线定义1、是PHLIPS公司推出一种两线制串行总线,简朴地说,就是用于连接到总线器件间传递信息通道。2、是一种多主机总线,具备多主机系统所需涉及总线裁决和高低速器件同步功能高性能串行总线。3、是一种双向两线总线,涉及一条串行数据线(SDA),一条串行时钟线(SCL),总线空闲时这两条线路都是高电平。I2C总线上所有外围器件均有规范器件地址,器件地址由7位构成。主机发送地址时,总线上每个从机都将这7位地址码与自己地址进行比较,如果相似,则以为自己正被主机寻址,依照R/W位将自己拟定为发送器或接受器。其格式如下:表5.6D7D6D5D4D3D2D1D0DA3DA2DA1DA0A2A1A0R/W其中DA3~DA0是器件地址为厂家设立,A2~A0为引脚地址,最多可连8个,R/W位为数据传播方向控制位。5.3.2I2C总线时序1、只有在总线空闲时才容许启动数据传送。图5.3I2C总线时序图2、在数据传送过程中,当时钟线为高电平时,数据线必要保持稳定状态,不容许有跳变。时钟线为高电平时,数据线任何电平变化将被看做总线起始或停止信号。起始信号:时钟线保持高电平期间,数据线电平从高到低跳变作为I2C总线起始信号。停止信号:时钟线保持高电平期间,数据线电平从低到高跳变作为I2C总线停止信号。5.3.3数据传送I2C总线上数据传送每一帧数据均为一字节。但启动I2C总线后,传送字节数没有限制,只规定每传送一字节后,对方回答一种应答位。有关响应时钟脉冲由主机产生,在响应时钟脉冲期间发送器释放SDA线拉高。作为响应,在时钟脉冲期间接受器必要将SDA线拉低,使它在这个时钟脉冲高电平期间保持稳定低电平。图5.4数据传送时序5.4软件程序设计1、模块流程图 1.1主程序模块流程图(图5.5) 1.2DS18B20通讯模块流程图(图5.6) 1.3键扫描模块流程图(图5.7)图5.5主程序流程图图5.6DS18B20通讯模块流程图图5.7键扫描模块流程图6仿真及实验成果6.1程序调试过程中遇到问题及解决办法1.较小硬件开销需要相对复杂软件进行补偿,由于DS18B20与微解决器采用串行数据传送,因而,在对DS18B20进行读写编程时,必要严格保证读写时序,否则将无法读取测温成果。2.在DS18B20测温程序设计中,向DS18B20发出温度转换命令后,程序总要等待DS18B20返回信号,一旦某个DS18B20接触不好或断线,当程序读该DS18B20时,将没有返回信号,程序进入死循环。这一点在进行DS1820硬件连接和软件设计时也要予以一定注重。3.编程时要注意,在程序开始时,要写入各定期器中断入口地址。4.编程过程中要注意加注释或分割线,否则,在程序过长时容易变得很乱,不便于查找或更改。5.程序构造要设计合理,避免上下乱调用现象,这样会使程序更加清晰化。6.编程前要加流程图,这样会使思路清晰。6.2调试成果图6.1开发板上显示成果图6.2仿真电路及成果图6.3开发板上实验成果
总结近三个月毕业设计即将结束,这意味着咱们大学生活也要结束了,但我学习没有结束,在本次设计中,我所学过理论知识接受了实践检查,增强了我综合运用所学知识能力及动手能力,为后来学习工作打下了良好基本。本设计使用AT80C52作为主控芯片进行控制,单片机具备集成度高,通用性好,功能强,特别是体积小,重量轻,耗能低可靠性高,抗干扰能力强和使用以便等独特长处,在数字、智能化方面有广泛用途。其中温度控制系统采用DS18B20“一线总线”数字化温度传感器,支持“一线总线”接口,大大提高了系统抗干扰性测量温度范畴为-55℃到+125℃,在-10到+85℃范畴内,精度为±0.5℃。并且体积小价格实惠,温度设定采用按键设定,风速控制则由步进电机转速控制得以实现,软件算法采用设定值和测量值相比较算法。在单片机应用基本上,实现了一种用带有EEPROMAT89C52单片机控制传感器自动化温度监控系统。最后敬请各位专家、教师和同窗对论文和此后研究工作提出宝贵指引意见和建议。
道谢在几种月学习研究中,课题受到了许多教师和同窗热心关注和支持。她们对空调温度控制系统研究开发提出了宝贵意见,并在物质和精神上予以了大力支持。在我即将结束对课题研究时,整个系统硬件和软件系统已初步成型,并通过了实验,这与支持我教师和同窗关怀是分不开。衷心感谢我导师教师,正是由于黄宇教师悉心指引和谆谆教诲,我设计才得以顺利完毕。黄教师渊博知识、丰富科研经验、不计名利、兢兢业业治学精神使我受益非浅。她无私奉献高贵品质和平易近人长者作风,使我在学习科学知识同步也学会了做人道理。至此论文完毕之际,谨向教师表达由衷感谢。特别感谢我父母,无论我在顺境还是逆境,她们始终是我最坚强后盾,感谢她们对我近年培养和支持。最后感谢所有曾经勉励过我,协助过我人们。
参照文献姜志海,黄玉清,刘连鑫.单片机原理及应用(第2版)[M].电子工业出版社,.魏泽鼎.单片机应用技术与实例[M].电子工业出版社,.宋亚伟.基于DS18B29温度控制采集系统[J].机电工程技术,,37(09):89-91.齐建家,胡天明.基于DS18B20数字温度设计及其应用[J].黑龙江工程学院学报,,22(2):59-62.张洪润,张亚凡.单片机原理及应用[M].清华大学出版社,.李玉峰.MCS-51系列单片机原理与接口技术[M].人民邮电出版社,.马忠梅.单片机C语言应用程序设计[M].北京航空航天大学出版社,.附件1系统硬件电路图附件2系统软件程序/************************************************文献名 :温度采集DS18B20.C*描述 :实现用温度传感器DS18B20对温度采集 并用1602液晶显示*创立人 :杨耀武*教师 :黄宇***********************************************/#include<reg52.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedint#definejump_ROM0xcc#definestart0x44#defineread_EEROM0xbesbitscl=P3^5; //24c02SCLsbitsda=P3^6; //24c02SDAsbitDQ=P2^3; //DS18B20数据口sbitE=P2^7; //1602使能引脚sbitRW=P2^6; //1602读写引脚sbitRS=P2^5; //1602数据/命令sbitbeep=P3^7; //蜂鸣器报警sbits1=P3^2; //功能选取按键sbits2=P3^3; //温度加sbits3=P3^4; //温度减sbitwarm=P3^0; //升温继电器sbitcool=P3^1; //降温继电器ucharTMPH,TMPL,Count1,Count2,T,xie,s1num,s2num,s3num,BusyC;uinttemp,speed;ucharcodetable1[] ={"SETTINGT:22'C"};ucharcodetable2[]={"SP:LT:.-'C"};ucharcodedistab[]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04, 0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};uchardatadisplay[]={0x00,0x00,0x00,0x00,0x00};ucharcodeF_Rotation[]={0x20,0x60,0x40,0xc0,0x80,0x90,0x10,0x30};//正转表格ucharx24c02_read(ucharaddress);voidx24c02_write(ucharaddress,ucharinfo);voidkeyscan(void);//软件延时/************************************************名称:flash()*功能:延时大概为2US*输入:无*输出:无***********************************************/voidflash(void){ _nop_(); _nop_();}/************************************************名称:delay_16us(uintA)单位us*功能:当使用11.0592MHz晶振时候调用大概要耗时24 us,每次计数耗时约为16us*输入:要延时时间(Ax16)*输出:无***********************************************/voiddelay_16us(uintN){ inti; for(i=0;i<N;i++);}/************************************************名称:delay_1ms(uintA)单位us*功能:当使用11.0592MHz晶振时候每次计数延时约1ms*输入:要延时时间ams*输出:无***********************************************/voiddelay_1ms(uinta){ inti,j; for(i=a;i>0;i--) for(j=110;j>0;j--);}//定期器延时/************************************************名称:Time1_Init()*功能:定期器初始化,11.0592MZ晶振,10ms*输入:无*输出:无***********************************************/voidTime1_Init(){ TMOD=0x10; IE =0x88; TH0=0xb8; TL0=0x00; }/************************************************名称:Time1_Int()*功能:定期器中断,中断中实现Count加一*输入:无*输出:无***********************************************/voidTime1_Int()interrupt3{ TH0=0xb8; TL0=0x00; Count2++; if(Count2==50) { Count2=0; xie=1; //20ms写一次 } }//DS18B20测温显示/************************************************名称:Reset()*功能:复位DS18B20*输入:无*输出:无***********************************************/ucharReset(void){ ucharreceive_data; DQ=0; //把DQ拉低 delay_16us(29); //持续480us DQ=1; //使DQ回高 delay_16us(3); //等存在脉冲 receive_data=DQ; //得存在脉冲 delay_16us(25); return(receive_data);//返回时隙信号}/************************************************名称:read_bit读一位*功能:从DS18B20读一种位值*输入:无*输出:一位位值***********************************************/ucharread_bit(void){ uchari; DQ=0; //读开始 DQ=1; for(i=0;i<3;i++); //延时约15us return(DQ);}/************************************************名称:write_bit()写一位*功能:向DS18B20写一种位值*输入:bitval(要对DS18B20写入位值)*输出:无***********************************************/voidwrite_bit(ucharbitval){ DQ=0; //拉低DQ开始写时隙 if(bitval==1) //若写1就拉高DQ,否则反之 DQ=1; delay_16us(5); //延时采样 DQ=1;}/************************************************名称:read_byte()读一字节*功能:从DS18B20读一种字节值*输入:无*输出:读到一种字节值***********************************************/ucharread_byte(void){ uchari,j,receive_data8; j=1; receive_data8=0; for(i=0;i<8;i++) { if(read_bit()) { receive_data8=receive_data8+(j<<i); } delay_16us(6); } return(receive_data8);}/************************************************名称:write_byte()写一字节*功能:向DS18B20写一种字节值*输入:val(要对DS18B20写入命令值)*输出:无***********************************************/voidwrite_byte(uintval){ uchari,temp; for(i=0;i<8;i++) { temp=val>>i; //分8次实现写操作 temp=temp&0x01; //只保存末位,实现bit输入 write_bit(temp); delay_16us(5); }}/************************************************名称:tmp()*功能:获得十进制温度值*输入:无*输出:display[]***********************************************/voidtmp(void){ ucharn; n=0; Reset(); write_byte(jump_ROM); write_byte(start); Reset(); write_byte(jump_ROM); write_byte(read_EEROM); TMPL=read_byte(); TMPH=read_byte(); if(TMPH>127) { TMPH=(255-TMPH); TMPL=(255-TMPL+1); n=1; } display[4]=TMPL&0x0f; display[0]=distab[display[4]]; display[4]=((TMPL&0xf0)>>4)|((TMPH&0x0f)<<4); display[3]=(display[4]/100); display[2]=(display[4]%100)/10; display[1]=(display[4]%100)%10; if(n) display[3]=0x2d;}//1602液晶显示/************************************************名称:enable_1602()*功能:1602命令输入*输入:命令值*输出:无***********************************************/voidenable_1602(uchara){ P0=a; RS=0; RW=0; E=0; delay_1ms(20); E=1; delay_1ms(20);}/************************************************名称:write_1602()*功能:1602数据写入*输入:写入数据*输出:无***********************************************/voidwrite_1602(uchara){ P0=a; RS=1; RW=0; E=0; delay_1ms(20); E=1; delay_1ms(20);}/************************************************名称:L1602_init()*功能:初始化1602*输入:无*输出:无***********************************************/voidL1602_init(void){ ucharnum,i; enable_1602(0x01); //清屏 enable_1602(0x38); //初始化5x7显示 enable_1602(0x0c); //开或关光标设立 enable_1602(0x06); //地址指针加1 enable_1602(0x80); for(num=0;num<14;num++) { write_1602(table1[num]); delay_1ms(5); } enable_1602(0xc0); for(num=0;num<7;num++) { write_1602(table2[num]); delay_1ms(5); } for(i=3;i>0;i--) { write_1602(0x30+display[i]); delay_1ms(5); } write_1602(table2[10]); delay_1ms(5); write_1602(0x30+display[0]); delay_1ms(5); for(num=12;num<14;num++) { write_1602(table2[num]); delay_1ms(5); }}/************************************************名称:L1602_char(ucharhang,ucharlie,ucharsign)*功能:变化液晶中某位值,如果要让第一行,第五个 字符显示"b",调用该函数如:L1602_char(1,5,'b')*输入:行,列,要输入1602数据*输出:无***********************************************/voidL1602_char(ucharhang,ucharlie,ucharsign){ uchara; if(hang==1)a=0x80; if(hang==2) a=0xc0; a=a+lie-1; //设立数据指针 enable_1602(a); write_1602(sign);}/************************************************名称:L1602_string(ucharhang,ucharlie,uchar*p)*功能:变化液晶中某位值*输入:行,列,要输入1602数据*输出:无***********************************************/voidL1602_string(ucharhang,ucharlie,uchardate){ uchara; ucharshi,ge; shi=date/10; ge=date%10; if(hang==1)a=0x80; if(hang==2) a=0xc0; a=a+lie-1; enable_1602(a); write_1602(0x30+shi); write_1602(0x30+ge);}/************************************************名称:write_display()*功能:显示当前温度*输入:无*输出:无***********************************************/voidwrite_display(void){ enable_1602(0xc0+7); write_1602(0x30+display[3]); write_1602(0x30+display[2]); write_1602(0x30+display[1]); enable_1602(0xc0+7+4); write_1602(0x30+display[0]);}//24C02数据储存/************************************************名称:x24c02_init()*功能:24c02初始化子程序*输入:无*输出:无***********************************************/voidx24c02_init(void){ scl=1;flash();sda=1;flash();}/************************************************名称:start_24c02()*功能:启动I2C总线*输入:无*输出:无***********************************************/voidstart_24c02(void){ sda=1;flash();scl=1;flash();sda=0;flash();scl=0;flash();}/************************************************名称:stop_24c02()*功能:停止I2C总线*输入:无*输出:无***********************************************/voidstop_24c02(){ sda=0;flash();scl=1;flash();sda=1;flash();}/************************************************名称:write_24c02()*功能:写一种字节*输入:写入值*输出:无***********************************************/voidwrite_24c02(ucharj){ uchari,k; k=j; for(i=0;i<8;i++) { k=k<<1;scl=0;flash();sda=CY;flash(); scl=1;flash(); } scl=0;flash();sda=1;flash();}/************************************************名称:read_24c02()*功能:读一种字节*输入:无*输出:读出值***********************************************/ucharread_24c02(void){ uchari,j,k=0;scl=0;flash();sda=1; for(i=0;i<8;i++) { flash();scl=1;flash();if(sda==1) j=1; elsej=0; k=(k<<1)|j;scl=0; } flash();return(k);}/************************************************名称:I2C_clock()*功能:I2C总线时钟*输入:无*输出:无***********************************************/voidI2C_clock(void){ uchari=0;scl=1;flash(); while((sda==1)&&(i<255)) { i++;} scl=0;flash();}/************************************************名称:x24c02_read()*功能:从24c02中读出值*输入:address(要在这个地址读取值)*输出:从24c02中读出值***********************************************/ucharx24c02_read(ucharaddress){ uchari;start_24c02(); write_24c02(0xa0);I2C_clock(); write_24c02(address);I2C_clock(); start_24c02(); write_24c02(0xa1);I2C_clock(); i=read_24c02();stop_24c02(); delay_16us(10);return(i);}/************************************************名称:x24c02_write()*功能:想24c02中写入数据*输入:address(地址),info(值)*输出:无***********************************************/voidx24c02_write(ucharaddress,ucharinfo){ EA=0;start_24c02(); write_24c02(0xa0); I2C_clock();write_24c02(address); I2C_clock();write_24c02(info); I2C_clock();stop_24c02(); EA=1;delay_16us(50);}//报警/************************************************名称:alert(ucharsign)*功能:报警电路*输入:设立温度值*输出:调节后温度值***********************************************/voidalert(ucharsign){ uchari,j; while((sign==27)|(sign==17)) { for(j=0;j<3;j++) { for(i=0;i<200;i++)//喇叭发声时间循环 { delay_16us(80);//参数决定发声频率,估算值 beep=!beep; } be
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 系统集成行业发展方向试题及答案
- 系统分析师考试中的关键人数分析及试题及答案
- 2025年河南省驻马店市八年级三模生物试题
- 计算机三级信息管理知识点试题及答案
- PowerPoint演示效果设计重点试题及答案
- 2025年网络规划设计师考试优势分享试题及答案
- 系统集成关注热点试题及答案
- 全面回归软件评测师试题与答案分析
- 2025年度多媒体应用设计师复习资料试题及答案
- 项目绩效评估的方法试题及答案
- 枣庄学院教师招聘考试历年真题
- LCE-RB-3-004空调风柜保养指导书内容
- GB/T 26516-2011按摩精油
- 2023年燕舞集团有限公司招聘笔试模拟试题及答案解析
- 电机检测报告
- 上市合作合同协议书范本-IPO
- 最新消毒记录表每日消毒表
- 自发冠脉夹层诊疗指南解读
- 《一滴水经过丽江》的课件
- 三级医院服务能力指南2022
- 家庭室内装饰装修工程验收单
评论
0/150
提交评论