第三章常用控制程序设计-2_第1页
第三章常用控制程序设计-2_第2页
第三章常用控制程序设计-2_第3页
第三章常用控制程序设计-2_第4页
第三章常用控制程序设计-2_第5页
已阅读5页,还剩74页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 3.2.1 概述概述 由于工业控制对象的环境比较恶劣,干扰源比较多,如由于工业控制对象的环境比较恶劣,干扰源比较多,如环境温度、电场及磁场等。因此,为了减少对采样值的干扰,环境温度、电场及磁场等。因此,为了减少对采样值的干扰,提高系统的性能,一般先对采样值进行数字滤波,再进行数提高系统的性能,一般先对采样值进行数字滤波,再进行数据处理和调节控制。据处理和调节控制。 所谓数字滤波,是通过一定的计算程序对采样信号进行所谓数字滤波,是通过一定的计算程序对采样信号进行平滑加工,提高其有用信号,消除或减少各种干扰和噪音,平滑加工,提高其有用信号,消除或减少各种干扰和噪音,以保证计算机系统的可靠性。以保

2、证计算机系统的可靠性。 3.2.1 概述 和模拟滤波装置相比,数字滤波有以下几个优点:(1)数字滤波通过程序实现,不需硬件设备,系统的可靠性较高。(2)数字滤波可实现多通道共用。(3)可对低频信号(如0.01Hz)实现滤波。(4)采用不同的算法和参数就可实现对不同信号的滤波,使用起来灵活、方便。返回本节1. 程序判断滤波程序判断滤波 2. 中值滤波中值滤波 3. 算术平均滤波算术平均滤波 4. 加权平均滤波加权平均滤波 5. 一阶滞后滤波一阶滞后滤波 6. 防脉冲干扰平均值法防脉冲干扰平均值法一、程序判断滤波一、程序判断滤波 程序判断滤波的方法,是程序判断滤波的方法,是根据生产经验根据生产经验

3、,确定确定出两次采出两次采样输入信号可能出现的样输入信号可能出现的最大偏差最大偏差Y,若超过此偏差值,则,若超过此偏差值,则表明该输入信号是干扰信号,应该去掉,若小于此偏差值,表明该输入信号是干扰信号,应该去掉,若小于此偏差值,可将信号作为本次采样值。可将信号作为本次采样值。 程序判断滤波既照顾了采样的实时性,又照顾了不采样程序判断滤波既照顾了采样的实时性,又照顾了不采样时的连续性,是一种折中的方法,时的连续性,是一种折中的方法,可用于变化较慢的参数可用于变化较慢的参数,如温度、液位等,可如温度、液位等,可克服由于随机干扰克服由于随机干扰和和误检测误检测或者或者变送器变送器不稳定不稳定而引起采

4、样信号的严重失真。而引起采样信号的严重失真。 3.2.2 数字滤波方法数字滤波方法 1. 限幅滤波限幅滤波 |Yn-Yn-1|Y, 则则Yn = Yn,取本次采样值取本次采样值 |Yn-Yn-1| Y, 则则Yn = Yn -1,舍本次采样值,取上次采样值,舍本次采样值,取上次采样值程序判断滤波分为限幅滤波和限速滤波两种。程序判断滤波分为限幅滤波和限速滤波两种。限幅滤波程序流程框图如图3-16所示。现场保护现场保护Y Yn-1n-1-Y-Yn n00读读Y Y n-1n-1 ,Y Y n n求求 Y Yn n-Y-Yn n-1-1Y Yn-1n-1-Y-Yn n Y Y取上次采样值取上次采样值

5、取本次采样值取本次采样值现场恢复现场恢复否否否否是是是是开开 始始返 回限幅滤波程序程序清单:限幅滤波程序程序清单: PUSHPSW ;保护现场;保护现场PUSHA CLRC;进位标志位清零;进位标志位清零MOVDATA,DATA2 MOVA,DATA1SUBBA,DATA;求;求Yn-1 -YnJNCCOMPARE;如果;如果Yn-1 -Yn0,转转COMPARECPLA;如果;如果Yn-1 -Yny, ;DATA1DATAOVER:POPA;恢复现场;恢复现场 POPPSWRET;返回;返回限速滤波的滤波原理如下:设在顺序采样时刻设在顺序采样时刻T1、T2、T3所采集的数据分别为所采集的数

6、据分别为Y1、Y2、Y3,则当,则当 Y2-Y1 y,则,则Y2作为采样值;作为采样值; Y2-Y1 y, 则保留则保留Y2,但不作为采样值,继,但不作为采样值,继续采样得续采样得Y3;如果如果 Y3-Y2 y,则,则Y3作为采样值;作为采样值; Y3-Y2 y, 则取则取(Y2+Y3)/2作为采样值。作为采样值。2. 中值滤波 所谓中值滤波法就所谓中值滤波法就是对某一被测参数是对某一被测参数连续采样连续采样n次(次(n一一般取奇数),然后般取奇数),然后把把n次采样值按顺次采样值按顺序排列,取其中间序排列,取其中间值做为本次采样值。值做为本次采样值。中值滤波程序的流中值滤波程序的流程框图如图

7、程框图如图3-17所所示。示。 图图3-17 中值滤波程序流程框图中值滤波程序流程框图 现场保护现场保护设置数据个数设置数据个数读读数据排序数据排序取中值取中值据据现场恢复现场恢复排序排序完成否?完成否?是是设置数据区首址设置数据区首址 开开 始始返返 回回是是否否二、中值滤波二、中值滤波 所谓中值滤波就是对某一个被测参数连续采样所谓中值滤波就是对某一个被测参数连续采样n次(一次(一般般 n 取奇数取奇数,数值不宜太大,取数值不宜太大,取35即可),然后把即可),然后把n次的采次的采样值从小到大(或从大到小)排队,再取中间值作为本次采样值从小到大(或从大到小)排队,再取中间值作为本次采样值。采

8、用本程序滤波,对于去掉脉动性质的干扰比较有效,样值。采用本程序滤波,对于去掉脉动性质的干扰比较有效,但对快速变化过程的参数(如流量)则不宜采用。但对快速变化过程的参数(如流量)则不宜采用。 冒泡法排序冒泡法排序冒泡法的排序过程序号 数比比 较较 遍遍 数数1234 1 32 2 85 3 16 4 15 5 8321615885161583285158163285815163285冒泡法“冒泡法”是一种排序算法,不是最优的算法,但它易于理解和实现冒泡法从第一个元素开始,依次对相邻的两个元素进行比较,使前一个元素不大于后一个元素;将所有元素比较完之后,最大的元素排到了最后;然后,除掉最后一个元素

9、之外的元素依上述方法再进行比较,得到次大的元素排在后面;如此重复,直至完成就实现元素从小到大的排序这需要一个双重循环程序结构mov cx,count;CX数组元素个数dec cx;元素个数减1为外循环次数outlp: mov dx,cx;DX内循环次数mov bx,offset arrayinlp:mov al,bx;取前一个元素cmp al,bx+1;与后一个元素比较jna next;前一个不大于后一个元素,则不进行交换xchg al,bx+1;否则,进行交换mov bx,alnext:inc bx;下一对元素dec dxjnz inlp;内循环尾loop outlp;外循环尾 计数控制双重

10、循环计数控制双重循环三、算术平均滤波三、算术平均滤波 该方法是把该方法是把n次采样值相加(通常流量取次采样值相加(通常流量取12次,压力取次,压力取4次次 ),然后取其算术平均值,即:),然后取其算术平均值,即:nixnY11 本方法主要适用于对压力、流量等周期脉动值的采样,但本方法主要适用于对压力、流量等周期脉动值的采样,但对脉冲性干扰的平滑尚不理想。对脉冲性干扰的平滑尚不理想。 图图3-18 算术平均滤波程序流程图算术平均滤波程序流程图现场保护设置数据区首址设置循环次数累加求和恢复现场所有数据加完否?求平均值否是开 始返 回读数据算术平均滤波程序清单:(本例中取采样次数n=8) PUSHP

11、SW;现场保护;现场保护 PUSHAMOVFLAG,#00H;进位位清零;进位位清零MOVR0,DATA;设置数据存储区首址;设置数据存储区首址MOVR7,#08H;设置采样数据个数;设置采样数据个数CLRA;清累加器;清累加器LOOP: ADDA,R0 ;两数相加;两数相加JNCNEXT;无进位,转;无进位,转NEXTINCFLAG;有进位,进位位加;有进位,进位位加1NEXT: INCR0;数据指针加;数据指针加1DJNZR7, LOOP;未加完,继续加;未加完,继续加MOVR7,#03H;设置循环次数;设置循环次数DIVIDE:MOV TEMP,A;保存累加器中的内容;保存累加器中的内容

12、MOV A,FLAG;累加结果除;累加结果除2CLRC RRCAMOV FLAG,A MOV A,TEMP RRCA DJNZ R7,DIVIDE;未结束,继续执行;未结束,继续执行 MOV SAMP,A;保存结果至;保存结果至SAMP中中POPA;恢复现场;恢复现场POPPSW RET 4. 加权平均滤波 在算术平均滤波程序中,n次采样值在最后的结果中所占的比重是相等的,这样虽然消除了随机干扰,但有用信号的灵敏度也随之降低。为了提高滤波效果,将各个采样值取不同的比重,然后再相加求平均值,这种方法称为加权平均滤波。一个n项加权平均式为:图图3-19 加权平均滤波程序流程图加权平均滤波程序流程图

13、加权平均滤波程序清单: PUSH PSW ;保护现场PUSH AMOV R7,TIME;数据个数设置MOV R0,DATA;数据区首址设置MOV R1,COEFF;系数存储首址设置MOV FLAG,#00H ;累加结果存储区清零MOV SAMP_L,#00H MOV SAMP_H,#00HLOOP:MOV A,R0;读采样值MOV B,AMOV A,R1;读加权平均系数MULABCLRCADDA,SAMP_L;累加和;累加和MOV SAMP_L,AMOV A,BADDCA,SAMP_HJNCNEXT INCFLAG NEXT:MOVSAMP_H,A INCR0;数据区地址加;数据区地址加1 I

14、NCR1;系数地址加;系数地址加1 DJNZ R7,LOOP;未加完,继续;未加完,继续MOV R7,#07H;设置循环次数;设置循环次数DIV128:CLRCMOV A,FLAG;累加结果除2RRCA MOV FLAG,AMOV A,SAMP_HRRCAMOV SAMP_H,AMOV A,SAMP_LRRCAMOV SAMP_L,ADJNZ R7,DIV128;未除完,继续MOV SAMP,SAMP_L;保存滤波后采样值POPA;恢复现场POPPSWRET求求求1nyanxa)1( 1)1(nnyaxannyy1开 始返 回五、一阶滞后滤波五、一阶滞后滤波 为提高对于慢速随机变化过程的采样效

15、果,可采用动为提高对于慢速随机变化过程的采样效果,可采用动态滤波方法,即一阶滞后滤波方法,其表达式为:态滤波方法,即一阶滞后滤波方法,其表达式为: 1)1 (nnnYXY一阶滞后滤波程序清单: 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_L1nyaMOVMUL2_H, DATA2_HMOVMUL2_H, DATA2_L

16、 ACALLMULTD;CLRCMOVA, PR_H ;ADDA, 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;清进位标志位MOV PR_L,#00H;乘积高8位清零 MOV PR_H,#00HMOV R7,#11H;设置循环次数LOOP1:JNCLOOP2;进位标志位为零,转LOOP2M

17、OV A,PR_L;PR+MUL2ADDA,MUL2_LMOV PR_L,AMOV A,PR_HADDC A,MUL2_HMOV PR_H,ALOOP2:MOV A,PR_H;PR右移一位RRCAMOV PR_H,AMOV A,PR_LRRCAMOV PR_L,AMOV A,MUL1_H;MUL1右移一位RRCAMOV MUL1_H,AMOV A,MUL1_L RRCAMOV MUL1_L,A DJNZ R7,LOOP1;循环未结束,继续六、复合滤波程序六、复合滤波程序 把两种以上的滤波方法结合起来使用。如把中值滤波把两种以上的滤波方法结合起来使用。如把中值滤波程序和算数平均值滤波两种结合起来

18、,把程序和算数平均值滤波两种结合起来,把n个采样值首先按个采样值首先按大小排序,然后分别去掉大小排序,然后分别去掉k个最大值和最小值,再把剩下的个最大值和最小值,再把剩下的值加起来,最后取平均值。即值加起来,最后取平均值。即 knkiiXknY211. 滤波效果滤波效果 a. 对于变化比较慢的参数如温度,可选用程序判断滤波以对于变化比较慢的参数如温度,可选用程序判断滤波以及一阶滞后滤波方法比较好及一阶滞后滤波方法比较好; b.对于变化比较快的脉冲参数,如压力、流量等,则可选对于变化比较快的脉冲参数,如压力、流量等,则可选用算术平均和加权平均滤波方法用算术平均和加权平均滤波方法; c.对于要求比

19、较高的系统可选用复合滤波方法。对于要求比较高的系统可选用复合滤波方法。 d.在算术平均滤波和加权平均滤波中,其滤波效果与所选在算术平均滤波和加权平均滤波中,其滤波效果与所选择的次数择的次数n有关,有关,n越大,则效果越好,但花费时间也越长。越大,则效果越好,但花费时间也越长。2. 滤波时间滤波时间 在考虑滤波效果的前提下,尽量采用执行时间比较短的程在考虑滤波效果的前提下,尽量采用执行时间比较短的程序,如果时间允许,则可采用更好的复合滤波程序。序,如果时间允许,则可采用更好的复合滤波程序。3. 注意,并不是在任何一个系统中都需要进行数字滤波注意,并不是在任何一个系统中都需要进行数字滤波!七、各种

20、滤波方法的比较七、各种滤波方法的比较3.2.3 数字滤波程序设计数字滤波程序设计 用复合滤波方法将上节中用复合滤波方法将上节中1号退号退火炉的火炉的5个温度采样值(起始存放个温度采样值(起始存放地址为地址为7000H:0)进行滤波,并)进行滤波,并存入存入SAMP单元。单元。程序设计程序设计 1. 将将5个数据从小到大排序,个数据从小到大排序, 2. 去掉一个最大值和一个最小去掉一个最大值和一个最小值,值, 3. 求剩下求剩下3个数的算术平均值。个数的算术平均值。 复合滤波程序复合滤波程序 置采样数据存放段地址置采样数据存放段地址 置外循环次数,置外循环次数, CH=4CH=4 置内循环置内循

21、环 CL=CH,DICL=CH,DI 指向数据表头指向数据表头 N N 相邻两数比较,大于?相邻两数比较,大于? Y Y 两数在内存中交换两数在内存中交换 调整数据指针调整数据指针 DI+1DI+1 N N 内循环结束内循环结束 CLCL- -1=01=0? N N Y Y 外循环结束外循环结束 CHCH- -1=01=0? Y Y 累加次数累加次数=3,DI=3,DI 指向第二个数据指向第二个数据 取数据并累加取数据并累加 AXAXAX+BXAX+BX N N 三次加完三次加完? ? Y Y 求算术平均值求算术平均值 ALALAX/3AX/3 存复合滤波结果存复合滤波结果 结束结束 DOSS

22、EG;采用;采用DOS简化段定义简化段定义.MODELMIDUM.DATASAMP DB 0;定义滤波结果单元;定义滤波结果单元CNT EQU 5;共;共5个数个数.CODESTART: MOVAX,7000H;指向采样数据段;指向采样数据段 MOVDS,AX MOVBX,CNT-1;置外循环次数;置外循环次数LP1: MOVSI,0;指向采样数据首地址;指向采样数据首地址 MOVCX,BX;置内循环次数;置内循环次数LP2: MOVAL,SI;相邻两数据比较;相邻两数据比较 CMPAL,SI+1 JBBIG;大于转;大于转BIG XCHGAL,SI+1;小于两数交换;小于两数交换 XCHGA

23、L,SIBIG: INCSI;调整指针;调整指针 LOOPLP2;本轮未比较完转;本轮未比较完转LP2DECBXJNZLP1;未全部比较完转;未全部比较完转LP1 MOVCX,CNT-2;去掉最大最小值并求和存;去掉最大最小值并求和存AX LEASI,1 MOVAX,0MOVBH,0LP3:MOVBL,SIADDAX,BXINCSILOOPLP3MOVCL,CNT-2;求平均值存;求平均值存CLDIVCLMOVCL,ALMOVAX,DATA;存入;存入SAMP单元单元MOVDS,AXMOVSAMP,CLMOVAX,4C00H;程序结束返回;程序结束返回DOSINT21HENDSTART防脉冲干

24、扰平均值法 图图3-21 防脉冲干扰平均值法程防脉冲干扰平均值法程序流程框图序流程框图 设置数据区首址数据排序设比较次数去掉最小值求 平 均值剩余数据求和是排序完成否?去掉最大值否开 始返 回防脉冲干扰平均值法程序清单: PUSH A;保护现场PUSH PSWSORT:MOVR0,DATA;数据存储区单元首址MOV R7,#10H;读比较次数CLRCHANGE;清交换标志位 LOOP:MOV A,R0;取第一个数MOV FIRST,A;保存第一个数INCR0MOV SECOND,R0;保存第二个数CLRCSUBB A,R0;两数比较JCNEXT;第一数小于第二数,不交换;第一数小于第二数,不交

25、换MOVR0,FIRST DECR0MOVR0,SECOND ;交换两数;交换两数INCR0SETBCHANGE;置交换标志位;置交换标志位NEXT: DJNZR7,LOOP;进行下一次比较;进行下一次比较JBCHANGE,SORT;进行下一轮比较;进行下一轮比较 MOVFLAG,#00H;进位位清零;进位位清零 INCDATA;去掉最小值;去掉最小值MOVR0,DATA;设置数据存储区首址;设置数据存储区首址MOVR7, #08H;设置累加循环次数,去掉最大值;设置累加循环次数,去掉最大值 CLRA;清累加器;清累加器 LOOP: ADDA,R0 ;两数相加;两数相加 JNCNEXT;无进位

26、,转;无进位,转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;恢复现场;恢复现场POPPSWRET3.3 标度变换程序 被

27、测量 - 05V - 00FF温度、压力等传感器,变送器A/D 把输入计算机的数字量转换成不同的量纲,以便操作人员进行监视和管理生产,就是所谓的标度变换 3.3.1 线性标度变换 Am A0 AX N0 NX Nm 0000)(NNNNAAAAmXmX 如果被测参数的起点A0(输入信号为0)所对应的A/D转换值为0,即N0=0,这样式(3-6)化简为: 00)(ANNAAAmXmX【例】某热处理炉温度测量仪表的量程为200800C,在某一时刻计算机采样并经数字滤波后的数字量为CDH,求此时的温度是多少?(设该仪表的量程是线性的)。 解:A0=200C,Am=800C,Nx=CDH=(205)D

28、,Nm=FFH=(255)D。所以此时的温度为 CANNAAAmXmX682200255205)200800()(00标度变换程序 P59DOSSEG;采用DOS简化段定义.MODEL SMALL.STACK 100H.DATAAM DW 800;测量仪表上限A0 DW 200;测量仪表下限NM DW 255;A/D转换上限N0 DW 0;A/D转换下限NX DW 205;实际A/D转换值MX DW ? ;实际温度.CODESTART: MOV AX,DATA MOV DS,AX MOV AX,AM;计算Am-A0 SUB AX,A0 MOV BX,NX;计算Nx-N0 SUB BX,N0 M

29、UL BX;计算(Am-A0)*( Nx-N0) MOV BX,NM;计算Nm-N0 SUB BX,N0 DIV BX;计算(Am-A0)*( Nx-N0)/( Nm-N0) ADD AX,A0;计算(Am-A0)*( Nx-N0)/( Nm-N0)+ A0 CALL HEX_BCD;调二进制转十进制子程序 MOV MX,AX;存标度变换结果 MOV AX,4C00H INT 21H3.3.2 非线性参数标度变换 例: 压差流量计,其流量与差压的公式为 PKG0000)(NNNNGGGGmXmX所得的流量测量的标度变换公式: 对于流量测量仪表,一般下限均取零,此时G0=0,N0=0: mXmm

30、XmXNNGNNGG整数开方的计算方法 2) 1(1nnini02112ninni令被开方数N = n2,则被开方数的近似计算公式 :0211niNni3.3.3 非线性补偿在模拟仪表中,常用的校正及线性化方法,有凸轮机构及曲线板(如在流量测量仪表中);非线性电位计(如对数或指数电位器);二极管阵列(如用多个二极管组成开方器);运算放大器(如各种对数、指数、三角函数运算放大器等);3.3.3 非线性补偿 1. 线性插值法 图 3-6 分段线性插值法yy1y0yiyi+1y0 x0 x1xixxi+1xnxyn)(11iiiiiixxxxyyyy将该曲线按一定要求分成若干段,然后把相邻两分段点用

31、直线连接起来(如图中虚将该曲线按一定要求分成若干段,然后把相邻两分段点用直线连接起来(如图中虚线所示),用此直线代替各段的曲线,即可求出输入值线所示),用此直线代替各段的曲线,即可求出输入值X所对应的输出值所对应的输出值y 2. 非线性补偿应用举例 图 3-7 热电偶的热电势与温度的关系yDt (C)yBAOV1V2VBCDyCyAV3V4443343223211211;);();();(0;VVtVVVVVktVVVVVktVVVVVktVVVktiDiiCiiBiiAii其线性化处理程序 P63653.4 上、下限报警程序 报警程序的设计是比较简单的,它主要是采用比较法,把采样并经数字滤波

32、以及标度变换后的被测参数值与给定的上下限值进行比较,如果大于上限或者小于下限,则输出报警信号或进行自动处理。 某温度巡回检测系统,共有4个回路,每个回路都有一个上限和下限报警值,分别为XMAXi和XMINi。 采用顺序比较法,即首先取出1#炉的上限报警值XMAX1进行比较,如果X1XMAX1,则转1#炉上限报警,否则再检查X1是否小于下限报警值XMIN1,如果X1 Xmaxi? 初始化初始化 采样值首址采样值首址SI 报警值首址报警值首址DI XiXmini? 调整指针调整指针 DI+1, SI+1 全部报警处理全部报警处理完?完? CL=0? 结束结束 Y 调报警处理调报警处理 子程序子程序

33、 调报警处理调报警处理 子程序子程序 N N Y N Y 3.5 数码管显示程序3.5.1 LED数码管显示原理 abcdefgdpR(a) 共 阴 极abcdefgdpR(b) 共 阳 极+5Vaabbcdcedfegfg17 64 3 2510 9 8GNDGNDdpabcdefgdpR(a) 共 阴 极abcdefgdpR(b) 共 阳 极+5Vaabbcdcedfegfg17 64325109 8GNDGND dp图图 LED数码管管脚配置图数码管管脚配置图 (a)共阴极)共阴极 (b)共阳极)共阳极 图图 两类两类LED数码管数码管表3-3 大 写 字 母 的 七 段 表 示 法 十

34、 六 进 制 表 示 字 母 共 阴 极 共 阳 极 A 77 08 C 39 46 E 79 06 F 71 0E H 76 09 I 06 79 G 1E 61 L 38 47 O 3F 40 P 73 0C U 3E 41 Y 66 19 表3-2 十 进 制 数 的 七 段 表 示 法 十 六 进 制 表 示 十 进 制数 码 共 阴 极 共 阳 极 0 3F 40 1 06 79 2 5B 24 3 4F 30 4 66 19 5 6D 12 6 7D 02 7 07 78 8 7F 00 9 67 18 表3-4 小 写 字 母 及 特 殊 符 号 十 六 进 制 表 示 字 母

35、共 阴 极 共 阳 极 b 7C 03 c 58 27 d 5E 21 h 74 0B n 54 2B o 5C 23 r 50 2F u 1C 63 - 40 3F ? 53 3C 七段数码显示数字、字母和符号 (a对应最低位,g对应最高位)3.5.2 静态显示 一、软件查表法用软件的显示不需译码器,而直接将数码管经锁存器和CPU相连。 图 3-11 软件译码显示电路 PA0 PA7 PB7 8255 +5V PB0 300 74LS07 一般发光二极管和驱动器的压降为一般发光二极管和驱动器的压降为2V左右,若限定发光二极管的电流为左右,若限定发光二极管的电流为10mA3001025mAVV

36、;*根据根据CHECK配置信息修改下列符号值配置信息修改下列符号值*IOY0 EQU 0d200H ;片选片选IOY0对应的端口始地址对应的端口始地址;*MY8255_A EQU IOY0+00H*4 ;8255的的A口地址口地址MY8255_B EQU IOY0+01H*4 ;8255的的B口地址口地址MY8255_C EQU IOY0+02H*4 ;8255的的C口地址口地址MY8255_MODE EQU IOY0+03H*4 ;8255的控制寄存器地址的控制寄存器地址STACK1 SEGMENT STACK DW 100h DUP(?)STACK1 ENDSDATA SEGMENTSAM

37、PDW ? ;实际温度实际温度 TABLE DB 40H,79H,24H,30H,19H;定义;定义09显示字模显示字模DB 12H,02H,78H,00H,18HDATA ENDSSTART PROC FAR;标准程序头;标准程序头 PUSH DS SUB AX,AX PUSH AX MOV AX,DATA MOV DS,AX MOV DX, MY8255_MODE ;8255 A、B口方式0,输出 MOV AL,80H OUT DX,AL LEA BX,TABLE;BX指向字模存放表头 MOV AL,SAMP;取显示字符高位“5” MOV CL,4 SHR AL,CL XLAT;查表获得显

38、示字模 MOV DX, MY8255_A ;A口输出显示字符高位 OUT DX,AL MOV AL,SAMP;取显示字符低位“6” AND AL,0FH XLAT;查表获得显示字模 MOV DX, MY8255_B ;B口输出显示字符高位 OUT DX,AL RET;返回DOSSTART ENDPCODE ENDS END START二、硬件译码法 图 3-12 硬件译码显示电路 a b c d e f g D C B A PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0 8255 共阳 LED a b c d e f g D C B A 共阳 LED +5V 74LS47 74

39、LS47 由硬件译码器代替软件查表求出显示字模“56”的输出显示程序:MOV AL, 56HMOV DX, 200HOUTDX,AL节省CPU用于显示的时间但硬件开销较大 74LS477段共阳段共阳LED数码管数码管BCD码译码译码器码器/驱动器驱动器3.5.3 动态显示 动态显示是利用扫描的方法不断对每一位LED数码管依次进行显示驱动。 优点:硬件开销小、成本低、适合多位LED数码管显示。 缺点:由于扫描占用了大量CPU的时间,使软件开销过大。 输入/输出口扩展技术简单I/O口扩展可编程I/O口扩展返回本章首页图图 简单简单I/O扩展接口扩展接口并行口扩展并行口扩展I/O口口采用采用8位三态

40、缓冲器位三态缓冲器74LS244组成输入口,采用组成输入口,采用8D锁存器锁存器74LS273,74LS373,74LS377等组成输出口等组成输出口一、共阴LED数码管显示 图 3-13 共阴极 LED 硬件电路接法 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 a b c d e f g h 100 LEDQ0 Q1 Q2 Q3 Q4 Q5 74LS273 74LS273 D0 D7 段锁存地址 211H 位锁存地址 210H D0 D5 +5V 74LS452 74LS07 LED6 D0D7 显示程序由拆字程序和循环显示程序组成。 P70 二、共阳LED数码管显示 图 3-14 共阳

41、极 LED 硬件电路接法 Q0 Q1 Q2 Q3 Q4 Q5 a b c d e f g h LED74LS273 74LS273 D0 D5 位锁存地址 210H 段锁存地址 211H Q0 Q7 D0D7 +5V D0D7 74LS06 LED6 D0 D5 .MODEL SMALL.DATASEGPORT EQU211H;定义段锁存地址;定义段锁存地址DIGPORT EQU210H;定义位锁存地址;定义位锁存地址SAMP DB12H,0ABH,9FH ;定义;定义6位显示数据位显示数据SMPOFF DB6 DUP(0);定义显示偏移缓冲区;定义显示偏移缓冲区TABLE DB3FH,06H

42、,5BH,4FH,66H,6DH,7DH,07H DB7FH,67H,77H,7CH,39H,5EH,79H,71H.CODESTART PROC FAR PUSH DS SUB AX,AX PUSH AX MOV AX,DATA MOV DS,AXLEA DI,SAMPLEA SI,SMPOFF MOV CH,3LP0: MOV AL,DI;拆字程序:将;拆字程序:将6位显示数据拆成偏移量位显示数据拆成偏移量 MOV CL,4;存到显示偏移缓冲区;存到显示偏移缓冲区 SHR AL,CL MOV SI,AL INC SI MOV AL,DI AND AL,0FH MOV SI,AL INC S

43、I INC DI DEC CH JNZ LP0LP1: MOV AH,01;显示程序:将;显示程序:将“12AB9F”在在6位位LED数码管显示数码管显示 LEA BX,TABLE LEA SI,SMPOFFLP2: MOV DX,SEGPORT MOV AL,SI XLAT OUT DX,AL MOV AL,AH MOV DX,DIGPORT OUT DX,AL CALL DLY INC SI SHL AH,1 CMP AH,40H JNE LP2 MOV AH,0BH;DOS功能调用,按任一键程序退出功能调用,按任一键程序退出 INT 21H;出口参数;出口参数 AL,有键,有键FFH,无

44、键,无键00H INC AL JZ LP4 JMP RP1LP4: RET;返回;返回DOS START ENDPDLY PROC NEAR;延时子程序;延时子程序MOV CX,2000LP3: NOP LOOP LP3 RETDLY ENDP END START ;*根据根据CHECK配置信息修改下列符号值配置信息修改下列符号值*IOY0 EQU 0d200H ;片选片选IOY0对应的端口始地址对应的端口始地址;*MY8255_A EQU IOY0+00H*4 ;8255的的A口地址口地址MY8255_B EQU IOY0+01H*4 ;8255的的B口地址口地址MY8255_C EQU I

45、OY0+02H*4 ;8255的的C口地址口地址MY8255_MODE EQU IOY0+03H*4 ;8255的控制寄存器地址的控制寄存器地址STACK1 SEGMENT STACK DW 100h DUP(?)STACK1 ENDSDATA SEGMENTSAMPDW ? ;要显示的数据要显示的数据 SMPOFFDB4 DUP(0)DTABLEDB 3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB 7FH,67H,77H,7CH,39H,5EH,79H,71HDATA ENDSODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,D

46、ATAMOV DS,AX3.6 键处理程序对非编码键盘主要是用软件扫描的办法进行编码。 以88非编码键盘为例: 键盘扫描程序的一般先行扫描,即依次使各行为低电平,然后分别读出列数据,并检查是否有键按下,则找出该键的位置并计算其编码,然后转入该功能键的入口程序地址。若无键按下,则进行下一步的扫描,直到八行全部检查完为止,若都无键按下,则返回。 8255连接的键盘接口电路 图中PB0PB7为行扫描锁存器的输出,经八个反相器分别与X7X0相连接。列数据的读入由PA0PA7进行控制。X,Y的每一个交点设置一个键,其编号1、264。 图 3-15 非编码盘与 CPU 的接口电路 +5V 01 09 17

47、 25 33 41 49 57 02 10 18 26 34 42 50 58 03 11 19 27 35 43 51 59 04 12 20 28 36 44 52 60 05 13 21 29 37 45 53 61 06 14 22 30 38 46 54 62 07 15 23 31 39 47 55 63 08 16 24 32 40 48 56 64 X0 X1 X2 X3 X4 X5 X6 X7 PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 8255 Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7

48、 一、扫描键值的确定 1、判断是否有键按下CPU依次使X0X7为低电平,其代码分别为X0(01H),X1(02H),X2(04H),X3(08H),X4(10H),X5(20H),X6(40H),X7(80H),然后由三态门读出列线Y0Y7的值,若无键按下为FFH,否则不等于FFH,由此可判断是否有键按下。 2、求十进制键值分别设一个行值寄存器BL和列值寄存器BH,每扫完一行后,如果此行无键按下,则行寄存器加08,否则不加08而转到求列值。求列值的方法是将列值读数右移,每移一次列值寄存器加1,直到有键按下为止(低电平表示有键按下),最后把行值和列值相加并进行DAA修正,即可得到所求键值。 二、

49、功能键入口地址的确定 对数字键就是要把该键值直接送到显示缓冲区进行显示。对功能键则是找到该键处理程序入口地址,并转去执行。 64键全译码键扫描程序和功能键处理(功能键散转法)框图如图3-16所示,其程序程序 P75。 键扫描及编码程序 求功能键地址程序 键值寄存器 BL,BH 清零 读取键值 N 输出使所有行为零 是功能键吗? N Y 有键按下吗? 数字键送显示 求偏移量 Y 延时 20 毫秒 偏移量3 N 有键按下吗? 取功能键转移首址 Y 输出使 Xi为低电平 列键值 BH+1 求功能键转移地址 Y 此行有键按下吗? 列读数右移一位 转到相应地址 N N 行键值寄存器 BL+8 CF=0? Y 求下一行为低电平模型 计算键值 BL+BH 转 转 转 N CCS1 CCS2 CCS8 各行均扫描完吗? 存键值 Y 返回用户程序 转求功能键地址程序 图 3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论