基于单片机的pid控制器设计论文毕设论文 下载本文

中国矿业大学徐海学院2012届本科生毕业设计(论文)

5 软件设计

5.1 Proteus软件简介

很多的单片机软件系统都是采用前、后台系统(也称超循环系统)。其中,应用程序是一个无限的循环,循环中调用相应的函数完成相应的操作,这部分可以看成是后台行为(background)。中断服务程序处理异步事件,这部分可以看成是前台行为(foreground)。后台也可以叫做任务级。前台也可以叫做中断级。时间相关性很强的关键操作一定是靠中断服务来保证的。

Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真、分析各种模拟器件和集成电路,该软件的特点是:①实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。②支持主流单片机系统的仿真。目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。③提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,所以在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2等软件。④具有强大的原理图绘制功能。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。

仿真的概念其实使用非常广,含义就是使用可控的手段来模仿的情况。 软件仿真这种方法主要是使用计算机软件来模拟实际的单片机运因此仿真与硬件无关的系统具有一定的优点。用户不需要搭建硬件电路就可对程序进行验证,特别适合于偏重算法的程序。软件仿真的缺点是无法完全真与硬件相关的部分,因此最终还要通过硬件仿真来完成最后的设计;

5.2 Keil软件

Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、

36

中国矿业大学徐海学院2012届本科生毕业设计(论文)

库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。

Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍Keil C51开发系统各部分功能和使用。

Keil C51单片机软件开发系统的整体结构

C51工具包的整体结构,uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及C51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。

使用独立的Keil仿真器时,注意事项

* 仿真器标配11.0592MHz的晶振,但用户可以在仿真器上的晶振插孔中换插其他频率的晶振。

* 仿真器上的复位按钮只复位仿真芯片,不复位目标系统。

* 仿真芯片的31脚(/EA)已接至高电平,所以仿真时只能使用片内ROM,不能使用片外ROM;但仿真器外引插针中的31脚并不与仿真芯片的31脚相连,故该仿真器仍可插入到扩展有外部ROM(其CPU的/EA引脚接至低电平)的目标系统中使用。

5.3 设计思路

5.3.1 程序设计

根据系统功能,可以将系统设计分为若干个子程序进行设计,如按键子

37

中国矿业大学徐海学院2012届本科生毕业设计(论文)

程序、显示子程序、参数设置子程序、PID算法子程序。再采用Proteus和Keil 联调来进行系统软件的仿真。

在程序设计上,先使数码管第一位显示出PID参数中的一个,在通过按键和程序设计使后三位显示出PID参数的设定值,通过加减按键来调节这些参数的数值。当数值确定后,按确定键。

先输入一个给定输入值,通过参数选择再通过PID整定显示出参数和参数的整定输出值,再将输出值赋给前一时刻的输入值再进行循环。

给定值参数选择单片机端口输出PID整定显示参数整定值显示参数

图 5.1 主程序流程图

5.3.2 显示子程序

共阴极数码管是用高电平(“1”)点亮的,要求驱动功率较大。

表2 数字字型码 共阴字型码 所显字符 共阴字型码 所显字符 3FH 0 7DH 6 06H 1 07H 7 5BH 2 7FH 8 4FH 3 6FH 9 66H 4 77H A 6DH 5 38

中国矿业大学徐海学院2012届本科生毕业设计(论文)

本文中数码管显示出PID参数,字型码分别为73H,06H,3fH.

5.3.3 按键子程序

当按键被按下时,I/O口电平为低;松开时,I/O口电平为高。按键扫描程序通过读取I/O口的电平即可知道对应按键的状态。按键的抖动时间的长短由按键的机械特性决定,一般为5~10ms,这是一个很重要的参数。抖动过程引起电平信号的波动,有可能令CPU误解为多次按键操作,从而引起错误处理。为了确保CPU对一次按键动作只确认一次按键,提高按键处理的可靠性,应在程序中做按键消抖处理。按键的消抖,通常有软件,硬件两种消除方法。 本系统采用软件消抖,当单片机第一次检测到有键按下时,即检测到与按键连接的I/O口为低电平是,等待10ms,再去确认该I/O口是否仍旧为低电平,如果还是低电平,就一般的机械按键而言,已经是出于稳定期了,按键的抖动被消除了。如果10ms 之后I/O口不为低电平,则说明是干扰信号,而不是按键被按下。

开始是否有键按下Y延迟10ms是否有键按下Y取键值N按键释放?Y键处理返回N返回0值N返回0值

39

图 5.2 按键流程图

中国矿业大学徐海学院2012届本科生毕业设计(论文)

5.3.4 PID参数设置子程序

在实际调试中,只能先大致设定一个经验值,然后根据调节效果修改。 对于温度系统:P(%)20--60,I(分)3--10,D(分)0.5--3 对于流量系统:P(%)40--100,I(分)0.1--1 对于压力系统:P(%)30--70,I(分)0.4--3 对于液位系统:P(%)20--80,I(分)1--5

PID控制器各个参数对系统的动态和稳态性能起着不同的作用,这三个参数的取值优劣将直接影响PID控制系统的控制品质好坏。

开始发送接收数据命令接收数据数据保存PID参数输入Y需要调整控制参数N结束 图 5.3 参数设置程序流程图

5.3.5 PID算法子程序

PID控制的算法有两种,增量式PID算法和位置式PID算法。 增量式PID算法只需保持当前时刻以前三个时刻的误差即可。它与位置式PID相比,有下列优点:

(1)位置式PID算法每次输出与整个过去状态有关,计算式中要用到过去误差的累加值,因此,容易产生较大的累积计算误差。而增量式PID只

40