4×4 矩阵式键盘电路的改进

合集下载

9、矩阵式键盘的设计

9、矩阵式键盘的设计

第二章矩阵式键盘的设计班级:光信科1203 组员:陈宏烨、王凯杰、龚馨1.设计要求设计一个4*4的矩阵式键盘,以P1.0~P1.3作为行线,以P1.4~P1.7作为列线。

要求:未按下键时,LED数码管显示“-”,按下键时,在数码管上显示相应的键值。

2.硬件电路图图2.1电路说明:在图2.1所示的电路中,数码管采用共阳极接法,当P1口输出低电平时,数码管发光。

P1.0~P1.3行线开始时为高电平,P1.4~P1.7列线开始时为低电平,当有键被按下时(每次只按下一个键),键所在的行线变成低电平。

3.软件流程设计思路:要想让数码管输出正确的数字,必须要做到三步:1.判断是否有键被按下;2.判断被按下键的位置;3.确定该位置所对应的数字并输出。

由于我们令低四位为高电平的行线,令高四位为低电平的列线,所以对应的十六进制数应该是0x0f。

当有键被按下时,被按下的键所在的行必定由高电平变成低电平,对应的十六进制数必定不是0x0f,从而确定是否有键被按下并且确定被按下键所在的行。

同理,我们可以重新定义一个函数,先令高四位为高电平,低四位为低电平,所对应的十六进制数为0xf0,接着当有键被按下时,这时对应的十六进制数必定不是0xf0,从而可以确定被按下键所在的列。

最后,定义一个函数,按每个键所处的不同位置,分别输出不同的数。

4.源代码#include <reg52.h>void delay(ms){ for(;ms>0;ms--);}void Hang1(){ char key;P1=0xf0;delay (100);key=P1;switch(key){case 0xe0:P0=0xc0;break;case 0xd0:P0=0xf9;break;case 0xb0:P0=0xa4;break;case 0x70:P0=0xb0;break;default :break;}}void Hang2(){ char key;P1=0xf0;delay (100);key=P1;switch(key){case 0xe0:P0=0x99;break;case 0xd0:P0=0x92;break;case 0xb0:P0=0x82;break;case 0x70:P0=0xf8;break;default :break; }}void Hang3(){ char key;P1=0xf0;delay (100);key=P1;switch(key){case 0xe0:P0=0x80;break;case 0xd0:P0=0x90;break;case 0xb0:P0=0x88;break;case 0x70:P0=0x83;break;default :break;}}void Hang4(){ char key;P1=0xf0;delay (100);key=P1;switch(key){case 0xe0:P0=0xc6;break;case 0xd0:P0=0xa1;break;case 0xb0:P0=0x86;break;case 0x70:P0=0x8e;break;default :break; }}void main(){ int key;P1=0x0f;while(P1==0x0f){P0=0x3f;};delay(100);while(P1==0x0f){P0=0x3f;};/*进行去抖操作*/key=P1;if( P1!=0x0f) /*判断是否有键被按下*/{switch(key) /*判断被按下的键在哪一行,并进行相应的操作*/ {case 0x0e:Hang1();break;case 0x0d:Hang2();break;case 0x0b:Hang3();break;case 0x07:Hang4();break;}}}5.出现的问题及解决方法在设计的时候,如果我们直接按照流程图的做法来写程序,这样的工作量会增大。

单片机c语言程序设计---矩阵式键盘实验报告

单片机c语言程序设计---矩阵式键盘实验报告

单片机c语言程序设计---矩阵式键盘实验报告课程名称:单片机c语言设计实验类型:设计型实验实验项目名称:矩阵式键盘实验一、实验目的和要求1.掌握矩阵式键盘结构2.掌握矩阵式键盘工作原理3.掌握矩阵式键盘的两种常用编程方法,即扫描法和反转法二、实验内容和原理实验1.矩阵式键盘实验功能:用数码管显示4*4矩阵式键盘的按键值,当K1按下后,数码管显示数字0,当K2按下后,显示为1,以此类推,当按下K16,显示F。

(1)硬件设计电路原理图如下仿真所需元器件(2)proteus仿真通过Keil编译后,利用protues软件进行仿真。

在protues ISIS 编译环境中绘制仿真电路图,将编译好的“xxx.hex”文件加入AT89C51。

启动仿真,观察仿真结果。

操作方完成矩阵式键盘实验。

具体包括绘制仿真电路图、编写c源程序(反转法和扫描法)、进行仿真并观察仿真结果,需要保存原理图截图,保存c源程序,总结观察的仿真结果。

完成思考题。

三、实验方法与实验步骤1.按照硬件设计在protues上按照所给硬件设计绘制电路图。

2.在keil上进行编译后生成“xxx.hex”文件。

3.编译好的“xxx.hex”文件加入AT89C51。

启动仿真,观察仿真结果。

四、实验结果与分析void Scan_line()//扫描行{Delay(10);//消抖switch ( P1 ){case 0x0e: i=1;break;case 0x0d: i=2;break;case 0x0b: i=3;break;case 0x07: i=4;break;default: i=0;//未按下break;}}void Scan_list()//扫描列{Delay(10);//消抖switch ( P1 ){case 0x70: j=1;break;case 0xb0: j=2;break;case 0xd0: j=3;break;case 0xe0: j=4;break;default: j=0;//未按下break;}}void Show_Key(){if( i != 0 && j != 0 ) P0=table[ ( i - 1 ) * 4 + j - 1 ];else P0=0xff;}五、讨论和心得。

矩阵键盘的原理及应用

矩阵键盘的原理及应用

矩阵键盘的原理及应用1. 矩阵键盘的原理矩阵键盘是一种常见的输入设备,由多个按键组成,可以同时检测多个按键的状态。

它采用了行列交叉的按键排列方式,通过按键的组合来实现多个输入选项。

其原理主要包括以下几个方面:1.1. 电路结构矩阵键盘的电路结构也称为“行列式键盘”,主要由行线(Row)和列线(Column)组成。

行线和列线通过导线互相交叉连接形成一个矩阵,每个按键都对应矩阵中的一个交叉点。

按键按下时,会导通对应的行线和列线,从而实现按键的状态检测。

1.2. 矩阵扫描矩阵键盘的工作原理是通过矩阵扫描来检测按键状态。

扫描过程由控制器完成,控制器通过逐行扫描的方式检测按键状态。

具体流程如下:1.所有行线置为高电平,所有列线设置为输入模式。

2.逐行将某一行设置为低电平,同时读取列线上的状态。

3.根据读取到的列线状态,确定按下的按键。

4.更新按键的状态,并记录下来。

5.重复以上步骤,直到扫描结束。

1.3. 按键编码矩阵键盘检测到按键状态后,需要进行按键编码,将按键状态转化为数字或字符。

常见的按键编码方式有两种:•行列编码:将矩阵键盘的行和列对应关系转化为一个唯一的值,通常使用二进制编码来表示。

•状态编码:通过按键的状态(按下或释放)来表示,通常使用两个状态位来编码。

2. 矩阵键盘的应用矩阵键盘由于其结构简单、使用方便等特点,在多个领域都得到了广泛的应用。

以下是矩阵键盘的一些常见应用场景:2.1. 电子产品矩阵键盘在电子产品中被广泛应用,比如手机、电视遥控器、计算器等。

它可以提供多个输入选项,方便用户进行操作。

矩阵键盘的结构紧凑,可与其他电路板集成,节省空间,适用于小型电子产品。

2.2. 工业控制矩阵键盘在工业控制领域也有重要应用。

比如工控终端设备、仪表仪器等,可以利用矩阵键盘实现数据输入和操作控制。

由于矩阵键盘可以同时检测多个按键的状态,因此非常适合于工业环境中需要同时输入多个信号的场合。

2.3. 家用电器矩阵键盘在家用电器中也有广泛应用,如洗衣机、微波炉、冰箱等。

4乘4矩阵键盘输入数码管显示四位数要点

4乘4矩阵键盘输入数码管显示四位数要点
平滑 , 减小振动 , 可在步进电机控 制脉冲的上升沿和下降沿采用细分的梯形 波 , 可以减小步进电机的步进角 , 提高电机运行的平稳性。 在步进电机停转时 , 为了防止因惯性而使电机轴产生顺滑 , 则需采用合适的锁定波形 , 产生锁定磁 力矩 , 锁定步进电机的转轴 , 使步进电机的转轴不能自由转动。 (5) 步进电机的速度控制
Proteus 软件功能的理解,学会用这个软件设计三相步进电机控制系统,将理论
知识与实践相联系,为以后在学习和工作的发展打下一个良好的基础
。然后,
通过该课程设计, 初步理解了利用计算机控制技术进行三相步进电机控制系统的
设计。
最后,我明白:知识不是孤立的,相互之间有联系的,我们要学会理解知识
点以及学科之间的融合渗透。 本次课程设计涉及到了计算机技术, 自动控制技术,
微机技术, 数字电子技术等众多知识, 因而我们需要把把各个学科之间的知识融
合起来,形成一个整体。认识到 Proteus这个软件的强大功能,为以后的学习和
工作打下基础 。
我相信未来是属于我们的, 随着科学技术的发展, 控制技术的应用将将越来
越广泛,发挥越来越重要的作用。
参考文献
[1] 阎石主编 . 数字电子技术 . [M] 北京:高等教育出版社, 2006 年 [2] 陈振官等编著 . 新颖高效声光报警器 . [M] 北京:国防工业出版社, 2005 年 [3] 王东峰等主编 .单片机 C 语言应用 100 例 . [M] 北京:电子工业出版社, 2009 年 [4] 胡耀辉等主编 .单片机系统开发实例经典 . [M] 北京:冶金工业出版社, 2006 年 [5] 李鸿主编 .单片机原理及应用 . [M] 湖南:湖南大学出版社, 2005 年 [6] 谭浩强主编 .C 语言程序设计 . [M] 北京:清华大学出版社, 2005 年

矩阵式键盘工作原理

矩阵式键盘工作原理

矩阵式键盘工作原理矩阵式键盘通常由多个按键组成一个矩阵结构。

每个按键都与矩阵的特定位置相对应,并且每个按键都有一个唯一的标识符。

矩阵式键盘通常由行和列构成,行与列之间通过导线相连。

矩阵式键盘的工作原理基于按键的位置,并且利用行与列之间的连线来检测按键是否被按下。

当按键未被按下时,矩阵式键盘的每个按键都将断开。

当按下一些按键时,按键的金属接点会触碰到与之相对应的导线,导致行与列之间形成电连接。

这导致通过电流流过,形成一个闭合电路。

这一电路可以被接收器感应到,并识别为一些按键被按下。

典型的矩阵式键盘电路由一个控制器和一个扫描矩阵组成。

控制器对行和列的导线进行扫描,确定按键是否被按下。

扫描矩阵是键盘上每个按键的布线结构,它允许控制器独立地访问每个按键。

控制器在扫描矩阵中的每个行导线上施加高电平信号,然后依次扫描每个列导线,以检测每一行上是否有按键被按下。

当控制器检测到一个按键被按下时,它将相应的行和列组合起来,以确定按下的按键的位置。

为了准确识别按键,矩阵式键盘电路通常采用消除键盘“反弹”的技术。

按键反弹是指按键被按下后,金属接点可能会在一段时间内反弹,导致多次电连接。

为了避免这种情况,电路通常会在检测到按键按下之后,延时一段时间再次检测。

矩阵式键盘的工作原理不仅适用于小型键盘,还适用于更大的键盘布局,如标准计算机键盘。

在这种情况下,矩阵式键盘可由多个矩阵组成,每个矩阵对应一个键盘的一部分。

整个键盘上的按键被编码为多个矩阵上的位置,并通过相应的扫描和检测进行识别。

总结起来,矩阵式键盘通过行和列之间的电连接来检测按键是否被按下。

控制器和扫描矩阵的结合使用,可以实现对键盘上多个按键的检测。

通过消除按键的反弹并进行适当的延时,矩阵式键盘可以提供准确和可靠的按键输入。

这使得它成为广泛应用于各种电子设备中的一种常见输入方式。

[整理]4x4键盘

[整理]4x4键盘

单片机实训教材单片机的应用键盘扫描程序FY:江西华忆电子工业中等学校键盘扫描程序设计一,实训教学目的1,了解键盘的组成及接线方法2,了解编码键盘和非编码键盘的组成3,学习非编码键盘的扫描方法步骤4,编写程序实现简单键盘设计和矩阵键盘的编程。

二,主要元件的介绍。

1,CPU AT89S51AT89S51是一款低功耗,高性能的8位微处理器,有4KBZ可在系统编程(ISP) Flash闪速存储器,1000次擦写周期,它与工业标准的80C51和80C52的指令集及输出PIN脚完全兼容。

128X8-bit片内RAM,32个可编程I/O脚,2个16-位定时/计数器,5个中断源,可编程全双工串行口,低功耗空闲模式和掉电模式。

3,键盘原理1)独立式键盘的接线原理独立式键盘是由若干个机械触点开关构成的,把它与单片机的I/O口县连接起来,通过读I/O口的电平状态,即可识别出相应的按键是否被按下,看下面的电路图:如果按键不被按下,其端口就为高电平,如果相应的按键被按下,则端口变为低电平。

在这种键盘的连接方法中,我们通常采用上拉电阻接法,即各按键开关一端接低电平,另一端接单片机I/O口线并通过上拉电阻与VCC相连,这是为了保证在按键断开时,各I/O口线有确定的高电平,如果端口内部已经有上拉电阻,则外电路的上拉电阻就可以省去,想想看,哪几个并行口内部有上拉电阻呢?通常我们用来做键盘的有触点式和非触点式两种,单片机中应用的一般是由机械触点构成的触点式微动开关,这种开关具有结构简单,使用可靠的优点,但当我们按下按键或释放按键的时候它有一个特点,就是会产生抖动,看上图的按键脉冲波形,这种抖动对于人来说是感觉不到的,但对单片机来说,则是完全可以感应到的,因为计算机处理的速度是在微秒级的,而机械抖动的时间至少是毫秒级,对计算机而言,这已是一个很“漫长”的过程了,按键区抖动原则和方法常用的有两种:硬件方法和软件方法。

硬件去抖动方法很多,这不在我们的讨论范围。

4-4矩阵键盘控制16个LED灯

4-4矩阵键盘控制16个LED灯

一、任务说明本次的任务是利用51单片机设计一个4*4矩阵键盘输入系统,用16个发光二级管对应16个不同的按键。

每按下一个按键对应的发光二极管就亮。

矩阵式键盘又称行列键盘,它是用N条I/O线作为行线,N条I/O线作为列线组成的键盘。

在行线和列线的每个交叉点上设置一个按键。

这样键盘上按键的个数就为N*N个。

这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率。

最常见的键盘布局如图1所示。

一般由16个按键组成,在单片机中正好可以用一个P口实现16个按键功能,这也是在单片机系统中最常用的形式,本设计就采用这个键盘模式。

图1 键盘布局利用单片机的并行口P1连接4×4矩阵键盘,并以单片机的P1.0-P1.3各管脚作输入线,以单片机的P1.4-P1.7各管脚作输出线;利用P2、P3口控制灯1-灯16,。

用Proteus绘制其电路原理图(附录一)。

此任务用到了AT89C51芯片,还用到了晶体振荡器、按钮开关、发光二级管以及一些电阻。

这次任务中采用C语言编写程序,在编译过程中设置成自动产生HEX文件,将此文件导入AT89C51中,即可实现相应的功能。

二、原理图绘制说明电路原理图的设计与绘制是整个电路设计的基础,设计一个电路原理图的工作包括:设置电路图图纸的大小,规划电路图的总体布局,在图纸上放置元器件并对元器件进行调整,进行布线和整体布局,最后保存并打印输出等几个步骤。

安装完Proteus后,运行ISIS 7 Professional,在原理图编辑窗口绘制电路图,在该界面下还有预览窗口和元件列表区,在左侧的工具箱中还有模型选择工具栏,方向工具栏及仿真按钮等工具。

其具体的使用步骤如下:1.运行该软件后,新建一个设计文件,设置图纸大小。

选择界面如图2所示。

图2 选择图纸大小界面2.接下来开始查找任务中所用到的元器件,查找界面如图3所示。

图3 元器件查找界面3.将查找的元器件放置到界面中,并进行相应的引脚连线,本次是采用标注的方式进行引脚连接,标注符号相同的表示引脚相连接,具体操作是先将引脚引出一小段导线,右击导线选择放置网络标号,标注标号界面如图4所示。

矩阵键盘电路

矩阵键盘电路
矩阵键盘电路
知识点目录
1
矩阵键盘电路结构与工作原理
矩阵键盘的编码
矩阵式键盘按键识别
键盘的工作方式
1.矩阵键盘电路结构与工作原理
2
矩阵式键盘又称为行列式键盘。用I/O接口线组成行和列结构,键位设置在行和 列的交叉点上。如图1所示,8个I/O口实现了16个按键。
图1 矩阵键盘电路结构
1.矩阵键盘电路结构与工作原理
3
工作原理:以第一组键盘为例。设置KeyOut1输出一个低电平,相当于KeyOut1接 地,电路相当于4个独立按键电路,此时KeyIn1-KeyIn4四个输入端为高电平;当 键盘K1按下时,由于电路导通,此时KeyIn1变为低电平。同理,哪个按键按下, 相对应的输入端为低电平,单片机通过读输入端的状态,判断是否有按键按下。 对应图1四组按键,当KeyOut1输出为低电平时,KeyOut2-KeyOut4输出必须为高 电平,才能避免相互间的干扰。
2.矩阵键盘的编码
பைடு நூலகம்
4
对于矩阵式键盘,按键的位置由行号 和列号唯一确定,因此可分别对行号 和列号进行二进制编码,然后将两值 合成一个字节,高4位是行号,低4位 是列号。
3.矩阵式键盘按键识别
5
扫描法:
1) 判断有无键按下。
2) 如果有键按下,识别是哪一个键按下,键盘扫描取得闭合键的行、列值。
3) 用计算法或查表法得到键值。
4) 判断闭合键是否释放,如没释放则继续等待。
5) 将闭合键键号保存,同时转去执行该闭合键的功能。
4.键盘的工作方式
6
(1)编程扫描方式
利用CPU在完成其它工作的空余时间,调用键盘扫描子程序来响应键盘输入 的要求。
(2)定时扫描工作方式
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

本文向大家推荐一个精简IO接口的4×4键盘电路,该键盘电路仅仅使用4条IO接口引线,
即可完成一般需要8位接口才能完成的功能。

在51单片机系统中,经常使用4×4键盘,一般情况下,都是使用一个8位的接口,外接
16个按键。
下图就是一个常规的4×4键盘电路图。

这种常规的矩阵键盘电路,相信大家都司空见惯了,好多人都会编写它的驱动程序。
图中使用了P0口的8个引脚(P0.0~P0.7),分别驱动键盘的行和列。按键的编号,在图
中分别标注了0~F。

检测按键的一般的思路是在四个列线,分别输出一个低电平,然后输入行线,逐行检测是否
存在低电平。
如果在某行有低电平出现,就说明该行、列的交叉点上的按键,被按下了。

其实,这些行、列引线,是“分时”工作的,当在某一列输出低电平的时候,其它的列,输出
的就是高电平。
如果利用这些输出高电平的列,进行输入,那么就可以极大的节省IO接口的引线数量。
基于这个道理,在上图中,下面的四个列驱动引线(P0.4~P0.7),就完全可以省去,只是
使用行驱动的引脚(P0.0~P0.3)来分时输出低电平即可。
电路见下图。
为了对引脚之间进行隔离,图中加上了四个二极管,确保只有在引脚输出低电平的时候,方
可把键盘中相应的列置为0。

针对这个电路,对按键的检测方法,和常规的4×4键盘检测思路是相同的,例如:
当在P0.0输出低电平,即最左边的列为0,这时检测P0.1、P0.2及P0.3是否为0,可以
判断最左边的三个按键是否按下;
当在P0.1输出低电平,即左边第二列为0,这时检测P0.0、P0.2及P0.3是否为0,可以
判断左边第二列的三个按键是否按下;
…………;
这个检测按键是否按下的思路非常简单,会编写常规4×4键盘驱动程序的网友,肯定都会
编写出来这种电路的驱动程序。

因为行和列使用了相同的IO引线,实际上,连接在同一个引线的行、列交叉点处的按键,
就已经失效了,那么就把把原来的按键,移动出来,把二极管画在交叉点,电路如下所示。
再把移出来四个按键连接在IO引线,另一端直接接地;把其它按键的编号,再整理一下,
就成了下图电路。

这个电路比常规的4×4键盘电路仅仅多用了四个二极管,但是却节省了四条IO接口引线,
这个意义是十分巨大的。
按照这个电路的设计思路,使用 n 条IO接口引线,就可以驱动 n×n 个按键。
那么用5个IO引脚,就可以驱动5×5的键盘,这就足以满足各种应用了。
网上也有一些其它类型的节省接口的键盘电路,但是都有不足,不是电路过于复杂,就是驱
动的按键个数较少,远远不及本电路简单实用。
做而论道已经按照这个电路制作了PCB板,外形和常规4×4键盘电路板相差无几。二极管
体积很小,布线并没有障碍。

实践证明,这是个完美的精简接口的4×4键盘电路,不仅可以用在51单片机系统,在使用
其它MCU组建的电路中同样适用。

针对这个电路,做而论道已经用汇编语言和C语言编写出了驱动程序,因为汇编语言可以使
用“位操作”指令,所以程序的比较简单;C语言的程序,就显得累赘一些。
程序暂时就不公布了,有兴趣的网友可以来讨论。

相关文档
最新文档