图17 DS18B20读命令子程序流程图
DS18B20读命令子程序流程图说明:DS18B20的读温度数据也是从低位开始的,读时序分为读0时序和读1时序两个过程,首先将单总线拉低(即DQ置0)一段时间,一般在15us内就得释放单总线(即将DQ置1),以让DS18B20把温度数据传输到单总线上;数据传输仍然从低位开始,此时的温度数据已经为二进制数,DQ为0(即要传输的数据为0)则使readdata=readdata&0x7f,DQ为1则使readdata=readdata|0x80,延时一段时间后判断8位温度数据是否读完,没读完则使readdata右移一位,直至8位温度数据读完后返回至readdata。
图18 DS18B20初始化程序流程图
DS18B20初始化程序流程图说明:初始化时序包括主机发送的复位脉冲和DS18B20向主机返回的存在脉冲,微处理器向DS18B20发送复位脉冲,即通过控制DQ的值使出现低电平的复位脉冲,此低电平最少文持480us;之后释放单总线(即DQ置1)等待DS18B20的响应,DS18B20在收到单总线上的高电平后延时约15~60us后发送低电平的应答信号;如果微处理器收到了DS18B20的应答信号(DQ=0)则就置DQ为1,此时DS18B20的初始化就完成了,否则初始化不成功,微处理器就再向DS18B20发复位脉冲,直至初始化成功。
图19 DS18B20模块的主程序流程图
DS18B20模块的主程序流程图说明:首先进行DS18B20的初始化,此时DQ=1;微处理器发送跳过ROM命令0xcc,然后发送启动转换命令0x44,即令DS18B20跳过读ROM的环节而直接进行温度转换,使采集的温度数据转换为二进制数;延时使温度转换有足够的时间;转换完毕后匹配DS18B20的序列号,即分辨出即将处理的温度数据的路数;待匹配完毕,微处理器向DS18B20发送读ROM命令0xbe,DS18B20开始读取转换后的温度数据;由于此时的温度数据为二进制数,所以要对其进行处理才能得到所检测温度的实际值;最后将温度数据送至LCD显示。
3.2.3 LCD程序流程
首先进行LCD的初始化;每次输入指令前都要判断LCD是否处于忙状态,若处于忙状态则等待一段时间后继续判忙,若LCD不忙则设置预显示字符的显示位置;最后显示字符。LCD程序流程图如图20所示。
图20 LCD程序流程图
3.2.4 键盘程序流程
键盘扫描程序控制微处理器对键盘程序的处理,其程序流程图如图21所示。
图21 键盘扫描程序流程图
4. 系统仿真调试
Protues是著名的EDA仿真软件,由英国Labcenter electronics公司出版,其在世界上都享有盛誉。Proteus由ISIS和ARES两部分构成,其中ISIS是一款边界的电子系统原理设计和仿真平台软件,ARES是一款高级的PCB布线编辑软件。Proteus不仅具有其它EDA工具的原理图编辑、印刷电路板设计及电路仿真功能,而且还能仿真单片机及外围器件。Proteus支持第三方的软件编译和调试环境,如Keil C51 uVision3等软件,在绘制好原理图后,调入已经编译好的目标代码文件:*.hex,点击全速运行后就可以在Proteus原理图中看到模拟的实物运行状态和过程[12]。
(1)点击全速运行之后,当日期/温度显示切换键处于闭合状态时,按一下上下限设置键,进入报警温度上限temp1设定界面,再按一下上下限设置键,进入报警温度下限temp2设定界面。仿真结果如图22、图23所示。
图22 报警温度上限设置
图23 报警温度下限设置
(2)日期/温度显示切换键仍处于闭合状态,若温度上下限已设定好,按第三下上下限设定键并且巡检与指定通道查询键处于巡检状态时,LCD巡回显示8路的温度值。当检测温度处于报警温度范围之内时,温度正常指示灯亮,蜂鸣器不报警;当检测温度超出报警温度范围时,正常温度指示灯灭,蜂鸣器报警。其仿真结果如图24、图25所示。 51单片机多路温度检测系统的设计+电路图+源程序+流程图(6):http://www.youerw.com/zidonghua/lunwen_1338.html