矩阵键盘
- 格式:doc
- 大小:14.00 KB
- 文档页数:2
FPGA学习心得——矩阵键盘1、行列式键盘概述为了减少键盘与单片机接口时所占用I/O口线的数目,在键数较多时,通常都将键盘排列成行列矩阵式,行列式键盘又叫矩阵式键盘。
用带有I/O口的线组成行列结构,按键设置在行列的交点上。
例如用2*2的行列结构可以构成4个键的键盘,4*4的行列结构可以构成有16个键的键盘。
这样,当按键数量平方增长时,I/O口线只是线性增长,这样就可以节省I/O口线。
2、行列式键盘原理教研室已有薄膜矩阵键盘,其实物图如图所示。
其电路原理图如下图所示。
由行列式键盘的原理可以知道,要正确地完成按键输入工作必须有按键扫描电路产生keydrv3~keydrv0信号。
同时还必须有按键译码电路从keydrv3~keydrv0信号和keyin3~keyin0信号中译码出按键的键值。
此外,一般还需要一个按键发生标志信号用于和其他模块接口,通知其它模块键盘上有按键动作发生,并可以从键盘模块中读取按键键值。
由于各个模块需要的时钟频率是不一样的,因此时钟产生模块就是用于产生各个模块需要的时钟信号。
因此得到键盘接口电路的结构如图2所示。
图2 键盘接口电路结构图行列式键盘电路的FPGA实现主要解决三个问题,一是如何检测是否有按键按下并防止采集到干扰信号;二是在按键闭合时如何防止抖动;三是如何判断为哪一个按键位动作,并对其进行译码。
因此,为了解决这些问题,程序中使用不同的进程分别实现键盘扫描信号的产生、键盘去抖以及键盘的译码。
3、源程序[plain]view plaincopy1.----------------------------------------------------------------------------------2.-- Company:3.-- Engineer:4.--5.-- Create Date: 08:46:57 07/31/20126.-- Design Name:7.-- Module Name: MatrixKeyboard - Behavioral8.-- Project Name:9.-- Target Devices:10.-- Tool versions:11.-- Description:12.--13.-- Dependencies:14.--15.-- Revision:16.-- Revision 0.01 - File Created17.-- Additional Comments:18.--19.----------------------------------------------------------------------------------20.library IEEE;e IEEE.STD_LOGIC_1164.ALL;e IEEE.STD_LOGIC_ARITH.ALL;e IEEE.STD_LOGIC_UNSIGNED.ALL;24.25.---- Uncomment the following library declaration if instantiating26.---- any Xilinx primitives in this code.27.--library UNISIM;28.--use UNISIM.VComponents.all;29.30.entity MatrixKeyboard is31. Port ( Clk : in STD_LOGIC;32. Reset : in STD_LOGIC;33. KeyIn : in STD_LOGIC_VECTOR (3 downto 0);34. KeyScan : out STD_LOGIC_VECTOR (3 downto 0);35. LED : out STD_LOGIC_VECTOR (3 downto 0)36. );37.end MatrixKeyboard;38.39.architecture Behavioral of MatrixKeyboard is40.41.Signal Clk_scan : STD_LOGIC := '0';42.Signal Clk_5ms : STD_LOGIC := '0';43.Signal Clk_2ms : STD_LOGIC := '0';44.Signal Key_Scan : STD_LOGIC_VECTOR(3 downto 0);45.Signal Key_Decode : STD_LOGIC_VECTOR(7 downto 0);46.47.Type State_Key is(st_key1,st_key2,st_key3,st_key4);48.Signal Current_Key : State_Key := st_key1;49.50.Type State_Scan is(st_scan1,st_scan2,st_scan3,st_scan4);51.Signal Current_Scan : State_Scan := st_scan1;52.53.begin54.55. Proc_Clk_5ms : process(Clk)56. variable cnt_clk : integer range 0 to 250000 := 0;57. begin58. if(rising_edge(Clk)) then59. if(cnt_clk < 125000) then60. cnt_clk := cnt_clk + 1;61. Clk_scan <= '0';62. elsif(cnt_clk < 249999) then63. cnt_clk := cnt_clk + 1;64. Clk_scan <= '1';65. else66. cnt_clk := 0;67. end if;68. Clk_5ms <= Clk_scan;69. end if;70. end process Proc_Clk_5ms;71.72. Proc_Clk_2ms : process(Clk)73. variable cnt_clk : integer range 0 to 100000 := 0;74. begin75. if(rising_edge(Clk)) then76. if(cnt_clk < 50000) then77. cnt_clk := cnt_clk + 1;78. Clk_2ms <= '0';79. elsif(cnt_clk < 99999) then80. cnt_clk := cnt_clk + 1;81. Clk_2ms <= '1';82. else83. cnt_clk := 0;84. end if;85. end if;86. end process Proc_Clk_2ms;87.88.89. Proc_Scan:process(Clk_5ms)90. begin91. if(rising_edge(Clk_5ms)) then92. case Current_Scan is93. when st_scan1 =>94. Key_Scan <= "1110";95. Current_Scan <= st_scan2;96. when st_scan2 =>97. Key_Scan <= "1101";98. Current_Scan <= st_scan3;99. when st_scan3 =>100. Key_Scan <= "1011";101. Current_Scan <= st_scan4;102. when st_scan4 =>103. Key_Scan <= "0111";104. Current_Scan <= st_scan1;105. end case;106. end if;107.108. end process Proc_Scan;109.110. KeyScan <= Key_Scan;111. Key_Decode <= Key_Scan & Keyin;112.113. Proc_Keyboard:process(Clk_2ms,Reset)114. variable cnt_btn : integer range 0 to 50000 := 0;115. begin116. if(Reset = '1') then117. LED <= x"1";118. Current_Key <= st_key1;119. elsif(falling_edge(Clk_2ms)) then120. case Current_Key is121. when st_key1 => --Check whether any keys are p ressed122. if((Keyin and "1111") = "1111") then123. Current_Key <= st_key1;124. else125. Current_Key <= st_key2;126. end if;127. when st_key2 => --keys debouncing128. if((Keyin and "1111") = "1111") then129. Current_Key <= st_key1;130. else131. case Key_Decode is132. when "11101110" => LED <= "0001";133. when "11101101" => LED <= "0010";134. when "11101011" => LED <= "0011";135. when "11100111" => LED <= "1010";136. when "11011110" => LED <= "0100";137. when "11011101" => LED <= "0101";138. when "11011011" => LED <= "0110";139. when "11010111" => LED <= "1011";140. when "10111110" => LED <= "0111";141. when "10111101" => LED <= "1000";142. when "10111011" => LED <= "1001";143. when "10110111" => LED <= "1100";144. when "01111110" => LED <= "1110";145. when "01111101" => LED <= "0000";146. when "01111011" => LED <= "1111";147. when "01110111" => LED <= "1101";when others => null;148. end case;149. end if;150. Current_Key <= st_key3;151. when st_key3 => --Check whether the pressed keys a re released152. if((Keyin and "1111") /= "1111") then153. Current_Key <= st_key3;154. else155. Current_Key <= st_key4;156. end if;157. when st_key4 => --keys debouncing158. if((Keyin and "1111") /= "1111") then159. Current_Key <= st_key3;160. else161. LED <= x"0";162. Current_Key <= st_key1;163. end if;164. end case;165. end if;166. end process Proc_Keyboard;167.168.end Behavioral;169.薄膜键盘矩阵键盘4x4 ,单片机开发配件,机械手按键。
51单片机矩阵键盘设计
一、引言
AT89C51单片机矩阵键盘设计是嵌入式系统中一个重要的技术,它的
作用是以矩阵形式把外部按键与MCU相连,使得系统可以对外部的按键进
行检测和响应。
矩阵键盘设计在可编程嵌入式系统的设计中占有重要的地位,如智能交通系统、智能家居系统、航空电子系统等。
本文主要介绍了矩阵键盘设计中硬件电路的设计,包括按键、拉电阻、和矩阵编码等,同时给出系统的控制算法,使得系统可以实现有效的按键
检测和响应。
二、矩阵键盘概述
矩阵键盘是将多个按键排布成列行形式进行连接,一般来说,矩阵键
盘是由按键、拉电阻、矩阵编码器和控制器组成,按键是系统中重要的部件,其作用是将外部输入信号传递给控制器。
拉电阻起到的作用是防止按
键耦合,一般可以使用4.7KΩ拉电阻来防止按键耦合。
矩阵编码器用来
识别按键的状态,通常通过硬件把按键信号编码为数字信号,输入到处理
器或控制器。
控制器用来实现按键信号的检测,通过定义硬件定时器和软
件定时器,实现按键检测和处理。
1、硬件电路设计
应用AT89C51单片机矩阵键盘。
矩阵键盘的按键识别原理嘿,朋友们!今天咱来唠唠矩阵键盘的按键识别原理。
你看啊,这矩阵键盘就像是一个小小的战场,每个按键都是一名勇敢的战士呢!想象一下,这些按键整齐地排列在那里,等待着我们去“召唤”它们。
那它到底是怎么识别我们按的是哪个键呢?其实啊,就像是一场巧妙的游戏。
矩阵键盘是通过行列交叉的方式来工作的哦!比如说,它有好多行和列,就像一个方格网。
当我们按下一个键时,就相当于在这个方格网上点亮了一个特定的点。
这就好像是在一群人中,你一下子就找到了你要找的那个人一样神奇!每个按键都有它自己独特的位置,通过行和列的组合,矩阵键盘就能准确地知道是哪个键被按下啦。
那它怎么知道这个键被按下了呢?这就得说到它的检测机制啦。
它会不停地去“巡逻”这些行列,一旦发现有某个地方的信号有变化,嘿嘿,那就说明有键被按下去啦!这多有意思呀!而且哦,矩阵键盘还很聪明呢!它不会因为你不小心碰到了别的键就乱了套,它能准确地识别出你真正想要按的那个键。
这就好像一个经验丰富的侦探,能从一堆线索中找到真正的关键信息。
你说这矩阵键盘是不是很厉害?它就静静地待在那里,随时准备为我们服务,只要我们一伸手,它就能快速响应。
想想我们日常生活中的各种电子设备,好多都有矩阵键盘的身影呢!从小小的遥控器到复杂的电脑键盘,它们都在默默地工作着。
我们每天都在和它们打交道,却很少有人真正去了解它们背后的原理。
现在你知道了矩阵键盘的按键识别原理,是不是对这些常见的东西又多了一份好奇和敬意呢?下次再使用有矩阵键盘的设备时,你可以在心里默默感叹一下它的神奇哦!反正我是觉得挺有意思的,它就像是一个隐藏在电子世界里的小秘密,等着我们去发现和探索。
这不就是科技的魅力所在嘛!所以呀,别小看了这些看似普通的东西,它们背后可都有着不简单的原理和故事呢!原创不易,请尊重原创,谢谢!。
44 矩阵键盘工作原理
矩阵键盘是一种常见的输入设备,它可以用于电子设备、计算机等系统中。
它的工作原理是基于一个由多行多列的按键组成的矩阵。
矩阵键盘的按键布局类似于一个矩阵,其中按键的行和列被编号。
每个按键都有一个独特的行列地址。
按下一个按键时,矩阵键盘会通过行和列的触点之间的闭合来检测到按键的操作。
在工作时,矩阵键盘会周期性地轮询每个行和列的触点状态。
它会先闭合一个行(即将该行的输出信号置为高电平),然后依次检测每一列,看哪些按键的该列的触点闭合。
如果某个按键被按下,那么它所对应的行和列的触点就会闭合。
矩阵键盘通常采用编码器来记录按键信息。
在触发了某个按键后,编码器会将按键的行列地址转换成一个特定的二进制码。
这个二进制码可以被连接的设备(如计算机)所识别,从而得知哪个按键被按下了。
通过矩阵键盘的工作原理,我们可以实现对多个按键的监测和输入。
无论是在计算机上打字,还是在其他电子设备上进行输入,矩阵键盘都可以提供一个简单有效的解决方案。
行列式矩阵键盘工作原理行列式矩阵键盘是一种常见的电子键盘输入设备,它的工作原理涉及到行列式和矩阵的相关知识。
在本文中,我们将详细介绍行列式矩阵键盘的工作原理。
一、行列式和矩阵的基本概念行列式是线性代数中的一种重要概念,它是一个由数按照一定规则排列成的方阵,并且可以通过一系列的运算得到一个标量值。
矩阵是由数按照一定规则排列成的矩形阵列,是线性代数中的另一个重要概念。
二、行列式矩阵键盘的结构和原理行列式矩阵键盘通常由多个按键组成,每个按键都与一个特定的数字或字符相关联。
按下某个按键时,键盘会发送一个信号给计算机,告诉它哪个按键被按下。
这个信号是通过行列式矩阵键盘的结构和原理实现的。
行列式矩阵键盘的结构通常由多行多列的按键组成,每个按键都有一个独特的行列位置。
键盘的每一行和每一列都与计算机的输入接口相连。
当按下某个按键时,该按键所在的行和列会形成一个连通电路,通过这个电路可以识别出按下的是哪个按键。
行列式矩阵键盘的工作原理是基于行列式和矩阵的特性。
通过设置每个按键的行列位置,可以将键盘的输入映射为一个矩阵。
每个按键的行列位置可以用一个数字来表示,这个数字就是矩阵中的一个元素。
当按下某个按键时,可以通过行列位置得到该按键的数字或字符,并将其发送给计算机。
三、行列式矩阵键盘的扫描过程行列式矩阵键盘的扫描过程是指键盘不断地检测按键的状态,以便及时响应用户的输入。
这个过程通常包括两个步骤:行扫描和列扫描。
行扫描是指逐行检测按键的状态。
键盘会依次选取每一行,并检测该行中的所有按键是否被按下。
如果有按键被按下,键盘会记录下该按键的行列位置,并将其发送给计算机。
如果没有按键被按下,键盘会继续进行下一行的扫描。
列扫描是指逐列检测按键的状态。
键盘会依次选取每一列,并检测该列中的所有按键是否被按下。
如果有按键被按下,键盘会记录下该按键的行列位置,并将其发送给计算机。
如果没有按键被按下,键盘会继续进行下一列的扫描。
通过不断地进行行扫描和列扫描,行列式矩阵键盘可以实时监测按键的状态,并将按下的按键发送给计算机进行处理。
矩阵键盘使用说明矩阵键盘是一种特殊设计的键盘,其按键布局呈矩阵状,与传统的直排键盘有所不同。
矩阵键盘的按键分布更加紧凑,使得用户的手指在按键时的移动距离更小,可以提高打字的速度和准确性。
在本篇文章中,将介绍矩阵键盘的基本使用说明。
1.连接键盘:2.打字基本操作:和传统键盘相比,矩阵键盘的按键布局有所不同。
在开始打字之前,需要了解矩阵键盘的按键分布。
通常情况下,矩阵键盘的按键分布为4行,每行有10个按键,共40个按键。
每个按键上标有一个字母、数字或符号,用户通过按下相应的按键来输入字符。
由于按键的布局更加紧凑,用户在使用矩阵键盘时需要稍微调整手指的位置。
一般来说,用户应该将手指放置在键盘上,使得拇指位于空格键上,食指、中指和无名指分别位于第一行、第二行和第三行按键上,小指位于第四行按键上。
这样可以更加灵活地操作按键,并提高打字的速度和准确性。
当需要输入字符时,用户可以按下相应的按键,即可将字符输入到计算机中。
和传统键盘类似,用户可以通过长按Shift键来输入大写字母,并通过按下Caps Lock键来锁定大写输入模式。
此外,矩阵键盘通常还具备一些特殊功能按键,例如功能键、控制键等。
用户可以通过按下这些特殊按键来完成一些特定的操作,例如切换输入法、调节音量等。
3.高级功能:除了基本的打字功能外,矩阵键盘通常还具备一些高级功能。
例如,一些矩阵键盘支持多键触发功能,即用户可以同时按下多个按键,以实现一些复杂的操作。
例如,在游戏中,用户可以同时按下多个按键来触发组合技能。
此外,一些矩阵键盘还支持自定义按键功能。
用户可以通过软件设置,将一些按键映射为其他功能键或字符,以满足个性化的需求。
一些高端的矩阵键盘还具备背光功能。
用户可以通过调节键盘的背光亮度和颜色,以适应不同的环境需求。
4.清洁和维护:和其他键盘一样,矩阵键盘也需要定期进行清洁和维护。
由于矩阵键盘的按键间隙较小,容易积累灰尘和污垢。
用户可以使用软刷或气泡喷射器清洁键盘表面和按键间隙。
矩阵键盘实验报告矩阵键盘实验报告引言:矩阵键盘是一种常见的输入设备,广泛应用于电子产品中。
本实验旨在通过对矩阵键盘的研究和实验,深入了解其原理和工作机制,并探索其在实际应用中的潜力。
本文将从实验目的、实验步骤、实验结果和讨论四个方面进行论述。
实验目的:1. 理解矩阵键盘的工作原理;2. 掌握矩阵键盘的接线方法;3. 通过实验验证矩阵键盘的可靠性和稳定性。
实验步骤:1. 准备实验材料:矩阵键盘、电路板、导线等;2. 连接电路:将矩阵键盘与电路板通过导线连接;3. 编写程序:使用C语言编写程序,实现对矩阵键盘的扫描和按键检测;4. 烧录程序:将编写好的程序烧录到单片机中;5. 运行实验:按下矩阵键盘上的按键,观察电路板上的指示灯是否亮起。
实验结果:经过实验,我们成功地完成了矩阵键盘的接线和程序烧录,并进行了按键测试。
在按下不同的按键时,电路板上相应的指示灯亮起,证明了矩阵键盘的正常工作。
讨论:1. 矩阵键盘的工作原理:矩阵键盘是由行线和列线组成的,每个按键都与行线和列线相连。
当按下某个按键时,对应的行线和列线会短接,从而使得电流流过该按键,被检测到。
2. 矩阵键盘的接线方法:在本实验中,我们采用了常见的4行4列的接线方式,即将矩阵键盘的4个行线连接到单片机的4个输入引脚上,将4个列线连接到单片机的4个输出引脚上。
3. 矩阵键盘的可靠性和稳定性:通过实验,我们发现矩阵键盘具有较高的可靠性和稳定性。
即使在长时间使用和频繁按键的情况下,矩阵键盘仍能正常工作,并且按键的检测准确率较高。
4. 矩阵键盘的应用潜力:矩阵键盘广泛应用于各种电子产品中,如计算机、手机、电视遥控器等。
它具有结构简单、成本低廉、易于集成等优点,因此在电子产品设计中具有广阔的应用前景。
结论:通过本次实验,我们对矩阵键盘的工作原理和接线方法有了更深入的了解,并验证了其可靠性和稳定性。
矩阵键盘作为一种常见的输入设备,在电子产品设计中具有重要的地位和潜力。
矩阵键盘工作原理
矩阵键盘是一种广泛应用的按键组合,以矩阵的方式组织的,最常见的是4×4的按键矩阵,每个按键都有两个电路:一个是水平线,一个是垂直线。
当用户按下某个按键时,水平线和垂直线就会连接起来,电路就会触发,从而橙色电流流过矩阵键盘,其他按键就不会产生电流。
电路控制器可以检测到按键,并将按键的位置发送至电脑。
每个按键都有唯一的位置码,可以控制程序中输入的字符或功能。
矩阵键盘的工作原理可以归结为以下几个步骤:首先,将16个按键分别由水平线和垂直线连接形成一个矩阵。
其次,当按下某个按键时,水平线和垂直线就会连接,从而产生电流。
然后,电路控制器检测到按键,从而将该按键的位置发送给电脑。
最后,电脑根据按键的位置码,对输入的字符或功能进行控制。