当前位置:首页 > 嵌入式 > 嵌入式硬件

郭 建 张新政  摘要:介绍了一种新的用于dsp系统中的键盘处理方法。与单片机系统中常用的程序扫描键盘处理方式相比,这种定时-计数的方法能够有效地节约系统开销,且对键盘处理快速可靠。
  关键词:键盘处理;数字信号处理器;串行rom

  1引言

  在各种数字控制系统中,大多数都用键盘和led作为人机交互界面。一般地,键盘分为编码和非编码两种。编码方式的键盘要使用专门的硬件来识别按键,系统比较复杂且占用较多的硬件资源。实际应用中编码方式的键盘使用得越来越少,相应地大多数系统都采用非编码键,并用软件的方式对键盘进行扫描处理。文献[1]给出了单片机系统中三种软件扫描键盘的方法:(1)程序控制扫描方式;(2)定时扫描方式;(3)中断扫描方式。(2)和(3)都要占用单片机系统中的资源,故而大多数单片机控制系统都采用程序控制扫描方式来处理键盘。

  近年来,dsp以其高速处理能力、高集成度、资源丰富、应用灵活等优点而在许多领域中得到了越来越广泛的应用。在数字控制领域目前用得最多的是ti的c2000系列dsp。dsp系统中可以采用程序控制扫描方式对键盘进行处理,但如果沿用单片机系统中常用的程序控制扫描方式会有很大的不足——失去了dsp控制系统的快速性。本文介绍了dsp系统一种新的程序控制扫描方式。

  2两种不同的程序扫描方式

  我们知道按键在接通与断开的瞬间都会产生抖动,为了避免因干扰信号造成的键盘误处理以及对同一按键的多次处理,都要进行时间长短不等的延时扫描,一般经过10~30ms的延时后再对键盘进行处理。其流程图如图1所示。在这种程序扫描模式下,延时去抖动的20ms内程序不能做其它工作。对基于单片机的要求处理速度不高的系统来说这种方法是可以容忍的,但是对基于dsp的高速处理系统,20ms延时却是一个很大的浪费。下面以图2所示的系统简图为例,介绍一种新的用在dsp系统中的键盘处理方法,采用此方法可以大大减少程序扫描键盘时的时间,从而为系统其它任务节约时间。

  新的键盘处理方式采用定时-计数的方法来实现。程序流程图如图3示。定时由dsp系统内部定时器来实现。定时时间可根据实际需要来设定,在此设置为1ms。计数则可通过在ram区设定计数器变量ct20ms来实现。有时候为了尽量少地设置按键,而使某些键具有双重功能。也就是说用户正常按某一按键keyi,程序处理keyi的第一功能;用户长时间(比如大于1秒)则处理keyi的第二功能。例如在我们将key1设置为add键,正常情况下,每按一次所设置的参数加1,如果按add键超过1秒则参数值加10;将key2设置为停止/清故障标志键,正常情况下按key2则系统停止运行,按key2超过1秒则清除系统因故障/保护而出现的标志位。用图1中程序扫描方法是不能实现单键双重功能的,而采用图3中的定时-计数方法却是能够做到的。

  相关变量定义及键盘处理子程序如下:
.include“f240regs.h”
.bssct20ms,1
.bssct1sec,1
.bsskeyvalue,1
.bsskeyprogaddr,1
flag.setbit15...
.text
;定时-计数法键盘扫描子程序
keyroutine:
ldp#pbdatdir>>7;读iopb
laclpbdatdir
and#0fh
ldp#keyvalue
saclkeyvalue;存键值
xor#0fh
bcndkeypressed,neq
nokeypressed:
splk#00h,ct20ms
splk#00h,ct1sec
bendkeyroutine
keypressed:
ldp#ct20ms
bitct20ms,flag
bcndcheck1sec,tc
laclct20ms
add#1
saclct20ms
sub#20
bcndendkeyroutine,lt
splk#8000h,ct20ms;置标志位并清
;计数器为0
bjudgekey
check1sec:;是否到1秒?
ldp#ct1sec
laclct1sec
add#1
saclct1sec
sub#1000
bcndendkeyroutine,lt
splk#8000h,ct1sec
judgekey:
ldp#keyvalue
laclkeyvalue;键值范围:06-0eh
sub#6
add#keytable
tblrkeyprogaddr
laclkeyprogaddr
bacc
keytable.wordkey1prog
.wordkey2prog

.wordkey9prog
endkeyroutine:
ret
key1键处理程序如下,两个功能可根据实际需求来编写。
key1prog:
ldp#ct1sec
bitct1sec,flag
bcndkey1func2,tc
key1func1:
…;key1的第一功能
bendkeyroutine
key1func2:
…;key1的第二功能
bendkeyroutine

  对上述程序有几点需要说明,首先,按照本程序所实现的按键的第一功能和第二功能两者不能相互冲突,且第二功能只有在第一功能完成一次以后才能实现。对于单一功能的键只须在其相应程序的开始之处置判断ct20ms标志位是否为1语句,如果ct20ms.flag=1则直接返回,不再重复处理。其次,第二功能可执行一次(从图3中的y*处直接返回)也可执行多次(从图3中的y**处再次调用功能2处理程序)。上文所述的key1键可以设置是允许多次执行,从而实现连续加10功能;而key

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭