|
|
|
|
| |
头衔:版主
积分:242 帖子:58
精华:0 等级:学徒 注册时间:2009-08-13 最后登录:2010-02-06 |
|
| |
|
| 4*4矩阵键盘设计 |
| |
一 实验目的 1 学习使用4X4 扫描键盘的设计方法; 2 实践对比按键抖动对扫描键盘输出的影响 二 实验原理及说明 1、实验原理
 行信号(KEY)接到高电平,当没有键按时,行线与列线(KEYSCAN)是断开的,且行线都是高电平(1111),行信号作为FPGA的输入端、列信号作为FPGA的输出端。可以设置列线初始状态为低电平(0000)。信号为从上到下的顺序 当有键按下时,假如是K1按下,行信号与列信号接通,这时相应的行线(KEY0)变为低电平(01111),可以肯定第一行(K1,5,9,13)有键按下。 下面就要运用扫描的原理了: 1、因为只知道第一行有键按下,不知道是那个,可以设置列信号为0111,这时行信号变为(1111)(注:假设时钟周期很短,手还没松开,即键还在按下的状态) 2、设置列信号为1011,行信号也变成(1111) 3、设置列信号为1101,行信号也变成(1111) 4、设置列信号为1110,行信号也变成(0111),这时就可以肯定是第一个键按下。 关键的工作只要调整好时钟的频率就可以了。 2、实验说明 4X4扫描键盘只用8位数据线,可以提供16个不同的按键信号。这样做的好处是:1节省FPGA管脚资源;2
系统简单化减小电路规模;特别是在资源比较紧张,对成本要求严格的系统中这是一种非常流行的设计方法。在上面的实验中同学们已经见到了扫描数码显示器的实用性,4X4扫描键盘是输入设备,控制器来要稍微复杂一些。掌握这种程序设计方法在以后的学习工作中还是很有用武之地的。 因为一般的开关在大约20ms内信号不稳定,存在所谓的“开关抖动”,会产生多个脉冲影响电路正常工作。所以含开关输入的设计需要做防抖动处理,在本实验可以用20Hz的时钟采样实现防抖。 在设计程序时要注意时钟的的分配;要考虑一般用手把键按下的时间长度等问题。如果不去抖动可以把时钟加快,使按下键的时间内完成扫描处理。实际中操作与理论分析是有差别的,本实验的目的是要下载成功而不仅是仿真通过。 三 实验步骤 1、准备实验前查阅本实验相关的信息 2、构思程序设计方法 3、编写veilog代码同时做程序注释 4、编译仿真程序,与预想结果进行比较,修改程序 5、下载到实验平台上,观察结果 四 实验要求 1 输入verilog设计文件,编译调试通过 2 利用仿真手段进行测试 3 下载程序到实验板,由扫描数码管或led输出按下的键盘码 4 对比抖动的效果 五 扩展性学习 上文已说明开关防抖的必要性,在这种简单的实际应用中做不做防抖处理没有什么区别,但是用按键开关作发送串行数据的开关时就有可能出现问题。所以下文将介绍一种较实用的开关去抖方案,请同学们参考 键一旦被按下,deDitherCounter计数开始。计数5ms(将主时钟分频为小于1ms的时钟)时将键盘编码值(处理前)赋给code,计数到15ms时比较当前的键盘码与10ms前的码是否相同:如果相同,输出keyPressed信号,如果不同不做任何处理,keyPressed信号在1ms后(计数到15)重新拉低。而输出的键盘码code在第5毫秒时就变为有效值,直到下一次按键后的5ms才会重新变为新的值,从而保证在keyPressed信号输出有效时code信号是有效的。 六 管脚映射 原理图见实验原理 管脚映射 扩展信号名称 PIN Key0 Pin_44 Key1 Pin_43 Key2 Pin_45 Key3 Pin_48 Keyscan0 Pin_47 Keyscan1 Pin_64 Keyscan2 Pin_65 Keyscan3 Pin_50
参考源代码:keyboard.rar
[最后修改于2009-12-11 16:59]
附件:请先登陆查看附件!
|
| | |
| |
|
相关主题
|
|
|
|
|
|
| |
积分:1 帖子:1
精华:0 等级:学徒 注册时间:2009-12-30 最后登录:2010-08-06 |
|
| |
|
|
|
|
|
|
|
|
| |
积分:3 帖子:3
精华:0 等级:学徒 注册时间:2010-01-15 最后登录:2010-01-16 |
|
| |
|
|
|
|
|
|
|
|
| |
积分:6 帖子:7
精华:0 等级:学徒 注册时间:2010-01-19 最后登录:2011-10-29 |
|
| |
|
|
|
|
|
|
|
|
| |
积分:0 帖子:1
精华:0 等级:学徒 注册时间:2010-01-22 最后登录:2010-03-01 |
|
| |
|
| 回复:4*4矩阵键盘设计 |
| |
回复第 1 楼 mmx1010于2009-12-11 08:49:47发表: 一 实验目的 1 学习使用4X4 扫描键盘的设计方法; 2 实践对比按键抖动对扫描键盘输出的影响 二 实验原理及说明 1、实验原理
 行信号(KEY)接到高电平,当没有键按时,行线与列线(KEYSCAN)是断开的,且行线都是高电平(1111),行信号作为FPGA的输入端、列信号作为FPGA的输出端。可以设置列线初始状态为低电平(0000)。信号为从上到下的顺序 当有键按下时,假如是K1按下,行信号与列信号接通,这时相应的行线(KEY0)变为低电平(01111),可以肯定第一行(K1,5,9,13)有键按下。 下面就要运用扫描的原理了: 1、因为只知道第一行有键按下,不知道是那个,可以设置列信号为0111,这时行信号变为(1111)(注:假设时钟周期很短,手还没松开,即键还在按下的状态) 2、设置列信号为1011,行信号也变成(1111) 3、设置列信号为1101,行信号也变成(1111) 4、设置列信号为1110,行信号也变成(0111),这时就可以肯定是第一个键按下。 关键的工作只要调整好时钟的频率就可以了。 2、实验说明 4X4扫描键盘只用8位数据线,可以提供16个不同的按键信号。这样做的好处是:1节省FPGA管脚资源;2
系统简单化减小电路规模;特别是在资源比较紧张,对成本要求严格的系统中这是一种非常流行的设计方法。在上面的实验中同学们已经见到了扫描数码显示器的实用性,4X4扫描键盘是输入设备,控制器来要稍微复杂一些。掌握这种程序设计方法在以后的学习工作中还是很有用武之地的。 因为一般的开关在大约20ms内信号不稳定,存在所谓的“开关抖动”,会产生多个脉冲影响电路正常工作。所以含开关输入的设计需要做防抖动处理,在本实验可以用20Hz的时钟采样实现防抖。 在设计程序时要注意时钟的的分配;要考虑一般用手把键按下的时间长度等问题。如果不去抖动可以把时钟加快,使按下键的时间内完成扫描处理。实际中操作与理论分析是有差别的,本实验的目的是要下载成功而不仅是仿真通过。 三 实验步骤 1、准备实验前查阅本实验相关的信息 2、构思程序设计方法 3、编写veilog代码同时做程序注释 4、编译仿真程序,与预想结果进行比较,修改程序 5、下载到实验平台上,观察结果 四 实验要求 1 输入verilog设计文件,编译调试通过 2 利用仿真手段进行测试 3 下载程序到实验板,由扫描数码管或led输出按下的键盘码 4 对比抖动的效果 五 扩展性学习 上文已说明开关防抖的必要性,在这种简单的实际应用中做不做防抖处理没有什么区别,但是用按键开关作发送串行数据的开关时就有可能出现问题。所以下文将介绍一种较实用的开关去抖方案,请同学们参考 键一旦被按下,deDitherCounter计数开始。计数5ms(将主时钟分频为小于1ms的时钟)时将键盘编码值(处理前)赋给code,计数到15ms时比较当前的键盘码与10ms前的码是否相同:如果相同,输出keyPressed信号,如果不同不做任何处理,keyPressed信号在1ms后(计数到15)重新拉低。而输出的键盘码code在第5毫秒时就变为有效值,直到下一次按键后的5ms才会重新变为新的值,从而保证在keyPressed信号输出有效时code信号是有效的。 六 管脚映射 原理图见实验原理 管脚映射 扩展信号名称 PIN Key0 Pin_44 Key1 Pin_43 Key2 Pin_45 Key3 Pin_48 Keyscan0 Pin_47 Keyscan1 Pin_64 Keyscan2 Pin_65 Keyscan3 Pin_50
参考源代码:keyboard.rar
|
| | |
| |
|
|
|
|
|
|
|
| |
积分:9 帖子:7
精华:0 等级:学徒 注册时间:2010-01-20 最后登录:2010-02-28 |
|
| |
|
|
|
|
|
|
|
|
| |
积分:68 帖子:182
精华:0 等级:学徒 注册时间:2009-06-16 最后登录:2010-02-11 |
|
| |
|
| RE:4*4矩阵键盘设计 |
| |
4*4矩阵键盘设计 
|
| | |
| |
|
|
|
|
|
|
|
| |
积分:0 帖子:1
精华:0 等级:学徒 注册时间:2010-05-22 最后登录:2010-05-23 |
|
| |
|
| 回复:4*4矩阵键盘设计 |
| |

顶!!!!顶顶
|
| | |
| |
|
|
|
|
|
|
|
| |
积分:0 帖子:1
精华:0 等级:学徒 注册时间:2010-05-25 最后登录:2010-05-25 |
|
| |
|
|
|
|
|
|
|
|
| |
积分:1 帖子:1
精华:0 等级:学徒 注册时间:2010-05-27 最后登录:2010-05-28 |
|
| |
|
|
|
|
|
|
|
|
| |
积分:1 帖子:1
精华:0 等级:学徒 注册时间:2010-07-04 最后登录:2010-07-04 |
|
| |
|
| 回复:4*4矩阵键盘设计 |
| |
回复第 1 楼 mmx1010于2009-12-11 08:49:47发表: 一 实验目的 1 学习使用4X4 扫描键盘的设计方法; 2 实践对比按键抖动对扫描键盘输出的影响 二 实验原理及说明 1、实验原理
 行信号(KEY)接到高电平,当没有键按时,行线与列线(KEYSCAN)是断开的,且行线都是高电平(1111),行信号作为FPGA的输入端、列信号作为FPGA的输出端。可以设置列线初始状态为低电平(0000)。信号为从上到下的顺序 当有键按下时,假如是K1按下,行信号与列信号接通,这时相应的行线(KEY0)变为低电平(01111),可以肯定第一行(K1,5,9,13)有键按下。 下面就要运用扫描的原理了: 1、因为只知道第一行有键按下,不知道是那个,可以设置列信号为0111,这时行信号变为(1111)(注:假设时钟周期很短,手还没松开,即键还在按下的状态) 2、设置列信号为1011,行信号也变成(1111) 3、设置列信号为1101,行信号也变成(1111) 4、设置列信号为1110,行信号也变成(0111),这时就可以肯定是第一个键按下。 关键的工作只要调整好时钟的频率就可以了。 2、实验说明 4X4扫描键盘只用8位数据线,可以提供16个不同的按键信号。这样做的好处是:1节省FPGA管脚资源;2
系统简单化减小电路规模;特别是在资源比较紧张,对成本要求严格的系统中这是一种非常流行的设计方法。在上面的实验中同学们已经见到了扫描数码显示器的实用性,4X4扫描键盘是输入设备,控制器来要稍微复杂一些。掌握这种程序设计方法在以后的学习工作中还是很有用武之地的。 因为一般的开关在大约20ms内信号不稳定,存在所谓的“开关抖动”,会产生多个脉冲影响电路正常工作。所以含开关输入的设计需要做防抖动处理,在本实验可以用20Hz的时钟采样实现防抖。 在设计程序时要注意时钟的的分配;要考虑一般用手把键按下的时间长度等问题。如果不去抖动可以把时钟加快,使按下键的时间内完成扫描处理。实际中操作与理论分析是有差别的,本实验的目的是要下载成功而不仅是仿真通过。 三 实验步骤 1、准备实验前查阅本实验相关的信息 2、构思程序设计方法 3、编写veilog代码同时做程序注释 4、编译仿真程序,与预想结果进行比较,修改程序 5、下载到实验平台上,观察结果 四 实验要求 1 输入verilog设计文件,编译调试通过 2 利用仿真手段进行测试 3 下载程序到实验板,由扫描数码管或led输出按下的键盘码 4 对比抖动的效果 五 扩展性学习 上文已说明开关防抖的必要性,在这种简单的实际应用中做不做防抖处理没有什么区别,但是用按键开关作发送串行数据的开关时就有可能出现问题。所以下文将介绍一种较实用的开关去抖方案,请同学们参考 键一旦被按下,deDitherCounter计数开始。计数5ms(将主时钟分频为小于1ms的时钟)时将键盘编码值(处理前)赋给code,计数到15ms时比较当前的键盘码与10ms前的码是否相同:如果相同,输出keyPressed信号,如果不同不做任何处理,keyPressed信号在1ms后(计数到15)重新拉低。而输出的键盘码code在第5毫秒时就变为有效值,直到下一次按键后的5ms才会重新变为新的值,从而保证在keyPressed信号输出有效时code信号是有效的。 六 管脚映射 原理图见实验原理 管脚映射 扩展信号名称 PIN Key0 Pin_44 Key1 Pin_43 Key2 Pin_45 Key3 Pin_48 Keyscan0 Pin_47 Keyscan1 Pin_64 Keyscan2 Pin_65 Keyscan3 Pin_50
参考源代码:keyboard.rar
|
| | |
| |
|
|
|
|
|
|
|
| |
积分:40 帖子:25
精华:0 等级:学徒 注册时间:2010-08-02 最后登录:2010-12-07 |
|
| |
|
|
|
|
|
|
|
|
| |
积分:2 帖子:36
精华:0 等级:学徒 注册时间:2010-11-08 最后登录:2011-07-07 |
|
| |
|
|
|
|
|
|
|
|
| |
积分:1 帖子:1
精华:0 等级:学徒 注册时间:2011-02-13 最后登录:2011-02-24 |
|
| |
|
|
|
|
|
|
|
|
| |
积分:1 帖子:1
精华:0 等级:学徒 注册时间:2010-09-14 最后登录:2011-04-16 |
|
| |
|
|
|
|
|
|
|
|
| |
积分:19 帖子:14
精华:0 等级:学徒 注册时间:2011-05-10 最后登录:2011-05-16 |
|
| |
|
|
|
|
|
|
|
|
| |
积分:195 帖子:81
精华:0 等级:学徒 注册时间:2010-04-12 最后登录:2012-01-31 |
|
| |
|
|
|
|
|
|
|
|
| |
积分:1 帖子:1
精华:0 等级:学徒 注册时间:2011-05-29 最后登录:2011-05-29 |
|
| |
|
|
|
|
|
|
|
|
| |
积分:2 帖子:2
精华:0 等级:学徒 注册时间:2011-02-23 最后登录:2011-06-14 |
|
| |
|
| RE:4*4矩阵键盘设计 |
| |
 看看 非常期待
|
| | |
| |
|
|
|
|
|
|
|
| |
积分:4 帖子:5
精华:0 等级:学徒 注册时间:2011-03-14 最后登录:2011-09-25 |
|
| |
|
| RE:4*4矩阵键盘设计 |
| |
谢谢,回复看看,研究研究~ 
|
| | |
| |
|
|
|
|
|
|
|
| |
积分:1 帖子:1
精华:0 等级:学徒 注册时间:2011-06-16 最后登录:2011-06-16 |
|
| |
|
|
|
|
|
|
|
|
| |
积分:1 帖子:1
精华:0 等级:学徒 注册时间:2011-06-18 最后登录:2011-06-18 |
|
| |
|
|
|
|
|
|
|
|
| |
积分:1 帖子:1
精华:0 等级:学徒 注册时间:2011-07-17 最后登录:2011-07-17 |
|
| |
|
|
|
|
|
|
|
|
| |
积分:0 帖子:14
精华:0 等级:学徒 注册时间:2011-07-01 最后登录:2011-08-31 |
|
| |
|
|
|
|
|
|
|
|
| |
积分:1 帖子:1
精华:0 等级:学徒 注册时间:2011-08-23 最后登录:2011-08-23 |
|
| |
|
| 回复:4*4矩阵键盘设计 |
| |
xie xie fen xiang
|
| | |
| |
|
|
|