单片机之键盘工作原理
单片机键盘原理及实现
优选文档§键盘接口技术一、键盘输入应解决的问题键盘是一组按键的会集,它是最常用的单片机输入设备.操作人员可以经过键盘输入数据或命令,实现简单的人机通讯。
键是一种常开型按钮开关,平时 ( 常态 ) 键的二个触点处于断开状态,按下键时它们才闭合(短路 ) 。
键盘分编码键盘和非编码键盘。
键盘上闭合键的鉴别由专用的硬件译码器实现并产生编号或键值的称为编码键盘,如: ASCⅡ码键盘、 BCD码键盘等;靠软件识其余称为非编码键盘。
在单片机组成的测控系统及智能化仪器中用得最多的是非编码键盘。
本节重视议论非编码键盘的原理、接口技术和程序设计。
键盘中每个按键都是—个常开关电路,以以下列图。
11.按键的确认: P1.7=1 无按键;P1.7=0 有按键;2.去抖动去抖动的方法:①硬件去抖动采用RS触发器:优点 :速度快,实时,缺点 :增加了硬件成本② 软件去抖动采用延时方法延时 5—10ms延时5—10ms P1.7=0确认P1.7=0P1.7=1( 去前沿抖动 )(去后沿抖动) 二、独立式键盘每个 I/O 口接一个按, S1S2⋯⋯⋯⋯⋯⋯⋯⋯⋯ .S8件:START: MOV P1 ,#0FFH ;置 P1 口高平JNB P1.0, RS1 ; S1 按下 , 程序去行 RS1JNB P1.1, RS2 ; S2 按下 , 程序去行 RS2JNB P1.2, RS3 ; S3 按下 , 程序去行 RS3JNB P1.3, RS4 ; S4 按下 , 程序去行 RS4JNB P1.4, RS5 ; S5 按下 , 程序去行 RS5JNB P1.5, RS6 ; S6 按下 , 程序去行 RS6JNB P1.6, RS7 ; S7 按下 , 程序去行 RS7JNB P1.7, RS8 ; S8 按下 , 程序去行 RS8AJMP START ; 描按⋯⋯⋯⋯ .RS1: AJMP PK1 ;RS2: AJMP PK2 ;RS3: AJMP PK3 ;RS4: AJMP PK4 ;RS5: AJMP PK5 ;RS6: AJMP PK6 ;RS7: AJMP PK7 ;RS8: AJMP PK8 ;AJMP START ; 无按下 , 描⋯⋯⋯⋯⋯⋯⋯PK1:⋯⋯⋯ ..;按S1功能理程序AJMP START;理S1按后,描PK2:⋯⋯⋯ ..;按S2功能理程序AJMP START⋯⋯⋯⋯⋯⋯⋯ .PK8:⋯⋯⋯⋯⋯⋯;按S8功能理程序AJMP START;理S8按后,描点 :, 程序简单 .缺点 :太浪源适用于按少、 I/O 口空的合。
单片机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;}五、讨论和心得。
单片机之键盘工作原理
利用循环变量i控制比对过程,两者相等时的i就是闭合键的键值。
for(i=0;i<16;i++) { if(key_val[i]==P3) return i; }
③判别闭合键的键值 其方法为:对键盘的行线进行扫描,P3口依次循环输 出0xfe、0xfd、0xfb和0xf7,相应地读P3口,若高4位 P3.7~P3.4全为“1”,则说明该行上没有键闭合;否则, 这一行上有键闭合,而且就是行线为0,列线为0的交叉键。 高4位和低四位合并即得到键模。
键模——按键压下时形成的电平编码值 键值——按键的人为定义值
当按键未按下压时,Px.n端口为高电平;按压按键后为 低电平。
按键在闭合和断开时,触点会存在抖动现象:
+5V
无抖动
理想波形 A 实际波形
按下抖动
B 稳定闭合
释放抖动
+5V
有抖动
图为键闭合时列线电压波形。键闭合和断开过程中存在抖 动期(呈现一串负脉冲),抖动时间长短与开关的机械特性有关, 一般为5~10 ms之间;稳定闭合期由操作员的按键动作所确定, 一般为数百毫秒到几秒。为了保证CPU对键的闭合做一次处理, 必须去除抖动,在键的稳定闭合或断开时,读键的状态。
①判断是否有键压下 写P3端口0xf0(行线电平=0,列线电平=1) 读P3端口:若P3 = 0xf0→无按键压下,不必后续判断; 若P3 ≠0xf0 →有键压下
②去除键的机械抖动 其方法为:当判别到键盘上有键闭合后,延时一段时 间再判别键盘的状态,若仍有键闭合,则认为键盘上有一 个键处于稳定的闭合状态,否则认为键抖动。
嵌入式实验三 键盘检测控制实验
2
ቤተ መጻሕፍቲ ባይዱ
嵌入式技术及应用 实验三
实验三 键盘实验
一、 实验目的 掌握单片机系统中矩阵键盘的编程控制方法,学会实时程序的调试技巧。
二、 实验原理 键盘是单片机应用中常用的输入设备,在应用系统中,操作人员可通过键盘
向系统输入指令、地址和数据,实现简单的人机通信。 键盘实际上是一组按键开关的集合,平时总是处于断开状态,当按下键时它
才闭合。按键在闭合和断开时,触点会存在抖动现象,抖动时间一般为 5-10ms, 如下图示:
键盘的处理主要涉及以下 3 个方面的内容: 按键的识别
所接 I/O 口线是高还是低电平(根据连接情况) 抖动的消除
硬件消抖 软件消抖(延时) 判断键值 独立式键盘 矩阵式键盘 实验板电路原理图如下:
1
嵌入式技术及应用 实验三
三、 实验内容 按下 16 个矩阵键盘依次在数码管上显示 1-16 的平方。如按下第一个显示 1,
第二个显示 4...
四、
实验步骤 1、 按实验内容要求在 µ Vision 中创建项目,编辑、调试、编译程序。 2、 将编译生成的目标码文件(后缀为.Hex)下载到实验板上。 3、 观察实验运行结果并记录。
基于单片机的键盘和LED数码管工作原理
基于单片机的键盘和LED数码管工作原理摘要:键盘和显示器是微机最常见的输入输出设备。
本文介绍键盘和LED显示器的基本工作原理,并给出在8051基础上的电路结构及C语言代码。
关键字:键盘,LED,单片机键盘是微型计算机系统中最基本、最常见的输入设备。
在各种工业过程的计算机控制和监视系统中,广泛应用发光二极管向用户提供提示。
由发光二极管可以构成7段/8段LED显示器,用于显示工作状态、参数数值和故障位置。
一.键盘的工作原理键盘实际上是一组按键开关的集合,平时按键开关总是处于断开状态,当按下键时它才闭合。
(一)键盘的基本介绍1.键盘的功能键盘接口必须具有4个基本功能:1.去抖动2.防串键3.识别被按键并产生与之对应的键码4.释放键而键码产生后如何去实现按键的特定功能,是操作系统和应用程序的任务2.键盘的分类根据按键开关的排列方式,键盘可分为线性键盘和矩阵键盘。
线性键盘:硬件连接和接口程序都很简单,只适用于按键少的场合,因为线性键盘有多少按键,就需要有多少根连线与微机输入端口相连。
矩阵键盘:将按键排成n行m列,每个按键占据行列的一个交点,需要的外连接线数目是m+n,而容许的最大按键数是m*n,显然可以减少微机接口的连线,是一般微机常采用的键盘结构。
3.键盘与单片机的连接方式矩阵键盘的连接方法有多种。
可直接连接于单片机的I/O口线;可利用扩展的并行I/O口连接;也可利用可编程的键盘、显示接口芯片(如8297)进行连接等等。
其中,利用扩展的并行I/O口连接方便灵活,在单片机应用系统中比较常用。
下图就是通过8255A芯片扩展的并行I/O口连接的矩阵键盘。
图 1 微处理器和键盘接口接线示意(二)键盘的工作过程被按键的识别和键码的产生是键盘接口要解决的主要问题,可以通过软硬结合的方法来解决。
通常识别被按键有两种方法:行扫描法和线反转法。
实际微型计算机系统中以行扫描法应用最广,其基本思想是:由程序对键盘进行逐行扫描,通过检测到的列状态来确定闭合键,需要输出端口、输入端口各1个。
单片机按键原理
单片机按键原理
单片机按键原理是利用按键的机械接触来完成开关动作。
当按下按键时,按键的触点会接通按键两端的电路,形成通路,从而使电流得以流动。
与此同时,可以通过单片机的IO口进行
监测,通过读取IO口的电平状态可以判断按键是否被按下。
在单片机按键电路中,通常需要加入上拉电阻或下拉电阻来确保按键在未被按下时具有一个确定的电平状态。
当按键未被按下时,上拉电阻或下拉电阻会将按键上或下的电平拉高或拉低,并且可以减小电路中的干扰。
当按键被按下时,IO口所连接的引脚的电平状态会发生改变,单片机可以通过检测到引脚电平状态的变化来判断按键被按下的动作。
为了避免按键的抖动问题(由于机械接触而导致的短时间内多次的接通和断开),可以在软件中增加延时或采用其他滤波方法来解决。
通过单片机按键原理,可以实现诸如控制、输入、菜单选择等功能。
在工程实践中,常常需要考虑到按键的稳定性、响应速度、布局等因素,以提高整个系统的可靠性和用户体验。
单片机矩阵键盘
汇报人: 202X-01-04
contents
目录
• 单片机矩阵键盘概述 • 单片机矩阵键盘硬件设计 • 单片机矩阵键盘软件编程 • 单片机矩阵键盘调试与测试 • 单片机矩阵键盘优化与扩展
01 单片机矩阵键盘 概述
定义与特点
定义
单片机矩阵键盘是一种由行线和 列线组成的键盘,通过按键的行 和列交叉点来识别按键。
用于显示输入的信息或状态, 如数码管、液晶显示屏等。
电源模块
为整个系统提供稳定的电源, 保证系统的正常工作。
电路连接
01
矩阵键盘的行线和列线分别连接到单片机的输入/输出端口,通 过软件扫描方式检测按键状态。
02
单片机控制模块与显示模块连接,将需要显示的信息传输给显
示模块。
电源模块为整个系统提供稳定的电源,保证系统的正常工作。
在通讯设备领域,单片机矩阵键盘可以用 于手机、电话等设备的操作面板,实现拨 号、挂断等功能。
பைடு நூலகம்
02 单片机矩阵键盘 硬件设计
硬件组成
01
02
03
04
矩阵键盘模块
由行线和列线组成的键盘矩阵 ,按键被安排在行线和列线的
交叉点上。
单片机控制模块
用于接收和处理来自矩阵键盘 的信号,控制整个系统的运行
。
显示模块
软件编程
编写单片机程序,用于扫描矩阵键盘并识 别按键按下事件。
测试方法
按键响应时间测试
测试从按键按下到单片机响应 的时间,确保在合理范围内。
按键防抖测试
测试按键防抖功能是否正常, 即在按键按下和释放时是否能 够正确识别。
多键同时按下测试
测试在多个按键同时按下时, 单片机是否能够正确识别并处 理。
键盘电路
键盘电路在单片机应用系统中,除了复位按键外,可能还需要其他按键,如键盘按键,以便控制系统的运行状态或向系统输入运行参数。
键盘电路一般由键盘接口电路、按键(由控制系统运行状态的功能键和向系统输入数据的数字键组合)以及键盘扫描程序等部分组成。
1、按键结构及其电压波形在单片机控制系统中广泛使用的机械键盘的工作原理是:按下键帽时,按键内的复位弹簧被压缩,动片触点与静片触点相连,按键两个引脚连通,接触电阻大小与按键触点面积及材料有关,一般在数十欧姆以下;松手后,复位弹簧将动片弹开,使动片触点与静片触点脱离接触,两引脚返回断开状态。
可见,机械键盘或按扭的基本工作原理就是利用动片触点和静片触点的接触和断开来实现键盘或按钮两引脚的通、断。
在如图所示的键盘电路中,按键没有被按下时,P1口内部上拉电阻将P1.3-P1.0引脚置为高电平,而当S3-S0之一被按下时,相应按键两引脚连通,P1口对应引脚接地。
在理想状态下,按键引脚电压变化如图6-29(a)所示。
但实际上,在按键被按下或释放的瞬间,由于机械触点弹跳现象,实际按键电压波形如图6-29(b)所示,即机械按键在按下和释放瞬间存在抖动现象。
抖动时间的长短与按键的机械特性有关,一般在5~10ms之间,而按键稳定闭合期的长短与按键时间有关,从数百毫秒到数秒不等。
为了保证按键由按下到松开之间仅视为一次或数次输入(对于具有重复输入功能的按键),必须在按键或软件上采取去抖动措施,避免一次按键输入一串数码。
硬件上,可利用单稳态电路或RS触发器消除按键抖动现象,但在单片机应用系统中最常采用的方法是利用软件延迟方式消除按键抖动问题,这样可以不增加硬件成本。
因此,在单片机系统中按键识别过程是:通过随机扫描、定时中断扫描或中断监控方式发现按键被按下后,延时10~20ms(因为机械按键由按下到稳定闭合的时间为5~10ms)再去判断按键是否处于按下状态,并确定是哪个按键被按下。
对于每按一次仅视为一次输入的按键设定来说,在按键稳定闭合后对按键进行扫描,读出按键的编码(或称为键号),执行相应操作;对于具有重复输入功能的按键设定来说,在按键稳定闭合期内,每个特定时间,如250ms或500ms 对按键进行检测,当发现按键仍处于按下状态时,就输入该键,直到按键被释放。
单片机原理及接口技术第5章 IO口应用-显示与开关键盘输入
图5-1
发光二极管与单片机并行口的连接
5
如果端口引脚为低电平,能使灌电流Id从单片机的外部流入内部,则将
大大增加流过的灌电流值,如图5-1(b)所示。所以,AT89S51单片机任 何一个端口要想获得较大的驱动能力,要采用低电平输出。 如果一定要高电平驱动,可在单片机与发光二极管之间加驱动电路,如 74LS04、74LS244等。 5.1.2 单片机I/O端口控制发光二极管的编程 发光二极管与单片机的I/O端口的连接,如图5-1(b)所示。如要点亮 某发光二极管,只需该I/O端口位写入“0”即可。下面通过一个例子介绍如
21
图5-6 4位LED静态显示的示意图
示字符。这样在同一时间,每一位显示的字符可以各不相同。但是,静态
显示方式占用I/O口线较多。 对于图5-6所示电路,要占用4个8位I/O口(或锁存器)。如果数码管 数目增多,则还需要增加I/O口的数目。在实际的系统设计中,如果显示位 数较少,可采用静态显示方式。但显示位数较多时,为了降低成本,一般 采用动态显示方式。 2. 动态扫描显示方式 显示位数较多时,静态显示所占用的I/O口多,为节省I/O口与驱动电路
单片机控制的8位I/O口锁存器输出相连。如果送往各个LED数码管所显示字 符的段码一经确定,则相应I/O口锁存器锁存的段码输出将维持不变,直到
送入下一个显示字符的段码。因此,静态显示方式的显示无闪烁,亮度较
高,软件控制比较容易。 图5-6所示为4位LED数码管静态显示电路,各个数码管可独立显示,
只要向控制各位I/O口锁存器写入相应的显示段码,该位就能保持相应的显
闭合时,P3.0引脚为低电平。单片机对开关状态的检测是由程序检测
10
图5-3
开关、LED发光二极管与P1口的连接
单片机8x8矩阵键盘原理说明
单片机8x8矩阵键盘原理说明
单片机8x8矩阵键盘原理说明
基于单片机接矩阵键盘原理单片机与矩阵键盘连接如下图:
此图用P1口P1.0---P1.3接4行P1.4--P1.7接4列
矩阵键盘工作原理:由于按键没有接地,4行4列正好占用8个I/O如果4行我们送P3.0到P3.3送入0111然后去读取4列的值,如果P3.0的按键按下那么P3.4---P3.7的值等于0111,假如是第2个键按下的话那么读回来的值是1011,如果第3个键按下去读回来的值是1101,如果第4个键按下去读回来的值是1110,如果没有键按下去读回来就是1111。
所以我们就根据读回来的值来判断按下去的是那个键。
当然这是对P3.0这一行,因为矩阵键盘是扫描的,所以下次把P3.0给1P3.1给0对第2行,陆续的第3行第4行,0111101111011110而每次都去从新扫描一遍列值列有4个值,以确定是那个键按下。
无论何时任何一个时间有一个按键被按下就跳出循环。
当然不可能有2个键刚好一起按下你的手没有这么好的力度,就算有2个键一起按键,程序也有先后检测的顺序,只能检测一个后面的检测不到。
P3=0XFE;//第一行给0
temp;定义个变量
temp=P3;读回来由于读需要先写1因为P3=FE已经把高4位给1了所以能读了temp">
启动后的原来图,还没有按键按下:
再来一张,有按键按下的情况:
代码如下:
#include《reg52.h》
#defineucharunsignedchar。
单片机矩阵式键盘连接方法及工作原理
矩阵式键盘的连接方法和工作原理什么是矩阵式键盘?当键盘中按键数量较多时,为了减少I/O 口线的占用,通常将按键排列成矩阵形式。
在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。
这样做有什么好处呢?大家看下面的电路图,一个并行口可以构成4*4=16 个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别就越明显。
比如再多加一条线就可以构成20 键的键盘,而直接用端口线则只能多出一个键(9 键)。
由此可见,在需要的按键数量比较多时,采用矩阵法来连接键盘是非常合理的。
矩阵式结构的键盘显然比独立式键盘复杂一些,识别也要复杂一些,在上图中,列线通过电阻接电源,并将行线所接的单片机4 个I/O 口作为输出端,而列线所接的I/O 口则作为输入端。
这样,当按键没有被按下时,所有的输出端都是高电平,代表无键按下,行线输出是低电平;一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了,具体的识别及编程方法如下所述:二.矩阵式键盘的按键识别方法确定矩阵式键盘上任何一个键被按下通常采用“行扫描法”或者“行反转法”。
行扫描法又称为逐行(或列)扫描查询法,它是一种最常用的多按键识别方法。
因此我们就以“行扫描法”为例介绍矩阵式键盘的工作原理:1.判断键盘中有无键按下将全部行线X0-X3 置低电平,然后检测列线的状态,只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4 根行线相交叉的4 个按键之中;若所有列线均为高电平,则表示键盘中无键按下。
2.判断闭合键所在的位置在确认有键按下后,即可进入确定具体闭合键的过程。
其方法是:依次将行线置为低电平(即在置某根行线为低电平时,其它线为高电平),当确定某根行线为低电平后,再逐行检测各列线的电平状态,若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。
下面给出一个具体的例子:单片机的P1 口用作键盘I/O 口,键盘的列线接到P1 口的低4 位,键盘的行线接到P1 口的高4位,也就是把列线P1.0-P1.3 分别接4 个上拉电阻到电源,把列线P1.0-P1.3 设置为输入线,行线P1.4-P1.7 设置为输出线,4 根行线和4 根列线形成16 个相交点,如上图所示。
单片机原理及应用教程
LOOP: LOOP1:
ORG 0000H MOV P3,#00H SETB STAR ; 启动A/D CLR STAR JNB EOC,LOOP1 ; 转换结束? MOV A,ADB ; 读转换数据 MOV B,#5
DIV AB ; ÷5标度变换 MOV B,#10 DIV AB ; ÷10十进制转换 MOV DPTR,#0100H MOVC A,@A+DPTR ; 查段码 MOV XSL,A ; 输出低位 MOVC A,@A+DPTR ANL A,#7FH ; 加小数点 MOV XSH,A ; 输出高位 AJMP LOOP ORG 0100H DMB:DB C0H,F9H,A4H,B0H,99H,92H,82H,F8H,80H,90H
图8-26 简易5V直流数字电压表硬件电路图
2. 软件流程图及程序 应用程序如下: XSH EQU XSL EQU ADB EQU STAR EQU EOC EQU
P0 P2 P1 P3.0 P3.1
; 显示高位输出口 ; 显示低位输出口 ; ADC0809数据端口 ; 启动线 ; A/D转换结束状态 线
2. 矩阵式键盘接口及工作原理 当按键数较多时,为节பைடு நூலகம்I/O口线和减少引线,常将其按矩 阵方式连接。每条行线与列线的交叉处通过一个按键来连 通,则只需N条行线和M条列线,即可组成具有NM个按键 的键盘。其连接形式如图8-2所示。
图8-1 开关式键盘
图8-2 矩阵键盘连接形式
8.1.4 键盘接口扩展设计 当键盘的按键较多或单片机的I/O端口较紧张时,就需要通 过外部扩展来实现键盘的功能。通常通过8255、8155等并 行接口芯片,或通过单片机的串行口进行键盘的扩展,也 可通过专用键盘、显示接口芯片如8279进行键盘扩展。 1. 8031经8155扩展键盘 经 扩展键盘 图8-4为4×8键盘,经8155与单片机相连,键扫描子程序框 图同图8-3。
单片机按键工作原理
单片机按键工作原理
单片机按键的工作原理如下:
1. 按键的接线:按键通常由两个引脚组成,一个引脚连接到单片机的某个I/O口(一般被配置为输入模式),另一个引脚与
单片机的地(GND)相连。
2. 按键的触发方式:按下按键时,按键与地(GND)短接,
形成一个低电平信号。
松开按键时,按键与地(GND)断开,形成一个高电平信号。
3. 单片机的读取:单片机通过I/O口读取按键状态。
在读取之前,需要对I/O口进行配置,以确定其作为输入模式。
4. 按键的消抖处理:由于按键的物理性质,松开按键时可能会出现抖动(也就是开关接通和断开之间多次切换),这会使单片机读取到多个状态变化。
为了避免误操作,需要对按键进行消抖处理。
有多种消抖方法,如软件消抖(通过延时)和硬件消抖(使用电容、电阻等元件)。
5. 单片机的判断:单片机读取到按键状态后,可以进行相应的判断,例如检测按键是否按下,并执行相应的操作,例如触发某个事件、修改某个参数等。
6. 可选的外部电路:根据具体需求,还可以在按键与单片机之间添加外部电路,例如上拉电阻、下拉电阻、滤波电容等,以提供更稳定的按键信号和更好的抗干扰能力。
总结起来,单片机按键的工作原理是基于按键的触发方式和单片机的输入读取能力,通过配置I/O口、消抖等操作,将按键状态转换为单片机可识别的信号,并在单片机内部进行相应的判断和处理。
51单片机学习之5-独立按键和矩阵键盘
51单片机学习之5-独立按键和矩阵键盘
第14集
键盘的原理
键盘分编码键盘(例如电脑键盘)和非编码键盘(自己用程序去识别)。
非编码键盘分:独立式非编码键盘(独立按键)、行列式非编码键盘(4*4阵列键盘)
独立键盘的电路图。
因为51单片机的IO口不是双向口而是准双向口,要让IO口具备输入功能,必须将IO口置1,置1之后当按键按下时IO口的电平会被拉低,即被置0。
当检测到IO口为0时即可判断该按键已经按下。
按键按下时会有一个抖动的
过程(弹片会抖动),由于单片机检测IO口速度非常快,超过弹片抖动的频率,所以当单片机检测到IO口为0时需延时一小段时间再检测IO是否为0,如果仍为0就确认该按钮被按下。
因为IO口里面有上拉电阻,所以当松开按钮时,IO口又被拉高。
例程:
#include
#defineuintunsignedint
#defineucharunsignedchar
sbitKey=P3;//按键
sbitLed=P1;//Led灯
voiddelay(uintz);
/********主函数********/
voidmain()。
单片机键盘原理
单片机键盘原理
单片机键盘原理在于通过按键开关的闭合和断开来实现输入信号的检测和解码。
键盘通常由一个矩阵型的按键组成,每个按键都有一个独立的开关。
按键可以分为行和列,行和列之间采用交叉连续的方式进行连接。
在初始化过程中,单片机会将所有的列设置为输出引脚,行设置为输入引脚,并且设置为上拉输入。
当按键没有被按下时,所有行引脚都会被上拉电阻拉高。
当有某个按键按下时,对应按键的行引脚会被连接到低电平,通过检测行引脚的低电平可以知道是否有按键按下。
接着,单片机会将所有列引脚一一设置为输出低电平,并检测行引脚的电平状态。
如果行引脚的电平为低,则表示对应的按键被按下,并且可以根据所在的行和列来确定具体的按键编码。
通过这种方式,单片机可以实现对键盘输入信号的检测和解码,从而获取用户的输入。
在实际应用中,可以根据按键的编码来执行相应的操作,比如控制显示、控制器件等。
单片机基础:键盘接口原理详解
单片机基础:键盘接口原理详解按键根据结构原理可分为两类,一类是触点式开关按键,如机械式开关、导电橡胶式开关等;另一类是无触点式开关按键,如电气式按键,磁感应按键等。
前者造价低,后者寿命长。
目前,微机系统中最频繁的是触点式开关按键。
2.输入原理在应用系统中,除了复位按键有特地的复位及专一的复位功能外,其它按键都是以开关状态来设置控制功能或输入数据的。
当所设置的功能键或数字键按下时,计算机应用系统应完成该按键所设定的功能,键信息输入是与软件结构疏远相关的过程。
对于一组键或一个键盘,总有一个接口电路与CPU相连。
CPU可以采纳查询或中断方式了解有无将键输入,并检查是哪一个键按下,将该键号送入累加器ACC,然后通过跳转命令转入执行该键的功能程序,执行完后再返回主程序3.按键结构与特点微机键盘通常用法机械触点式按键开关,其主要功能是把机械上的通断转换成为电气上的规律关系。
也就是说,它能提供标准的TTL规律电平,以便与通用数字系统的规律电平相容。
机械式按键再按下或释放时,因为机械弹性作用的影响,通常陪同有一定时光的触点机械颤动,然后其触点才稳定下来。
其颤动过程如下图所示,颤动时光的长短与开关的机械特性有关,普通为5~10 ms。
在触点颤动期间检测按键的通与断状态,可能导致推断出错,即按键一次按下或释放被错误地认为是多次操作,这种状况是不允许浮现的。
为了克服按键触点机械颤动所致的检测误判,必需实行去颤动措施。
这一点可从硬件、软件两方面予以考虑。
在键数较少时,可采纳硬件去抖,而当键数较多时,采纳软件去抖。
4. 按键编码一组按键或键盘都要通过I/O口线查询按键的开关状态。
按照键盘结第1页共4页。
单片机矩阵按键原理
单片机矩阵按键原理
单片机矩阵按键的原理主要是通过行列结构来识别按键。
具体来说,它使用4条I/O线作为行线,4条I/O线作为列线,形成了一个4x4的矩阵。
在行线和列线的每个交叉点上,设置一个按键。
当某个按键被按下时,对应的行线和列线会被连通,导致行线和列线的电平发生变化。
单片机通过逐行扫描或逐列扫描的方式,读取I/O口的电平变化,从而确定哪个按键被按下。
具体来说,在行列扫描中,单片机先从P1口的高四位(四个行)输出高电平,低四位(四个列)输出低电平,如果有按键按下,从P1口的高四位读取键盘状态,判断高四位的四行哪一行变成了低电平,就知道是第几行。
然后从P1口的低四位(四个列)输出高电平,高四位(四个行)输出低电平,从P1口的低四位读取键盘状态,判断低四位的四列哪一行变成了低电平,就知道是第几列。
将两次读取结果组合起来就可以得到当前按键的特征编码。
使用这种行列结构能够有效地提高单片机系统中I/O口的利用率,节约单片机的资源。
以上内容仅供参考,建议查阅关于单片机矩阵按键的书籍或者咨询专业技术人员获取更准确的信息。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
10kΩ
10kΩ
10kΩ
10kΩ
和列线连接的单片机端 口,作为输入
当键盘上没有键闭合时,所有的行线和列线断开,列线都 呈高电平。当键盘上某一个键闭合时,则该键所对应的列线与行 线短路。此时列线的电平由相应的行线的电位所决定。
键盘扫描原理(以P3口接4×4键盘为例)
键盘扫描原理(以P3口接4×4键盘为例)
第一行的键模: 11101110、11011110、 10111110、01111110 整个4x4键盘的键模: 0xee、0xde、0xbe、0x7e 0xed、0xdd、0xbd、0x7d 0xeb、0xdb、0xbb、0x7b 0xe7、0xd7、0xb7、0x77
④ 形成压下键的键模
将各键的键模依次存放 按压K1——xxxx xx10(0x02) 按压K2——xxxx xx01(0x01) 无按键——0000 xx11(0x03)
则由得到的键值对应确定dun、dir的值,用switch语句实现。
temp=P0&0x03; switch(temp) { case 0x02:run=1; dir=1; break; case 0x01:dir=0;break; }
实例
独立按键识别
【要求】采用独立按键方式实现下述功能:开机时LED全熄, 然后根据按键动作使相应灯亮,并将亮灯保持到按压其它键 时为止。
做输入, 先写1
【分析】
① 按键的闭合电平为0, 但LED 的驱动电平为1,故不能直接将 P0口的状态送到P2口,而应使 其先取反再送出; ② 使按键按下LED点亮,松开 时保持不变。
实例 运行效果
特点是电路简单,但占用I/O口线较多。
例:按下按键,对应的LED灯亮
#include<reg51.h> void delay(unsigned int z) { unsigned int x,y; for(x=z;x>0;x--) for(y=125;y>0;y--); } void main() { unsigned char key; P2=0x00; P0=0x01; while(1) { key=P0; if(key!=0x01) { delay(10); if(key!=0x01) P2=~key; } } }
理想波形
实际波形
按下抖动
稳定闭合
释放抖动
软件消抖方法:当判别到键盘上有键闭合后,延时一段时间再 判别键盘的状态,若仍有键闭合,则认为键盘 上有一个键处于稳定的闭合状态,否则认为键 抖动。
键盘有两种结构:独立式按键和矩阵式按键。 1.独立式按键
独立式键盘中每个按键都单独连接到单片机的一个 I/O端口引脚上。
键盘工作原理
1. 按键输入的特点 键盘实质上是一组按键开关的组合。通常使用的是触 点式的机械弹性开关。利用机械触点的通断,实现按下 时开关导通,释放时开关断开的功能。 按键触点的一端和单片机的I/O端口引脚连接,另 一端与电压信号相连,触点的通断即可引起端口引脚上 的电压变化,单片机通过程序读入I/O端口引脚电平信 号便可判断按键的状态。如下图所示。
独立按键+数码管综合
实例 采用共阴极的数码管 实现功能要求:当按键按下时显示“ L2”,松开时显示 “H3”
算出L2H3的段码分别为: 0x38,0x5b,0x76,0x4f 位选信号构成位码: 0xfe,0xfd
void main() { #include<reg52.h> uchar i; #define uint unsigned int while(1) #define uchar unsigned char uchar duan[]={0x38,0x5b,0x76,0x4f}; //共 { 阴"L2H3" if(button==0) uchar wei[]={0xfe,0xfd}; delay(10); sbit button=P1^6; if(button==0) for(i=0;i<2;i++) void delay(uint z) { { P3=wei[i]; uint x,y; P2=duan[i]; for(x=z;x>0;x--) delay(10); for(y=125;y>0;y--); } } else for(i=0;i<2;i++) { P3=wei[i]; P2=duan[i+2]; delay(10); } } }
当按键未按下压时,Px.n端口为高电平;按压按键后为 低电平。
按键在闭合和断开时,触点会存在抖动现象:
+5V
无抖动
理想波形 A 实际波形
按下抖动
B 稳定闭合
释放抖动
+5V
有抖动
图为键闭合时列线电压波形。键闭合和断开过程中存在抖 动期(呈现一串负脉冲),抖动时间长短与开关的机械特性有关, 一般为5~10 ms之间;稳定闭合期由操作员的按键动作所确定, 一般为数百毫秒到几秒。为了保证CPU对键的闭合做一次处理, 必须去除抖动,在键的稳定闭合或断开时,读键的状态。
if(run==1) { if(dir==1) for(i=0;i<=3;i++) { P2=led[i]; delay(200); } else for(i=4;i>=1;i--) { P2=led[i-1]; delay(200); } } else P2=0; } }
void main() { while(1) { temp=P0&0x03; switch(temp) { case 0x02: run=1;dir=1; //启动,自 上往下 break; case 0x01:dir=0; //自下往上 break; }
行列式键盘的特点:占用IO口线少,但软件过程复杂。
实例 行列式键盘 要求按下任意按键后,数码管上显示该键的键值(0~F)
参考程序
#include<reg51.h> unsigned char duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f, 0x77,0x7c,0x39,0x5e,0x79,0x71}; unsigned char key_val[]={0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,0xeb, 0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77}; unsigned char key_scan[]={0xfe,0xfd,0xfb,0xf7}; void delay(unsigned int z) { unsigned int x,y; for(x=z;x>0;x--) for(y=125;y>0;y--); } void main() { unsigned char i,j; P2=0; while(1) { P3=0xf0; if(P3!=0xf0) { delay(10); if(P3!=0xf0) } } } } for(i=0;i<4;i++) { P3=key_scan[i]; for(j=0;j<16;j++ if(key_val[j]==P3) P2=duan[j];
①判断是否有键压下 写P3端口0xf0(行线电平=0,列线电平=1) 读P3端口:若P3 = 0xf0→无按键压下,不必后续判断; 若P3 ≠0xf0 →有键压下
②去除键的机械抖动 其方法为:当判别到键盘上有键闭合后,延时一段时 间再判别键盘的状态,若仍有键闭合,则认为键盘上有一 个键处于稳定的闭合状态,否则认为键抖动。
参考程序
运行 效果
2、 行列式键盘原理与编程 独立式键盘的电路简单,易于编程,但占用的IO口线较多, 当需要较多按键时可能产生IO资源紧张问题。
独立式键盘
行列式键盘——将IO口分为行线和列线,按键跨接在行线 和列线上,列线通过上拉电阻接正电源。
+5V
和行线连接的单片机 端口,作为输出
P1.0 89S51 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
#include<reg51.h> void delay(unsigned int z) { unsigned int x,y; for(x=z;x>0;x--) for(y=125;y>0;y--); } void main() { unsigned char key; P2=0x00; P0=0x0f; while(1) { key=P0; if(key!=0x0f) { delay(10); if(key!=0x0f) P2=~key; } } }
实例
键控流水灯
【要求】 K1为“启动键”,按压K1可产生“自下向上” 的流水灯运动; K2 为“方向键”,按压K2可产生“自下向上”运动。
启动 (=1) run 停止 (=0) ↓ dir ↑ (=0) (=1)
获取按下键值(键值函数)流程
按键动作判断——(P0 & 0x03)是否等于 0x03 若是,则无按键动作,反之则有按键动作
LED循环流程
亮灯P2输出:
xxxx xxxx xxxx xxxx
0001 0010 0100 1000
LED状态码数组[] = {0x01,0x02,0x04,0x08}
分析——搞清全部逻辑关系
总体关系(主函数)流程
(键值函数)
参考程序:
#include<reg51.h> unsigned char led[]={0x01,0x02,0x04,0x08}; // 从上到下的流水灯 bit run,dir; unsigned char temp,i; void delay(unsigned int z) { unsigned int x,y; for(x=z;x>0;x--) for(y=125;y>0;y--); }