您现在的位置: 范文先生网 >> 理工论文 >> 电子通信论文 >> 正文

isp1016实现机载导航系统的键盘控制

时间:2007-1-20栏目:电子通信论文

  摘要:介绍了用isp可编程逻辑芯片设计机载导航系统键盘控制器的设计要点,给出了接口信号及驱动程序的核心代码。该设计具有典型性、通用性和实用性,并可用到各种键盘控制器中。
  关键词:键盘控制器在线可编程扫描线isp1016
  
  1键盘控制器的外部接口信号
  
  无论在任何计算机系统中,键盘都是最重要的输入设备,但是普通键盘不能满足机载要求。笔者在新一代电子航空图导航系统中,用Lattice公司的ispLSI1016设计了一个4×5键盘控制器(以下简称KBC),经实际应用,该键盘控制器通用性较强。图1是其键盘和显示器外观示意图。
  
  一航情况下,KBC应该是CPU的一个外部I/O设备,它一方面监测各按钮状态,另一方面接受CPU的查询并主动向CPU请求中断。因此,外部接口信号分CPU接口信号和键盘按钮矩阵状态信号。图2为通用KBC外部接口信号示意图,其定义如下:
  
  *Reset:复位,低有效。该信号有效时将异步复位内部所有寄存器,以对KBC进行初始化;
  
  *CLK:工作时钟,频率为100kHz;
  
  *CS:片选,低有效;
  
  *RD:读信号,低有效;
  
  *A0:片内地址,用于区分片内寄存器;
  
  *INT:中断请求,高有效。当键盘控制器检测到有效按键时,该脚为高,当CPU读走按键编码时,KBC自动撤销中断请求;
  
  *D4~D0:三态数据线;
  
  *SL3~SL0:扫描输出,按键盘矩阵的列线;
  
  *RL4~RL0:回复线,接键盘矩阵的行线。
  
  实际上,大部分矩阵键盘的行列是可对换的。
  
  2KBC接口寄存器定义及驱动程序
  
  KBC针对CPU接口设计有2个只读寄存器,即数据寄存器(Dreg)和状态寄存器(Sreg)。数据寄存器用于保持有效按键的编码值,该编码值就是按键所在的行列;而状态寄存器则用于保持按键的状态信息,以供CPU查询。当CPU访问KBC时(即CS和RD同时有效),adkA0=0,则访问数据寄存器,否则访问状态寄存器。表1、表2分别是数据寄存器和状态寄存器的定义。
  
  表1数据寄存器定义
  
  D7D6D5D4D3D2D1D0XXXCol(列值)Row(行值)
  表2状态寄存器定义
  
  D7D6D5D4D3D2D1D0XXX0000
  显然,KBC的编程可以有2种模式,一种是软件查询,另一种是中断驱动。由于本系统采用WindowNT为运行环境,KBC对应用程序透明,所以,将INT请求直接和CPU的某一空闲中断(IRQ9)相连接,以便使驱动程序能将KBC作为一个设备打开。在初始化加载时,应将对应中断触发设置为电平敏感。其VC核心代码如下:
  
  #defineSReg0x401//键盘状态寄存器地址
  
  #defineDReg0x400//键盘数据寄存器地址
  
  …
  
  BYTESR,Key,Row,Col;
  

[1] [2] [3] 下一页

下页更精彩:1 2 3 4 下一页