第三章常用控制程序设计

上传人:1888****888 文档编号:48659097 上传时间:2022-01-13 格式:PPT 页数:174 大小:1.59MB
返回 下载 相关 举报
第三章常用控制程序设计_第1页
第1页 / 共174页
第三章常用控制程序设计_第2页
第2页 / 共174页
第三章常用控制程序设计_第3页
第3页 / 共174页
点击查看更多>>
资源描述
第三章第三章 常用控制程序设计常用控制程序设计第三章第三章 常用控制程序设计常用控制程序设计 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 标志判断程序标志判断程序 返回本章首页第三章第三章 常用控制程序设计常用控制程序设计判断程序就是分支执行程序。程序在执行时,首先判定给判断程序就是分支执行程序。程序在执行时,首先判定给定的条件是否满足,根据判定的结果(真或假)再执行相定的条件是否满足,根据判定的结果(真或假)再执行相应的操作。应的操作。例如:在转速控制系统中,电机的恒速运转一般是通过控例如:在转速控制系统中,电机的恒速运转一般是通过控制输入电压来实现的,首先检测出电机的实际转速,再比制输入电压来实现的,首先检测出电机的实际转速,再比较电机的实际转速和给定转速,如果电机的转速低于给定较电机的实际转速和给定转速,如果电机的转速低于给定转速,就需要增加输入电压;如果电机的转速高于给定转转速,就需要增加输入电压;如果电机的转速高于给定转速,就需要降低输入电压。上述功能的执行过程如图速,就需要降低输入电压。上述功能的执行过程如图3-1所示。所示。第三章第三章 常用控制程序设计常用控制程序设计图图3-1 判断程序框图判断程序框图检测电机转速是否大于给定转速降低输入电压提高输入电压是否第三章第三章 常用控制程序设计常用控制程序设计MCS-51系列的程序状态字(系列的程序状态字(PSW)是一个用于存储程序是一个用于存储程序运行状态信息的运行状态信息的8位寄存器,其位定义如表位寄存器,其位定义如表3-1所示。其中所示。其中有些位状态是根据程序运算结果由硬件自动设置;而有些有些位状态是根据程序运算结果由硬件自动设置;而有些位状态则是通过软件设定的。位状态则是通过软件设定的。PSW的位状态可通过指令读的位状态可通过指令读出,以实现程序的转移。出,以实现程序的转移。返回本节第三章第三章 常用控制程序设计常用控制程序设计3.1.1 算术判断程序算术判断程序1. 两个两个8位无符号数比较位无符号数比较 2. 两个两个16位无符号数比较位无符号数比较 3. 两个两个8位有符号数的比较位有符号数的比较 第三章第三章 常用控制程序设计常用控制程序设计1. 两个两个8位无符号数比较位无符号数比较 图图3-2 8位无符号数的比较流程框图位无符号数的比较流程框图第三章第三章 常用控制程序设计常用控制程序设计 CLRCY;进位标志清零进位标志清零 MOVA,M;AMSUBBA,N;求求MNJZEQU;累加器累加器A=0,则则M=N,转转EQUJCLESS;CY=1,有借位,则有借位,则MN处理程序处理程序;无借位,则;无借位,则MN,执行执行BIG处理程序处理程序EQU:M=N处理程序处理程序LESS:MN处理程序MN处理程序借位否?是是是否否否第三章第三章 常用控制程序设计常用控制程序设计16位无符号数的比较程序清单:位无符号数的比较程序清单: CLRCY;标志位清零标志位清零 MOVA,MH;AMHMOVR2,NH ;R2NHSUBBA,R2;高高8位比较位比较JZHEQU ;高高8位相等,转低位相等,转低8位比较位比较 JCLESS;有借位,转有借位,转MN 理程序理程序第三章第三章 常用控制程序设计常用控制程序设计HEQU: CLRCY;标志位清零标志位清零 MOVA,ML;AMLMOVR2,NL ;R2NLSUBBA,R2;低低8位比较位比较JZEQU;A=0,则则M=N,转转EQUJCLESS;有借位,则有借位,则MN处理程序处理程序;无借位,执行;无借位,执行MN 理程序理程序EUQ:M=N 处理程序处理程序 LESS:M0,N0, 即两数均为正数。即两数均为正数。(2)M0,N0, 即即M为正数,为正数,N为负数。为负数。(3)M0, 即即M为负数,为负数,N为正数。为正数。(4)M0,N0, 即两数均为负数。即两数均为负数。第三章第三章 常用控制程序设计常用控制程序设计图图3-4 8位有符号数的比较流程框图位有符号数的比较流程框图M AM-N=0?溢出否?ACC.7=1?ACC.7=1?否否否否是是是是转M=N程序转MN程序第三章第三章 常用控制程序设计常用控制程序设计8位有符号数比较程序清单:位有符号数比较程序清单: MOVA,M;AMMOVR2,N;R2NSUBBA,R2;M和和N 比较比较JZEQU;M和和N相等,转相等处理程序相等,转相等处理程序JBPSW.2,FLOW;判断是否溢出判断是否溢出JBACC.7,LESS;无溢出,且无溢出,且A的最高位为的最高位为1,则,则MNFLOW:JBACC.7,BIG;有溢出,且有溢出,且A的最高位为的最高位为1,则,则MNLESS:MN处理程序处理程序;否则,;否则,MN处理程序处理程序 EUQ:M=N处理程序处理程序 返回本节第三章第三章 常用控制程序设计常用控制程序设计3.1.2 逻辑判断程序逻辑判断程序 逻辑判断程序的设计步骤:逻辑判断程序的设计步骤:(1)读入数据(开关状态或阀门的位置);读入数据(开关状态或阀门的位置);(2)屏蔽不需要的状态位;屏蔽不需要的状态位;(3)与所要求的状态比较;与所要求的状态比较;(4)判断比较结果,选择程序入口。)判断比较结果,选择程序入口。第三章第三章 常用控制程序设计常用控制程序设计例例3-1图图3-5中中A、B、C、D表示表示4个开个开关,当四个开关均关,当四个开关均闭合时,顺序执行闭合时,顺序执行相应的程序,否则,相应的程序,否则,继续检测。继续检测。逻辑判断程序流程逻辑判断程序流程框图如图框图如图3-6所示。所示。 P1.0P1.2P1.4P1.68031+5VABDCR1R4R3R2. 图图3-5 开关位置检测图开关位置检测图 第三章第三章 常用控制程序设计常用控制程序设计读入开关状态屏蔽不需要的位满足要求否?继续执行是否 图图3-6 开关状态检测流程图开关状态检测流程图第三章第三章 常用控制程序设计常用控制程序设计逻辑判断程序清单:逻辑判断程序清单: CHECK:MOVA,P1;读入开关状态读入开关状态 ANLA,#55H ;屏蔽无用位屏蔽无用位XRLA,#00H ;判断判断A、B、C、D是否全部闭合是否全部闭合JNZCHECK;A、B、C、D没全部闭合,继续检测没全部闭合,继续检测;否则顺序执行相应程序;否则顺序执行相应程序 返回本节第三章第三章 常用控制程序设计常用控制程序设计3.1.3 标志判断程序标志判断程序 标志判断的设计思想标志判断的设计思想是:根据某一设定的是:根据某一设定的标志单元(或标志位)标志单元(或标志位)的状态,决定程序的的状态,决定程序的执行方向。电机旋转执行方向。电机旋转方向控制程序流程图方向控制程序流程图如图如图3-7所示。所示。图图3-7 电机旋转方向控制程序流程图电机旋转方向控制程序流程图标志位判断标志位为1否?是否执行顺时针旋转控制程序执行逆时针旋转控制程序第三章第三章 常用控制程序设计常用控制程序设计电机旋转方向控制程序清单:电机旋转方向控制程序清单: FLAGBIT 00H;设定设定00H为电机旋转方向控制位为电机旋转方向控制位 JBFLAGRIGHT;FLAG=1,转转RIGHTLEFT: ;FLAG=0,顺时针旋转控制程序顺时针旋转控制程序 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 炉温巡回检测电路原理图炉温巡回检测电路原理图P0.0 0.7D0 7Q0Q2Q1ADDAADDBADDCALESTART2-7 2-2isb2-8msb2-12分频CLOCKENABLEEOCADC080974007400740674LS3738031.P2.7WRRDALE/PINT0IN0IN1IN2IN3IN4IN5IN6IN7第三章第三章 常用控制程序设计常用控制程序设计系统的硬件电路介绍:系统的硬件电路介绍: (1)测量元件和变送器)测量元件和变送器 (2)A/D转换电路转换电路 (3)二分频电路)二分频电路 第三章第三章 常用控制程序设计常用控制程序设计本程序由系统初始化程序和中断本程序由系统初始化程序和中断程序组成。初始化程序完成中断程序组成。初始化程序完成中断向量和定时器初值的设定;中断向量和定时器初值的设定;中断程序完成数据采样工作,实现对程序完成数据采样工作,实现对8个通道的巡回检测。个通道的巡回检测。初始化程序功能:设置定时器初始化程序功能:设置定时器0、外部中断外部中断0和外部中断和外部中断1的中断程的中断程序入口;设置定时器序入口;设置定时器0的工作方式的工作方式为方式为方式1,定时时间为,定时时间为100ms;设设置计数单元(置计数单元(30H)初值。初值。初始化程序流程框图如图初始化程序流程框图如图3-9所示。所示。开中断中断初始化启动定时器等待中断开始设置中断向量定时器初始化图图3-9 初始化程序流程图初始化程序流程图第三章第三章 常用控制程序设计常用控制程序设计初始化程序清单:初始化程序清单: ORG0000H AJMPSTART ORG0003H AJMPSAMPLE;转采样中断程序转采样中断程序 ORG000BH AJMPTIME0 ;转转8秒定时中断程序秒定时中断程序ORG0013HAJMPEOC;转转EOC中断处理程序中断处理程序START:MOVTMOD,#01H;置定时器置定时器0为工作方式为工作方式1 MOVTH0,#3CH第三章第三章 常用控制程序设计常用控制程序设计MOV TL0,#0B0H;定时器初值设定定时器初值设定 MOV 30H,#00H;置计数初值置计数初值SETB IT0;中断请求信号为脉冲方式中断请求信号为脉冲方式 SETB IT1;中断请求信号为脉冲方式中断请求信号为脉冲方式 SETB EX0;外部中断外部中断0中断允许中断允许SETB ET0;定时器定时器0中断允许中断允许 SETB EA;开中断开中断SETB TR0;启动定时器启动定时器HERE:AJMP HERE;等待中断等待中断第三章第三章 常用控制程序设计常用控制程序设计定时器中断程序流程框图如图定时器中断程序流程框图如图3-10所示。所示。图图3-10 定时器中断程定时器中断程序流程框图序流程框图关中断计数单元加18s定时到否?触发INTO重新加载数据开中断否是开 始 返 回第三章第三章 常用控制程序设计常用控制程序设计定时器中断程序程序清单:定时器中断程序程序清单: TIME0: CLREA;关中断关中断INC30H MOVA,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:MOVX DPTR,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的硬件接口电路图的硬件接口电路图Q0DB10P0.0P0.1P0.3P0.2P0.7P0.6P0.5P0.4D0D0D0D0D0D0D0D0Q0Q1OEmsb-11DB10DB3DB4DB5DB6DB7DB8DB9DB2DB11sbBD0STATUSCECSA0/SCR/C12/8RDWRP2.7INT08031AH7400AN-GND.393837363532333412161728181714138743152474LS3735316171819202122232425262762139AD574A+15V-15V+Vs-Vs10Vspn模拟温度信号输入28117132.BIP OFFREF OUTREF IN+15V-15V100K100100K100 12.108第三章第三章 常用控制程序设计常用控制程序设计图图3-15 AD574A A/D转换程序流程框图转换程序流程框图开 始中断向量设置AD574地址设置数据存储首址设置外部中断0设置启动A/D转换结 束中断等待返 回开 始关中断读A/D转换数据高8位保存数据改变存储地址读A/D转换数据低4位开中断(a) 转换主程序(b) 中断服务程序第三章第三章 常用控制程序设计常用控制程序设计D574A A/D转换程序清单:转换程序清单: ORG0000HAJMPSTARTORG0003HAJMPSAMPLE;转至数据采样程序转至数据采样程序START:MOVDPTR,#0000H;建立建立AD574A的地址的地址MOVR0,#40H;设置数据存储初址设置数据存储初址SETBEX0;允许外部中断允许外部中断0SETBIT0;设置外部中断设置外部中断0请求信号方式为脉冲方式请求信号方式为脉冲方式SETBEA;中断允许中断允许MOVX DPTR,A;启动启动A/D转换转换HERE: AJMPHERE ;等待中断等待中断第三章第三章 常用控制程序设计常用控制程序设计中断服务程序清单:中断服务程序清单:SAMPLE:CLREA;关中断关中断MOVDPTR,#0002H MOVX A,DPTR;读读A/D转换数据的高转换数据的高8位位MOVR0,A ;保存数据保存数据INCR0INCDPTR MOVX A,DPTR;读读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. 程序判断滤波程序判断滤波 限幅滤波就是把相邻的两次采样值相减,求出其增量限幅滤波就是把相邻的两次采样值相减,求出其增量(以以绝对值表示绝对值表示),然后与两次采样允许的最大偏差值,然后与两次采样允许的最大偏差值(由被控由被控对象的实际情况决定对象的实际情况决定) y进行比较,如果小于等于进行比较,如果小于等于y,则取本次采样值;如果大于则取本次采样值;如果大于y,则仍取上次采样值作为则仍取上次采样值作为本次采样值。本次采样值。即:即:Yn-Yn-1y, 则则Yn=Yn , 取本次采样值取本次采样值Yn-Yn-1 y, 则则Yn=Yn-1 ,取上次采样值取上次采样值 (3-1)第三章第三章 常用控制程序设计常用控制程序设计限幅滤波程序流程框图如图限幅滤波程序流程框图如图3-16所示。所示。图图3-16 限幅滤波程序流程框图限幅滤波程序流程框图现场保护Yn-1-Yn0读Yn-1,Yn求 Yn-Yn-1Yn-1-Yn Y取上次采样值取本次采样值现场恢复否否是是开 始返 回第三章第三章 常用控制程序设计常用控制程序设计限幅滤波程序程序清单:限幅滤波程序程序清单: PUSHPSW;保护现场保护现场PUSHA CLRC;进位标志位清零进位标志位清零MOVDATA,DATA2 MOVA,DATA1SUBBA,DATA;求求Yn-1 -YnJNCCOMPARE;如果如果Yn-1 -Yn0,转转COMPARECPLA;如果如果Yn-1 -Yny,DATA1DATAOVER: POPA;恢复现场恢复现场 POPPSWRET;返回返回第三章第三章 常用控制程序设计常用控制程序设计限速滤波的滤波原理如下:限速滤波的滤波原理如下:设在顺序采样时刻设在顺序采样时刻T1、T2、T3所采集的数据分别所采集的数据分别为为Y1、Y2、Y3,则当则当 Y2-Y1 y,则则Y2作为采样值;作为采样值; Y2-Y1 y, 则保留则保留Y2,但不作为采样值,但不作为采样值,继续采样得继续采样得Y3;如果如果 Y3-Y2 y,则则Y3作为采样值;作为采样值; Y3-Y2 y, 则取作为采样值。则取作为采样值。第三章第三章 常用控制程序设计常用控制程序设计2. 中值滤波中值滤波 所谓中值滤波法就所谓中值滤波法就是对某一被测参数是对某一被测参数连续采样连续采样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 ;交换两数交换两数INCR0SETBFLAG;置交换标志位置交换标志位NEXT: DJNZR7,LOOP;进行下一次比较进行下一次比较JBFLAG,SORT;进行下一轮比较进行下一轮比较DECR0CLRCMOVA,TIME 第三章第三章 常用控制程序设计常用控制程序设计RRCAMOVR7,ACONT:DEC R0DJNZ R7,CONTMOV SAMP,R0;取中值取中值POPAPOPPSWRET第三章第三章 常用控制程序设计常用控制程序设计3. 算术平均滤波算术平均滤波所谓算术平均滤波就是所谓算术平均滤波就是把把n个采样值相加,然后个采样值相加,然后取其算术平均值作为本取其算术平均值作为本次有效的采样信号,即:次有效的采样信号,即: 图图3-18 算术平均滤波程序流程图算术平均滤波程序流程图现场保护设置数据区首址设置循环次数累加求和恢复现场所有数据加完否?求平均值否是开 始返 回读数据第三章第三章 常用控制程序设计常用控制程序设计算术平均滤波程序清单:(本例中取采样次数算术平均滤波程序清单:(本例中取采样次数n=8) PUSHPSW;现场保护现场保护 PUSHAMOVFLAG,#00H;进位位清零进位位清零MOVR0,DATA;设置数据存储区首址设置数据存储区首址MOVR7,#08H;设置采样数据个数设置采样数据个数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次采样值在最后的结果中所占次采样值在最后的结果中所占的比重是相等的,这样虽然消除了随机干扰,但有用信号的比重是相等的,这样虽然消除了随机干扰,但有用信号的灵敏度也随之降低。为了提高滤波效果,将各个采样值的灵敏度也随之降低。为了提高滤波效果,将各个采样值取不同的比重,然后再相加求平均值,这种方法称为加权取不同的比重,然后再相加求平均值,这种方法称为加权平均滤波。一个平均滤波。一个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;累加和累加和MOVSAMP_L,AMOVA,BADDC A,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 一阶滞后滤波程序流程图一阶滞后滤波程序流程图求求求1nyanxa)1( 1)1(nnyaxannyy1开 始返 回第三章第三章 常用控制程序设计常用控制程序设计一阶滞后滤波程序清单:一阶滞后滤波程序清单: MOV MUL1_H,COEFF1_HMOV MUL1_L,COEFF1_LMOV MUL2_H,DATA1_HMOV MUL2_H,DATA1_LACALLMULTD; MOV BUFF1,PR_H MOV BUFF2,PR_L MOV MUL1_H,COEFF2_H MOV MUL1_L,COEFF2_L1nya第三章第三章 常用控制程序设计常用控制程序设计MOVMUL2_H,DATA2_HMOVMUL2_H,DATA2_L ACALLMULTD;CLR CMOVA,PR_H;ADD A,BUFF1 MOVPR_H,AMOVA,PR_LADDCA,BUFF2; MOVPR_L,A 第三章第三章 常用控制程序设计常用控制程序设计双字节无符号位乘法子程序(双字节无符号位乘法子程序(MULTD)。)。 入口条件:乘数入口条件:乘数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_HADDC A,MUL2_HMOVPR_H,A第三章第三章 常用控制程序设计常用控制程序设计LOOP2:MOVA,PR_H;PR右移一位右移一位RRCAMOVPR_H,AMOVA,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 ;两数比较两数比较第三章第三章 常用控制程序设计常用控制程序设计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;未加完,继续加未加完,继续加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/D转换。在某一时刻计算机采样并经过数转换。在某一时刻计算机采样并经过数字滤波后的的数字量为字滤波后的的数字量为0CDH求此时对应的温度值是多少?求此时对应的温度值是多少?(设仪表的量程是线性的)(设仪表的量程是线性的)解:由式(解:由式(3-7)可知,)可知,A0=100,Am=900,Nx=0CDH=(205)D,Nm=0FFH=(255)D,所以此时对应的温度为:所以此时对应的温度为:第三章第三章 常用控制程序设计常用控制程序设计标度变换程序清单:标度变换程序清单: BDCHAN:MOVSUB1_L,AM;INCAM MOVSUB1_H,AMMOVSUB2_L,A0INCA0MOVSUB2_H,A0ACALLSUB2MOVMUL1_H,DIFF_HMOVMUL1_L,DIFF_LMOVSUB1_L,NX; 第三章第三章 常用控制程序设计常用控制程序设计INCNX MOVSUB1_H,NXMOVSUB2_L,N0INCN0MOVSUB2_H,N0ACALLSUB2MOVMUL2_H,DIFF_HMOVMUL2_L,DIFF_LACALLMULTD;求求MOVDIV1_H,PR_HMOVDIV1_L,PR_LMOVSUB1_L,NM; 第三章第三章 常用控制程序设计常用控制程序设计INCNMMOVSUB1_H,NMMOVSUB2_L,N0INCN0MOVSUB2_H,N0ACALLSUB2MOVDIV2_H,DIFF_HMOVDIV2_L,DIFF_LACALLDUBDIV;CLRCMOVA,DIV1_L第三章第三章 常用控制程序设计常用控制程序设计ADDCA,A0MOVAX,AINC A0MOVA,DIV1_HADDCA,A0MOVAX,A;RET第三章第三章 常用控制程序设计常用控制程序设计双字节减法子程序(双字节减法子程序(SUB2) 双字节减法子程序(双字节减法子程序(SUB2)程序入口:被减数放在程序入口:被减数放在SUB1_H、SUB1_L单元中,减数放在单元中,减数放在 SUB2_H、SUB2_L单元中;单元中;程序出口:差放在程序出口:差放在 DIFF_H、DIFF_L单元中。单元中。SUB2:CLRCMOVA,SUB1_L;ASUB1_LSUBBA,SUB2_L;低低8位相减位相减MOVDIFF_L,A;保存低保存低8位差值位差值MOVA,SUB1_H;ASUB1_HSUBBA,SUB2_H;高高8位相减位相减MOVDIFF_H,A;保存高保存高8位差值位差值RET第三章第三章 常用控制程序设计常用控制程序设计双字节无符号数除法(双字节无符号数除法(DUBDIV) 程序入口:被除数存放程序入口:被除数存放在在DIV1_H、DIV1_L单元中单元中, 除数存放在除数存放在 DIV2_H、DIV2_L单元中;单元中;程序出口:商存放在程序出口:商存放在 DIV1_H、DIV1_L单元中,余数存放在单元中,余数存放在L_L和和L_H单元中。单元中。DUBDIV:CLRA;余数单元清零余数单元清零MOVL_H,AMOVL_L,AMOVR0,#10H;设置除法移位次数设置除法移位次数 LOOP: CLRC;移位移位MOVA,DIV1_L第三章第三章 常用控制程序设计常用控制程序设计RLCAMOVDIV1_L,AMOVA,DIV1_HRLCAMOV DIV1_H,AMOV A,L_LRLCAMOV L_L,AMOV A,L_HRLCAMOV L_H,AMOV PSW.5,C第三章第三章 常用控制程序设计常用控制程序设计LP1:MOVA,L_L ;余数单元减除数余数单元减除数SUBBA,DIV2_LMOVR1,AMOVA,L_HSUBBA,DIV2_H JBPSW.5 ADD1JCSMALLADD1: MOVL_H,AMOVA,R1MOVL_L,AINCDIV1_L;商加一商加一 SAMLL:DJNZR0,LOOP第三章第三章 常用控制程序设计常用控制程序设计MOV 20H,L_H;四舍五入四舍五入 JB07H, ADD_D ;商的最高位为商的最高位为1,则转,则转ADD_DCLRC;判断小数部分是否大于判断小数部分是否大于0.5MOV A,L_LRLCAMOV L_L,AMOV A,L_HRLCASUBB A,DIV2_H第三章第三章 常用控制程序设计常用控制程序设计JCRETURN;小数部分小于小数部分小于0.5,退出,退出JNZADD1 ;小数部分大于小数部分大于0.5,则转,则转ADD_DMOV A,L_LSUBB A,DIV2_LJCRETURNADD_D:CLRC;商加一商加一INCDIV1_LMOV A,DIV1_HADDCA,#00HMOV DIV1_H,ARETURN:RET返回本节第三章第三章 常用控制程序设计常用控制程序设计3.5 上下限报警处理程序设计上下限报警处理程序设计 报警程序主要有以下几个步骤组成:报警程序主要有以下几个步骤组成:(1)采样被测参数。采样被测参数。(2)比较采样值和给定的上下限。比较采样值和给定的上下限。(3)根据比较结果执行相应的处理程序。根据比较结果执行相应的处理程序。返回本章首页第三章第三章 常用控制程序设计常用控制程序设计例例3-3设计一简单的单字节上下限报警程序,当设计一简单的单字节上下限报警程序,当采样值超出上、下限时,分别执行相应的报警处采样值超出上、下限时,分别执行相应的报警处理程序。理程序。设上限报警值存放在设上限报警值存放在Amax单元,下限报警值存放单元,下限报警值存放在在Amin单元,采样值存放在单元,采样值存放在SAMP单元。单元。简单上下限报警程序程序清单如下:简单上下限报警程序程序清单如下:第三章第三章 常用控制程序设计常用控制程序设计 .CLRC;清进位标志位清进位标志位MOVA,Amax;读上限报警值读上限报警值SUBBA,SAMP;判断是否超过上限报警值判断是否超过上限报警值 JCUPPER ;超过上限,转报警处理程序超过上限,转报警处理程序MOVA,Amin ;读下限报警值读下限报警值SUBBA,SAMP;判断是否超过下限报警值判断是否超过下限报警值JNCLOWER;超过下限,转报警处理程序超过下限,转报警处理程序UPPER:超上限处理程序。超上限处理程序。LOWER:超下限处理程序。超下限处理程序。 第三章第三章 常用控制程序设计常用控制程序设计例例3-4 设计一报警处理程序。只有采样值连续设计一报警处理程序。只有采样值连续3次异常时,系统才进行报警处理。次异常时,系统才进行报警处理。报警程序流程框图如图报警程序流程框图如图3-23所示。所示。第三章第三章 常用控制程序设计常用控制程序设计开 始取报警下限取报警上限重置允许连续异常次数设置采样正常标志设置采样异常标志上次采样正常否?允许连续采样异常次数=0?允许连续采样异常次数-1设置采样异常标志报警处理是采样值超下限否?采样值超上限否?是是结 束是否否否否图图3-23 报警程序流程框图报警程序流程框图第三章第三章 常用控制程序设计常用控制程序设计报警程序清单:报警程序清单: MOVNUM,#03HCHECK:CLRC;清进位标志位清进位标志位MOVA,Amax ;读上限报警值读上限报警值SUBBA,SAMP;判断是否超过上限报警值判断是否超过上限报警值 JCABNORMAL;超过上限,转超过上限,转ABNORMALMOVA,Amin ;读下限报警值读下限报警值SUBBA,SAMP;判断是否超过下限报警值判断是否超过下限报警值JNCABNORMAL;超过下限,转超过下限,转ABNORMAL第三章第三章 常用控制程序设计常用控制程序设计CLRFLAG;采样正常,清采样异常标志位采样正常,清采样异常标志位AJMPRETUABNORMAL:JBFLAG,ABNOR_L;上次采样异常,转上次采样异常,转ABNOR_L MOVNUM,#03H;上次采样正常,重置允许连续异常次上次采样正常,重置允许连续异常次数数SETBFLAG;置位采样异常标志位置位采样异常标志位AJMPRETU ABNOR_L:MOVA,NUM ;读允许连续采样异常次数读允许连续采样异常次数JZALARM ;允许采样异常次数允许采样异常次数=0,执行报警处理程序,执行报警处理程序DECNUM;允许采样异常次数允许采样异常次数0,允许采样异常次数减,允许采样异常次数减1SETBFLAG;置位采样异常标志位置位采样异常标志位AJMPRETUALARM1:.;报警处理程序报警处理程序.RETU:RET返回本节第三章第三章 常用控制程序设计常用控制程序设计3.6 LED数码管显示程序设计数码管显示程序设计 3.6.1 LED显示器件工作原理显示器件工作原理 3.6.2 LED显示方式显示方式 3.6.3 LED显示程序设计显示程序设计 返回本章首页第三章第三章 常用控制程序设计常用控制程序设计3.6.1 LED显示器件工作原理显示器件工作原理 LED显示器件是通过发光二极管显示字段的器件。在单片显示器件是通过发光二极管显示字段的器件。在单片机控制系统中常用的是由机控制系统中常用的是由7段段LED数码管,它的显示块中数码管,它的显示块中有有8个发光二极管,个发光二极管,7个发光二极管组成字符个发光二极管组成字符“8”,1个发个发光二极管构成小数点,因此有人称光二极管构成小数点,因此有人称7段段LED数码管为数码管为8段显段显示器。示器。LED数码管的管脚配置如图数码管的管脚配置如图3-24所示。所示。LED数码管有共阴极和共阳极两类,如图数码管有共阴极和共阳极两类,如图3-24所示。共阴所示。共阴极极LED数码管的发光二极管的阴极共地,如图数码管的发光二极管的阴极共地,如图3.25(a),),当某个发光二极管的阳极电压为高电平时,二极管发光;当某个发光二极管的阳极电压为高电平时,二极管发光;而共阳极而共阳极LED数码管是发光二极管的阳极共接,如图数码管是发光二极管的阳极共接,如图3.25(b),),当某个二极管的阴极电压为低电平时,二极管发当某个二极管的阴极电压为低电平时,二极管发光。光。第三章第三章 常用控制程序设计常用控制程序设计abcdefgdpR(a) 共 阴 极abcdefgdpR(b) 共 阳 极+5Vaabbcdcedfegfg176432510 98GNDGNDdpabcdefgdpR(a) 共 阴 极abcdefgdpR(b) 共 阳 极+5Vaabbcdcedfegfg176432510 98GNDGNDdp图图3-24 LED数码管管脚配置图数码管管脚配置图 (a)共阴极共阴极 (b)共阳极共阳极 图图3-25 两类两类LED数码管数码管第三章第三章 常用控制程序设计常用控制程序设计表表3-2 7段段LED段选码段选码返回本节第三章第三章 常用控制程序设计常用控制程序设计3.6.2 LED显示方式显示方式 在微机控制系统中,一般利用在微机控制系统中,一般利用N块块LED显示器件显示器件构成构成N位位LED显示器。构成原理图如图显示器。构成原理图如图3-26所示。所示。图图3-26 N位位LED显示器原理图显示器原理图aabbc dcedfegfg3.8dp aabbc dcedfegfg3.8dp aabbc dcedfegfg3.8dp aabbc dcedfegfg3.8dp. .aab c dcedfegfg3.8I/O口段选控制I/O口位选控制第三章第三章 常用控制程序设计常用控制程序设计1. LED静态显示方式静态显示方式图图3-27表示的是一个四位静态表示的是一个四位静态LED显示电路。显示电路。图图3-27 四位静态四位静态LED显示电路显示电路GND/+5V.GND/+5VGND/+5VGND/+5VGND/+5VI/O(1)I/O(2)I/O(3)I/O(4).第三章第三章 常用控制程序设计常用控制程序设计2. LED动态显示方式动态显示方式LED动态显示就是将所有显示位的段选线并联在一起,由动态显示就是将所有显示位的段选线并联在一起,由一个一个8位位I/O口控制,而位选线则由其他的口控制,而位选线则由其他的I/O口控制。口控制。图图3-28表示的是一个表示的是一个8位动态位动态LED显示电路。显示电路。图图3-28 8位动态位动态LED显示电路显示电路返回本节.D7.D6D5D4D3D2D1D0I/O()I/O(2)第三章第三章 常用控制程序设计常用控制程序设计3.6.3 LED显示程序设计显示程序设计1. 硬件译码显示程序设计硬件译码显示程序设计MC14495是是CMOS BCD七段十六进制锁存、七段十六进制锁存、译码驱动芯片。译码驱动芯片。MC14495能完成能完成BCD码至十六进码至十六进制数的锁存和译码,并具有驱动能力。制数的锁存和译码,并具有驱动能力。利用利用MC14495实现的实现的8位静态位静态LED显示接口电路显示接口电路如图如图3-29所示。所示。第三章第三章 常用控制程序设计常用控制程序设计图图3-29 利用利用MC14495实现的实现的8位静态位静态LED显示接口电路图显示接口电路图.ADCBMCS14495LEabcdefgabcdefg.ADCBMCS14495LEabcdefgabcdefg.ADCBMCS14495LEabcdefgabcdefg. .P1.0P1.1P1.3P1.2P1.7P1.6P1.5P1.4A0A1A2S1S3S2GNDVcc+5VY0Y1Y2Y3Y4Y5Y6Y7803174LS138第三章第三章 常用控制程序设计常用控制程序设计设要显示的设要显示的BCD码放在以码放在以DATA为首址的为首址的RAM单元中。单元中。显示程序设计如下:显示程序设计如下: MOVR0,DATA ;设置数据区首址设置数据区首址MOVA,R0;读要显示的读要显示的BCD码码ADDA,#80H MOVP1,A;显示第一位显示第一位INCR0MOVA,R0ADDA,#90HMOVP1,A;显示第二位显示第二位INCR0.INCR0MOVA,R0ADDA,#F0HMOVP1,A;显示第八位显示第八位第三章第三章 常用控制程序设计常用控制程序设计2. 软件译码显示程序设计软件译码显示程序设计(1)软件译码静态显示电路)软件译码静态显示电路 (2)软件译码动态显示电路)软件译码动态显示电路 第三章第三章 常用控制程序设计常用控制程序设计(1)软件译码静态显示电路)软件译码静态显示电路 图图3-30为一采用为一采用8位串行输入位串行输入/串、并输出移位寄串、并输出移位寄存器存器74LS595的两位软件译码静态显示电路。该的两位软件译码静态显示电路。该电路采用串行输入控制方案实现字符的显示,电路采用串行输入控制方案实现字符的显示,大大减少了大大减少了I/O口线的占用。如果需要显示更多口线的占用。如果需要显示更多的位数时,只需级连多片的位数时,只需级连多片74LS595即可,且不必即可,且不必占用其他的占用其他的I/O口线。口线。第三章第三章 常用控制程序设计常用控制程序设计768aabbcdcedfegfgaabbcdcedfegfg9121111121414O2O1O0O7O6O5O4O3O2O1O0O7O6O5O4O3D2D1D8D7D6D5D4D3Q2Q1Q7Q6Q5Q4Q3D2D1D7D6D5D4D3Q2Q1Q7Q6Q5Q4Q3D8P15P16P17SERSRCLKRCLKSRCLKRCLKSERQ78031E1E1E2E1115764325115764325329865473298654717181214151613171812141516131764325176432511919174LS59574LS59574HC54174HC541DPL_7-SEGDPL_7-SEG.图图3-30 通过通过74LS595实现的软件译码静态显示电路实现的软件译码静态显示电路第三章第三章 常用控制程序设计常用控制程序设计显示程序流程框图如图显示程序流程框图如图3-31所示。所示。 开 始读显示数据Cy=0串行输出程序调用高4位和低4位互换屏蔽低4位设置段选码初始地址锁存显示数据屏蔽高4位串行输出程序调用
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!