EDN China > 技术文章 > 工业电子 > 网络与总线 > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

一种PC键盘的革命性设计

作者:微计算机信息?? 2008年04月07日 ?? 收藏0

  4 软件设计

  软件以uCos实时嵌入式操作为核心,按功能分为多个任务,软件采用C语言编写,主要完成两部分功能,其一是本地按键和显示,其二是将按键变为PC键扫描码通过PS2接口送给PC机。软件结构如图4-1所示。

  系统软件结构

  图4-1? 系统软件结构

  算法的关键是对按键值的处理。由于PC键盘中的每个键都具有通码(接下)和断码(松开),产生的键盘扫描码由多个字节组成,而掌心键是多次操作才能构成PC键盘的单次操作,所以在算法中要设置很多状态变量来记忆操作过程,在完成一个PC键操作后才通过PS2接口输出通码或断码。下面给出了详细的原码程序和注释。

  首先说明以下重要的全局变量:

  char KeySet;????????????????? //存入子键集号,因为不同子集的Kn值代表不同的键

  char KeyStatus;???????????????????? //记忆处理状态,在不同阶段Kn有不同的意义

  char …….

  函数KeyMessage( )将按键原始值分集处理,分集后的值调用函数KeySend( )保存或发送,函数KeySendOn( )发送通码的扫描码,而函数KeySendOff( )发送断码的扫描码。

  void KeySend( unsigned char OnCode )???? //发送通码

  {?????? if( KeepLock==1){???????????????????????????? //保存组合通码KeepGroup

  KeepGroup[KeepPtr++] = OnCode;

  return;???????????????????????????????????????????????? //只保存,不发送

  ???????? }

  If(KeepLock==2)……..

  ???????? KeySendOn( OnCode );????????????????????? //发送通码的扫描码

  }

  void KeySendOn( unsigned char OnCode )

  {?????? KeyOnCodeOff = 0;?????????????????????????? //设标志,要求发断码

  ? KeyOnCode = OnCode;????????????????


?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

掌心键? 单片机? 单手操作?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈