在本设计中,采用虚拟仿真的方式,用虚拟串口调试小助手观察单片机向上位机发送的温度值。
图7 PC机与单片机的串行接口
3. 软件设计
软件设计包括软件设计思路、系统主程序流程图、传感器程序流程图、报警程序设计、通信模块程序设计。
3.1 软件设计思路
应用系统要完成各项功能,首先需要有比较完善的硬件作为保证,与此同时还必须得到相应的设计合理的软件支持。特别是微机应用高速发展的今天,很多由硬件完成的工作都是可以通过软件编程来代替的。其中有些必须采用很复杂的硬件电路才能完成的工作,使用软件编程有的时候就会变得很简单,例如数字滤波,信号处理等。因此现代的设计充分利用其内部丰富的硬件资源和软件资源,然后采用与51系列单片机相应的C语言和结构话程序设计方法进行软件的编程。
Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可文护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。
Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势[2]。本课题采用C语言进行编程。
3.2 系统主程序流程图
图8 系统主程序流程图
系统主程序流程图如图8所示。开始系统初始化,然后通过4个按键设置报警温度的上下限,测温子程序随后开始工作,温度值经单片机处理后,一方面送显示模块显示,另一方面送上位机显示,都可以看到当前的温度值,若温度超出设定值,则报警、加热,否则不执行。以后就如流程图所示,循环执行。
3.3 温度检测程序流程
图9 温度检测程序流程图
首先是初始化,然后由主机发出温度转换命令,每一个温度传感器将采集到的温度值转换成相应的数字形式。等待一段时间,查询温度转换是否完毕,若完成,则复位DS18B20,发出ROM匹配命令,将相应的温度值赋值给某一变量,读取温度值,存入存储器中,为以后的显示做准备。每一片单总线芯片内部都有一个全球惟一的64 位编码,在多路测温时就是通过匹配每个芯片的ROM编码(ID),来搜寻该路的温度[3]。
3.4 报警程序设计
当采集的温度值高于温度上限值或低于温度下限值,报警器报警。在程序内对相应的端口送出低电平,然后由硬件执行相应的操作。
3.5 通讯模块程序设计
系统通过串口与上位机通信,可以实时向上位机传送温度值。实物中通过RS-232总线与计算机连接。本设计采用虚拟仿真。当运行Proteus软件时,可以从虚拟终端看到上位机接收到的温度值。
图10 通讯模块程序设计
4. 系统调试
系统调试工程可以分为两大部分:软件调试、仿真调试。电路先按模块逐个调试,每个模块调试成功后再进行联调。软件程序调试则先在最小系统调试,通过后再进行软件和仿真联调。
4.1 软件调试
本设计的软件系统采用C语言编写,调试分模块进行,每个模块程序调试好后,通过采用调用子程序的方法,进行整体的程序合并,这样的程序结构明了,出错的概率比较小。
4.2 仿真调试
软件调试无误,然后把程序写入单片机,首先调试控制系统的各个模块电路,确认成功后,然后在进行整体调试。 51单片机花房温度控制电路设计+仿真图+流程图+源码(4):http://www.751com.cn/zidonghua/lunwen_333.html