智能手机全键盘控制器及其编程
[09-14 01:02:33] 来源:http://www.88dzw.com 电子制作 阅读:8325次
文章摘要: (1)将从FIFO收到的非0x3f的字节变量FIFO_BYTE和0x3f取与(AND 0x3f),结果值为按键值(即0至63号键中某一个被按下或释放)。 (2)再将该FIFO_BYTE和0x40取与(AND 0x40),结果为0则说明按键被按下,结果非0则说明按键被释放。如果硬件布线时使用了63号和62号键,FIFO_BYTE处理复杂,请软件设计工程师参考MAX7359编程指南的62号和63号键处理方法。3.3 长按键处理 通常需要起一个定时器,定时检查还未收到键盘释放信息的键盘按下信息都是何时发生的,如果是当前时间减去按键按下的时间满足长按键时间,就可向上层软件发长按键消
智能手机全键盘控制器及其编程,标签:电子小制作,http://www.88dzw.com(1)将从FIFO收到的非0x3f的字节变量FIFO_BYTE和0x3f取与(AND 0x3f),结果值为按键值(即0至63号键中某一个被按下或释放)。
(2)再将该FIFO_BYTE和0x40取与(AND 0x40),结果为0则说明按键被按下,结果非0则说明按键被释放。如果硬件布线时使用了63号和62号键,FIFO_BYTE处理复杂,请软件设计工程师参考MAX7359编程指南的62号和63号键处理方法。
3.3 长按键处理
通常需要起一个定时器,定时检查还未收到键盘释放信息的键盘按下信息都是何时发生的,如果是当前时间减去按键按下的时间满足长按键时间,就可向上层软件发长按键消息。
www.88dzw.com
这两款器件对于硬件设计而言较简单,但在编写驱动软件时需稍加注意。以下是MAX7349的编程建议:
(1)建议避免使用0行0列的0号按键。
(2)MAX7349初始化,假设MAX7349设置I2C地址的AD0引脚接地,将MAX7349的I2C读/写地址设为0x71/0x70,其过程如下:
/*MAX7349初始化开始*/
I2C_Write(0x70,0x04,0x01,); //关断
I2C_Write (0x70,0x01,0); //9 ms去抖
I2C_Write(0x70,0x02,0); //禁止Autorepeat功能
I2C_Wirte(0x70,0x03,0x01); //使能硬件中断
I2C_Write(0x70,0x05,0); //防止意外输出,可省略
I2C_Write(0x70,0x04,0x81); //启动器件正常功能
/*MAX7349初始化结束*/
(3)每次收到硬件中断后,连续读FIFO寄存器(I2C_Write(0x70,0x00);I2C_Read(0x71,变量)。注意此读操作是一次用于写FIFO寄存器地址0x00的写操作和一次读操作构成;如果连续读FIFO,则只需开始时进行一次写操作I2C_Write(0x70,0x00) 即可,FIFO寄存器地址不会自动递增),一直读到0x00的值全为0为止(建议避免使用0号按键),设一个最大读取次数(256次),如果来一次中断读取256次FIFO中还有非0值,就直接重启一次器件,执行如下操作:
I2C_Write(0x70,0x04,0x01); //关断
12C_Write(0x70,0x04,0x81); //启动器件正常功能
(4)关于按键释放检测,由于MAX7349无按键释放检测,对于组合键,长短键等特殊按键需求,需要软件配合来实现。实现方法如下:
每次收到硬件中断后通过I2C将FIFO读空,50 ms后将MAX7349重启,执行以下操作:
I2C_Write(0x70,0x04,0x01,); //关断
I2C_Write(0x70,0x04,0x81); //启动器件正常功能
若随后未收到中断,或收到中断后一直读空FIFO,也未有与上一次相同的按键信息,则认为上次按键释放,向上层软件发一个按键释放信息。如果收到中断后读FIFO中有与上次相同的按键信息,则继续重复“读空FIFO,等50 ms重启器件”的步骤。
实际上,只要检测到硬件中断就要连续重复“读空FIF0,等50 ms后重启器件”的步骤,直到器件重启后没有新的硬件中断为止。
(5)根据经验,在I2C总线工作不正常时尝试通过设置0x04寄存器的D0位使能或禁止总线超时功能。MAX7359南于增加了按键释放检测功能,即按下和释放按键都产成一个键值信息,所以要比MAX7349的软件处理更简单,关于MAX7359的编程建议如下:
①避免使用的按键 MAX7359修改按键信息FIFO(寄存器地址为:0x00)为空时的缺省值,由MAX7349的0x00改成MAX7359的0x3f。所以如果设计使用新的MAX7359,应尽量避免使用第63号键(Co17和Row7交叉处的键)和62号键(Co17和Row6交叉处的键),这是因为软件在处理这两个按键的键值时会复杂一些。
《智能手机全键盘控制器及其编程》相关文章
- › 智能手机通过蓝牙笔记本电脑没有任何反应
- › 智能手机无法连接笔记本红外端口 系统没有任何反应
- › 诺基亚Nokia系列智能手机的CPU配置信息
- › 诺基亚智能手机内置铃声的提取
- › 诺基亚智能手机短信备份的几种方法介绍
- › 如何修改诺基亚智能手机软件中的图片
- 在百度中搜索相关文章:智能手机全键盘控制器及其编程
- 在谷歌中搜索相关文章:智能手机全键盘控制器及其编程
- 在soso中搜索相关文章:智能手机全键盘控制器及其编程
- 在搜狗中搜索相关文章:智能手机全键盘控制器及其编程
编辑推荐
- · 自制教室照明节电控制器
- · 双色音乐彩灯的制作
- · 三相交流电机缺相保护器
- · 声光控节能灯的制作
- · 同线电话转呼及互通器电路
- · 超低频信号发生器的制作
- · 自制热转印电路板
- · 警笛发声生器电路
- · 一款节能电路
- · 利用太阳能充电的旅行充电器