南华大学电气工程学院毕业设计(论文)
4 软件设计
本部分详细介绍了基于AT89S51单片机的电阻炉温度控制系统的软件设计。根据系统功能,可以将系统设计分为若干个子程序进行设计,如温度采集子程序,数据处理子程序、显示子程序、执行子程序。采用汇编语言来进行系统软件的设计。本章从设计思路、软件系统框图出发,先介绍整体的思路后,再逐一分析各模块程序算法的实现,最终编写出满足任务需求的程序。
4.1 总体设计思路
本系统要完成温度信号的采集与控制,需要实现温度信号的采集与A/D转换、数据处理、数据显示、数据传输等基本功能。从功能上可将其分为温度信号采集 及A/D 转换、数据处理、人机交互、执行四大部分进行设计,软件系统框图如图 4.1所示:
数据处理
图 4.1 软件系统框图
温度信号采集子程序,主要完成温度信号采集与A/D功能,由于数字温度传感器DS18B20是采用单总线结构,所以软件设计需要根据单总线协议来完成数据采集、A/D 转换和传输。温度信号采集子程序主要包括传感器初始化、单片机给传感器写命令、单片机给传感器写数据、单片机从传感器读数据等部分。
控制执行 子程序 人机交互子程序 子程序 温度采集子程序 第 31 页 共 73 页
南华大学电气工程学院毕业设计(论文)
数据处理子程序,当单片机收到温度传感器发送的温度数据后,数据处理子程序对该数据进行处理,主要是把采集到的二进制的温度数据转换成十进制温度数据。
人机交互子程序,包括按键子程序、LCD 显示子程序。按键子程序是完成按键识别功能,实现系统参数的设置。按键子程序又包括设置子程序、加一子程序、 减一子程序等。LCD 显示子程序的功能是,实现将数据处理后的十进制温度数据,使用LCD 显示出来。而LCD 显示子程序又包括LCD 初始化子程序、写命令子程序、写数据子程序等。
执行子程序,该子程序所实现的功能,是把按键子程序设置的系统温度限定值与数据处理子程序处理后的当前温度值进行比较,根据比较的结果,执行单片机的I/O 口输出的状态。I/O口的高低电平控制继电器闭合达到控制大功率设备的目的。主程序流程图如图 4.2 所示:
第 32 页 共 73 页
南华大学电气工程学院毕业设计(论文)
Y N 温度设置子程序
图4.2 主程序流程图
返回 执行子程序 显示子程序 数据处理子程序 温度采集子程序 设置键按下? 初始化 开始 4.2 温度采集子程序
1-wire单总线是Maxim全资子公司Dallas的一项专有技术与目前多数标准
第 33 页 共 73 页
南华大学电气工程学院毕业设计(论文)
串行数据通信方式不同,它采用单根信号线,既传输时钟又传输数据。而且数据传输是双向的。它具有结构简单、节省I/O口资源、成本低廉、便于总线扩展和维护等诸多优点,1-wire 单总线适用于单个主机系统,能够控制一个或多个从机设备,当只有一个从机位于总线上时,系统可按照单节点系统操作,而当多个从机位于总线上时,系统则按照多节点系统进行操作。而较小的硬件开销需要相对复杂的软件进行补偿,由于DS18 B20与微处理器间采用串行数据传送,因此, 在对DS1820进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。软件系统可分为命令序列、信号方式、信号类型和时序。
4.2.1 命令序列
根据DS18B20的通信协议,主机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前,都要对DS18B20进行复位即初始化,复位成功后发送一条ROM 指令即ROM 操作,最后发送 RAM 指令即功能命令,这样才能对 DS18B20 进行预定的操作。
初始化:基于单总线上的所有传输过程都是以初始化开始的,初始化过程由主机发出的复位脉冲和从机响应的应答脉冲组成,应答脉冲使主机知道总线上有从机设备且准备就绪。复位要求主机将数据线下拉500微秒,然后释放, DS18B20收到信号后等待16~60微秒左右后,发出60~240微秒的低脉冲,主 机收到此信号表示复位成功。
ROM命令:主机检测到应答脉冲后,发出ROM 命令,这些命令与一个从机设备的唯一64位ROM代码相关,允许主机在单总线上连接多个从机设备, 指定操作一个从机设备。这些命令还使主机能够检测到总线上有多少个从机设备以及类型和有没有设备处于报警状态。从机设备可以支持5 种ROM命令。每种命令长度为8位,主机在发出功能命令之前,必须送出合适的ROM命令。 DS18B20有5个ROM 操作命令,如表 4.1 所示:
第 34 页 共 73 页
南华大学电气工程学院毕业设计(论文)
表 4.1 DS18B20的ROM指令表
指令 读ROM 代码 33H 功能 DS18B20温度传感ROM 中的编码 匹配ROM 55H 接着发出64位ROM 编码,访问单总线上与该编码相对应DS18B20,使之做出响应 搜索ROM 0FCH 用于确定挂在同一总线上DS18B20的个数和识别64位ROM地址 跳过ROM 0CCH 忽略64位ROM地址,直接向DS18B20发温度换命令,适用于单点测温 报警搜索命令 0ECH 执行后只有温度超过设定值上限值和下限值时温度传感器才做出响应
功能命令:在主机发出ROM命令以访问某个指定的DS18B20后,接着就可以发DS18B20支持的某个功能命令,这些命令允许主机写入或读出DS18B20 暂存器、启动温度转换以及判断从机的供电方式。DS18B20有6个存储器功能
第 35 页 共 73 页