第4章 基于单片机的PID控制器的软件设计
在控制器的软件设计中,按照功能模块化的思想,将整个控制器分为几个模块,每一个模块来实现以各个具体的任务,比如数据采集模块负责将接受到的模拟信号转变为可供单片机进行处理运算的数字信号,而数据处理模块即是将需要进行运算的数据通过计算转变成可对执行器发出有效控制的数据。在各个子模块的功能已经成功实现的基础上,设计节点监控主程序,协调各个模块的功能,它是系统程序的框架。节点编程语言采用C语言,它是一种结构化程序设计语言且具有完善的模块程序结构,与汇编语言相比,采用C语言可以大大缩短开发周期,便于改进和扩充、可移植性、可维护性好,且不需要了解处理器的指令集,不必了解存储器结构,更符合人们的思考习惯。开发环境用Keil C51 uVision3,它是基于80C51内核的微处理器软件开发平台,内嵌多种符合当前工业标准的开发工具,可以完成从工程建立到管理,编译,连接,目标代码的生成,软件仿真,硬件仿真等完整的开发流程,尤其是其C编译工具在产生代码的准确性和效率方面达到了很好的水平,而且可以附加灵活地控制选项,能极大提高单片机软件开发的效率,拥有Keil这个强大的开发平台也是8051系列单片机与其他系列单片机相比的一个非常重要的优势。
4.1主程序流程图
主程序完成初始化和显示控制向总线发送数据等功能,程序流程见图初始化包括设置堆栈和程序状态字、为各个变量赋初值、设置外部中断和定时器的工作
27
方式以及各外设芯片的设置。开机后,通过键盘设定各控制器所要控制需要的参数值,然后系统开始采集数据并显示,对控制量进行计算和输出,接下来将将得到的输出信号传送到执行器来完成控制器的控制功能,并将需要显示器显示的数据及时准确地显示出来。
图4.1 主程序流程图
28
在本论文的控制器设计中,相当于主程序来说,数据采集模块、数据处理模块和LED显示控制模块也是相对来水比较重要的模块,下面分别给出这三个模块的程序流程图:
(1)数据采集系统流程图
单片机控制器的数据采集模块的任务包括系统的初始化,数据的A/D转换,输入数据的显示,键盘处理,超限报警的检测和处理和合理数据的传送等,根据所要完成的任务可以编写如下的程序流程图。
图4.2 数据采集流程图
29
数据处理流程图
相对于数据采集系统来说,单片机控制器的数据处理系统包括了对接收到的信号调用相应的子程序来进行计算,检查输出数据的合理行,并将合理数据送入D/A转换,然后传送到执行器来完成系统的控制任务。
图4.3 数据处理流程图
在单片机的控制系统中,显示单元已经成为不可或缺的一部分,在本论文的设计中,应用扩展接口8255A来连接LED显示器,完成控制器的显示功能,下图给出了89C51的LED动态显示流程图,由流程图可以看出显示程序包括8255A的初始化、数据和段码的查表变换、向LED送选定的段码、延时、反复循环等。
30
图4.4 89C51的LED动态显示流程图
31