第三章常用控制程序设计.ppt
《第三章常用控制程序设计.ppt》由会员分享,可在线阅读,更多相关《第三章常用控制程序设计.ppt(174页珍藏版)》请在三一办公上搜索。
1、第三章 常用控制程序设计,3.1 判断程序设计 3.2 巡回检测程序设计 3.3 数字滤波程序设计 3.4 标度变换程序设计 3.5 上下限报警处理程序设计 3.6 LED数码管显示程序设计 3.7 定时程序设计 3.8 键盘控制程序设计 3.9 抗干扰技术 3.10 电机控制程序设计 3.11 步进电机控制,3.1 判断程序设计,3.1.1 算术判断程序 3.1.2 逻辑判断程序 3.1.3 标志判断程序,返回本章首页,判断程序就是分支执行程序。程序在执行时,首先判定给定的条件是否满足,根据判定的结果(真或假)再执行相应的操作。例如:在转速控制系统中,电机的恒速运转一般是通过控制输入电压来实
2、现的,首先检测出电机的实际转速,再比较电机的实际转速和给定转速,如果电机的转速低于给定转速,就需要增加输入电压;如果电机的转速高于给定转速,就需要降低输入电压。上述功能的执行过程如图3-1所示。,图3-1 判断程序框图,MCS-51系列的程序状态字(PSW)是一个用于存储程序运行状态信息的8位寄存器,其位定义如表3-1所示。其中有些位状态是根据程序运算结果由硬件自动设置;而有些位状态则是通过软件设定的。PSW的位状态可通过指令读出,以实现程序的转移。,返回本节,3.1.1 算术判断程序,1.两个8位无符号数比较 2.两个16位无符号数比较 3.两个8位有符号数的比较,两个8位无符号数比较,图3
3、-2 8位无符号数的比较流程框图,CLRCY;进位标志清零 MOVA,M;AMSUBBA,N;求MNJZEQU;累加器A=0,则M=N,转EQUJCLESS;CY=1,有借位,则MN处理程序;无借位,则MN,执行BIG处理程序EQU:M=N处理程序LESS:MN处理程序,8位无符号数的比较程序清单:,2.两个16位无符号数比较,图3-3 16位无符号数的比较流程框图,16位无符号数的比较程序清单:,CLRCY;标志位清零 MOVA,MH;AMHMOVR2,NH;R2NHSUBBA,R2;高8位比较JZHEQU;高8位相等,转低8位比较 JCLESS;有借位,转MN 理程序,HEQU:CLRCY
4、;标志位清零 MOVA,ML;AMLMOVR2,NL;R2NLSUBBA,R2;低8位比较JZEQU;A=0,则M=N,转EQUJCLESS;有借位,则MN处理程序;无借位,执行MN 理程序EUQ:M=N 处理程序 LESS:MN 处理程序,3.两个8位有符号数的比较,由于M和N均为有符号数,M和N两数在比较时,可能出现以下四种情况:(1)M0,N0,即两数均为正数。(2)M0,N0,即M为负数,N为正数。(4)M0,N0,即两数均为负数。,图3-4 8位有符号数的比较流程框图,8位有符号数比较程序清单:,MOVA,M;AMMOVR2,N;R2NSUBBA,R2;M和N 比较JZEQU;M和N
5、相等,转相等处理程序JBPSW.2,FLOW;判断是否溢出JBACC.7,LESS;无溢出,且A的最高位为1,则MNFLOW:JBACC.7,BIG;有溢出,且A的最高位为1,则MNLESS:MN处理程序 EUQ:M=N处理程序,返回本节,3.1.2 逻辑判断程序,逻辑判断程序的设计步骤:(1)读入数据(开关状态或阀门的位置);(2)屏蔽不需要的状态位;(3)与所要求的状态比较;(4)判断比较结果,选择程序入口。,例3-1图3-5中A、B、C、D表示4个开关,当四个开关均闭合时,顺序执行相应的程序,否则,继续检测。逻辑判断程序流程框图如图3-6所示。,图3-5 开关位置检测图,图3-6 开关状
6、态检测流程图,逻辑判断程序清单:,CHECK:MOVA,P1;读入开关状态 ANLA,#55H;屏蔽无用位XRLA,#00H;判断A、B、C、D是否全部闭合JNZCHECK;A、B、C、D没全部闭合,继续检测;否则顺序执行相应程序,返回本节,3.1.3 标志判断程序,标志判断的设计思想是:根据某一设定的标志单元(或标志位)的状态,决定程序的执行方向。电机旋转方向控制程序流程图如图3-7所示。,图3-7 电机旋转方向控制程序流程图,电机旋转方向控制程序清单:,FLAGBIT 00H;设定00H为电机旋转方向控制位 JBFLAGRIGHT;FLAG=1,转RIGHTLEFT:;FLAG=0,顺时针
7、旋转控制程序 RIGHT:;逆时针旋转控制程序,返回本节,3.2 巡回检测程序设计,3.2.1 概述 3.2.2 巡回检测举例,返回本章首页,3.2.1 概述,所谓的巡回检测就是对生产过程中的各个参数按照一定的周期进行检查和测量,检测的数据通过计算机处理后可以进行显示、打印和报警等操作。巡回检测程序主要由以下几个方面构成:1.采样周期T的确定 2.采样开关通道号的控制 3.A/D转换 4.数据处理,返回本节,3.2.2 巡回检测举例,1.利用8位A/D转换芯片(ADC0809)2.采用12位A/D转换芯片(AD574A),1.利用8位A/D转换芯片(ADC0809),图3-8 炉温巡回检测电路
8、原理图,系统的硬件电路介绍:,(1)测量元件和变送器(2)A/D转换电路(3)二分频电路,本程序由系统初始化程序和中断程序组成。初始化程序完成中断向量和定时器初值的设定;中断程序完成数据采样工作,实现对8个通道的巡回检测。初始化程序功能:设置定时器0、外部中断0和外部中断1的中断程序入口;设置定时器0的工作方式为方式1,定时时间为100ms;设置计数单元(30H)初值。初始化程序流程框图如图3-9所示。,图3-9 初始化程序流程图,初始化程序清单:,ORG0000H AJMPSTART ORG0003H AJMPSAMPLE;转采样中断程序 ORG000BH AJMPTIME0;转8秒定时中断
9、程序ORG0013HAJMPEOC;转EOC中断处理程序START:MOVTMOD,#01H;置定时器0为工作方式1 MOVTH0,#3CH,MOVTL0,#0B0H;定时器初值设定 MOV30H,#00H;置计数初值SETBIT0;中断请求信号为脉冲方式 SETBIT1;中断请求信号为脉冲方式 SETBEX0;外部中断0中断允许SETBET0;定时器0中断允许 SETBEA;开中断SETBTR0;启动定时器HERE:AJMPHERE;等待中断,定时器中断程序流程框图如图3-10所示。,图3-10 定时器中断程序流程框图,定时器中断程序程序清单:,TIME0:CLREA;关中断INC30H M
10、OVA,30H XRLA,#50H;判断是否到8秒JZS_8;8秒定时到,转至S_8AJMPRECOUN;未到8秒,继续计时S_8:SETBP3.2;触发外部中断0NOP CLRP3.2 NOPRECOUN:MOVTH0,#3CH MOVTL0,#0B0H;设定定时器初值SETBEA;开中断RETI;中断返回,数据采样程序流程框图如图3-11所示。,数据采样程序程序清单:,SAMPLE:SETB00H;设置标志位 MOVDPTR,#0F00H;设置通道初值 MOVR6,#08H;设置通道数 MOVR7,#05H;设置采样次数 MOVR0,#40H;设置数据区首址 TRAN_S:MOVXDPTR
11、,A;启动A/D转换程序流程图WAIT:JB00H,WAIT;标志位为1等待A/D转换完成中断,SETB00H;置标志位INCDPTR;通道号加1INCR0INCR0INCR0INCR0INCR0;45H为下一通道采样数据存放首址DJNZR6,#TRAN_S;8个通道采样未完,继续采样MOVDPTR,#0F00H;8个通道采样结束,重置通道初值INCR0;修改采样数据存放地址DJNZR7,TRAN_S;未完成5次采样,继续;数据处理程序.RETI,2.采用12位A/D转换芯片(AD574A),图3-14 AD574A和8031的硬件接口电路图,图3-15 AD574A A/D转换程序流程框图,
12、D574A A/D转换程序清单:,ORG0000HAJMPSTARTORG0003HAJMPSAMPLE;转至数据采样程序START:MOVDPTR,#0000H;建立AD574A的地址MOVR0,#40H;设置数据存储初址SETBEX0;允许外部中断0SETBIT0;设置外部中断0请求信号方式为脉冲方式SETBEA;中断允许MOVXDPTR,A;启动A/D转换HERE:AJMPHERE;等待中断,中断服务程序清单:,SAMPLE:CLREA;关中断MOVDPTR,#0002H MOVXA,DPTR;读A/D转换数据的高8位MOVR0,A;保存数据INCR0INCDPTR MOVXA,DPTR
13、;读A/D转换数据的低4位SETBEA;开中断RETI,返回本节,3.3 数字滤波程序设计,3.3.1 概述 3.3.2 数字滤波的方法,返回本章首页,3.3.1 概述,和模拟滤波装置相比,数字滤波有以下几个优点:(1)数字滤波通过程序实现,不需硬件设备,系统的可靠性较高。(2)数字滤波可实现多通道共用。(3)可对低频信号(如0.01Hz)实现滤波。(4)采用不同的算法和参数就可实现对不同信号的滤波,使用起来灵活、方便。,返回本节,3.3.2 数字滤波的方法,1.程序判断滤波 2.中值滤波 3.算术平均滤波 4.加权平均滤波 5.一阶滞后滤波 6.防脉冲干扰平均值法,1.程序判断滤波,限幅滤波
14、就是把相邻的两次采样值相减,求出其增量(以绝对值表示),然后与两次采样允许的最大偏差值(由被控对象的实际情况决定)y进行比较,如果小于等于y,则取本次采样值;如果大于y,则仍取上次采样值作为本次采样值。即:Yn-Yn-1y,则Yn=Yn,取本次采样值Yn-Yn-1 y,则Yn=Yn-1,取上次采样值(3-1),限幅滤波程序流程框图如图3-16所示。,图3-16 限幅滤波程序流程框图,限幅滤波程序程序清单:,PUSHPSW;保护现场PUSHA CLRC;进位标志位清零MOVDATA,DATA2 MOVA,DATA1SUBBA,DATA;求Yn-1-YnJNCCOMPARE;如果Yn-1-Yn0,
15、转COMPARECPLA;如果Yn-1-Yn0,求补 INCA,COMPARE:CLRCSUBBA,LIMIT;Yn-Yn-1和y比较JCOVER;如果Yn-Yn-1y,DATA2DATAMOVDATA,DATA1;如果Yn-Yn-1y,DATA1DATAOVER:POPA;恢复现场 POPPSWRET;返回,限速滤波的滤波原理如下:,设在顺序采样时刻T1、T2、T3所采集的数据分别为Y1、Y2、Y3,则当Y2-Y1y,则Y2作为采样值;Y2-Y1y,则保留Y2,但不作为采样值,继续采样得Y3;如果Y3-Y2y,则Y3作为采样值;Y3-Y2y,则取作为采样值。,2.中值滤波,所谓中值滤波法就是
16、对某一被测参数连续采样n次(n一般取奇数),然后把n次采样值按顺序排列,取其中间值做为本次采样值。中值滤波程序的流程框图如图3-17所示。,图3-17 中值滤波程序流程框图,中值滤波程序程序清单:,PUSHPSWPUSHASORT:MOVR0,DATA;数据存储区单元首址MOVR7,TIME;读比较次数CLRFLAG;清交换标志位 LOOP:MOVA,R0;取第一个数MOVFIRST,A;保存第一个数INCR0MOVSECOND,R0;保存第二个数CLRCSUBBA,R0;两数比较,JCNEXT;第一数小于第二数,不交换MOVR0,FIRST DECR0MOVR0,SECOND;交换两数INC
17、R0SETBFLAG;置交换标志位NEXT:DJNZR7,LOOP;进行下一次比较JBFLAG,SORT;进行下一轮比较DECR0CLRCMOVA,TIME,RRCAMOVR7,ACONT:DEC R0DJNZR7,CONTMOVSAMP,R0;取中值POPAPOPPSWRET,3.算术平均滤波所谓算术平均滤波就是把n个采样值相加,然后取其算术平均值作为本次有效的采样信号,即:,图3-18 算术平均滤波程序流程图,算术平均滤波程序清单:(本例中取采样次数n=8),PUSHPSW;现场保护 PUSHAMOVFLAG,#00H;进位位清零MOVR0,DATA;设置数据存储区首址MOVR7,#08H
18、;设置采样数据个数CLRA;清累加器LOOP:ADDA,R0;两数相加JNCNEXT;无进位,转NEXTINCFLAG;有进位,进位位加1NEXT:INCR0;数据指针加1DJNZR7,LOOP;未加完,继续加MOVR7,#03H;设置循环次数,DIVIDE:MOVTEMP,A;保存累加器中的内容MOVA,FLAG;累加结果除2CLRC RRCAMOVFLAG,A MOVA,TEMP RRCA DJNZR7,DIVIDE;未结束,继续执行 MOVSAMP,A;保存结果至SAMP中POPA;恢复现场POPPSW RET,4.加权平均滤波,在算术平均滤波程序中,n次采样值在最后的结果中所占的比重是
19、相等的,这样虽然消除了随机干扰,但有用信号的灵敏度也随之降低。为了提高滤波效果,将各个采样值取不同的比重,然后再相加求平均值,这种方法称为加权平均滤波。一个n项加权平均式为:,图3-19 加权平均滤波程序流程图,加权平均滤波程序清单:,PUSHPSW;保护现场PUSHAMOVR7,TIME;数据个数设置MOVR0,DATA;数据区首址设置MOVR1,COEFF;系数存储首址设置MOVFLAG,#00H;累加结果存储区清零MOVSAMP_L,#00H MOVSAMP_H,#00HLOOP:MOVA,R0;读采样值MOVB,AMOVA,R1;读加权平均系数,MULABCLRCADDA,SAMP_L
20、;累加和MOVSAMP_L,AMOVA,BADDCA,SAMP_HJNCNEXT INCFLAG NEXT:MOVSAMP_H,A INCR0;数据区地址加1 INCR1;系数地址加1 DJNZR7,LOOP;未加完,继续MOVR7,#07H;设置循环次数,DIV128:CLRCMOVA,FLAG;累加结果除2RRCA MOVFLAG,AMOVA,SAMP_HRRCAMOVSAMP_H,AMOVA,SAMP_LRRCAMOVSAMP_L,ADJNZR7,DIV128;未除完,继续MOVSAMP,SAMP_L;保存滤波后采样值POPA;恢复现场POPPSWRET,5.一阶滞后滤波,图3-20 一
21、阶滞后滤波程序流程图,一阶滞后滤波程序清单:,MOVMUL1_H,COEFF1_HMOVMUL1_L,COEFF1_LMOVMUL2_H,DATA1_HMOVMUL2_H,DATA1_LACALLMULTD;MOVBUFF1,PR_H MOVBUFF2,PR_L MOVMUL1_H,COEFF2_H MOVMUL1_L,COEFF2_L,MOVMUL2_H,DATA2_HMOVMUL2_H,DATA2_L ACALLMULTD;CLRCMOVA,PR_H;ADDA,BUFF1 MOVPR_H,AMOVA,PR_LADDCA,BUFF2;MOVPR_L,A,双字节无符号位乘法子程序(MULTD)
22、。,入口条件:乘数MUL1存于MUL1_H和MUL1_L单元中,被乘数MUL2存于MUL2_H和MUL2_L单元中。出口条件:乘积按顺序存于PR_H、PR_L、MUL1_H、MUL1_L单元中。,MULTD:CLR C;清进位标志位MOVPR_L,#00H;乘积高8位清零 MOVPR_H,#00HMOVR7,#11H;设置循环次数LOOP1:JNCLOOP2;进位标志位为零,转LOOP2MOVA,PR_L;PR+MUL2ADDA,MUL2_LMOVPR_L,AMOVA,PR_HADDCA,MUL2_HMOVPR_H,A,LOOP2:MOVA,PR_H;PR右移一位RRCAMOVPR_H,AMO
23、VA,PR_LRRCAMOVPR_L,AMOVA,MUL1_H;MUL1右移一位RRCAMOVMUL1_H,AMOVA,MUL1_L RRCAMOVMUL1_L,A DJNZR7,LOOP1;循环未结束,继续,6.防脉冲干扰平均值法,图3-21 防脉冲干扰平均值法程序流程框图,防脉冲干扰平均值法程序清单:,PUSHA;保护现场PUSHPSWSORT:MOVR0,DATA;数据存储区单元首址MOVR7,#10H;读比较次数CLRCHANGE;清交换标志位 LOOP:MOVA,R0;取第一个数MOVFIRST,A;保存第一个数INCR0MOVSECOND,R0;保存第二个数CLRCSUBBA,R0
24、;两数比较,JCNEXT;第一数小于第二数,不交换MOVR0,FIRST DECR0MOVR0,SECOND;交换两数INCR0SETBCHANGE;置交换标志位NEXT:DJNZR7,LOOP;进行下一次比较JBCHANGE,SORT;进行下一轮比较 MOVFLAG,#00H;进位位清零 INCDATA;去掉最小值MOVR0,DATA;设置数据存储区首址MOVR7,#08H;设置累加循环次数,去掉最大值 CLRA;清累加器 LOOP:ADDA,R0;两数相加 JNCNEXT;无进位,转NEXT INCFLAG;有进位,进位位加1,NEXT:INCR0;数据指针加1 DJNZR7,LOOP;未
25、加完,继续加MOVR7,#03H;设置循环次数DIVIDE:MOVTEMP,A;保存累加器中的内容MOVA,FLAG;累加结果除2CLRC RRCAMOVFLAG,AMOVA,TEMPRRCA DJNZR7,DIVIDE;未结束,继续执行MOVSAMP,A;保存结果至SAMP中POPA;恢复现场POPPSWRET,返回本节,3.4 标度变换程序设计,对于一般的线性仪表而言,标度变换公式为:,为了简化程序设计,一般把被测参数的起点A0所对应的A/D转换值设定为0,即N0=0,这样式(3-6)可以改写为:,返回本章首页,例3-2某温度测量仪表的量程为100900,利用8031和ADC0809进行A
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三 常用 控制程序 设计

链接地址:https://www.31ppt.com/p-2248628.html