欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    常用应用程序设计.ppt

    • 资源ID:6386737       资源大小:753KB        全文页数:91页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    常用应用程序设计.ppt

    第3章 常用应用程序设计,3.1 数字滤波3.2 标度变换3.3 越限报警3.4 键盘控制程序3.5 显示程序设计,3.1 数字滤波,所谓数字滤波,就是在计算机中用某种计算方法对输入的信号进行数学处理,以便减少干扰在有用信号中的比重,提高信号的真实性。,这种滤波方法不需要增加硬件设备,只需根据预定的滤波算法编制相应的程序即可达到信号滤波的目的。数字滤波可以对各种干扰信号,甚至极低频率的信号进行滤波。数字滤波由于稳定性高,滤波参数修改也方便,一种滤波子程序可以被各控制回路调用,因此得到广泛的应用。,3.1 数字滤波,3.1.1 程序判断滤波,程序判断滤波的方法,是根据生产经验,确定出两次采样输入信号可能出现的最大偏差y。若超过此偏差值,则表明该输入信号是干扰信号,应该去掉;如小于此偏差值,可将信号作为本次采样值。,当采样信号由于随机干扰,如大功率用电设备的启动或停止,造成电流的尖峰干扰或误检测,以及变送器不稳定而引起的严重失真等,使得采样数据偏离实际值太远,可采用程序判断滤波。,3.1 数字滤波,1限幅滤波,当|Y(n)-Y(n-1)|Y时,则取Y(n)=Y(n),取本次采样值当|Y(n)-Y(n-1)|Y时,则取Y(n)=Y(n-1),取上次采样值,Y(n)第n次采样值;Y(n-1)第n-1次采样值;Y相邻两次采样值所允许的最大偏差,它的大小取决于采样周期T及被测参数Y应有的正常变化率。,一定要按照实际情况来确定Y,否则非但达不到滤波效果,反而会降低控制品质。Y通常可根据经验数据获得,必要时,也可由实验得出。,程序流程图,3.1 数字滤波,设Y存放在LIMIT单元,两次采样值Y(n-1)、Y(n)存放在DATA1、DATA2中,滤波结果存放在DATA单元中,限幅滤波程序如下:,PUSHPSW;保护现场PUSHA CLRC;进位标志位清零MOVDATA,DATA1MOVA,DATA2SUBBA,DATA;求Y(n)Y(n-1)JNCCOMPARE;如果Y(n)-Y(n-1)0,转COMPARECPLA;如果Y(n)-Y(n-1)0,求补INCA,51程序,3.1 数字滤波,COMPARE:CLRCSUBBA,LIMIT;Y(n)-Y(n-1)和Y比较JCOVER;如果Y(n)-Y(n-1)Y,DATA2DATAMOVDATA,DATA1;如果Y(n)-Y(n-1)Y,DATA1DATAOVER:POPA;恢复现场POPPSWRET;返回LIMITEQU30HDATA1EQU31HDATA2EQU32HDATAEQU33H,限幅滤波能有效地克服因偶然因素引起的脉冲干扰,但无法抑制周期性的干扰且平滑度差。,51程序,BEGIN:MOV AX,DATA1 MOV BX,AX MOV AX,DATA2 SUB AX,BX JG CHECK1 NEG AX CHECK1:CMP AX,LIMIT JG DONE MOV AX,DATA2 JMP OVERDONE:MOV AX,DATA1OVER:MOV DATA,AX,设上次采样值存在DATA1单元,本次采样值存放在DATA2中,滤波结果存放在DATA单元中,限幅滤波程序如下:,8086程序,3.1 数字滤波,2限速滤波,设顺序采样时刻tn-1、tn、tn+1所采集的参数分别为Y(n-1)、Y(n)、Y(n+1),那么,3.1 数字滤波,限速滤波是一种折衷的方法,既照顾了采样的实时性,又顾及了采样值变化的连续性。缺点:第一是Y的确定不够灵活,必须根据现场的情况不断更换新值;第二是不能反映采样点数n3时各采样数值受干扰情况。因此,它的应用受到一定的限制。在实际使用中,可用 取代Y,这样也可基本保持限速滤波的特性,虽增加一步运算,但灵活性大为提高。,3.1 数字滤波,程序流程图,3.1 数字滤波,3.1.2 算术平均值滤波,实质-把一个采样周期内对信号的n次采样值进行算术平均,作为本次的输出,即,n值决定了信号平滑度和灵敏度。随着n的增大,平滑度提高,灵敏度降低。为方便求平均值,n值一般取4、8、16之类的2的整数幂,以使用移位来代替除法。通常流量信号取12项,压力信号取6项,温度、成分等缓慢变化的信号取2项甚至不平均。,PUSH BEGIN:XOR AX,AX MOV BX,DATA1 MOV CX,NUMBER MOV DX,NUMBERREDO:ADC AX,BX INC BX LOOP REDO;循环 DIV DX MOV DATA2,AX POP,8086程序如下(采样首地址为DATA1单元,采样次数为NUMBER,结果存于DATA2单元):,设8次采样值依次存放在以DIGIT为首地址的连续单元中,求出平均值后,结果保留在SAMP单元中。计算的中间结果存放在FLAG和TEMP单元中,程序清单如下:,PUSHPSW;现场保护PUSHAMOVFLAG,#00H;进位位清零MOVR0,#DIGIT;设置数据存储区首址MOVR7,#08H;设置采样数据个数CLRA;清累加器LOOP:ADDA,R0;两数相加JNCNEXT;无进位,转NEXTINCFLAG;有进位,进位位加1,8051程序如下,NEXT:INCR0;数据指针加1DJNZR7,LOOP;未加完,继续加MOVR7,#03H;设置循环次数DIVIDE:MOVTEMP,A;保存累加器中的内容MOVA,FLAG;累加结果除2CLRCRRCAMOVFLAG,A MOVA,TEMPRRCADJNZR7,DIVIDE;未结束,继续执行MOVSAMP,A;保存结果至SAMP中POPA;恢复现场POPPSWRET,算术平均值滤波主要用于对压力、流量等周期脉动的采样值进行平滑加工,但对偶然出现的脉冲性干扰的平滑作用尚不理想,因而它不适用于脉冲性干扰比较严重的场合。另外该滤波方法比较浪费RAM。,3.1 数字滤波,3.1.3 加权平均值滤波,加权平均值滤波法公式为,其中,k0、k1、kn-1为加权系数,体现了各次采样值在平均值中所占的比例,它们都为大于0的常数项,且满足,一般采样次数愈靠后,取的比例愈大,这样可增加新的采样值在平均值中的比例。这种滤波方法可以根据需要突出信号的某一部分,抑制信号的另一部分。适用于纯滞后较大的被控对象。,PUSH BEGIN:XOR AX,AX XOR BX,BX MOV SI,DATA1 MOV DI,DATA2 MOV CX,NUMBERREDO:ADC AX,SI MUL DI INC SI INC DI ADC BX,AX LOOP REDO MOV DATA,BX POP,8086程序如下(加权系数为DATA1单元,采样值存于DATA2单元,个数为NUMBER,结果存于DATA0单元):,3.1 数字滤波,3.1.4 中值滤波,所谓中值滤波是对某一参数连续采样n次(一般n取奇数),然后把n次的采样值从小到大或从大到小排队,再取中间值作为本次采样值。,n 个数据按大小顺序排队的具体做法是:两两进行比较,设R1为存放数据区首地址,先将(R1)与(R1)+1)进行比较,若是(R1)(R1)+1)则不交换存放位置,否则将两数位置对调。继而再取(R1)+1)与(R1)+2)比较,判断方法亦然,直到最大数沉底为止。然后再重新进行比较,把次大值放到n-1位,如此做下去,则可将n个数从小到大顺序排列。,3.1 数字滤波,设采样值从8位A/D转换器输入5次,存放在SAMP为首地址的内存单元中,其程序流程图如图3-3所示。,3.1 数字滤波,51程序清单如下:,ORG8000HINTER:MOVR4,#04H;置大循环次数SORT:MOVA,R4;小循环次数R5MOVR5,AMOVR1,#SAMP;采样数据存放首地址R1LOOP:MOVA,R1;比较INCR1MOV R2,ACLRCSUBBA,R1MOVA,R2JCDONE,3.1 数字滤波,MOV A,R1;(R1)(R1)+1)DECR1XCHA,R1INCR1MOVR1,ADONE:DJNZR5,LOOP;R50,小循环继续进行DJNZR4,SORT;R40,大循环继续进行INCR1MOVR1,ARET,中值滤波对于去掉由于偶然因素引起的波动或采样器不稳定而造成的误差所引起的脉动干扰比较有效。若变量变化比较缓慢,采用中值滤波效果比较好,但对快速变化过程的参数(如流量),则不宜采用。一般n取59次。,3.1 数字滤波,3.1.5 去极值平均滤波,去极值平均值滤波的算法是:连续采样n次,去掉一个最大值,再去掉一个最小值,求余下n-2个采样值的平均值。程序的流程图如图3-4所示。,为使平均滤波方便,n-2应为2、4、8、16,故n常取4、6、10、18。,3.1 数字滤波,图3-4 去极值平均滤波,3.1 数字滤波,3.1.6 滑动平均滤波,滑动平均滤波法把n个测量数据看成一个队列,队列的长度固定为n,每进行一次新的采样,把测量结果放入队尾,而去掉原来队首的一个数据,这样在队列中始终有n个“最新”的数据。然后把队列中的n个数据进行算术平均运算,就可获得新的滤波结果。,滑动平均值滤波对周期性干扰有良好的抑制作用,平滑度高,灵敏度低;但对偶然出现的脉冲性干扰的抑制作用差,不易消除由于脉冲干扰引起的采样值的偏差,因此它不适用于脉冲干扰比较严重的场合,而适用于高频振荡系统。,通常对流量信号,n取12,压力信号n取4,液面参数n取412,温度信号n取14。,3.1 数字滤波,假定n个双字节型采样值,40H单元为采样队列内存单元首地址,n个采样值之和不大于16位。新的采样值存于3EH、3FH单元,滤波值存于60H、61H单元。FARFIL为算术平均滤波程序。51程序清单为:,MOVR2,N-1;采样个数MOVR0,42H;队列单元首地址MOVR1,43HLOOP:MOVA,R0;移动低字节DECR0DECR0MOVR0,AMOVA,R0;修改低字节地址ADDA,04HMOVR0,A,3.1 数字滤波,MOVA,R1;移动高字节DECR1DECR1MOVR1,AMOVA,R1;修改高字节地址ADDA,04HMOVR1,ADJNZR2,LOOPMOVR0,3EH;存新的采样值MOVR1,3FHACALLFARFIL;求算术平均值RET,3.1 数字滤波,3.1.7 低通数字滤波(惯性滤波),对于变化过程比较缓慢的随机变量采用短时间内连续采样,然后求平均值的方法进行滤波,其效果往往不够理想。为了提高滤波效果,可以仿照模拟系统RC低通滤波器的方法,将普通硬件RC低通滤波器的微分方程用差分方程来表示,便可以用软件算法来模拟硬件滤波器的功能。,RC低通滤波器,3.1 数字滤波,模拟低通滤波器的传递函数为,其中,为RC滤波器的时间常数,。,用一阶向后差分法离散化后,可得:,Y(n)=(1-)Y(n-1)+X(n),式中,X(n)本次采样值;Y(n-1)上次的滤波输出值;滤波系数,,T采样周期;Y(n)本次滤波的输出值。,PUSH BEGIN:XOR AX,AX MOV BX,DATA1 MOV AX,COE MUL BX PUSH DX PUSH AX MOV AX,01D SUB AX,COE MUL DATA2NEXT:POP BX ADD AX,BX POP BX ADC DX,BXOVER:POP,Y(n)=(1-)Y(n-1)+X(n),3.1 数字滤波,3.1.8 复合滤波程序,为了进一步提高滤波效果,改善控制精度,有时可以把两种或两种以上有不同滤波效果的数字滤波器组合起来,形成复合数字滤波器,或称多级数字滤波器。,例如:把中值滤波和算术平均值滤波结合起来(去极值平均值滤波),就可以结合两者的优点,既可以消除周期性的干扰信号,又可对随机的脉冲干扰信号进行滤波。滤波步骤为:,把n次采样值按照从大到小或者从小到大的顺序排列。采用中值滤波,去掉最大值和最小值。对其余的n-2个采样值取算术平均值,作为滤波的输出值。,3.1 数字滤波,此外,也可以采用多重滤波的方法,把多个滤波器串联起来,前一个数字滤波器的输出作为后一个数字滤波器的输入。,比如:可以把两个低通滤波器串联起来,形成双重滤波,这样滤波效果会更好些。其滤波算式可以采用迭代方法求出。,3.1 数字滤波,由式,第一级滤波输出为 Y(n)=(1-)Y(n-1)+X(n)(3-9),第二级滤波输出为 Z(n)=(1-)Z(n-1)+Y(n)(3-10),将式(3-9)代入式(3-10)得Z(n)=(1-)Z(n-1)+(1-)Y(n-1)+2X(n)(3-11),Y(n)=(1-)Y(n-1)+X(n),3.1 数字滤波,由式(3-10)可以求出 Y(n)=Z(n)-(1-)Z(n-1)(3-12),再用n-1代替n,可得Y(n-1)=Z(n-1)-(1-)Z(n-2)(3-13),将式(3-13)代入式(3-11),就得到两级数字滤波算式Z(n)=2(1-)Z(n-1)-(1-)2Z(n-2)+2X(n)(3-14),数字滤波方法的选取,对于变化缓慢的参数(如温度),可选用程序判断滤波及惯性滤波,对于变化较快的信号(如压力和流量等),可选用算术平均或加权平均滤波,对于要求较高的系统,可选用复合滤波,滤波效果相同时,应选用执行时间短的程序,3.2 标度变换,标度变换:在计算机控制系统中,生产中的各个参数都有着不同的数值和量纲,所有这些参数都经过变送器转换成A/D转换器所能接收的05V统一电压信号,又由AD转换成00FFH(8位)的数字量。为进一步显示、记录、打印以及报警等,必须把这些数字量转换成不同的单位,以便操作人员对生产过程进行监视和管理。这就是所谓的标度变换。,3.2 标度变换,3.2.1 线性参数标度变换,所谓线性参数,指一次仪表测量值与A/D转换结果具有线性关系,或者说一次仪表是线性刻度的。,标度变换公式为,式中,A0 一次测量仪表的下限;Am 一次测量仪表的上限;Ax 实际测量值(工程量);N0 仪表下限对应的数字量;Nm 仪表上限对应的数字量;Nx 测量值所对应的数字量。,3.2 标度变换,为使程序简单,一般把被测参数的起点A0(输入信号为0)所对应的A/D输出值为0,即N0=0,这样上式可化作,(3-16),比如:某热处理炉温度测量仪表的量程为2001000,在某一时刻计算机采样并经数字滤波后的数字量为0CDH,设仪表量程为线性的,求出此时温度值。,A0=200,Am=1000,Nx=0CDH=(205)D,Nm=0FFH=(255)D,根据式(3-16)可得此时温度为,3.2 标度变换,有时,工程量的实际值还需经过一次变换。如电压测量值是电压互感器的二次侧的电压,则其一次侧的电压还有一个互感器的变比问题,这时上式应再乘上一个比例系数,即,(3-17),3.2 标度变换,3.2.2 非线性参数标度变换,比如:在过程控制中,最常见的非线性关系是差压变送器信号P与流量Q的关系,(3-18),式中,Q流量;k流量系数,与流体的性质及节流装置的尺寸有关;P节流装置前后的差压。,3.2 标度变换,据此,可得测量流量时的标度变换式为,整理得,(3-19),式中 Q0流量仪表的下限值;Qm流量仪表的上限值;Qx被测量的流量值;N0差压变送器下限所对应的数字量;Nm差压变送器上限所对应的数字量;Nx差压变送器所测得的差压值(数字量)。,3.2 标度变换,对于流量测量仪表,一般下限取0,此时Q0=0,N0=0,故上式变为,3.3 越限报警,在计算机控制系统中,为了安全生产,对于一些重要的参数或系统部位,都设有上、下限检查及报警系统,以便提醒操作人员注意或采取相应的措施。其方法就是把计算机采集的数据经计算机进行数据处理、数字滤波、标度变换之后,与该参数上、下限给定值进行比较,如果高于(或低于)上限(或下限),则进行报警,否则就作为采样的正常值,以便进行显示和控制。,报警系统一般为声光报警信号,在某些系统中,需要增加功能,还带有打印输出,如记下报警的参数、时间等,并能自动进行处理,如自动切换到手动,切断阀门或自动拨出电话号码等。,3.3 越限报警,报警程序的设计方法主要有两种:一种是软件报警。这种方法的基本作法是把被测参数如温度、压力、流量、速度、成分等参数,经传感器、变送器、AD转换送入计算机后,再与规定的上、下限值进行比较,根据比较的结果进行报警或处理,整个过程都由软件实现。另一种是直接报警。基本作法是被测参数与给定值的比较在传感器中进行,如果被测参数超过给定值,就会通过硬件向CPU提出中断请求,CPU响应中断后,会产生报警信号。,不论是软件报警,还是直接报警,都需要经过以下三个步骤:对被测参数进行采样。将采样值与给定值的上、下限值进行比较。根据比较结果执行相应的报警处理程序。,3.3 越限报警,3.3.1 软件报警程序设计,假设被测参数的采样值为Ux,设定该参数的上、下限值分别为Umax、Umin。要求若被测参数Ux Umax时,则上限报警;若被测参数Ux Umin时,则下限报警。为此设计的报警电路如图3-6所示。,3.3 越限报警,当参数正常时,绿灯亮。若超过上限或低于下限值,将发出声光报警。由于参数位都接有反相器,所以当某位为“1”时,该位的灯亮。,本程序的设计思想是设置一个报警模型标志单元ALARM,然后把参数的采样值分别与上、下限值进行比较。若某一位需要报警,则将相应位置“1”,否则,清“0”。待参数判断完后,看报警模型标志单元ALARM的内容是否为00H。如果为00H,说明参数正常,使绿灯发光;如果不为00H,则说明参数越限,输出报警模型。其程序流程图如图3-7所示。,3.3 越限报警,图3-7 软件报警程序流程图,3.3 越限报警,设采样值存放在SAMP单元中,报警上限值存放在30H单元中,下限值存放在31H单元中,报警标志单元为ALARM。软件报警程序如下:,ORG8000HALARM:MOVDPTR,#SAMP;采样值存放地址DPTRMOVXA,DPTR;取采样值UxMOVALARM,#00H;报警模型单元清0ALARM0:CJNEA,30H,AA;Ux Umax吗ALARM1:CJNEA,31H,BB;Ux Umin吗DONE:MOVA,#00H;判断是否有参数报警CJNEA,ALARM,CC;若有,转CCSETB06H;无需报警,输出绿灯亮模型,3.3 越限报警,DONE1:MOVA,ALARMMOVP1,ARETCC:SETB07H;置电笛响标志位AJMPDONE1SAMPEQU8100HALARMEQU20HAA:JNCAOUT1;Ux Umax,转AOUT1AJMPALARM1BB:JCAOUT2;Ux Umin,转AOUT2AJMPDONEAOUT1:SETB00H;置Ux超上限报警标志AJMPDONEAOUT2:SETB01H;置Ux越下限报警标志AJMPDONE,3.3 越限报警,3.3.2 直接报警程序,这种报警方法的前提条件是被测参数与给定值的比较是在传感器中进行的。当检测值超过上限或低于下限时,结点开关闭合,从而产生报警信号。,图中,SL1和SL2分别为被测参数的上、下限报警结点。当被测参数处于正常范围时,P1.0和P1.1均为高电平,当参数超过上限或低于下限时,其中的一个结点就会闭合,这样就会由高电平变为低电平,向CPU发出中断请求。CPU响应中断后,读入报警状态P1.0和P1.1,然后从P1.4和P1.5输出报警信号,完成越限报警。,3.3 越限报警,具体报警程序如下:,ORG6000HAJMPMAIN;上电自动转向主程序ORG0003H;外部中断方式0入口地址AJMPALARMORG0200HMAIN:SETBIT0;选择边沿触发方式SETBEX0;允许外部中断0SETBEA;CPU允许中断HERE:SJMPHERE;模拟主程序ORG0220HALARM:MOVA,#0FFH;设P1口为输入口MOVP1,AMOVA,P1;取报警状态SWAPA;ACC.7ACC.4与ACC.3ACC.0交换MOVP1,A;输出报警信号RETI,3.3 越限报警,在实际的控制系统中,往往为了避免测量值在极限值附近摆动造成频繁报警,可以在上、下限附近设定一个回差带,如图3-9所示。具体上、下限带宽的选择应根据被测参数的具体情况来决定。,图3-9 上、下限设置回差带,3.4 键盘控制程序,3.4.1 键盘的组成、特点及消除抖动的措施,1键盘的组成及特点,一个按键电路如图3-10所示。当按键未按下时,VA=1,为高电平;当按键S按下时,VA=0,为低电平。因此,通过高、低电平的检测,便可确定按键是否被按下。,图3-10 按键电路,3.4 键盘控制程序,由于机械触点的弹性作用,一个按键开关在闭合或断开时不会马上稳定下来,会有瞬间的抖动,具体波形如图3-11所示。,图3-11 按键抖动波形,3.4 键盘控制程序,2消除按键抖动的措施,消除按键抖动的措施有两种:硬件方法和软件方法。,(1)硬件方法,采用RC滤波消抖电路或RS双稳态消抖电路,如图3-12所示。,3.4 键盘控制程序,(2)软件方法,当按键数量较多时,硬件消抖将无法胜任。在这种情况下,可以采用软件的方法进行消抖。在第一次检测到有按键闭合时,首先执行一段延时10ms的子程序,然后再确认该按键电平是否仍保持闭合状态电平,如果保持闭合状态电平则确认为真正有按键按下,从而消除了抖动的影响。,3.4 键盘控制程序,3.4.2 独立式按键接口技术,所谓独立式按键就是每个按键各接一根输入线,各个按键的工作状态互不影响。因此,通过检测输入线的电平状态可以很容易判断哪个按键被按下了。,3.4 键盘控制程序,由图3-13可知8255A的口地址为:PA口地址为7FFCH、PB口地址为7FFDH、PC口地址为7FFEH、控制口地址为7FFFH。查询方式编程如下:,ORG3000HMOVDPTR,#7FFFH;8255A初始化MOVA,#90HMOVXDPTR,AKBSPR:ACALLKEY;读键的状态JZDONE;若无按键闭合,转DONEACALLDL10mS;若有键按下,延时10mS以防抖动ACALLKEY;重读键的状态JZDONE;若无按键闭合,转DONEJBACC.0,S1;转S1键处理JBACC.1,S2;转S2键处理,3.4 键盘控制程序,JBACC.2,S3;转S3键处理JBACC.3,S4;转S4键处理JBACC.4,S5;转S5键处理JBACC.5,S6;转S6键处理JBACC.6,S7;转S7键处理JBACC.7,S8;转S8键处理DONE:RETKEY:MOVDPTR,#7FFCH;判断有无按键闭合MOVXA,DPTRCPLA;若(A)=0,则无按键闭合RET,3.4 键盘控制程序,DL10mS:MOVR5,#14H;延时10mS子程序DL:MOVR6,#0FFHDL0:DJNZR6,DL0DJNZR5,DLRETS1:S1键处理S2:S2键处理,3.4 键盘控制程序,独立式键盘与计算机的接口也可以采用中断方式,如图3-14所示。,3.4 键盘控制程序,3.4.3 矩阵式键盘接口技术,1矩阵式键盘工作原理,矩阵式键盘由行线和列线组成,按键位于行、列线的交叉点上,行、列线分别连接到按键开关的两端。行线通过上拉电阻接到5V上,如图3-15所示,平时无按键动作时,行线处于高电平状态,而当有按键按下时,行线电平状态将由与此行线相连的列线电平决定。列线电平如果为低,则行线电平为低;列线电平如果为高,则行线电平亦为高。这一点是识别矩阵键盘按键是否被按下的关键所在。,3.4 键盘控制程序,(1)扫描法,矩阵键盘按键的识别方法,此方法分两步进行:第一步,识别键盘有无键被按下;第二步,如果有键被按下,识别出具体的按键。识别键盘有无键被按下的方法是:让所有列线均置为0电平,检查各行线电平是否有变化,如果有变化,则说明有键被按下,如果没有变化,则说明无键被按下。(实际编程时应考虑按键抖动的影响,通常总是采用软件延时的方法进行消抖处理。)识别具体按键的方法是(亦称之为扫描法):逐列置零电平,其余各列置为高电平,检查各行线电平的变化,如果某行电平由高电平变为零电平,则可确定此行此列交叉点处的按键被按下。,2按键的识别方法,3.4 键盘控制程序,(2)线反转法,线反转法只须经过两步便能获得此按键所在的行与列的值。,第一步:将行线编程为输入线,列线编程为输出线,并使输出线输出为全零电平,则行线中电平由高到低所在行为按键所在行。第二步:同第一步完全相反,将行线编程为输出线,列线编程为输入线,并使输出线输出为全零电平,则列线中电平由高到低所在列为按键所在列。综合一、二两步的结果,可确定按键所在行和列,从而识别出所按的键。,3.4 键盘控制程序,假设7号键被按下,那么:第一步即在P1.0P1.3输出全为0,然后,读入P1.4P1.7位的状态,结果P1.5=0,而P1.4、P1.6和P1.7均为1,因此,第1行出现电平的变化,说明第1行有键按下;第二步让P1.4P1.7输出全为0,然后,读入P1.0P1.3位,结果P1.3=0,而P1.1、P1.2和P1.0均为1,因此第3列出现电平的变化,说明第3列有键按下。综合一、二两步,即第1行第3列按键被按下,此按键即是7号键。,3.4 键盘控制程序,3键盘工作方式,键盘工作方式有3种,即:编程扫描、定时扫描和中断扫描。,(1)编程扫描法 所谓编程扫描就是CPU对键盘的扫描采取程序控制方式,一旦进入键扫描状态,则反复地扫描键盘,等待用户从键盘上输入命令或数据。而在执行键入命令或处理键入数据过程中,CPU将不再响应键入要求,直到CPU返回重新扫描键盘为止。,3.4 键盘控制程序,(2)定时扫描法 定时扫描工作方式就是CPU每隔一定的时间(例如10ms)对键盘扫描一遍。当发现有键按下时,便进行读入键盘操作,以求出键值,并分别进行处理。定时时间间隔由单片机内部定时器/计数器来完成,这样可以减少计算机扫描键盘的时间,以减少CPU的开销。具体做法是,当定时时间到,定时器便自动输出一脉冲信号,使CPU转去执行扫描程序。,(3)中断扫描法 当没有键入操作时,CPU不对键盘进行扫描,以节省出大量的时间对系统进行监控和数据处理。一旦键盘有输入,则向CPU申请中断。CPU响应中断后,即转到相应的中断服务程序,对键盘进行扫描,以便判别键盘上闭合键的键号,并做出相应的处理。,3.4 键盘控制程序,综上所述,对键盘所做的工作分为三个层次:第1层:监视键盘的输入。体现在键盘的工作方式上就是:编程扫描工作方式;定时扫描工作方式;中断扫描工作方式。第2层:确定具体按键。体现在按键的识别方法上就是:扫描法;线反转法。第3层:键功能程序执行。,3.4 键盘控制程序,4键盘接口及编程方法,图3-17为一个48矩阵键盘通过8255A扩展IO口与80C51单片机的接口电路原理图。,图3-17 8255A扩展I/O口组成的48矩阵式键盘,3.4 键盘控制程序,在图3-17中,8255A的PA、PB、PC口地址分别为:7FFCH、7FFDH、7FFEH,控制口地址为7FFFH。当PA口工作于方式0输出,PC口低4位工作于方式0输入时,方式命令控制字可设为89H。,键盘扫描子程序完成如下4个功能。,(1)判断键盘上有无键闭合。(2)消除按键机械抖动(3)判别闭合键的键号(4)使CPU对键的一次闭合仅作一次处理,3.4 键盘控制程序,键输入子程序的框图,3.4 键盘控制程序,下面为键输入程序的清单,从该程序返回后输入键的键号在BUFF单元中。,ORG5000HPROG:MOV DPTR,#7FFFH;8255A初始化 MOV A,#89H;89H=10001001MOVX DPTR,AKEY1:ACALL KS1;判断有无键闭合JNZ LK1;(A)0,说明有键闭合AJMP KEY1;(A)=0,说明无键闭合LK1:ACALL DL10ms;延时10ms(消抖)ACALL KS1;再次判断有无键闭合JNZ LK2;(A)0,有键闭合,转LK2AJMP KEY1;继续查询,3.4 键盘控制程序,LK2:MOV R2,#0FEH;扫描模式R2MOV R4,#00H;R4为列计数器LK4:MOV DPTR,#7FFCH;扫描模式8255PA口MOV A,R2 MOVXDPTR,AINC DPTRINC DPTRMOVX A,DPTR;读8255PC口JB ACC.0,LONE;ACC.0=1,说明0行无键闭合,转 判第1行MOV A,#00H;0行有键闭合,首键号0A AJMP LKPLONE:JBACC.1,LTWOMOV A,#08H;1行有键闭合,首键号8AAJMP LKP,3.4 键盘控制程序,LTWO:JB ACC.2,LTHRMOV A,#10H;2行有键闭合,首键号16AAJMP LKPLTHR:JB ACC.3,NEXT;转判下一列MOV A,#18H;3行有键闭合,首键号24ALKP:ADD A,R4;键号=列号+行首键号PUSH ALK3:ACALL KS1;判断键是否释放JNZ LK3;直到A=0,键释放POP A MOV BUFF,A;存键值(如:以备显示)AJMPKNDNEXT:INC R4;列计数器加1MOV A,R2;判断是否扫描到最后一列JNB ACC.7,KND RL A;A7A0 A7,3.4 键盘控制程序,MOV R2,AAJMP LK4KND:AJMP KEY1KS1:MOV DPTR,#7FFCH;全0扫描口PAMOV A,#00HMOVX DPTR,AINC DPTRINC DPTRMOVX A,DPTR;读键入状态PC03CPL AANL A,#0FH;屏蔽高4位(若(A)=0,说明键没闭合)RETDL10ms:MOV R5,#14HDL:MOV R6,#0FFH DL0:DJNZ R6,DL0DJNZ R5,DLRET,3.4 键盘控制程序,3.4.4 双功能键的设计及重键处理技术,1双功能键的设计,解决的办法是设置上/下档开关来实现。如图3-19所示。,当上下档键控制开关处于上档时,按键为上档功能,当此控制开关处于下档时,按键为下档功能。在编程时,键盘扫描子程序应不断测试P1.7口线的电平状态,根据此电平状态的高低,赋予同一个键两个不同的键码,从而由不同的键码转入不同的键功能子程序;或者同一个键只赋予一个键码,但根据上/下档标志,相应转入上/下档功能子程序。,3.4 键盘控制程序,2重键处理技术,当发现有按键按下时,可以用扫描法进行按键定位,则所有的行(或列)均应扫描一次,这时就可以确定按下的是单键或多键,同时确定出各按键的具体位置,然后可以采取相应的措施:(1)如果是单键,则以此键为准,其后(指等待此键释放的过程中)其他的任何按键均无效。(2)如果是多键,则可以有3种处理方法,即:可视此次按键操作无效(通常应鸣响以示告警)。可视多键都有效,按扫描顺序,将识别出的按键依次存入缓冲区中以待处理。不断对按键进行定位处理,或者只令最先释放的按键有效,或者只令最后释放的按键有效。,3.5 显示程序设计,3.5.1 LED显示器接口技术,1LED数码显示器结构与原理,LED数码显示器是由发光二极管组成的,如图3-20所示。,图3-20 LED数码管的结构及外形图,3.5 显示程序设计,LED数码显示管中的dp显示段用来显示小数点。LED中每一段二极管与数据线的对应关系如下:数据线:D7D6D5D4D3D2D1D0LED段:dpgfedcba,这样,共阴极和共阳极LED数码显示器的字型码如表3-1所示。,3.5 显示程序设计,3.5 显示程序设计,2LED数码显示器的显示方式,图3-21是4位共阴极LED显示器的结构原理图。,从图中可以看出,4位LED显示器有4根位选线和84根段选线。则N位LED显示器有N根位选线和8N根段选线。段选线控制显示字符的字型,而位选线则控制显示位的亮、暗。根据位选线和段选线的连接方法不同,显示方式也不同。LED显示器有静态显示和动态显示两种显示方式。,3.5 显示程序设计,(1)静态显示方式,所谓静态显示方式,是由单片机一次输出显示后,就能保持该显示结果,直到下次送新的显示字型码为止。优点:显示器的亮度都较高,占用机时少,显示可靠,编程容易,管理也简单,因而在工业过程控制中得到了广泛的应用。缺点:使用元件多,且线路比较复杂,因而成本比较高。,3.5 显示程序设计,假设8255A的控制口地址为7FFFH,PC、PB、PA三个口地址分别为7FFEH、7FFDH、7FFCH,实现PA口显示“0”,PB口显示“1”,PC口显示“2”的程序如下:,ORG2000HSDISP-1:MOV DPTR,#7FFFH;8255初始化MOV A,#80H MOVX DPTR,AMOV DPTR,#7FFCH;PA口显示“0”MOV A,#3FHMOVX DPTR,AINC DPTR;PB口显示“1”MOV A,#06HMOVX DPTR,AINC DPTR;PC口显示“2”MOV A,#5BHMOVX DPTR,ARET,3.5 显示程序设计,利用BCD-7段锁存/译码/驱动器来实现静态显示,如图3-23所示。,其中MC14513为BCD-7段锁存/译码/驱动器,A、B、C、D为BCD码输入端,RBI为高位零消隐输入端,RBO为高位零消隐输出端,LE为锁存允许端,为高电平时,锁存输入的BCD码。,3.5 显示程序设计,ORG3F00HDISP-2:MOVA,#04H;数4送AMOVP1,A;写入P1口SETBP1.4;锁存入MC14513(1)中,百位显示4MOVA,#05H;数5送AMOVP1,A;写入P1口SETBP1.5;锁存入MC14513(2)中,十位显示5MOVA,#06H;数6送AMOVP1,A;写入P1口SETBP1.6;锁存入MC14513(3)中,个位显示6CLRP1RET,3.5 显示程序设计,(2)动态显示方式,所谓动态显示,就是单片机定时地对显示器件扫描,在这种方法中,显示器件分时工作,每次只能有一个器件显示,而其他各位熄灭,但由于人眼有视觉暂留现象,只要每位显示间隔足够短,则可造成多位同时亮的假象,达到显示的目的。,优点:使用硬件少,因而价格低。缺点:占用机时长,只要单片机不执行显示程序,就立刻停止显示。由此可见,这种显示方式将使计算机的开销增大。故在以工程控制为主的控制系统中应用较少。,3.5 显示程序设计,图3-24所示为利用8255A扩展的4位LED动态显示器接口电路。,图3-24 4位LED动态显示器接口电路,3.5 显示程序设计,LD0:MOV DPTR,#7FFCH;模式送到8255的PA口MOVX DPTR,AMOV A,R0;取显示数据MOV DPTR,DSEG;获得要显示数据的代码MOVC A,A+DPTRMOV DPTR,#7FFDH;把显示数据代码送到PB口MOVX DPTR,AACALL DL1;延时1msJB ACC.0,LD1;判断是否显示到第4位INC R0;指向下一个缓冲区MOV A,R3RR A;将A的内容左移一位,显示下 一位MOV R3,AAJMP LD0,3.5 显示程序设计,LD1:RETDSEG:DB 3FH,06H,5BH,4FH,66H,6DH;段数据表DSEG1:DB 7DH,07H,7FH,6FH,77H,7CHDSEG2:DB 39H,5EH,79H,71H,73H,3EHDSEG3:DB 31H,6EH,1CH,23H,40H,03HDSEG4:DB 18H,00HDL1:MOV R7,#02H;延时子程序DL:MOV R6,#0FFHDL6:DJNZ R6,DL6DJNZ R7,DLRET,3.5 显示程序设计,图3-25为采用BCD-7段译码驱动器MC14558构成的8位动态LED显示器。,3.5 显示程序设计,(3)软件、硬件译码显示器接口,随着集成电路的发展,现在已经生产出锁存/译码/驱动器为一体,并能同时供多位LED显示的芯片。比如:INTEL SIL公司生产的CMOS 8位的可

    注意事项

    本文(常用应用程序设计.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开