矩阵式键盘接口通用IP核的设计与实现

合集下载

用6个IO口实现的5×5按键矩阵的原理图

用6个IO口实现的5×5按键矩阵的原理图

键盘键盘输入作为最常用的输入设备仍有其不可替代的作用。

下面首先对传统键盘作一个简单的介绍。

(1) 传统键盘的介绍键盘的结构通常有两种形式:线性键盘和矩阵键盘。

在不同的场合下,这两种键盘均得到了广泛的应用。

线性键盘由若干个独立的按键组成,每个按键的一端与微机的一个I/O口相连。

有多少个键就要有多少根连线与微机的I/O口相连,因此,只适用于按键少的场合。

矩阵键盘的按键按N行M列排列,每个按键占据行列的一个交点,需要的I /O口数目是N+M,容许的最大按键数是N×M。

显然,矩阵键盘可以减少与微机接口的连线数,简化结构,是一般微机常用的键盘结构。

根据矩阵键盘的识键和译键方法的不同,矩阵键盘又可以分为非编码键盘和编码键盘两种。

① 非编码键盘非编码键盘主要用软件的方法识键和译键。

根据扫描方法的不同,可以分为行扫描法、列扫描法和反转法3种。

② 编码键盘编码键盘主要用硬件来实现键的扫描和识别,通常使用8279专用接口芯片,在硬件上要求较高。

(2) 新型键盘的硬件和软件实现有些特殊情况下,在组成一个最小的单片机系统的过程中,由于通用的I/O 口有限,而又需要大量的按键输入,这就要求一种新的键盘结构,即用尽量少的I/O口实现尽可能多的键盘输入。

经过分析,实际上用N+1个I/O口,辅以适当的接口电路,是可以实现N×N个按键的。

现以6个端口实现5×5的按键为例来叙述。

如图1.3所示为用6个I/O口来实现25个按键的示意图。

图1.3 用6个I/O口实现的5×5按键矩阵的示意图具体的物理实现电路如图1.4所示。

由图1.3和图1.4可见,硬件部分分为两块:一块是普通键盘矩阵,另外一块是中断和接口电路,主要由相应数目的二极管和电阻组成。

具体对6个I/O口的情况,实现5×5的按键矩阵的中断和接口电路(图1.4)共需要10只二极管、12只电阻和1只三极管。

10只二极管按其在电路中所起的作用可分为两组:第一组包括D6、D7、D8、D9和D10,用于保证按键信息的单一流向;第二组包括D1、D2、D3、D4和D5,它们在电路上对NPN三极管的基极构成“或”的逻辑关系,对单片机进行初始化。

通用可编程接口IP核的设计与实现

通用可编程接口IP核的设计与实现

( S o C ) ,a g e n e r a l p r o g r a mm a b l e i n t e f r a c e I P c o r e i s d e s i g n e d b y u s i n g t h e p r o g r a m ma b l e s t a t e m a c h i n e a n d w a v e f o r m d e s c i r p t o r
读入 的数 据 验 证 了设 计 的 正确 性 。
关 键 词 :系 统 芯 片 ; 通 用 可 编程 接 口; I P核 ; 数 据 传 输
中 图 分 类 号 :T P 3 0 2 . 1 文 献 标 识 码 :A 文 章 编 号 :0 2 5 8 — 7 9 9 8 ( 2 0 1 5 ) 0 6 — 0 0 6 6 — 0 3
Hu Xi a o g a n g , Z h a o L i n n a , Yu Z h i g u o , We i J i n g h e , Gu Xi a o f e n g ( 1 . K e y L a b o r a t o r y o f A d v a n c e d P r o c e s s C o n t r o l f o r L i g h t I n d u s t y( r Mi n i s t r y o f E d u c a t i o n ) , D e p a r t m e n t o f E l e c t r o n i c E n g i n e e i r n g ,
Me as u r e me n t Con t r ol Te c h n ol o g y a n d I n s t r u m设计 与实现

4×4矩阵式键盘按键

4×4矩阵式键盘按键

一、实验目的1.掌握4×4矩阵式键盘程序识别原理2.掌握4×4矩阵式键盘按键的设计方法二、设计原理(1)如图14.2所示,用单片机的并行口P3连接4×4矩阵键盘,并以单片机的P3.0-P3.3各管脚作输入线,以单片机的P3.4-P3.7各管脚作输出线,在数码管上显示每个按键“0-F”的序号(2)键盘中对应按键的序号排列如图14.1所示三、参考电路740)this.width=740" border=undefined>图14.2 4×4矩阵式键盘识别电路原理图740)this.width=740" border=undefined>图14.1 4×4键盘0-F显示740)this.width=740" border=undefined>图14.3 4×4矩阵式键盘识别程序流程图四、电路硬件说明(1)在“单片机系统”区域中,把单片机的P3.0-P3.7端口通过8联拨动拨码开关JP3连接到“4×4行列式键盘”区域中的M1-M4,N1-N4端口上(2)在“单片机系统”区域中,把单片机的P0.0-P0.7端口连接到“静态数码显示模块”区域中的任何一个a-h端口上;要求:P0.0对应着a,P0.1对应着b,……,P0.7对应着h五、程序设计内容(1)4×4矩阵键盘识别处理(2)每个按键都有它的行值和列值,行值和列值的组合就是识别这个按键的编码矩阵的行线和列线分别通过两并行接口和CPU通信键盘的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么?还要消除按键在闭合或断开时的抖动两个并行口中,一个输出扫描码,使按键逐行动态接地;另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能六、程序流程图(如图14.3所示)七、汇编源程序;;;;;;;;;;定义单元;;;;;;;;;;COUNT EQU 30H;;;;;;;;;;入口地址;;;;;;;;;;ORG 0000HLJMP STARTORG 0003HRETIORG 000BHRETIORG 0013HRETIORG 001BHRETIORG 0023HRETIORG 002BHRETI;;;;;;;;;;主程序入口;;;;;;;;;;ORG 0100HSTART: LCALL CHUSHIHUA LCALL PANDUANLCALL XIANSHILJMP START ;;;;;;;;;;初始化程序;;;;;;;;;; CHUSHIHUA: MOV COUNT#00H RET;;;;;;;;;;判断哪个按键按下程序;;;;;;;;;; PANDUAN: MOV P3#0FFHCLR P3.4MOV A P3ANL A#0FHXRL A#0FHJZ SW1LCALL DELAY10MSJZ SW1MOV A P3ANL A#0FHCJNE A#0EH K1MOV COUNT#0LJMP DKK1: CJNE A#0DH K2MOV COUNT#4LJMP DKK2: CJNE A#0BH K3 MOV COUNT#8 LJMP DKK3: CJNE A#07H K4 MOV COUNT#12K4: NOPLJMP DKSW1: MOV P3#0FFH CLR P3.5MOV A P3ANL A#0FHXRL A#0FHJZ SW2LCALL DELAY10MS JZ SW2MOV A P3ANL A#0FHCJNE A#0EH K5 MOV COUNT#1 LJMP DKK5: CJNE A#0DH K6 MOV COUNT#5 LJMP DKK6: CJNE A#0BH K7 MOV COUNT#9 LJMP DKK7: CJNE A#07H K8 MOV COUNT#13K8: NOPLJMP DKSW2: MOV P3#0FFH CLR P3.6MOV A P3ANL A#0FHXRL A#0FHJZ SW3LCALL DELAY10MS JZ SW3MOV A P3ANL A#0FHCJNE A#0EH K9 MOV COUNT#2 LJMP DKK9: CJNE A#0DH KA MOV COUNT#6 LJMP DKKA: CJNE A#0BH KB MOV COUNT#10 LJMP DKKB: CJNE A#07H KC MOV COUNT#14 KC: NOPLJMP DKSW3: MOV P3#0FFH CLR P3.7MOV A P3ANL A#0FHXRL A#0FHJZ SW4LCALL DELAY10MSJZ SW4MOV A P3ANL A#0FHCJNE A#0EH KDMOV COUNT#3LJMP DKKD: CJNE A#0DH KE MOV COUNT#7LJMP DKKE: CJNE A#0BH KF MOV COUNT#11LJMP DKKF: CJNE A#07H KG MOV COUNT#15KG: NOPLJMP DKSW4: LJMP PANDUAN DK: RET ;;;;;;;;;;显示程序;;;;;;;;;; XIANSHI: MOV A COUNT MOV DPTR#TABLE MOVC A@A+DPTRMOV P0 ALCALL DELAYSK: MOV A P3ANL A#0FHXRL A#0FHJNZ SKRET ;;;;;;;;;;10ms延时程序;;;;;;;;;;DELAY10MS: MOV R6#20D1: MOV R7#248DJNZ R7$DJNZ R6D1RET;;;;;;;;;;200ms延时程序;;;;;;;;;;DELAY: MOV R5#20LOOP: LCALL DELAY10MSDJNZ R5LOOPRET;;;;;;;;;;共阴码表;;;;;;;;;;TABLE: DB 3FH06H5BH4FH66H6DH7DH07H DB 7FH6FH77H7CH39H5EH79H71H ;;;;;;;;;;结束标志;;;;;;;;;;END八、C语言源程序#include<AT89X51.H>unsigned char code table[]={0x3f0x660x7f0x390x060x6d0x6f0x5e0x5b0x7d0x770x790x4f0x070x7c0x71};void main(void){ unsigned char i j k key;while(1){ P3=0xff; //给P3口置1//P3_4=0; //给P3.4这条线送入0//i=P3;i=i&0x0f; //屏蔽低四位//if(i!=0x0f) //看是否有按键按下//{ for(j=50;j>0;j--) //延时//for(k=200;k>0;k--);if(i!=0x0f) //再次判断按键是否按下//{ switch(i) //看是和P3.4相连的四个按键中的哪个// { case 0x0e:key=0;break;case 0x0d:key=1;break;case 0x0b:key=2;break;case 0x07:key=3;break;}P0=table[key]; //送数到P0口显示//}}P3=0xff;P3_5=0; //读P3.5这条线//i=P3;i=i&0x0f; //屏蔽P3口的低四位//if(i!=0x0f) //读P3.5这条线上看是否有按键按下// { for(j=50;j>0;j--) //延时//for(k=200;k>0;k--);i=P3; //再看是否有按键真的按下//i=i&0x0f;if(i!=0x0f){ switch(i) //如果有显示相应的按键//{ case 0x0e:key=4;break;case 0x0d:key=5;break;case 0x0b:key=6;break;case 0x07:key=7;break;}P0=table[key]; //送入P0口显示//}}P3=0xff;P3_6=0; //读P3.6这条线上是否有按键按下// i=P3;i=i&0x0f;if(i!=0x0f){ for(j=50;j>0;j--)for(k=200;k>0;k--);i=P3;i=i&0x0f;if(i!=0x0f){ switch(i){ case 0x0e:key=8;break;key=9;break;case 0x0b:key=10;break;case 0x07:key=11;break;}P0=table[key];}}P3=0xff;P3_7=0; //读P3.7这条线上是否有按键按下// i=P3;i=i&0x0f;if(i!=0x0f){ for(j=50;j>0;j--)for(k=200;k>0;k--);i=P3;i=i&0x0f;if(i!=0x0f){ switch(i){ case 0x0e:key=12;break;case 0x0d:key=13;break;key=14;break;case 0x07:key=15;break;}P0=table[key];}}}}九、注意事项在硬件电路中,要把8联拨动拨码开关JP2拨下,把8联拨动拨码开关JP3拨上去。

矩阵键盘程序设计

矩阵键盘程序设计

矩阵键盘程序设计矩阵键盘程序设计概述矩阵键盘是一种常见的输入设备,常用于电子产品和计算机系统中。

它由多个按键组成,采用矩阵排列的方式连接到计算机系统中。

在本篇文章中,我们将讨论矩阵键盘的程序设计。

程序设计步骤步骤一:硬件连接,我们需要将矩阵键盘与计算机系统进行连接。

通常情况下,矩阵键盘的每一行和每一列都通过引脚与计算机系统中的GPIO(通用输入输出)引脚相连接。

步骤二:引脚控制接下来,我们需要使用程序控制GPIO引脚的输入输出状态。

对于矩阵键盘而言,我们通常会将一行的引脚设置为输出,将一列的引脚设置为输入,然后将输出引脚设置为高电平,输入引脚设置为上拉或下拉电阻。

步骤三:按键扫描在第二步的基础上,我们可以进行按键的扫描操作。

具体方法是,先将某一行的引脚设置为低电平,然后读取每一列的引脚状态。

如果某一列引脚为低电平,则表示该按键被按下。

步骤四:按键处理一旦我们检测到某个按键被按下,就可以执行相应的按键处理操作。

这可能包括记录按键信息、执行某些特定的功能或触发一些事件。

步骤五:循环扫描,我们需要将以上步骤放入一个循环中进行不断的扫描。

这样可以实现对整个矩阵键盘的实时检测和响应。

示例代码下面是一个简单的矩阵键盘程序设计的示例代码,使用C语言编写:cinclude <stdio.h>include <wiringPi.h>define ROWS 4define COLS 4int rows[ROWS] = { 2, 3, 4, 5 };int cols[COLS] = { 6, 7, 8, 9 };char keyMap[ROWS][COLS] = {{'1', '2', '3', 'A'},{'4', '5', '6', 'B'},{'7', '8', '9', 'C'},{'', '0', '', 'D'}};void init() {wiringPiSetup();for (int i = 0; i < ROWS; i++) {pinMode(rows[i], OUTPUT);digitalWrite(rows[i], HIGH);}for (int i = 0; i < COLS; i++) {pinMode(cols[i], INPUT);pullUpDnControl(cols[i], PUD_UP);}}char getKey() {while (1) {for (int i = 0; i < ROWS; i++) {digitalWrite(rows[i], LOW);for (int j = 0; j < COLS; j++) {if (digitalRead(cols[j]) == LOW) { return keyMap[i][j];}}digitalWrite(rows[i], HIGH);}}}int mn() {init();while (1) {char key = getKey(); printf(\。

实验七,矩阵式键盘输入实验汇总

实验七,矩阵式键盘输入实验汇总

实验七、矩阵式键盘输入实验一、实验目的1.学习矩列式键盘工作原理2.学习矩列式接口的电路设计和程序设计二、实验设备1.仿真器2.单片机最小系统实验教学模块3.矩阵式键盘实验模块4.动态扫描数码管显示模块三、实验要求要求实现:在矩阵式键盘中的某个键被按下时,8位LED动态显示器上最低位显示该键对应的字符,以前的字符向高位推进1位(即类似于计算器)。

注意,在进行该项实验之前,请先进行实验二“数码管动态扫描显示实验”。

四、实验原理矩阵式由行线和列线组成,按键位于行、列的交叉点上。

如图所示,一个4*4的行、列结构可以构成一个由16个按键的键盘。

很明显,在按键数量较多的场合,矩阵式键盘与独立式键盘相比,要节省很多的I/0口。

图7-1 矩阵式键盘结构4.1 矩阵式键盘工作原理按键设置在行、列交节点上,行、列分别连接到按键开关的两端。

行线通过上拉电阻接到VCC上。

平时无按键动作时,行线处于低电平状态,而当有按键按下时,列线电平为低,行线电平为高。

这一点是识别矩阵式键盘是否被按下的关键所在。

因此,各按键彼此将相互发生影响,所以必须将行、列线信号配合起来并作适当的处理,才能确定闭合键的位置。

4.2 按键识别方法下面以图7-2中4号键被按下为例,来说明此键是如何被识别出来的。

前已述及,键被按下时,与此键相连的行线电平将由与此键相连的列线电平决定,而行线电平在无键按下时处于高电平状态。

如果让所有列线处于高电平那么键按下与否不会引起行线电平的状态变化,始终是低电平,所以,让所有列线处于高电平是没法识别出按键的。

现在反过来,让所有列线处于低电平,很明显,按下的键所在行电平将也被置为高电平,根据此变化,便能判定该行一定有键被按下。

但我们还不能确定是这一行的哪个键被按下。

所以,为了进一步判定到底是哪—列的键被按下,可在某一时刻只让一条列线处于低电平,而其余所有列线处于高电平。

当第1列为低电平,其余各列为高电平时,因为是键4被按下,所以第1行仍处于低电平状态;当第2列为低电平,其余各列为高电平时,同样我们会发现第1行仍处于低电平状态,直到让第4列为低电平,其余各列为高电平时,因为是3号键被按下,所以第1行的高电平转换到第4列所处的高电平,据此,我们确信第1行第4列交叉点处的按键即3号键被按下。

矩阵式键盘设计实训报告

矩阵式键盘设计实训报告

一、实验目的1. 掌握矩阵式键盘的工作原理及电路设计方法。

2. 熟悉单片机与矩阵键盘的接口连接及编程技巧。

3. 提高动手实践能力,培养创新意识。

二、实验设备1. 单片机实验平台2. 矩阵键盘模块3. 数字多用表4. 编译器(如Keil51)5. 连接线三、实验原理矩阵键盘是一种常用的键盘设计方式,通过行列交叉点连接按键,从而实现多个按键共用较少的I/O端口。

矩阵键盘通常采用逐行扫描的方式检测按键状态,当检测到按键按下时,根据行列线的电平状态确定按键位置。

四、实验内容1. 矩阵键盘电路设计2. 矩阵键盘编程3. 矩阵键盘测试与调试五、实验步骤1. 电路设计(1)根据矩阵键盘的规格,确定行线和列线的数量。

(2)将行线和列线分别连接到单片机的I/O端口。

(3)在行线上串联电阻,防止按键抖动。

(4)连接电源和地线。

2. 编程(1)初始化单片机的I/O端口,将行线设置为输出,列线设置为输入。

(2)编写逐行扫描程序,逐行拉低行线,读取列线状态。

(3)根据行列线状态判断按键位置,并执行相应的操作。

3. 测试与调试(1)将编写好的程序下载到单片机中。

(2)连接矩阵键盘,观察按键是否正常工作。

(3)使用数字多用表检测行列线电平,确保电路连接正确。

(4)根据测试结果,对程序进行调试,直到矩阵键盘正常工作。

六、实验结果与分析1. 电路连接正确,按键工作正常。

2. 逐行扫描程序能够正确检测按键位置。

3. 按键操作能够触发相应的程序功能。

七、实验总结1. 通过本次实训,掌握了矩阵式键盘的工作原理及电路设计方法。

2. 熟悉了单片机与矩阵键盘的接口连接及编程技巧。

3. 提高了动手实践能力,培养了创新意识。

八、心得体会1. 在实验过程中,遇到了电路连接错误和程序调试困难等问题,通过查阅资料、请教老师和同学,最终成功解决了问题。

2. 本次实训让我深刻体会到理论知识与实际操作相结合的重要性,同时也认识到团队合作的重要性。

九、改进建议1. 在电路设计过程中,可以考虑增加去抖动电路,提高按键稳定性。

矩阵键盘编程

矩阵键盘编程

矩阵键盘编程键盘结构与类型独立式按键键盘由若干独立式按键组成。

独立式按键指每个按键作为一位占用一根I/O口线,直接用I/O口线构成单个按键电路。

独立式按键键盘可分为中断方式和查询方式两种。

独立式按键键盘优点是配置灵活,软件结构简单,操作速度快;缺点是按键多时I/O口浪费较大,故只在按键数目不多时采用。

行列式键盘(矩阵式键盘)用I/O口线组成行、列结构,按键设置在行列的交点上。

在按键较多时可节省I/O口线,如4×8行列结构可构成32个键的键盘。

行列式键盘键输入过程及接口软件应解决的任务键开关状态的可靠输入主要应解决抖动问题。

对按键编码以便识别对按键编码,使不同的按键有不同的键值或键号。

按键状态的输入方式有中断方式与查询方式两种。

编制键盘程序检测有无按键按下、去抖动、按键信息的逻辑处理、输出确定的键号等。

行列式键盘(矩阵式键盘)及接口程序设计行列式键盘的结构及键值赋值方法键盘行线的一端经上拉电阻接+5v电源,另一端接单片机的输入口(因而各输入口均被钳位于高电平)。

各列线的一端接单片机的输出口,另一端悬空。

按键设置在行列线的交点上,行、列线分别连接到按键的两端,按键按下则相应交点的行列线接通。

由图可见,矩阵式键盘接口的设计思想是把键盘既作为输入设备又作为输出设备对待的。

为了让CPU能识别是哪个按键被按下,必须给每个按键都分配一个键号(一般以十进制数表示)。

例如,4×4列矩阵式键盘共16个按键,键号依次按顺序排列为0~15。

对行列式键盘的每个按键,还有一个更重要的概念:键值或者说键码。

键值是一个可表征按键状态的8位数据,不同的按键有不同的键值。

按键后根据键值便能转到相应的键处理子程序,实现键盘的数据输入功能或命令处理功能。

同一个按键的键值和键号可以相同,也可以不相同,这主要取决于键盘的结构与采用的编码方法。

对行列式键盘来说,识别被按键的位置也就是找出被按键所在行和列的坐标值。

对于4行×4列行列式键盘,被按键所在行和列的坐标值为两个4位数据;而对于8行×8列行列式键盘,则为两个8位数据。

矩阵键盘及其电路设计

矩阵键盘及其电路设计
键(9键)。
3、矩阵式键盘的按键识别方法
• 逐行扫描法是一种逐行或逐列判断是否有键按下的方法。扫描法又称为逐行或列扫 描查询法,是一种最常用的按键识别方法。利用行扫描法判断矩阵键盘中被按下的 键时主要经过以下步骤。
• 第一步、识别有无键按下 • 让所有的行线均置为0电平,即P1.4-P1.7均输出低电平,读取列线P1.0-P1.3的值,
若P1.0-P1.3均为高电平,则表示无键按下,若不全为高电平,则表示有键按下 • 第二步、若有键被按下,识别出具体的按键 • 方法是采用逐行扫描的办法,即逐行置零电平,检查各列线的电平。如首先置第一
行为0,其余行为1,也就是让P1.4-P1.7输出0111,读取列线P1.0-P1.3的值,若不 全为1,则根据读取的列值即可判断出按键在第一行第几列上,从而识别出按键的 位置,若全为1,表示第一行无键按下,那么就再置第二行为0,其余行为1,即 P1.4-P1.7输出1011,再读取列值,根据列值结果,判断第二行上有无键被按下, 依此类推,识别出按键的键值。
1、独立式键盘及其接口
• 独立式键盘,是一种最简单的键盘构成 方法,它将每个按键的一端接到单片机 的I/O口,另一端接地,如图所示。
• 主要特点是各个键相互独立,每一个按 键对应一根输入口线。键盘软件结构简 单,但当键盘数目较多时,需占用大量 的输入口线,所以在使用上受到了很大 的限制。
2、矩阵式键盘及其接口
键盘及其电路设计
一、键盘的基本概念
• 键盘是一组开关的集合,是最常用的输入设备之一。组成键盘的按键 有触点式和非触点式两种。
• 触点式按键通常是机械触点开关,它利用了机械触点的通、断特性来 完成信息的输入。
• 非触点式按钮主要指利用电子器件的通、断来完成信息的输入,如工 作在开关状态的三极管等。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
76 3


自 动 化
及 仪

第 3 8卷
矩 阵 式 键 盘 接 口通 用 l 的设 计 与 实 现 P核
张俊 涛 张 弛
( 西 科 技 大学 电气 与 信 息 工程 学 院 , 安 70 2 ) 陕 西 10 1


设 计 并 实现 一 种 基 于 F G 的 矩 阵 式键 盘 接 口 I PA P核 。 与传 统 的 软 件 扫 描 编 程 方 式相 比 。 用 应
o 厂o o ,— _ _ . 】 。I D 。 X
图 1 4×4矩 阵形 键 盘 电路
收 稿 日期 : 0 1 ) .3 2 1 41 1
第 6期
张俊 涛 等 . 阵 式 键 盘 接 口通 用 I 矩 P核 的设 计 与 实 现
; … : … ad sa …c b r c n mah o— — … e— tt a
s 7
■●
S 6

S 5
■■
S 4

R ro 1 _
S 3 -
ro .
S 2 -
。 厂 。
Sl ・_■ I_ -
’ 厂o o r 1 _ 一 l ’ 0 — K
S0 -_■■・-
R r。 o r。 o l - _
厂 。
上千万 门 , 逐渐 成 为嵌入 式系统设 计 的核心 器件 。
将 电子 系统 的核心 模块 设 计 成 I P核 , 入 到 F . 嵌 P
G 中, 论是在 减小 系统体积 、 低系统 功耗 , A 无 降 还
是 提高 系统 可靠 性 方面 都具 有 明显 的优 势 , 同时
C3 S1 5

实 现 4x 4键盘 , 但按键 的读取需 要用 处理 器进 行
编程 扫描 , 相对 比较 复 杂。虽 然 有 键盘 电路 接 口
专用 芯片 , 使 用 这类 芯 片不 但 增 加 了 系统 的成 但
本, 而且体 积大不 利于 降低 系统 功耗 。 随着数 字集 成 电路 制 造 工艺 的发 展 , 编程 可 逻辑 器件 密 度越 来 越 高 , 片 F G 的规 模 可达 单 PA
键 盘 电路是 嵌 入式 系统 中基 本 的输入 设 备 , 有独立式 和矩 阵 式 两 大类 : 立 式键 盘 每个 键 占 独
还 能提高 开发效率 , 降低 产 品成 本 。
1 键盘 I P设 计 原 理
用一个 IO 口, / 因此 当按键 较 多 时 , O 口 占用 率 I / 高 ; 阵式键盘 资源 占用率低 , 8个 IO口即可 矩 用 /

c 0并 接收行 线 R 3~R O信 号检 测按 键位 置 , 置 设 键盘 状态标 志 ( K Y) 输 出四位 按键 编 码 K y nE 并 e—
C d [ .0 。 o e 3 . ]
Cl S1 3

C2 S1 4
■■
C0 S1 2

Vl
I P核检 测键 盘 具 有 可 靠性 高 、 时性 好 以及 简 化 系统 软 件 设 计 等 优 点 , 时不 增 加 系 统 成 本 、 积 和 功 实 同 体
耗。
关 键 词 矩 阵键 盘
接口 I P核
中 图分 类 号
T3 P
文 献标 识 码 A
文章 编号 1 0 —9 2 2 1 ) 60 3 -3 0 0 3 3 ( 0 1 0 -7 60
笔 者设计 基 于 F G P A的 4x 4矩 阵式 键盘 ( 图 1 接 口 I 。键盘接 口 I 的总体 设计 思想 基 ) P核 P核
于矩 阵式键 盘 扫描 原 理 。I P核 的 结 构 主 要 由分 频 器 ( i s n ee ) dv i — vn 和键 盘 扫描 状态 机 ( eb ad io k yor
77 3
ss l 【 一 y —c k 一
— _ Jc k l —o L _ 1 p ul
lv 一 k r}0 t3J . w.
l … f.
c10 I!! T T ) 。. 11 3J I P O UI U ny k . ’T ) el i 。I 0

高按 键检 测 的可靠 性 。 当系统 时 钟 为 5 MH 时 , 0 z 采用 偶分 频器 实 现 1 分 频 即 可得 到 2 ms的 时 0 0
s can

ma ห้องสมุดไป่ตู้ n c ie

s t) t e 两个 模块组 成 , 图 2所示 。 a 如
其 中分频 器 用 于 将 系统 时 钟 (y— l) 低 到键 ss e 降 k 盘I P核所 要 求 时 钟周 期 范 围 内 。键 盘扫 描 状态 机是 I P核设 计 的 核 心 , 键 按 下 时 在 键 盘 时钟 有 ( e — l) k y c 的作 用 下 , 环 输 出列 线 扫 描 码 C k 循 3一
由于 扫描状 态 机 对 时 钟 频 率 无 严 格 要 求 , 故
扫描 周期 设 计 为 2 m , 利 于 消 除按 键 抖 动 , 0 s有 提
定 义 了 N K Y— R S E 无 键 按 下 ) S A O— E P E S D( 、 C N—
C( O 扫描 第 0列 ) S A — 1 扫 描第 1列 ) S A 、C N C ( 、C N
R 3
o 厂o o 厂 -。 _ .’ 。
S1 1

o ro —’ .
S 8
--■■__
・ rC l1 _ ‘ 0 。 l ・ 1 0 K
Sl 0
■■
S9
-・■■_一
R ro 0- ro o 厂o o ro 2 - -’ _ _’ I _’ _ - -
一 一 j —n n1
“ …
t ’ ’
l ! i 一 U OU1 T I P
I i
—- ——

i n ———一
L J L — ・ VCC — —
is1 nt

图 2 键 盘接 口 I P核 设 计 框 图
2 分 频 器 设 计
相关文档
最新文档