2022年DSB水温控制系统+电路图程序[] .pdf

上传人:Che****ry 文档编号:27261739 上传时间:2022-07-23 格式:PDF 页数:27 大小:559.44KB
返回 下载 相关 举报
2022年DSB水温控制系统+电路图程序[] .pdf_第1页
第1页 / 共27页
2022年DSB水温控制系统+电路图程序[] .pdf_第2页
第2页 / 共27页
点击查看更多>>
资源描述

《2022年DSB水温控制系统+电路图程序[] .pdf》由会员分享,可在线阅读,更多相关《2022年DSB水温控制系统+电路图程序[] .pdf(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、水 温 控 制 系 统摘要: 该水温控制系统采用单片机进行温度实时采集与控制。温度信号由“一线总线”数字化温度传感器DS18B20 提供, DS18B20 在-10 +85C 范围内 , 固有测温分辨率为 0.5 。水温实时控制采用继电器控制电热丝和风扇进行升温、降温控制。系统具备较高的测量精度和控制精度,能完成升温和降温控制。关键字: AT89C51 DS18B20 水温控制Abstract: This water temperature control system uses the Single Chip Microcomputer to carry on temperature rea

2、l-time gathering and controling. DS18B20, digitized temperature sensor, provides the temperature signal by a main line. In -10+85the scope, DS18B20 s inherent measuring accuracy is 0.5 . The water temperature real-time control system uses the electricity nichrome wire carring on temperature increise

3、ament and operates the electric fan to realize the temperature decrease control. The system has the higher measuring accuracy and the control precision, it also can complete the elevation of temperature and the temperature decrease control.Key Words:AT89C51 DS18B20 Water temperature control 名师资料总结 -

4、 - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 27 页 - - - - - - - - - 1 目录1. 系统方案选择和论证2 1.1 题目要求 ,2 1.1.1 基本要求 ,2 1.1.2 发挥部分 ,2 1.1.3 说明,2 1.2 系统基本方案 ,2 1.2.1 各模块电路的方案选择及论证,2 1.2.2 系统各模块的最终方案 ,5 2. 硬件设计与实现,62.1系统硬件模块关系 ,6 2.2 主要单元电路的设计 ,6 2.2.1 温度采集部分设计 ,6 2.2.2 加热控制部分

5、 ,8 2.2.3 键盘、显示、控制器部分,8 3. 系统软件设计,103.1 读取 DS18B20 温度模块子程序 ,10 3.2 数据处理子程序 ,10 3.3 键盘扫描子程序 ,12 3.4 主程序流程图 ,13 4. 系统测试,144.1 静态温度测试 ,14 4.2 动态温控测量 ,14 4.3 结果分析 ,14 附录 1: 产品使用说明,15附录 2: 元件清单 ,15附录 3: 系统硬件原理图,16附录 4: 软件程序清单,17 参考文献 ,26名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - -

6、- - - - - 第 2 页,共 27 页 - - - - - - - - - 2 1. 系统方案选择和论证1.1题目要求设计并制作一个水温自动控制系统,控制对象为1L 净水,容器为搪瓷器皿。水温可以在一定范围内由人工设定,并能在环境温度降低时实现自动控制,以保持设定的温度基本不变。1.1.1 基本要求(1)温度设定范围为4090,最小区分度为1,标定温度 1。(2)环境温度降低时(例如用电风扇降温)温度控制的静态误差1。(3)用十进制数码管显示水的实际温度。1.1.2 发挥部分(1)采用适当的控制方法,当设定温度突变(由40提高到60)时,减小系统的调节时间和超调量。(2)温度控制的静态误

7、差0.2 。(3)在设定温度发生突变(由40提高到60)时,自动打印水温随时间变化的曲线。1.1.3 说明(1)加热器用一千瓦电炉。(2)如果采用单片机控制,允许使用已有的单片机最小系统板。(3)数码显示部分可以使用数码显示模块。(4)测量水温时只要求在容器内任意设置一个测量点。(5)在设计报告附一篇400 字以内的报告摘要。1.2 系统基本方案根据题目要求系统模块分可以划分为:温度测量模块,显示电路模块,加热模块,控制模块, 系统的框图如图1.2.1所示。 为实现各模块的功能,分别做了几种不同的设计方案并进行了论证。1.2.1 各模块电路的方案选择及论证(1)控制器模块根据题目要求, 控制器

8、主要用于对温度测量信号的接受和处理、控制电热丝和风扇使控制对象满足设计要求、 控制显示电路对温度值实时显示以及控制键盘实现对温度值的设定等。对控制器的选择有以下三种方案:方案一:采用FPGA作为系统控制器。FPGA功能强大,可以实现各种复杂的逻辑功能,名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 27 页 - - - - - - - - - 3 规模大,密度高,它将所有器件集成在一块芯片上,减少了体积,提高了稳定性,并且可应用 EDA软件仿真、调试,易于进行功能扩展。F

9、PGA采用并行的I/O 口方式,提高了系统的处理速度,适合作为大规模实时系统控制核心。由温度传感器送来的温度信号,经FPGA程序对其进行处理,控制加热装置动作。但由于本设计对数据处理的速度要求不高,FPGA的高速处理的优势得不到充分体现,并且其成本偏高,引脚较多,硬件电路布线复杂。图 1.2.1 系统基本模块方框图方案一:采用FPGA作为系统控制器。FPGA功能强大,可以实现各种复杂的逻辑功能,规模大,密度高,它将所有器件集成在一块芯片上,减少了体积,提高了稳定性,并且可应用 EDA软件仿真、调试,易于进行功能扩展。FPGA采用并行的I/O 口方式,提高了系统的处理速度,适合作为大规模实时系统

10、控制核心。由温度传感器送来的温度信号,经FPGA程序对其进行处理,控制加热装置动作。但由于本设计对数据处理的速度要求不高,FPGA的高速处理的优势得不到充分体现,并且其成本偏高,引脚较多,硬件电路布线复杂。方案二:采用模拟运算放大器组成PID 控制系统。对于水温控制是足够的。但要附加显示、温度设定等功能,要附加许多电路,稍显麻烦。方案三:采用ATMEL公司的 AT89C52作为系统控制器。单片机算术运算功能强,软件编程灵活、自由度大,可用软件编程实现各种算法和逻辑控制,并且其功耗低、体积小、技术成熟和成本低等优点。基于以上分析拟订方案二,由 AT89C52作为控制核心, 对温度采集和实时显示以

11、及加热装置进行控制。(2)加热装置有效功率控制模块根据题目,可以使用电热炉进行加热,控制电热炉的功率即可以控制加热的速度。当水温过高时, 关掉电热炉进行降温处理,让其自然冷却。 在制作中, 我们装设一个小电风扇,当水温超高时关闭电炉开启风扇散热,当需要加热时开启电炉关闭风扇。由于加热的功率较大,考虑到简化电路的设计,我们直接采用220V 电源。对加热装置控制模块有以下两种方案:方案一:采用可控硅来控制加热器有效功率。可控硅是一种半控器件,应用于交流电的功率控制有两种形式:控制导通的交流周期数达到控制功率的目的;控制导通角的方式控制交流功率。 由交流过零检测电路输出方波经适当延时控制双向可控硅的

12、导通角,延时时间Output 显示电路加热装置测温部分键盘输入控制部分Input 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 27 页 - - - - - - - - - 4 即移相偏移量由温度误差计算得到。可以实现对交流电单个周期有效值周期性控制,保证系统的动态性能指标。该方案电路稍复杂,需使用光耦合驱动芯片以及变压器等器件。但该方案可以实现功率的连续调节,因此响应速度快,控制精度也高。方案二:采用继电器控制。使用继电器可以很容易实现地通过较高的电压和电流,在正常条

13、件下, 工作十分可靠。 继电器无需外加光耦,自身即可实现电气隔离。这种电路无法精确实现电热丝功率控制,电热丝只能工作在最大功率或零功率,对控制精度将造成影响。但可以由多路加热丝组成功率控制,由单片机对温差的处理实现分级功率控制提高系统动态性能。 基于以上分析以及现有器件限制选择方案二,采用继电器控制省去光耦和交流过零检测电路,在软件上选用适当的控制算法,同样可以达到较好的效果。(3)温度采集模块题目要求温度静态误差小于等于0.2 ,温度信号为模拟信号,本设计要对温度进行控制和显示,所以要把模拟量转换为数字量。该温度采集模块有以下三种方案:方案一:利用热电阻传感器作为感温元件,热电阻随温度变化而

14、变化,用仪表测量出热电阻的阻值变化,从而得到与电阻值相应的温度值。最常用的的是铂电阻传感器,铂电阻在氧化介质中, 甚至在高温的条件下其物理,化学性质不变。 由铂电阻阻值的变化经小信号变送器 XTR101将铂电阻随温度变化的转换为420mA线形变化电路,再将电流信号转化为电压信号, 送到 A/D 转换器 ADC0809.即将模拟信号转换为数字信号。该方案线性度优于0.01 。方案二:采用温度传感器AD590K 。AD590K具有较高精度和重复性,良好的非线性保证0.1 的测量精度。加上软件非线性补偿可以实现高精度测量。AD590 将温度转化为电流信号, 因此要加相应的调理电路,将电流信号转化为电

15、压信号。送入 8 为 A/D 转换器, 可以获得 255 级的精度,基本满足题目要求。方案三:采用数字温度传感器DS18B20 。DS18B20为数字式温度传感器,无需其他外加电路,直接输出数字量。可直接与单片机通信,读取测温数据,电路简单。如图1.2.2 所示。图 1.2.2 DS18B20测温电路基于以上分析和现有器件所限,温度采集模块选用方案三。DS18B20与传统的热敏电阻相比,他能够直接读出被测温度并且可根据实际要求通过简单的编程实现912 位的数字值读数方式。并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)名师资料总结 - - -精品资料欢迎下载

16、- - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 27 页 - - - - - - - - - 5 读写 , 因而使用DS18B20可使系统结构更趋简单,可靠性更高。他在测温精度、转换时间、传输距离、分辨率等方面带来了令人满意的效果。(4)键盘与显示模块根据题目要求,水温要由人工设定,并能实时显示温度值。对键盘和显示模块有下面两种方案:方案一:采用液晶显示屏和通用矩阵键盘。液晶显示屏(LCD )具有功耗小、轻薄短小无辐射危险, 平面直角显示以及影象稳定不闪烁,可视面积大, 画面效果好, 抗干扰能力强等特点。 但由于

17、只需显示三位温度值,信息量比较少,且由于液晶是以点阵的模式显示各种符号, 需要利用控制芯片创建字符库,编程工作量大, 控制器资源占用较多,其成本也偏高。方案二:采用三位LED七段数码管分别显示温度的十位、个位和小数位。按键采用单列 3 按键进行温度设定。数码管具有:低能耗、低损耗、低压、寿命长、耐老化,对外界环境要求较低。同时数码管采用BCD编码显示数字,程序编译容易,资源占用较少。根据以上论述,采用方案二。本系统中,采用了数码管的动态显示,节省单片机的内部资源。1.2.2 系统各模块的最终方案根据以上分析,结合器件和设备等因素,确定如下方案:1. 采用 AT89C52单片机作为控制器,分别对

18、温度采集、LED显示、温度设定、加热装置功率控制。2. 温度测量模块采用数字温度传感器DS18B20 。此器件经软件设置可以实现高分辨率测量。3. 电热丝有效功率控制采用继电器控制,实现电路简单实用,加上温度变化缓慢可以满足设计要求。4. 显示用 LED数码管显示实时温度值,用ENTER 、UP、DOWN 三个单键实现温度值的设定。图 1.2.3 系统基本框图系统的基本框图如图1.2.3 所示。 CPU (AT 89C52)首先写入命令给DS18B20 ,然后DS18B20开始转换数据,转换后通过89S52来处理数据。数据处理后的结果就显示到数码管Output LED 数码管继电器DS18B2

19、0键盘输入AT89C52 Input 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 27 页 - - - - - - - - - 6 上。另外由键盘设定温度值送到单片机,单片机通过数据处理发出温度控制信息到继电器。DS18B20可以被编程,所以箭头是双向的。2. 硬件设计与实现2.1系统硬件模块关系本系统的执行方法是循环查询执行的,键盘扫描也是用循环查询的办法,由于本系统对实时性要求不是很高,所以没有用到中断方式来处理。各模块关系图如图2.1.1所示。图 2.1.1 统

20、硬件模块关系图2.2 主要单元电路的设计2.2.1 温度采集部分设计本系统采用半导体温度传感器作为敏感元件。传感器我们采用了DS18B20单总线可编程温度传感器 , 来实现对温度的采集和转换,直接输出数字量,可以直接和单片机进行通讯,大大简化了电路的复杂度。DS18B20应用广泛,性能可以满足题目的设计要求。DS18B20的单片机初始话模块继电器控制模块键盘扫描模块(扫描有无Enter 键按下)DS18B20 得到温度值,存放到Buffer 中处理温度值,换算成BCD 码温度显示模块名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - -

21、 名师精心整理 - - - - - - - 第 7 页,共 27 页 - - - - - - - - - 7 测温电路如图2.2.1所示。图 2.2.1 DS18B20测温电路(1)DSI8B20的测温功能的实现:其测温电路的实现是依靠单片机软件的编程上。当 DSI8B20 接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16 位带符号扩展的二进制补码形式存储在高速暂存存储器的0,1 字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式以0062 5 LSB形式表示。温度值格式如表2.2.1所示,其中“ S”为标志位,对应的温度计算:当符号位 S=0时,直接将二进

22、制位转换为十进制;当 S=1 时,先将补码变换为原码,再计算十进制值。DSI8B20 完成温度转换后,就把测得的温度值与 TH 做比较,若 TTH或 T RoM 操作命令 - 存储器操作命令- 处理数据 初始化单总线上的所有处理均从初始化开始 ROM操作命令总线主机检测到DSl820 的存在便可以发出ROM 操作命令之一这些命令如表2.2.2所示名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 27 页 - - - - - - - - - 8 表 2.2.2 ROM 操作命

23、令表指令代码Read ROM(读 ROM) 33H Match ROM( 匹配 ROM) 55H Skip ROM( 跳过 ROM CCH Search ROM( 搜索 ROM) F0H Alarm search( 告警搜索 ) ECH 存储器操作命令如表2.2.3所示表 2.2.3 存储器操作命令表指令代码Write Scratchpad( 写暂存存储器 ) 4EH Read Scratchpad(读暂存存储器) BEH Copy Scratchpad( 复制暂存存储器) 48H Convert Temperature( 温度变换 ) 44H Recall EPROM( 重新调出 ) B8H

24、 Read Power supply(读电源 ) B4H (3)温度转换算法及分析由于 DS18B20转换后的代码并不是实际的温度值,所以要进行计算转换。温度高字节(MS Byte)高 5 位是用来保存温度的正负(标志为S 的 bit11 bit15 ) ,高字节( MS Byte )低 3 位和低字节来保存温度值(bit0 bit10 ) 。其中低字节(LS Byte )的低 4 位来保存温度的小数位( bit0 bit 3) 。由于本程序采用的是0.0625 的精度,小数部分的值,可以用后四位代表的实际数值乘以0.0625 ,得到真正的数值,数值可能带几个小数位,所以采取小数舍入,保留一位

25、小数即可。也就说,本系统的温度精确到了0.1 度。算法核心:首先程序判断温度是否是零下,如果是,则DS18B20保存的是温度的补码值,需要对其低8 位(LS Byte )取反加一变成原码。处理过后把DS18B20的温度 Copy到单片机的 RAM中,里面已经是温度值的Hex码了,然后转换Hex码到 BCD码,分别把小数位,个位,十位的BCD码存入 RAM 中。2.2.2 加热控制部分由于本系统要控制电热丝加热,功率较大,因此要借助功率电路。在器件选择上留足余量,增加安全性。加热部分采用继电器控制,电路简单可靠。电路如图2.2.2所示。当实测温度低于设定值时,由单片机输出高电平信号。三极管901

26、4 导通,继电器开始工作对水加温。为了防止继电器频繁动作。在软件中对水温测量精确到0.1 ,而在温度设定时只取整数。可以有1的余量。当设定温度低于实测温度时为了加快系统动态响应速度,设置一个小功率电扇,加速水温的降低。使系统整体性能得以提高。原理图如图2.2.3所示。2.2.3 键盘、显示、控制器部分本设计中采用动态显示方式驱动3 个七段数码管,分别显示温度的十位、个位和小数位。数码管采用共阴极,由于AT89C52单片机每个I/O 的拉电流只有12mA 。所以在位码名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 -

27、 - - - - - - 第 9 页,共 27 页 - - - - - - - - - 9 和段码都加上了同相驱动器。键盘采用按键开关经上拉电阻分别接P1.0 、P1.1、P1.2 口上,起到控制、上调和下调作用。每按上调和下调键,设定温度值增1 减 1。单片机XTAL2 、XTAL1接 12MHZj 晶振,提供系统时钟基值。另RESET 接复位按键。原理图如图2.2.4所示。图 2.2.2 继电器控制图 2.2.3 风扇控制图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页

28、,共 27 页 - - - - - - - - - 10 图 2.2.4 键盘、显示、控制器部分原理图3. 系统软件设计系统的软件设计采用汇编语言,对单片机进行变成实现各项功能。主程序对模块进行初始化,而后调用读温度、处理温度、显示、键盘、和继电器各模块。用的是循环查询方式,来显示和控制温度。3.1读取 DS18B20温度模块子程序每次对 DA18B20操作时多要按造DS18B20工作过程中的协议进行。初始化 - RoM操作命令 - 存储器操作命令- 处理数据程序流程图如图3.1.1 所示。3.2 数据处理子程序由于 DS18B20转换后的代码并不是实际的温度值,所以要进行数据处理。由于本程序

29、采用的是0.0625 的精度,小数部分的值,可以用后四位代表的实际数值乘以0.0625 ,得到真正的数值,数值可能带几个小数位,所以采取四舍五入,保留一位小数即可。也就说,本系统的温度精确到了0.1 度。首先程序判断温度是否是零下,如果是,则DS18B20保存的是温度的补码值,需要对其低 8 位( LS Byte)取反加一变成原码。处理过后把DS18B20的温度 Copy到单片机的RAM名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 27 页 - - - - - - -

30、 - - 11 中,里面已经是温度值的Hex 码了,然后转换Hex 码到 BCD码,分别把小数位,个位,十位的 BCD码存入 RAM 中。数据处理子程序流程图如图3.2.1所示。图 3.1.1 读取 DS18B20温度子程序流程图图 3.2.1 数据处理子程序流程图返回数据传递温度是否为负?BCD 码转换求补运算开始初始化DS18B20 存在?ROM 操作命令存储操作命令读取温度值返回是否名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 27 页 - - - - - -

31、- - - 12 3.3 键盘扫描子程序按键功能: 1. Enter P1.0(k2) 控制键2. Up P1.1(k3) 加 1 键3. Down P1.2(k4) 减 1 键键盘子程序流程图如图3.3.1所示。图 3.3.1 键盘子程序流程图开始ENTER_FLAG 为 1?ENTER 键是否按下?是否有 ENTER 键按下?是否有 UP 键按下?是否有 DOWN 键按下?DISPLAY 显示返回主程序ENTER 子程序 FLAG=1 UP 子程序DOWN 子程序是是是是是否否否否否名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - -

32、 - 名师精心整理 - - - - - - - 第 13 页,共 27 页 - - - - - - - - - 13 3.4 主程序流程图总模块流程图如图3.1.1所示。本软件设计采用循环查询来处理各个模块,温度是缓慢变化量所以可以满足性能要求。图 3.1.1所示为系统主程序流程图图 3.1.1 主程序流程图否初始化开始调用 A/D 转换子程序DS18B20 存在?数据处理子程序显示子程序键盘扫描子程序继电器控制子程序错误处理显示888 是名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - -

33、第 14 页,共 27 页 - - - - - - - - - 14 4. 系统测试4.1 静态温度测试测试方式: 由于种种条件的限制,采用模拟加热方式进行测试。利用继电器的指示灯来显示继电器的动作。红灯表示加热,绿灯表示降温。测量仪器:空调温度显示屏测试结果如表4.1.1 所示:表 4.1.1 测试结果数据标准温度 /20 22 25 27 28 测量温度 /19.8 22.1 24.7 26.8 27.6 误差 /0.2 0.1 0.3 0.2 0.4 4.2 动态温控测量测试方式: 加热方式用体温对传感器DS18B20进行加热。 设定控制温度, 记录超调温度, 稳态误差。超调温度与加热的

34、功率有关,这里不再测量。测量仪器:空调温度显示屏测量结果如表4.2.1所示:表 4.2.1 测试结果数据设定温度 /29 30 33 35 超调温度 /1.3 0.9 1.1 0.6 稳态误差 /0.2 0.4 0.2 0.4 4.3 结果分析有以上的测量结果可见,系统基本上达到了所要求的指标,静态测温的精度主要由DS18B20来决定。在控温指标中, 影响系统的性能的因素很多。最关键的是加热系统本身的物理性质及控制算法。由于条件的限制,在本设计中采用体温进行测试。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 -

35、- - - - - - 第 15 页,共 27 页 - - - - - - - - - 15 附录 1: 产品使用说明本水温控制系统能在099范围内设定任意温度值,超出此范围将有出错显示888,之后返回到99或 0。通过按ENTER 键确认开始温度设定;P1.1 的 UP键为加 1 键,每按一次使设定温度值加1P1.2 的 DOWN 键为减 1 键,每按下一次设定温度值减1。设置完温度要在按ERTER 键确认温度设定完成,之后显示实测温度值。当温度传感器没有接入时也将有出错提示显示888。附录 2: 元件清单元件单价数量(个)单价AT89S52 8.0 1 DS18B20 7.0 1 7404

36、 1.5 6 12MHZ 晶 振 1.2 1 继电器 5.0 1 数码管 3.0 3 按键开 关0.2 4 9014 3.0 2 1N4007 1.0 2 发光二极管 1.0 2 1K 8 排阻 1.0 1 100电阻 1.0 3 3K 1.0 4 4.5K 1.0 1 500 1.0 1 200 1.0 1 电解电容10F 2.5 1 30pF 2.5 2 插槽0.5 4 面包板3.0 2 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 27 页 - - - - -

37、- - - - 16 附录 3 :系统硬件原理图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 27 页 - - - - - - - - - 17 附录 4:软件程序清单TEMPERATURE_L DATA 31H ;DS18B20 低 8 位 Buffer TEMPERATURE_H DATA 30H ;DS18B20 高 8 位 Buffer TEMPERATURE_HC DATA 32H ;计算后十位的BCD码存放 BUFFER TEMPERATURE_LC DA

38、TA 33H ;计算后的个位和小数位的BCD码存放 BUFFER TEMPERATURE_ZH DATA 34H ;计算后十位和个位HEX码的存放BUFFER DIS_BUF_X DATA 35H ; 数码管小数位Buffer DIS_BUF_G DATA 36H ; 数码管个位Buffer DIS_BUF_S DATA 37H ; 数码管十位Buffer KEY_BUF_G DATA 39H ;键盘输入后,的个位值 KEY_BUF_S DATA 49H ;键盘输入后,的十位值K_ENTER EQU P1.0 ; 输入数据确认按钮 K_UP EQU P1.1 ;上调按钮 K_DOWN EQU

39、P1.2 ;下调按钮 P_DS18B20 EQU P3.0 ;读取 DS18B20的输入端口 P_SWITCH EQU P1.7 ;继电器控制端口,1 加热, 0断开 P_FAN EQU P1.5 ;风扇控制, 1- 降温, 0-断开 FLAG EQU 20H.0 ;标志位 , 确定是否存在DS18B20,1- 存在, 0-不存在 ENTER_FLAG EQU 20H.1 ;键盘输入的标志位, 为 0 说明键盘正在输入,为1 说明键盘输入退出; 程序开始执行 ORG 0000H LJMP MAIN ORG 0100H MAIN: MOV SP,#60H ;初始化 MOV KEY_BUF_G,#

40、00H ;由于 KEY_BUF 是由用户输入的,所以先赋值初始化 MOV KEY_BUF_S,#00H NEXT: LCALL READ_TEMP ;调用读温度子程序 JB FLAG,NORMAL ;判断是否有DS18B20的存在 CALL ERR ;不存在时显示错误信息AJMP NEXT NORMAL: LCALL DATA_DEAL ; 处理从DS18B20得到的数据 LCALL SET_DIS_BUF ; 赋值给DIS_BUF_X,G,S, LCALL DISPLAY ; 调用数码管显示子程序 LCALL SCAN_KEY ; 扫描键盘 LCALL SWITCH ; 处理继电器 AJMP

41、 NEXT 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 27 页 - - - - - - - - - 18 ; 程序名称 :ERR ; 功能 : 程序出错处理,显示三个8,即 888 ; 入口参数 : 无; 出口参数 :DIS_BUF_X,DIS_BUF_G, DIS_BUF_S, ERR: MOV DIS_BUF_X,#08H ; 如果没有找到DS18B20 ,那么就显示错误,错误显示为888 MOV DIS_BUF_G,#08H MOV DIS_BUF_S,#0

42、8H LCALL DISPLAY RET ; 程序名称 :DATA_DEAL ; 功能 : 处理采集后的的数据; 入口参数 :TEMPERATURE_L ; 出口参数 :DIS_BUF_G, DIS_BUF_S,DIS_BUF_X DATA_DEAL: MOV A,TEMPERATURE_H ; 判温度是否零下 ANL A,#80H JZ TEMPC1 ;A 为 0,说明是正数,跳往TEMPC1, 如果是负数,则对低8为进行补码处理 CLR C MOV A,TEMPERATURE_L ; 二进制数求补(双字节) CPL A ; 取反加1 ADD A,#01H MOV TEMPERATURE_L

43、,A ; 取补码后存回TEMPERATURE_L,此时 TEMPERATURE_L里面的值就可以表示温; 度了,不过还要继续处理一下。 MOV A,TEMPERATURE_H CPL A ADDC A,#00H ;高位 TEMPERATURE_H取反, 加上从低位TEMPERATURE_L进来的位 MOV TEMPERATURE_H,A ;写回 TEMPERATURE_H MOV TEMPERATURE_HC,#0BH SJMP TEMPC11 TEMPC1: MOV TEMPERATURE_HC,#0AH TEMPC11:MOV A,TEMPERATURE_HC SWAP A MOV TEM

44、PERATURE_HC,A MOV A,TEMPERATURE_L ANL A,#0FH ;取 A低 4 位 ( 小数位,单位是0.0625),得出来的数要乘以 0.0625, 通过查表来算出值 MOV DPTR,#TEMPDOTTAB MOVC A,A+DPTR ;查表 MOV TEMPERATURE_LC,A ;TEMPERATURE_LC LOW=小数部分 BCD MOV DIS_BUF_X,A ;小数位的BCD 码送入显示buffer中名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - -

45、- 第 19 页,共 27 页 - - - - - - - - - 19 MOV A,TEMPERATURE_L ;整数部分 ANL A,#0F0H ;得到个位单个数值 SWAP A ;SWAP后就得到个位真正的个位 MOV TEMPERATURE_L,A MOV A,TEMPERATURE_H ANL A,#0FH SWAP A ORL A,TEMPERATURE_L MOV TEMPERATURE_ZH,A ;组合后的值存入TEMPERATURE_ZH LCALL HtoB ;转换 HEx值成为 BCD码 MOV TEMPERATURE_L,A ;TEMPERATURE_L目前存入的是十位

46、和个位的BCD编码 ANL A,#0F0H SWAP A ORL A,TEMPERATURE_HC ;TEMPERATURE_HC LOW位 = 十位数 BCD MOV TEMPERATURE_HC,A MOV A,TEMPERATURE_L ANL A,#0FH SWAP A ;TEMPERATURE_LC HI位 = 个位数 BCD ORL A,TEMPERATURE_LC MOV TEMPERATURE_LC,A RET ; 小数部分码表TEMPDOTTAB: DB 00H,00H,01H,02H,03H,03H,04H,04H,05H,06H,06H,07H,08H,08H,09H,0

47、9H ;0.0625-00H ;0.0625*2 = 0.125-01H ;0.0625*3 = 0.1875-02H ;0.0625*4 = 0.25-03H ;0.0625*5 = 0.3125-03H ; 以此类推 . ; 程序名称 :HtoB ; 功能 : 十六进制转 BCD ; 入口参数 :A ; 出口参数 :R7 HtoB: MOV B,#064H ;100 DIV AB ;a/100 MOV R7,A ; MOV A,#0AH XCH A,B DIV AB SWAP A ORL A,B RET ; 程序名称 :INIT_TEMP ; 功能 : 初始化 DS18B20,确定 DS1

48、8B20是否是存在的; 入口参数 : 无; 出口参数 :FLAG 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 20 页,共 27 页 - - - - - - - - - 20 INIT_TEMP: SETB P_DS18B20 NOP CLR P_DS18B20 ;主机发出延时537 微秒的复位低脉冲M OV R0,#6BH M OV R1,#04H TSR1: DJNZ R0,$ M OV R0,#6BH DJNZ R1,TSR1 SETB P_DS18B20 ;然后拉高数据线

49、,释放总线进入接受状态NOP NOP NOP M OV R0,#32H TSR2: JNB P_DS18B20,TSR3 ;等待 DS18B20回应 p DJNZ R0,TSR2 LJMP TSR4 ; 延时TSR3: SETB FLAG ; 置标志位 , 表示 DS1820存在 LJMP TSR5 TSR4: CLR FLAG ; 清标志位 , 表示 DS1820不存在 LJMP TSR7 TSR5: MOV R0,#06BH TSR6: DJNZ R0,TSR6 ; 时序要求延时一段时间TSR7: SETB P_DS18B20 RET ; 程序名称 :READ_TEMP ; 功能 : 读取

50、 DS18B20的数据; 入口参数 :TEMPERATURE_L,TEMPERATURE_H ; 出口参数 : 无READ_TEMP: SETB P_DS18B20 LCALL INIT_TEMP ;先复位DS18B20 JB FLAG,TSS2 RET ;判断 DS1820是否存在 ?若 DS18B20不存在则返回TSS2: MOV A,#0CCH ;跳过 ROM 匹配 LCALL WRITE_18B20 MOV A,#44H ;发出温度转换命令 LCALL WRITE_18B20; LCALL DISPLAY ;等待 AD转换结束 ,12 位的话750 微秒 LCALL INIT_TEMP

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁