




已阅读5页,还剩86页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第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 保护现场PUSHACLRC 进位标志位清零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 DATA2 DATAMOVDATA DATA1 如果 Y n Y n 1 Y DATA1 DATAOVER POPA 恢复现场POPPSWRET 返回LIMITEQU30HDATA1EQU31HDATA2EQU32HDATAEQU33H 限幅滤波能有效地克服因偶然因素引起的脉冲干扰 但无法抑制周期性的干扰且平滑度差 51程序 BEGIN MOVAX DATA1 MOVBX AXMOVAX DATA2 SUBAX BXJGCHECK1NEGAXCHECK1 CMPAX LIMITJGDONEMOVAX DATA2 JMPOVERDONE MOVAX DATA1 OVER 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的确定不够灵活 必须根据现场的情况不断更换新值 第二是不能反映采样点数n 3时各采样数值受干扰情况 因此 它的应用受到一定的限制 在实际使用中 可用取代 Y 这样也可基本保持限速滤波的特性 虽增加一步运算 但灵活性大为提高 3 1数字滤波 程序流程图 3 1数字滤波 3 1 2算术平均值滤波 实质 把一个采样周期内对信号的n次采样值进行算术平均 作为本次的输出 即 n值决定了信号平滑度和灵敏度 随着n的增大 平滑度提高 灵敏度降低 为方便求平均值 n值一般取4 8 16之类的2的整数幂 以使用移位来代替除法 通常流量信号取12项 压力信号取6项 温度 成分等缓慢变化的信号取2项甚至不平均 PUSH BEGIN XORAX AXMOVBX DATA1MOVCX NUMBERMOVDX NUMBERREDO ADCAX BX INCBXLOOPREDO 循环DIVDXMOV DATA2 AXPOP 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 AMOVA TEMPRRCADJNZR7 DIVIDE 未结束 继续执行MOVSAMP A 保存结果至SAMP中POPA 恢复现场POPPSWRET 算术平均值滤波主要用于对压力 流量等周期脉动的采样值进行平滑加工 但对偶然出现的脉冲性干扰的平滑作用尚不理想 因而它不适用于脉冲性干扰比较严重的场合 另外该滤波方法比较浪费RAM 3 1数字滤波 3 1 3加权平均值滤波 加权平均值滤波法公式为 其中 k0 k1 kn 1为加权系数 体现了各次采样值在平均值中所占的比例 它们都为大于0的常数项 且满足 一般采样次数愈靠后 取的比例愈大 这样可增加新的采样值在平均值中的比例 这种滤波方法可以根据需要突出信号的某一部分 抑制信号的另一部分 适用于纯滞后较大的被控对象 PUSH BEGIN XORAX AXXORBX BXMOVSI DATA1MOVDI DATA2MOVCX NUMBERREDO ADCAX SI MUL DI INCSIINCDIADCBX AXLOOPREDOMOVDATA BXPOP 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 比较INCR1MOVR2 ACLRCSUBBA R1MOVA R2JCDONE 3 1数字滤波 MOVA R1 R1 R1 1 DECR1XCHA R1INCR1MOV R1 ADONE DJNZR5 LOOP R5 0 小循环继续进行DJNZR4 SORT R4 0 大循环继续进行INCR1MOV R1 ARET 中值滤波对于去掉由于偶然因素引起的波动或采样器不稳定而造成的误差所引起的脉动干扰比较有效 若变量变化比较缓慢 采用中值滤波效果比较好 但对快速变化过程的参数 如流量 则不宜采用 一般n取5 9次 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取4 12 温度信号n取1 4 3 1数字滤波 假定n个双字节型采样值 40H单元为采样队列内存单元首地址 n个采样值之和不大于16位 新的采样值存于3EH 3FH单元 滤波值存于60H 61H单元 FARFIL为算术平均滤波程序 51程序清单为 MOVR2 N 1 采样个数MOVR0 42H 队列单元首地址MOVR1 43HLOOP MOVA R0 移动低字节DECR0DECR0MOV R0 AMOVA R0 修改低字节地址ADDA 04HMOVR0 A 3 1数字滤波 MOVA R1 移动高字节DECR1DECR1MOV R1 AMOVA R1 修改高字节地址ADDA 04HMOVR1 ADJNZR2 LOOPMOV R0 3EH 存新的采样值MOV R1 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 XORAX AXMOVBX DATA1 MOVAX COE MULBXPUSHDXPUSHAXMOVAX 01DSUBAX COE MUL DATA2 NEXT POPBXADDAX BXPOPBXADCDX 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转换器所能接收的0 5V统一电压信号 又由A D转换成00 FFH 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 比如 某热处理炉温度测量仪表的量程为200 1000 在某一时刻计算机采样并经数字滤波后的数字量为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越限报警 报警程序的设计方法主要有两种 一种是软件报警 这种方法的基本作法是把被测参数如温度 压力 流量 速度 成分等参数 经传感器 变送器 A D转换送入计算机后 再与规定的上 下限值进行比较 根据比较的结果进行报警或处理 整个过程都由软件实现 另一种是直接报警 基本作法是被测参数与给定值的比较在传感器中进行 如果被测参数超过给定值 就会通过硬件向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 7 ACC 4与ACC 3 ACC 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 90HMOVX DPTR 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 0 P1 3输出全为0 然后 读入P1 4 P1 7位的状态 结果P1 5 0 而P1 4 P1 6和P1 7均为1 因此 第1行出现电平的变化 说明第1行有键按下 第二步让P1 4 P1 7输出全为0 然后 读入P1 0 P1 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为一个4 8矩阵键盘通过8255A扩展I O口与80C51单片机的接口电路原理图 图3 178255A扩展I O口组成的4 8矩阵式键盘 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 MOVDPTR 7FFFH 8255A初始化MOVA 89H 89H 10001001MOVX DPTR AKEY1 ACALLKS1 判断有无键闭合JNZLK1 A 0 说明有键闭合AJMPKEY1 A 0 说明无键闭合LK1 ACALLDL10ms 延时10ms 消抖 ACALLKS1 再次判断有无键闭合JNZLK2 A 0 有键闭合 转LK2AJMPKEY1 继续查询 3 4键盘控制程序 LK2 MOVR2 0FEH 扫描模式 R2MOVR4 00H R4为列计数器LK4 MOVDPTR 7FFCH 扫描模式 8255PA口MOVA R2MOVX DPTR AINCDPTRINCDPTRMOVXA DPTR 读8255PC口JBACC 0 LONE ACC 0 1 说明0行无键闭合 转判第1行MOVA 00H 0行有键闭合 首键号0 AAJMPLKPLONE JBACC 1 LTWOMOVA 08H 1行有键闭合 首键号8 AAJMPLKP 3 4键盘控制程序 LTWO JBACC 2 LTHRMOVA 10H 2行有键闭合 首键号16 AAJMPLKPLTHR JBACC 3 NEXT 转判下一列MOVA 18H 3行有键闭合 首键号24 ALKP ADDA R4 键号 列号 行首键号PUSHALK3 ACALLKS1 判断键是否释放JNZLK3 直到A 0 键释放POPAMOVBUFF A 存键值 如 以备显示 AJMPKNDNEXT INCR4 列计数器加1MOVA R2 判断是否扫描到最后一列JNBACC 7 KNDRLA A7 A0 A7 3 4键盘控制程序 MOVR2 AAJMPLK4KND AJMPKEY1KS1 MOVDPTR 7FFCH 全0 扫描口PAMOVA 00HMOVX DPTR AINCDPTRINCDPTRMOVXA DPTR 读键入状态PC0 3CPLAANLA 0FH 屏蔽高4位 若 A 0 说明键没闭合 RETDL10ms MOVR5 14HDL MOVR6 0FFHDL0 DJNZR6 DL0DJNZR5 DLRET 3 4键盘控制程序 3 4 4双功能键的设计及重键处理技术 1 双功能键的设计 解决的办法是设置上 下档开关来实现 如图3 19所示 当上 下档键控制开关处于上档时 按键为上档功能 当此控制开关处于下档时 按键为下档功能 在编程时 键盘扫描子程序应不断测试P1 7口线的电平状态 根据此电平状态的高低 赋予同一个键两个不同的键码 从而由不同的键码转入不同的键功能子程序 或者同一个键只赋予一个键码 但根据上 下档标志 相应转入上 下档功能子程序 3 4键盘控制程序 2 重键处理技术 当发现有按键按下时 可以用扫描法进行按键定位 则所有的行 或列 均应扫描一次 这时就可以确定按下的是单键或多键 同时确定出各按键的具体位置 然后可以采取相应的措施 1 如果是单键 则以此键为准 其后 指等待此键释放的过程中 其他的任何按键均无效 2 如果是多键 则可以有3种处理方法 即 可视此次按键操作无效 通常应鸣响以示告警 可视多键都有效 按扫描顺序 将识别出的按键依次存入缓冲区中以待处理 不断对按键进行定位处理 或者只令最先释放的按键有效 或者只令最后释放的按键有效 3 5显示程序设计 3 5 1LED显示器接口技术 1 LED数码显示器结构与原理 LED数码显示器是由发光二极管组成的 如图3 20所示 图3 20LED数码管的结构及外形图 3 5显示程序设计 LED数码显示管中的dp显示段用来显示小数点 LED中每一段二极管与数据线的对应关系如下 数据线 D7D6D5D4D3D2D1D0LED段 dpgfedcba 这样 共阴极和共阳极LED数码显示器的字型码如表3 1所示 3 5显示程序设计 3 5显示程序设计 2 LED数码显示器的显示方式 图3 21是4位共阴极LED显示器的结构原理图 从图中可以看出 4位LED显示器有4根位选线和8 4根段选线 则N位LED显示器有N根位选线和8 N根段选线 段选线控制显示字符的字型 而位选线则控制显示位的亮 暗 根据位选线和段选线的连接方法不同 显示方式也不同 LED显示器有静态显示和动态显示两种显示方式 3 5显示程序设计 1 静态显示方式 所谓静态显示方式 是由单片机一次输出显示后 就能保持该显示结果 直到下次送新的显示字型码为止 优点 显示器的亮度都较高 占用机时少 显示可靠 编程容易 管理也简单 因而在工业过程控制中得到了广泛的应用 缺点 使用元件多 且线路比较复杂 因而成本比较高 3 5显示程序设计 假设8255A的控制口地址为7FFFH PC PB PA三个口地址分别为7FFEH 7FFDH 7FFCH 实现PA口显示 0 PB口显示 1 PC口显示 2 的程序
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版写字楼装修工程场地租赁合同样本
- 2025版矿石产品市场调研与评估服务合同样本下载
- 2025房地产代理商合作房产评估服务协议
- 2025房地产项目开发与城市综合体配套合同
- 2025版社区儿童安全教育项目合同书
- 2025年度智能社区物业综合服务合同范本
- 2025年自驾游车辆租赁及保险保障合同
- 2025大型商场家居建材租赁与销售代理合同
- 贵州省修文县2025年上半年公开招聘城市协管员试题含答案分析
- 2025版涂料工程劳务分包合同执行细则
- YYT 0657-2017 医用离心机行业标准
- SYT 6968-2021 油气输送管道工程水平定向钻穿越设计规范-PDF解密
- Q-GDW1799.2-2013-电力安全工作规程-线路部分
- (新)外研版初中英语语法(表格式)网络结构图
- 油脂制取与加工工艺学课件
- 控油控糖控盐知识讲座
- 中医护理进修脑病科汇报
- 汽车传感器的原理与应用课件
- 初中生如何应对学习上的压力和焦虑
- 督灸技术课件
- 《分析化学总复习》课件
评论
0/150
提交评论