保存桌面快捷方式 - - 设为首页 - 手机版
凹丫丫旗下网站:四字成语大全 - 故事大全 - 范文大全
您现在的位置: 范文大全 >> 理工论文 >> 电子通信论文 >> 正文

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


 
  //右移3位,提取按键列值
  
  Row=Key&0x07;//提取按键行值
  
  }
  
  至此,就可根据Row和Col的值将它翻译为某一标准键,并存入NT键盘缓冲区。
  
  3KBC内部逻辑设计
  
  内部控制逻辑设计的关键是掌握按键识别原理。图3所示是其键盘识别原理图。设计时,可将按键设置在行线、列线的交点上。行线通过上拉电阻接到VCC(+5V),无按键时处于高电平。有按键时行线电平状态由列线决定。所有列线均为高则行线高,任一列线为低则行线低。KBC处理的核心就在于确认某一行线为低时,能定位出对应的列线。
  
  3.1输出扫描线(SL3..SL0)
  
  在设计输出扫描线时,可以使用一个2-Bit状态机Q5[L1..0]来依次轮流使扫描线输出为低电平。驱动时钟的周期为640ms,亦即每即扫描线持续640ms的低电平。将状态机的状态编码值和当前周期为低电平的扫描线序号对应起来,即可简化后续处理。图4是扫描线输出波形。注意,无论何种按键组合,在任一状态,有且仅有一个扫描线为低电平,否则后续处理将无法正确识别。
  
  3.2键盘编码
  
  处理回复线(RL4..RL0)时,应该对其中为低电平的行线进行编码。5个行线需要3-Bit寄存器,记为[RQ5..RQ0],其真值表如下:
  
  [RL4..RL0]->[RQ2..0]
  
  ----------------
  
  [H,H,H,H,L]->[0,0,0];0
  
  [H,H,H,L,H]->[0,0,1];1
  
  [H,H,L,H,H]->[0,1,0];2
  
  [H,L,H,H,H]->[0,1,1];3
  
  [L,H,H,H,H]->[1,0,0];4
  
  当KBC确认是有效按键后,应把行列编码值放入缓冲,以供CPU读取,其逻辑表达如下:
  
  式中,[KSL1,KSL0]是记录有效按键的扫描线编码,即当时的[QSL1..0]状态。
  
  3.3CPU的读操作
  
  CPU读状态寄存器时,系统把中断请求寄存器INT的值送出,而读数据寄存器时,它将把FIFO缓冲的按键值送出,处理CPU读操作的表达式如下:
  
  [D4..D0].oe=!CS&!RD;//寄存器由三态控制
  
  [D4..D0]=(!A0&[FIFO4..FIFO0])#//A0=0:送按键数据
  
  (A0&[L,L,L,L,INT]);//A0=1;送状态
  
  INT.ar=!Reset#(!CS&!RD&!A0);//读数据寄存器时应撤销中断
  
  3.4键盘处理状态机
  
  该状态处理机是KBC处理的核心。图5是其状态转移图,其驱动时钟应该比扫描周期快而且应该是它的整数倍。此处采用的80ms时钟周期是扫描周期的8倍。下面讨论其状态转移条件。
  
  S0:复位状态
  
  1.记录当前扫描周期
  
  2.if若有低电平的回复线thenS1elseS0; 《isp1016实现机载导航系统的键盘控制(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/168795.html

★温馨提示:你可以返回到 电子通信论文 也可以利用本站页顶的站内搜索功能查找你想要的文章。