自动温度控制系统的设计
智能温控系统设计

智能温控系统设计1.传感器部分:智能温控系统需要使用温度传感器实时监测室内和室外的温度变化,可以选择具有高精度和高稳定性的传感器,如PTC传感器或热电偶传感器。
2.控制器部分:智能温控系统需要使用微处理器或嵌入式系统来处理传感器数据,并根据预设的算法来决定供暖或制冷设备的开关状态。
控制器应具备高性能和低功耗,以确保系统的稳定性和可靠性。
此外,还应该考虑控制器的各种接口,以便与其他设备进行通信。
3.用户界面部分:智能温控系统通常需要一个用户界面,以便用户可以方便地调节温度和设置温度范围。
用户界面可以使用触摸屏、按钮或遥控器等多种形式。
此外,还可以考虑将系统与智能手机等移动设备连接,以实现远程控制和监控。
4. 通信部分:智能温控系统可以通过有线或无线方式与其他设备通信,以获取室内和室外的温度数据、控制设备运行等。
有线通信可以选择以太网或RS485等标准接口,无线通信可以选择Wi-Fi、蓝牙、Zigbee等技术。
5.算法部分:智能温控系统的核心部分是算法,通过有效的温度控制算法,智能地调节供暖或制冷设备的运行。
常见的算法有PID控制算法和模糊控制算法等,可以根据实际需求选择适合的算法。
6.能源管理部分:智能温控系统应该考虑能源的合理利用,通过运用能源管理算法,调整供暖或制冷设备的工作时间和功率,以降低能源消耗。
例如,可以根据室内外温度差异的变化调整供暖设备的工作时间。
1.系统的稳定性和可靠性:智能温控系统需要具备良好的稳定性和可靠性,能够准确地根据温度变化和用户需求进行控制。
因此,在硬件选择和软件设计上应该注重品质和稳定性。
2.用户体验:智能温控系统应该简洁、易操作,用户可以按照自己的需求随时调整温度和设置时间表。
同时,用户界面的设计也要符合用户的使用习惯。
3.系统的扩展性:智能温控系统应该具备良好的扩展性,可以与其他智能家居设备集成,如智能灯光、智能窗帘等。
同时还应该考虑系统的升级和扩展,以适应未来的需求变化。
温度控制系统的设计_毕业设计论文

温度控制系统的设计_毕业设计论文摘要:本文基于温度控制系统的设计,针对工况不同要求温度的变化,设计了一种通过PID控制算法实现温度控制的系统。
该系统通过传感器对温度进行实时监测,并将数据传输给控制器,控制器根据设定的温度值和反馈的实际温度值进行比较,并通过PID算法进行控制。
实验结果表明,该温度控制系统具有良好的控制性能和稳定性。
关键词:温度控制系统;PID控制;控制性能;稳定性1.引言随着科技的发展,温度控制在很多工业和生活中都起到至关重要的作用。
温度控制系统通过对温度的监测和控制,可以保持系统的稳定性和安全性。
因此,在各个领域都有大量的温度控制系统的需求。
2.温度控制系统的结构温度控制系统的结构主要包括传感器、控制器和执行器。
传感器负责对温度进行实时监测,并将监测到的数据传输给控制器。
控制器根据设定的温度值和反馈的实际温度值进行比较,并通过PID控制算法进行控制。
执行器根据控制器的输出信号进行操作,调节系统的温度。
3.PID控制算法PID控制算法是一种常用的控制算法,通过对控制器进行参数调节,可以实现对温度的精确控制。
PID算法主要包括比例控制、积分控制和微分控制三部分,通过对每一部分的权值调节,可以得到不同的控制效果。
4.实验设计为了验证温度控制系统的性能,我们设计了一组温度控制实验。
首先,我们将设定一个目标温度值,然后通过传感器对实际温度进行监测,并将数据传输给控制器。
控制器根据设定值和实际值进行比较,并计算控制信号。
最后,我们通过执行器对系统的温度进行调节,使系统的温度尽量接近目标温度。
5.实验结果与分析实验结果表明,通过PID控制算法,我们可以实现对温度的精确控制。
在设定目标温度值为40℃的情况下,系统的稳态误差为0.5℃,响应时间为2秒。
在不同工况下,系统的控制性能和稳定性都得到了有效的保证。
6.结论本文基于PID控制算法设计了一种温度控制系统,并进行了相应的实验验证。
实验结果表明,该系统具有良好的控制性能和稳定性。
智能恒温控制系统设计

智能恒温控制系统设计智能恒温控制系统是一个用于实现室内温度自动控制的系统,通过感知室内外环境温度,根据设定温度值来控制空调系统的运行,从而保持室内温度始终在一个合适的范围内。
本文将从系统需求、系统设计和实现等方面进行说明。
1.系统需求-实时感知室内外温度,可通过温度传感器实现。
-可设定室内目标温度,供用户设定期望的室内温度。
-控制空调系统进行制冷或制热。
-支持远程控制,用户可以通过智能手机或电脑等终端设备远程控制系统。
-具备定时功能,可以按照用户设定的时间自动开关空调系统。
2.系统设计2.1硬件设计硬件设计主要包括以下组件:-温度传感器:用于感知室内外温度,可以选择一种高精度的数字温度传感器。
-控制器:用于接收温度传感器的数据并做出相应的控制决策,可以选择一种高性能的微控制器。
-继电器:用于控制空调系统的开关,根据温度传感器的数据和用户设定的目标温度来控制继电器的开关状态。
-通信模块:用于与用户进行远程通信,可以选择无线通信模块,如Wi-Fi或蓝牙。
2.2软件设计软件设计主要包括以下部分:-温度感知模块:负责读取温度传感器的数据,并将其转换为室内外温度。
-控制逻辑模块:根据用户设定的目标温度和当前的室内外温度,做出相应的控制决策,包括控制空调系统的开关状态以及制冷或制热模式。
-用户界面模块:提供用户界面,用户可以通过界面来设定目标温度、查看实时温度和控制空调系统的开关状态。
-远程通信模块:负责与用户远程控制设备进行通信,接收用户的控制指令并传输给控制逻辑模块。
3.系统实现系统实现主要需要完成以下工作:-选定适合的硬件组件,并进行硬件搭建和连接。
-开发温度感知模块,通过读取温度传感器的数据来获取室内外温度。
-开发控制逻辑模块,包括控制空调系统的逻辑和算法,根据用户设定的目标温度和当前的室内外温度来控制空调的运行状态。
-开发用户界面模块,提供一个友好的用户界面,用户可以通过界面来设定目标温度、查看实时温度和控制空调系统的开关状态。
基于fpga的智能温度控制系统的设计

基于fpga的智能温度控制系统的设计随着科技的发展,智能控制系统被广泛应用于工业领域和智能家居中,其中智能温度控制系统是其中的一种。
智能温度控制系统能够根据环境温度变化自动控制加热或制冷设备,从而保证环境温度始终在设定值范围内,提高生产效率和舒适度。
本文将介绍一种基于FPGA的智能温度控制系统设计方案。
1. 系统设计该系统由传感器、FPGA、驱动器以及显示器组成。
传感器用于检测环境温度变化,FPGA用于对传感器信号进行处理,驱动器用于控制加热或制冷设备,显示器用于显示系统状态。
系统设计流程如下:1.1 传感器传感器可以选择温度传感器、热敏电阻传感器或热电偶传感器等。
本系统选用温度传感器,将传感器输出的模拟信号转化为FPGA可读的数字信号,从而实现数字信号化。
1.2 数字信号化将模拟信号数字化是实现控制系统的关键所在。
数字信号化是通过模数转换器(ADC)将模拟信号转化为数字信号的过程。
本系统将模拟信号转化为12位数字信号。
1.3 FPGA处理FPGA芯片(Field-Programmable Gate Array)是一种可编程逻辑器件,它能够快速地对数字信号进行处理。
FPGA芯片是本系统的核心处理器,它被用来对传感器信号进行处理,根据环境温度的变化决定加热还是制冷,从而保持环境温度在设定范围内。
具体的处理流程如下:(1)读取温度传感器数据。
(2)将传感器输出的模拟信号转变为数字信号。
(3)将数字信号与设定的环境温度范围进行比较,以决定是否需要进行加热或制冷。
(4)对加热或制冷设备进行控制。
1.4 驱动器设计由于加热或制冷设备的控制电源电平和FPGA的电平不一致,需要通过驱动器进行转换。
本系统使用驱动器将FPGA输出的信号转化成能够控制加热或制冷设备的继电器信号。
1.5 显示器设计本系统使用7段LED数码管作为显示器,用于显示当前环境温度以及系统状态。
系统状态包括温度过高、温度过低、正常等状态,以告知用户系统运行情况。
基于51单片机的温度控制系统设计

基于 51 单片机的水温自动控制系统引言在现代的各种工业生产中,不少地方都需要用到温度控制系统。
而智能化的控制系统成为一种发展的趋势.本文所阐述的就是一种基于 89C51 单片机的温度控制系统。
本温控系统可应用于温度范围30℃到96℃。
设计并制作一水温自动控制系统,可以在一定范围(30℃到96℃)内自动调节温度,使水温保持在一定的范围(30℃到96℃)内。
(1) 利用摹拟温度传感器检测温度,要求检测电路尽可能简单。
(2) 当液位低于某一值时,住手加热。
(3) 用 AD 转换器把采集到的摹拟温度值送入单片机。
(4) 无竞争—冒险,无颤动。
(1) 温度显示误差不超过1℃.(2) 温度显示范围为0℃—99℃。
(3) 程序部份用 PID 算法实现温度自动控制。
(4) 检测信号为电压信号。
根据设计要求和所学的专业知识,采用 AT89C51 为本系统的核心控制器件。
AT89C51 是一种带4K 字节闪存可编程可擦除只读存储器的低电压,高性能CMOS 8 位微处理器。
其引脚图如图1 所示。
显示模块主要用于显示时间,由于显示范围为0~99℃,因此可采用两个共阴的数码管作为显示元件.在显示驱动电路中拟订了两种设计方案:方案一:采用静态显示的方案采用三片移位寄存器 74LS164 作为显示电路,其优点在于占用主控系统的 I/O 口少,编程简单且静态显示的内容无闪烁,但电路消耗的电流较大。
方案二:采用动态显示的方案由单片机的 I/O 口直接带数码管实现动态显示, 占用资源少,动态控制节省了驱动芯片的成本,节省了电,但编程比较复杂,亮度不如静态的好。
由于对电路的功耗要求不大,因此就在尽量节省 I/O 口线的前提下选用方案一的静态显示.图 1 AT89C51 引脚图1 温度检测:有选用 AD590 和LM35D 两种温度传感器的方案,但考虑到两者价格差距较大,而本系统中对温度要求的精度不很高,于是选用比较便宜 LM35D。
基于单片机的温度控制系统设计原理

基于单片机的温度控制系统设计原理基于单片机的温度控制系统设计概述•温度控制系统是在现代生活中广泛应用的一种自动控制系统。
它通过测量环境温度并对温度进行调节,以维持设定的温度范围内的稳定状态。
本文将介绍基于单片机的温度控制系统的设计原理。
单片机简介•单片机是一种集成电路芯片,具有强大的计算能力和丰富的输入输出接口。
它可以作为温度控制系统的核心控制器,通过编程实现温度的测量和调节功能。
温度传感器•温度传感器是温度控制系统中重要的部件,用于测量环境温度。
常见的温度传感器有热敏电阻、热电偶和数字温度传感器等。
在设计中,需要选择适合的温度传感器,并通过单片机的模拟输入接口对其进行连接。
温度测量与显示•单片机可以通过模拟输入接口读取温度传感器的信号,并进行数字化处理。
通过数值转换算法,可以将传感器输出的模拟信号转换为温度数值,并在显示器上进行显示。
常见的温度显示方式有数码管和LCD等。
温度控制算法•温度控制系统通常采用PID(比例-积分-微分)控制算法。
这种算法通过比较实际温度和设定温度,计算出调节量,并通过输出接口控制执行机构,实现温度的调节。
在单片机程序中,需要编写PID控制算法,并根据具体系统进行参数调优。
执行机构•执行机构是温度控制系统中的关键部件,用于实际调节环境温度。
常见的执行机构有加热器和制冷器。
通过单片机的输出接口,可以控制执行机构的开关状态,从而实现温度的调节。
界面与交互•温度控制系统还可以配备界面与交互功能,用于设定目标温度、显示当前温度和执行机构状态等信息。
在单片机程序中,可以通过按键、液晶显示屏和蜂鸣器等外设实现界面与交互功能的设计。
总结•基于单片机的温度控制系统设计涉及到温度传感器、温度测量与显示、温度控制算法、执行机构以及界面与交互等多个方面。
通过合理的设计和编程实现,可以实现对环境温度的自动调节,提高生活和工作的舒适性和效率。
以上是对基于单片机的温度控制系统设计原理的简要介绍。
基于单片机的温度智能控制系统的设计与实现共3篇

基于单片机的温度智能控制系统的设计与实现共3篇基于单片机的温度智能控制系统的设计与实现1基于单片机的温度智能控制系统的设计与实现随着人们对生活质量的需求越来越高,温度控制变得愈发重要。
在家庭、医院、实验室、生产车间等场合,温度控制都是必不可少的。
本文将介绍一种基于单片机的温度智能控制系统的设计与实现。
设计思路本文所设计的温度智能控制系统主要由单片机、温度传感器、继电器和液晶屏幕等部件组成。
其中,温度传感器负责采集温度数据,单片机负责处理温度数据,并实现温度智能控制功能。
继电器用于控制加热设备的开关,液晶屏幕用于显示当前温度和系统状态等信息。
在实现温度智能控制功能时,本设计采用了PID控制算法。
PID控制算法是一种经典的控制算法,它基于目标值和当前值之间的误差来调节控制量,从而实现对温度的精确控制。
具体来说,PID控制器包含三个部分:比例控制器(P)用于对误差进行比例调节,积分控制器(I)用于消除误差的积累,微分控制器(D)用于抑制误差的未来变化趋势。
这三个控制器的输出信号加权叠加后,作为继电器的控制信号,实现对加热设备的控制。
系统实现系统硬件设计在本设计中,我们选择了常见的AT89S52单片机作为核心控制器。
该单片机运行速度快、稳定性好,易于编程,并具有较强的扩展性。
为了方便用户调节温度参数和查看当前温度,我们还选用了4 * 20的液晶屏。
温度传感器采用LM35型温度传感器,具有高精度、线性输出特性,非常适用于本设计。
系统电路图如下所示:系统软件设计在单片机的程序设计中,我们主要涉及到以下几个部分:1. 温度采集模块为了实现温度智能控制功能,我们首先需要获取当前的温度数据。
在本设计中,我们使用了AT89S52单片机的A/D转换功能,通过读取温度传感器输出的模拟电压值,实现对温度的采集。
采集到的温度数据存储在单片机的内部存储器中,以供后续处理使用。
2. PID控制模块PID控制模块是本设计的核心模块,它实现了对温度的精确控制。
温度控制系统设计

温度控制系统设计概述温度控制系统是一种广泛应用于工业生产、实验室环境以及家庭生活中的系统。
它通过感知环境温度并根据设定的温度范围来控制加热或制冷设备,以维持特定温度水平。
本文将介绍温度控制系统的设计原理、硬件组成和软件实现。
设计原理温度控制系统的设计基于负反馈原理,即通过对环境温度进行实时监测,并将监测结果与目标温度进行比较,从而确定加热或制冷设备的控制量。
当环境温度偏离目标温度时,控制系统会调节加热或制冷设备的工作状态,使环境温度逐渐趋向目标温度。
硬件组成1. 传感器传感器是温度控制系统的核心组成部分,用于感知环境温度。
常见的温度传感器包括热敏电阻(Thermistor)、温度传感器芯片(Temperature Sensor Chip)和红外温度传感器(Infrared Temperature Sensor)等。
传感器将环境温度转换为电信号,并输出给微控制器进行处理。
微控制器是温度控制系统的中央处理单元,用于接收传感器输入的温度信号,并进行数据处理和控制逻辑的执行。
常见的微控制器包括Arduino、Raspberry Pi 和STM32等。
微控制器可以通过GPIO(General Purpose Input/Output)口实现与其他硬件模块的连接。
3. 控制器控制器是温度控制系统的核心部件,用于根据目标温度和实际温度之间的差异来调节加热或制冷设备的运行状态。
常见的控制器包括PID控制器(Proportional-Integral-Derivative Controller)和模糊控制器(Fuzzy Controller)等。
控制器通过电压或电流输出信号,控制加热或制冷设备的开关状态。
4. 加热或制冷设备加热或制冷设备是温度控制系统的输出组件,用于增加或降低环境温度。
根据具体应用需求,常见的加热设备包括电炉、电热丝和电热器等;常见的制冷设备包括压缩机和热泵等。
软件实现温度控制系统的软件实现主要涉及以下几个方面:1. 温度采集软件需要通过与传感器的接口读取环境温度值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
上海电力学院电子系统设计实验报告题目:自动温度控制系统的设计院系:电子和信息工程学院专业:电子科学和技术班级:2013142班学号:20132481姓名:当当当自动温度控制系统的设计1、任务要求以单片机为核心控制器件,通过温度传感器进行温度测量,设置温度的上下限。
当温度超出正常范围,则由指示灯和蜂鸣器报警提示。
当温度低于下限值时,要求通风电机停转,当温度高于上限值时,通风电机转动。
2、设计方案本设计是对温度进行实时监测和控制,设计的温度控制系统实现了基本的温度控制功能:设定需求的温度为30~60摄氏度,当温度低于设定温度下限30摄氏度时,指示灯和蜂鸣器报警提示并且通风电机停转,使温度上升。
当温度高于设定温度上限60摄氏度时,指示灯和蜂鸣器报警提示且通风电机转动,使温度下降。
当温度达到设定温度界限时,通风机停止工作。
为了实现以上功能首先完成了系统的整体设计,硬件以及软件的设计。
在硬件上采用了由DS18B20温度传感器采集温度,送入单片机和设定温度进行对比处理,再通过显示器进行显示使其很直观的了解当前的状态。
在软件设计上完成了系统的各个功能程序以及流程图包括系统程序主要包括主程序,读出温度子程序,复位应答子程序,写入子程序等,并且采用和C51系列单片机相对应的51汇编语言和结构化程序设计方法进行软件编程。
总体设计框图3.硬件电路设计3.1最小系统3.1.1 AT89C51的单片机采用STC89C51芯片作为硬件核心。
STC89C51内部具有8KB ROM 存储空间,512字节数据存储空间,带有2K字节的EEPROM存储空间,和MCS-51系列单片机完全兼容,STC89C51可以通过串口下载。
引脚介绍①主电源引脚(2根)VCC(Pin40):电源输入,接+5V电源GND(Pin20):接地线②外接晶振引脚(2根)XTAL1(Pin19):片内振荡电路的输入端XTAL2(Pin20):片内振荡电路的输出端③控制引脚(4根)RST/VPP(Pin9):复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。
ALE/PROG(Pin30):地址锁存允许信号PSEN(Pin29):外部存储器读选通信号EA/VPP(Pin31):程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。
④可编程输入/输出引脚(32根)STC89C51单片机有4组8位的可编程I/O口,分别位P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。
P0口(Pin39~Pin32):8位双向I/O口线,名称为P0.0~P0.7P1口(Pin1~Pin8):8位准双向I/O口线,名称为P1.0~P1.7P2口(Pin21~Pin28):8位准双向I/O口线,名称为P2.0~P2.7P3口(Pin10~Pin17):8位准双向I/O口线,名称为P3.0~P3.73.1.2 复位电路当在STC89C51单片机的RST引脚引入高电平并保持2个机器周期时,单片机内部就执行复位操作,按键手动复位有电平方式和脉冲方式两种。
其中电平复位是通过RST端经过电阻和电源VCC接通而实现的。
3.1.3振荡电路本次温度控制报警器设计所选用的晶体振荡器频率为12Mhz,所选用电容大小为22pF。
通过计算可得单片机的工作周期为:(1÷12M)×12=1us。
3.2 DS18B20传感器介绍3.2.1 DS18B20特点1)采用DALLAS公司独特的单线接口方式:DS18B20和微处理器连接时仅需要一条口线即可实现微处理器和DS18B20的双向通讯;(2)在使用中不需要任何外围元件;(3)可用数据线供电,供电电压范围:+3.0V~+5.5V;(4)测温范围:-55~+125℃。
固有测温分辨率为0.5℃。
当在-10℃~+85℃范围内,可确保测量误差不超过0.5℃,在-55~+125℃范围内,测量误差也不超过2℃;(5)通过编程可实现9~12位的数字读数方式;(6)用户可自设定非易失性的报警上下限值;(7)支持多点的组网功能,多个DS18B20可以并联在唯一的三线上,实现多点测温;(8)负压特性,即具有电源反接保护电路。
当电源电压的极性反接时,能保护DS18B20不会因发热而烧毁,但此时芯片无法正常工作;(9)DS18B20的转换速率比较高,进行9位的温度值转换只需93.75ms;(10)适配各种单片机或系统;(11)内含64位激光修正的只读存储ROM,扣除8位产品系列号和8位循环冗余校验码(CRC)之后,产品序号占48位。
出厂前产品序号存入其ROM中。
在构成大型温控系统时,允许在单线总线上挂接多片DS18B20。
3.2.2 温度采集电路传感器数据采集电路主要是DS18B20温度传感器和单片机的接口电路。
DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。
另一种是寄生电源供电方式考虑到实际使用中寄生电源供电方式适应能力差且易损坏,此处采用电源供电方式,I/O口接单片机的P2.7口。
3.2.3 DS18B20控制方法DS18B20有六条控制命令:温度转换44H 启动DS18B20进行温度转换读暂存器BEH 读暂存器9个字节内容写暂存器4EH 将数据写入暂存器的TH、TL字节复制暂存器48H 把暂存器的TH、TL字节写到E2RAM中重新调E2RAM B8H 把E2RAM中的TH、TL字节写到暂存器TH、TL字节读电源供电方式B4H 启动DS18B20发送电源供电方式的信号给主CPU3.3 蜂鸣器、发光二极管报警电路利用有源蜂鸣器实施报警输出,运用直流供电。
当所测温度超过或者低于预期所设计的温度时,数据口相应提高高电平,报警输出。
而另一端则直接和单片机的P2.7端口相连,报警的同时发光二极管亮。
3.4按键电路按键电路的一端接地,一端和AT89C51的P3.1、P3.2和P3.3相应端口相连。
三个按键的功能分别能进行加减和移位的功能,进行温度上下限的设置64 位 ROM 和 单 线 接 口存储器与控制逻辑高速缓存温度传感器 8位CRC 发生器 配置寄存器 高温触发器 低温触发器3.5显示模块液晶显示器件(LCD)独具的低压、微功耗特性使他在单片机系统中特得到了广泛的使用,常用的液晶显示模块分为数显液晶模块、点阵字符液晶模块和点阵图形液晶模块,其中图形液晶模块在我国使用较为广泛,因为汉字不能像西文字符那样用字符模块即可显示,要想显示汉字必须用图形模块。
本课设所选择的LCD是AMPIRE128×64的汉字图形型液晶显示模块,可显示汉字及图形,图形液晶显示显示器接口如图所示。
整个屏幕分左、右两个屏,每个半屏右8页,每页有8行,注意数据是竖行排列。
显示一个字要16*16点,全屏有128*64个点,故可显示32个中文汉字。
每两页显示一行汉字,可显示4行汉字,每行8个汉字,共32个汉字。
而显示数据需要16*8个点,可显示数据是汉字的两陪。
屏幕是通过CS1、CS2两信号来控制的,不同的组合方式所选的屏幕是不同的,对应关系如下。
4.软件设计一个使用系统要完成各项功能,首先必须有较完善的硬件作保证,同时还必须得到相应设计合理的软件的支持。
尤其是微机使用高速发展的今天,许多由硬件完成的工作,都可通过软件编程而代替。
甚至有些必须采用很复杂的硬件电路才能完成的工作,用软件编程有时会变得很简单,如数字滤波,信号处理等。
因此充分利用其内部丰富的硬件资源和软件资源,采用C语言和结构化程序设计方法进行软件编程。
4.1 主程序图4.2 读出温度子程序void Init_DS18B20(void){unsigned char x=0;DQ = 1; //DQ复位delay_18B20(8); //稍做延时DQ = 0; //单片机将DQ拉低delay_18B20(80); //精确延时大于480usDQ = 1; //拉高总线delay_18B20(14);x=DQ; //稍做延时后如果x=0则初始化成功x=1则初始化失败delay_18B20(20);}上述程序中将DQ拉低,精确延时,再将DQ拉高,通过判断x的值来确定是否已经初始化完成。
void ReadTemp(void){unsigned char a=0;unsigned char b=0;unsigned char t=0;Init_DS18B20();WriteOneChar(0xCC); // 跳过读序号列号的操作WriteOneChar(0x44); // 启动温度转换delay_18B20(100); // this message is wery importantInit_DS18B20();WriteOneChar(0xCC); //跳过读序号列号的操作WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器)前两个就是温度delay_18B20(100);a=ReadOneChar(); //读取温度值低位b=ReadOneChar(); //读取温度值高位temp_value = b*256 + a;DECIMAL=DECP[a&0X0F];SIGN=b/16;if(SIGN){temp_value=~temp_value*0.0625;DECIMAL=DECN[a&0X0F];if(DECIMAL==0)temp_value+=1;}else{temp_value*=0.0625;}temp_value *= 10;temp_value += DECIMAL;}这段程序中,主要作用是在确保了DS18B20的工作状态后,从DS18B20的温度寄存器中提取出温度值的高位和低位,再将两个字节合并为一个字节,经过处理后从输出端输出。
4.3 温度数据显示子程序void DisPlay16(unsigned char line, unsigned char column , unsigned char LorR , unsigned char addr){unsigned char i;unsigned char j;cs1 = 1;cs2 = 1;if(LorR == 0){cs1 = 0;}else{cs2 = 0;}for(i=0; i<2 ;i++){for(j=0; j<16 ;j++){SetLine(line + i);SetColumn(column + j);WriteByte(Hzk[addr*32 + j + 16*i]);}}cs1 = 1;cs2 = 1;}void DisPlay16_not(unsigned char line, unsigned char column , unsigned char LorR , unsigned char addr){unsigned char i;unsigned char j;cs1 = 1;cs2 = 1;if(LorR == 0){cs1 = 0;}else{cs2 = 0;}for(i=0; i<2 ;i++){for(j=0; j<16 ;j++){SetLine(line + i);SetColumn(column + j);WriteByte( ~(Hzk[addr*32 + j + 16*i]) );}}cs1 = 1;cs2 = 1;}void DisPlay8(unsigned char line, unsigned char column , unsigned char LorR , unsigned char addr){unsigned char i;unsigned char j;cs1 = 1;cs2 = 1;if(LorR == 0){cs1 = 0;}else{cs2 = 0;}for(i=0; i<2 ;i++){for(j=0; j<8 ;j++){SetLine(line + i);SetColumn(column + j);WriteByte(Ezk[addr*16 + j + 8*i]);}}cs1 = 1;cs2 = 1;}void DisPlay8_not(unsigned char line, unsigned char column , unsigned char LorR , unsigned char addr){unsigned char i;unsigned char j;cs1 = 1;cs2 = 1;if(LorR == 0){cs1 = 0;}else{cs2 = 0;}for(i=0; i<2 ;i++){for(j=0; j<8 ;j++){SetLine(line + i);SetColumn(column + j);WriteByte( ~(Ezk[addr*16 + j + 8*i]) );}}cs1 = 1;cs2 = 1;}这段程序的作用在于,在接收到温度信息后,通过转化,变成能在LCD上显示的字符。