单片机按键连接方法

------------------- 看磊诫呎 ....... ....... .....
单片机按键连接方法总结(五种按键扩展方案详细介绍)
单片机在各种领域运用相当广泛,而作为人机交流的按键设计也有很多种。

不同的设 计方法,有着不同的优缺点。

而又由于单片机 I/O 资源有限,如何用最少的 I/O 口扩展更多
的按键是我所研究的问题。

接下来我给大家展示几种自己觉得比较好的按键扩展方案,
大家
可以在以后的单片机电路设计中灵活运用。

1)、第一种是最为常见的,也就是一个 I/O 口对应一个按钮开关。

GND
这种方案是一对一的, 一个I/O 口对应一个按键。

这里P00到P04,都外接了一个上拉 电阻,在没
有开关按下的时候,是高电平,一旦有按键按下,就被拉成低电平。

这种方案优 点是电路简单可靠,程序设计也很简单。

缺点是占用 I/O 资源多。

如果单片机资源够多,不
紧缺,推荐使用这种方案。

2)、第二种方案也比较常见,但是比第一种的资源利用率要高,硬件电路也不复杂。

P0.0
P0-1
P0.2
P0,3
o
■0 0
S2
O O
这是一种矩阵式键盘,用 8个I/O 控制了 16个按钮开关,优点显而易见。

当然这种电路的
程序设计相对也还是很简单的。

由
P00到P03循环输出低电平,然后检测
P04到P07的状
态。

比方说这里 P00到P03 口输出1000,然后检测P04到P07,如果P04为1则说明按下 的键为si ,如果P05为1则说明按下的是s2等等。

为了电路的可靠,也可以和第一种方案 一样加上上拉电阻。

3)、第三种是我自己搞的一种方案,可以使用
4个I/O 控制8个按键,电路多了一些
二极管,稍微复杂了一点。

POO
S1
S2
'
S3
―■—
■
1 ------------ O --------------------------- -------- o
d ------------
------- &
o ------------
S4
< ----- -
56
S10
S8
S12
o o-
S16
PQ O
S7
S5
POI
o
811
P02
□
P03
P04
------------------- 磊册时——... .... .... ..
这个电路的原理很简单,就是利用二极管的单向导电性。

也是和上面的方案一样,程序需要
采用轮训的方法。

比方说,先置P00到P03都为低电平,然后把P00置为高电平,接着查
询P02和P03的状态,如果P02为高则说明按下的是S5,若P03为高则说明按下的是S6, 然后再让P00为低,P01为高,同样检测P02和P03的状态。

接下来分别让P02和P03为高,其他为低,分别检测P00和P01的状态,然后再做判断。

这种方案的程序其实也不难。

4)这是我在一本书上看到的,感觉设计的非常巧妙,同样它也用到了二极管,不过比
我的上一种方案的I/O利用率更高,他用4个I/O 口控制了12个按键。

我相信你了解了之后也会惊奇的。

S13
bl □ g, sin a- c OITI-
cn/iob ?
首先好好品味一下这个方案吧,想想怎么来识别按键呢!
首先,我们让P00到P03全输出高电平。

如果这个时候从P00到P03的任意一个端口
检测到低电平,很容易知道是按下了那个键,肯定是S13到S16的其中一个。

如果没有检测
到信号,就进行下一次的检测,让P01到P03为高电平,P00为低电平,然后检测P01至U
P03的状态。

如果P01为低,则按下的是si,; P02为低,则按下的是s2; P03为低,则按下的是S3。

然后再让P00, P02, P03为高电平,P01为低电平。

同理用上面的方法可以检测出按
下的那个按键。

(部分程序源代码会在后面贴出来,阅读代码可以更好理解电路)
5)、接下来这种方案则更为强大。

不过需要用到一个A/D转换器(有的单片机集成有
A/D转换器,则更为方便)。

如果A/D转化器的分辨率为n位,理论上是可以扩展25 (2 的n次方)个按键。

------------------- 布話吻吋 . ..... ....... ...
方武一 blog. >jri eLODrfLcri/hb=fULJ
这是一种接AD 转化器的方案,有两种:第一种是并联式;第二种是串联式。

在功能上也 有些不同。

第一种的话各个电阻值各不相同, 当按下不同按键时, 进入AD 的模拟量是不一
样的,通过AD 转换,就可以得到按下的是哪个按键。

方式一还可以同时识别多个按键,即 可以设置组合键,只要电阻取得
合适。

方式二各个电阻可以取一样的,
方便计算,但是不能有组合按键。

因为当按下上面的按键后,
下面所有按键都会被短路。

(在实际运用中,还需要接地,这里没有画出)。

前面说理论
上可以扩展25个按键,这只是理论,因为这里电阻的精度有限,所以实际是不可能的,两 个模拟量之间要有足够大的差值,程序才可能准确的分辨。

上面就是我介绍的五种按键扩展方案, 上电路我都仿真过,可以实现。

附方案4键盘扫描源代码:
sbit line_仁 P0.1; sbit lin e_2=P0.2; sbit lin e_3=P0.3; sbit line 4=P0.4 char key=0;
Kii 赛如嘩換器 ■ —
.■ ■(>
a
S1
VCC
T E>
H
R12
R.14
方式二
后面几种比较另类,不过也有他们的优点。

以
------------------- 时磊5说----- - ---- -------
void key_sca n()
{
lin e_1=li ne_2=li ne_3=li ne_4=1;
if(~(li ne_1&&line_2&&line_3&&lin e_4))
{
if(line_1==0) {key=13;return;}
if(li ne_2==0) {key=14; return;}
if(line_3==0) {key=15;return;}
if(li ne_4==0) {key=16; return;}
}
lin e_2=li ne_3=li ne_4=1;
line_仁0;
if(~(li ne_2&&li ne_3&&li ne_4))
{
delay();
if(line_2==0) {key=1;return;}
if(line_3==0) {key=2;return;}
if(line_4==0) {key=3;return;}
}
lin e_1=li ne_3=li ne_4=1;
lin e_2=0;
if(~(li ne_1&&line_3&&li ne_4))
{
delay();
if(li ne_3==0) {key=5;retur n;}
if(line_4==0) {key=6;return;}
}
lin e_1=li ne_2=li ne_4=1;
lin e_3=0;
if(~(li ne_2&&line_1&&lin e_4))
{
delay();
if(li ne_4==0) {key=9;retur n;}
}
lin e_4=0;
line_1= li ne_2=li ne_3=1;
if(~(li ne_2&&li ne_3&&li ne_1))
{
delay();
if(line_1==0) {key=10;return;}
if(li ne_2==0) {key=11;return;}
if(line_3==0) {key=12;return;}
------------------- 时需Sr彳 ------- ---- --- --
lin e_3=0;
lin e_1=li ne_2=li ne_4=1;
if(~(li ne_2&&li ne_3&&li ne_4))
{
delay();
if(li ne_1==O) {key=7;retur n; }
if(line_2==0) {key=8;return; }
}
lin e_2=0;
lin e_1=li ne_3=li ne_4=1;
if(~(li ne_2&&li ne_3&&li ne_4))
{
delay();
if(li ne_1==O) {key=4;retur n; }
}
return;
}。

合集下载

单片机按键模块设计

单片机按键模块设计

单片机按键模块设计一、硬件设计1、按键的类型选择按键的类型有很多种,常见的有机械按键和触摸按键。

机械按键通过金属触点的闭合和断开来产生电信号,具有成本低、可靠性高的优点,但寿命相对较短,容易产生抖动。

触摸按键则通过电容感应或电阻感应来检测触摸动作,寿命长、外观美观,但成本相对较高,且容易受到外界干扰。

在一般的单片机应用中,机械按键通常是更经济实用的选择。

2、按键的连接方式按键可以采用独立式连接或矩阵式连接。

独立式连接适用于按键数量较少的情况,每个按键单独连接到单片机的一个 I/O 口上,这种方式简单直观,但占用的 I/O 口资源较多。

矩阵式连接则适用于按键数量较多的情况,通过将按键排列成矩阵形式,利用行线和列线的交叉点来识别按键,大大节省了 I/O 口资源,但编程相对复杂。

以 4×4 矩阵按键为例,我们需要 8 个 I/O 口,其中 4 个作为行线,4 个作为列线。

当某个按键被按下时,对应的行线和列线会接通,通过扫描行线和列线的状态,就可以确定被按下的按键。

3、上拉电阻的使用为了保证单片机能够正确检测按键的状态,通常需要在按键连接的I/O 口上加上拉电阻。

上拉电阻将I/O 口的电平拉高,当按键未按下时,I/O 口处于高电平;当按键按下时,I/O 口被拉低为低电平。

上拉电阻的阻值一般在10KΩ 左右。

4、消抖处理由于机械按键在按下和释放的瞬间,触点会产生抖动,导致单片机检测到的电平不稳定。

为了消除这种抖动,通常采用软件消抖或硬件消抖的方法。

软件消抖是在检测到按键状态变化后,延迟一段时间(一般为10ms 20ms),再次检测按键状态,如果状态保持不变,则认为按键有效。

这种方法简单易行,但会增加程序的执行时间。

硬件消抖则是通过在按键两端并联电容或使用专用的消抖芯片来实现。

电容可以吸收触点抖动产生的尖峰脉冲,使电平稳定。

但硬件消抖会增加硬件成本和电路复杂度。

二、软件编程1、按键扫描程序在软件编程中,需要编写按键扫描程序来检测按键的状态。

单片机按键总结

单片机按键总结

单片机按键总结按键在电子设备中是一种常见的输入方式,其在单片机应用中具有重要的作用。

单片机按键的设计和使用对于产品的功能和用户体验具有直接影响。

本文将对单片机按键进行总结,包括按键的种类、连接方法以及常见的按键处理技术。

一、按键的种类在单片机应用中,按键的种类多种多样,常见的按键种类包括如下几种:1. 电子按键:电子按键是通过电容、电感或者电阻来实现的,通常具有体积小、响应速度快等优点。

常见的电子按键有触摸按键、滑动按键等。

2. 机械按键:机械按键是通过机械触点来实现的,具有手感好、寿命长等特点。

常见的机械按键有按钮开关、旋转开关等。

3. 光电按键:光电按键是通过光敏器件接收光信号来实现的,具有接触式触发、高灵敏度等特点。

常见的光电按键有红外遥控按键、光电开关等。

二、按键的连接方法单片机与按键之间的连接方式通常有两种:直接连接和矩阵连接。

1. 直接连接:直接连接是指每个按键与单片机的一个引脚直接相连。

这种连接方式简单、直观,但是需要消耗较多的IO口资源。

2. 矩阵连接:矩阵连接是指多个按键通过行列的方式连接到单片机的引脚上。

这种连接方式可以有效地节省IO口资源,但需要编写一定的扫描程序。

三、按键的处理技术在单片机中,按键的处理需要借助相应的技术手段,常见的按键处理技术包括如下几种:1. 常规轮询:常规轮询是指通过循环查询每个按键的状态,判断按键是否按下。

这种处理方式简单易懂,但是对CPU的占用较高。

2. 外部中断:外部中断是指按键触发时通过中断方式通知单片机进行处理。

这种处理方式可以有效地降低CPU的占用,提高系统的响应速度。

3. 硬件定时器:硬件定时器是通过定时器模块实现按键的扫描和检测。

这种处理方式可以减轻CPU的负担,提高按键的灵敏度。

4. 状态机方法:状态机方法是通过状态的转换来处理按键事件。

这种处理方式可以方便地处理多个按键的组合事件,提高系统的灵活性。

四、按键的应用案例1. 汽车遥控器:汽车遥控器通常使用红外遥控按键来实现对车辆的控制,通过单片机接收红外信号并解码,实现对车辆的开锁、上锁、寻车等功能。

单片机按键实验实训报告

单片机按键实验实训报告

一、实验目的1. 理解单片机按键的工作原理和电路连接方法;2. 掌握按键消抖原理及其实现方法;3. 学会使用单片机编程控制按键功能,实现简单的输入控制;4. 提高单片机实验操作能力和编程能力。

二、实验仪器及设备1. 单片机开发板(如STC89C52);2. 按键;3. 万用表;4. 电脑;5. Keil C编译器。

三、实验原理1. 按键原理:按键是一种电子开关,按下时导通,松开时断开。

在单片机应用中,按键常用于输入控制信号。

2. 按键消抖原理:由于按键机械弹性,闭合和断开时会有一连串的抖动。

若直接读取按键状态,容易导致误操作。

因此,需要进行消抖处理。

3. 消抖方法:主要有软件消抖和硬件消抖两种方法。

本实验采用软件消抖方法,即在读取按键状态后,延时一段时间再读取,若两次读取结果一致,则认为按键状态稳定。

四、实验步骤1. 硬件连接:将按键一端接地,另一端与单片机的某个I/O口相连。

2. 编写程序:使用Keil C编译器编写程序,实现以下功能:(1)初始化I/O口,将按键连接的I/O口设置为输入模式;(2)读取按键状态,判断按键是否被按下;(3)进行消抖处理,若按键状态稳定,则执行相应的功能。

3. 编译程序:将编写好的程序编译成HEX文件。

4. 烧录程序:将编译好的HEX文件烧录到单片机中。

5. 实验验证:观察实验现象,验证按键功能是否实现。

五、实验结果与分析1. 硬件连接正确,程序编译无误。

2. 实验现象:当按下按键时,单片机执行相应的功能;松开按键后,按键功能停止。

3. 分析:通过软件消抖处理,有效避免了按键抖动导致的误操作。

六、实验总结1. 本实验成功实现了单片机按键控制功能,掌握了按键消抖原理及实现方法。

2. 通过实验,提高了单片机编程和实验操作能力。

3. 在后续的单片机应用中,可以灵活运用按键控制功能,实现各种输入控制需求。

4. 本次实验为单片机应用奠定了基础,为进一步学习单片机技术打下了良好基础。

单片机按键单击双击长按功能实现

单片机按键单击双击长按功能实现

单片机按键单击双击长按功能实现在很多嵌入式系统中,都需要对按键进行检测和处理,以实现不同的功能。

常见的按键功能包括单击、双击和长按。

在这篇文章中,我们将介绍如何使用单片机实现这些按键功能。

首先,我们需要连接一个按键到单片机的I/O口。

按键通常是一个开关,有两个接触点。

当按键按下时,两个接触点会闭合,导致I/O口的电平发生变化。

我们可以利用这个变化来检测按键的状态。

为了实现按键功能,我们需要编写一段程序来监测按键的状态。

以下是一个简单的流程:1.初始化I/O口:将按键连接到I/O口上,并将I/O口设置为输入模式。

2.监测按键状态:定时读取I/O口的电平状态,以检测按键是否按下。

如果I/O口电平发生变化,则按键被按下或松开。

3.单击功能:当按键被按下时,记录当前时间,并等待一段时间,如果超过这段时间,说明按键已松开,则触发单击功能。

4.双击功能:如果在两次按键之间的时间间隔内再次检测到按键按下,则触发双击功能。

5.长按功能:当按键被按下一段较长的时间后,触发长按功能。

下面我们来具体介绍如何实现这些功能。

首先,我们需要初始化单片机的I/O口。

这个过程可以通过配置相应的寄存器实现。

具体的方法和步骤依赖于你使用的单片机型号和开发环境。

在这里,我们不具体展开,而是假设我们已经成功初始化了I/O口。

接下来,我们需要设置一个计时器用于定时检测按键的状态。

计时器的定时周期决定了我们可以检测的最短按键时间间隔。

通常,我们使用一个定时器来实现单击和双击功能,使用另一个定时器来检测长按功能。

一旦我们完成了计时器的配置,我们就可以开启定时器中断,并启动计时器。

每当定时器溢出时,中断函数会被触发,我们可以在这个函数中检测按键的状态。

在中断函数中,我们读取I/O口的电平状态,并根据当前的按键状态做出相应的处理。

首先,我们需要检测按键是否按下。

为了防止按键的抖动和误触发,我们使用一个状态机来确定按键的状态。

状态机的状态可以分为按下和松开两种。

51单片机按键电路

51单片机按键电路

51单片机键盘接口电路(含源程序)键盘是由若干按钮组成的开关矩阵,它是单片机系统中最常用的输入设备,用户能通过键盘向计算机输入指令、地址和数据。

一般单片机系统中采和非编码键盘,非编码键盘是由软件来识别键盘上的闭合键,它具有结构简单,使用灵活等特点,因此被广泛应用于单片机系统。

按钮开关的抖动问题组成键盘的按钮有触点式和非触点式两种,单片机中应用的一般是由机械触点组成的。

在下图中,当开&lt;键盘结构图>图1图2关S未被按下时,P1。

0输入为高电平,S闭合后,P1。

0输入为低电平。

由于按钮是机械触点,当机械触点断开、闭合时,会有抖动动,P1。

0输入端的波形如图2所示。

这种抖动对于人来说是感觉不到的,但对计算机来说,则是完全能感应到的,因为计算机处理的速度是在微秒级,而机械抖动的时间至少是毫秒级,对计算机而言,这已是一个“漫长”的时间了。

前面我们讲到中断时曾有个问题,就是说按钮有时灵,有时不灵,其实就是这个原因,你只按了一次按钮,可是计算机却已执行了多次中断的过程,如果执行的次数正好是奇数次,那么结果正如你所料,如果执行的次数是偶数次,那就不对了。

为使CPU能正确地读出P1口的状态,对每一次按钮只作一次响应,就必须考虑如何去除抖动,常用的去抖动的办法有两种:硬件办法和软件办法。

单片机中常用软件法,因此,对于硬件办法我们不介绍。

软件法其实很简单,就是在单片机获得P1。

0口为低的信息后,不是立即认定S1已被按下,而是延时10毫秒或更长一些时间后再次检测P1。

0口,如果仍为低,说明S1的确按下了,这实际上是避开了按钮按下时的抖动时间。

而在检测到按钮释放后(P1。

0为高)再延时5-10个毫秒,消除后沿的抖动,然后再对键值处理。

不过一般情况下,我们常常不对按钮释放的后沿进行处理,实践证明,也能满足一定的要求。

当然,实际应用中,对按钮的要求也是千差万别,要根据不一样的需要来编制处理程序,但以上是消除键抖动的原则。

单片机按键原理

单片机按键原理

单片机按键原理在单片机系统中,按键是一种常见的输入设备,用于向单片机输入外部信号。

按键原理是单片机系统中的基础知识之一,下面我们来详细了解一下单片机按键原理。

1. 按键的基本原理。

按键是一种开关设备,通过按下或释放按钮来改变其导通状态。

在单片机系统中,按键通常由两个金属片组成,当按下按键时,两个金属片接触,形成通路,使得电流可以流通;释放按键时,两个金属片分开,断开通路,电流无法通过。

单片机通过检测按键的状态来判断用户的操作,从而实现相应的功能。

2. 按键的连接方式。

在单片机系统中,按键可以采用两种连接方式,串联和并联。

串联连接是将多个按键连接在一起,形成一个按键组,将按键组的两端分别连接到单片机的两个引脚上,通过检测引脚的电平变化来判断用户的操作。

并联连接是将多个按键分别连接到单片机的不同引脚上,每个按键对应一个引脚,通过检测不同引脚的电平变化来判断用户的操作。

3. 按键的检测原理。

单片机通过检测按键引脚的电平变化来判断按键的状态。

在按键释放时,引脚上的电平为高电平;在按键按下时,引脚上的电平为低电平。

单片机通过定时检测按键引脚的电平变化,来实时监测按键的状态,从而判断用户的操作。

4. 按键消抖原理。

在实际应用中,按键可能会出现抖动现象,即在按键按下或释放的过程中,由于机械结构的原因,按键可能会产生多次开关动作,导致单片机检测到多次按键触发。

为了解决这个问题,通常会在软件中加入按键消抖算法,通过软件延时或状态判断来滤除按键抖动,确保单片机能够正确识别用户的操作。

5. 按键的应用。

按键广泛应用于各种单片机系统中,如嵌入式系统、电子设备、工业控制等领域。

通过按键,用户可以向单片机输入各种指令或数据,实现对系统的控制和操作。

在实际应用中,按键的设计和布局需要根据具体的系统需求来进行合理规划,以确保按键操作的准确性和可靠性。

总结。

单片机按键原理是单片机系统中的基础知识,了解按键的基本原理、连接方式、检测原理和消抖原理,对于设计和开发单片机系统具有重要意义。

51单片机按键使用及注意事项

51单片机按键使用及注意事项如下:
1.按键工作原理:按键是一种电子开关,使用时轻轻按开关按钮就可使开关接通,当松开手时,开
关断开。

在开发板上使用的按键及内部简易图按键管脚两端距离长的表示默认是导通状态,距离短的默认是断开状态,如果按键按下,初始导通状态变为断开,初始断开状态变为导通。

2.按键电路接法:上拉是为了让引脚默认是高电平,但是上拉的力量扛不住接地,所以按键没有按
下时上拉的力量保证了IO引脚输入为1,而按下后绝对为0。

3.按键抖动:通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械点的弹性
作用,按键开关在闭合时不会马上稳定的接通,在断开时也不会一下子断开,因而在闭合和断开的瞬间均伴随着一连串的抖动。

抖动时间的长短由按键的机械特性决定的,一般为5ms到10ms。

4.按键消抖:有两种方式,一种是硬件消抖,另一种是软件消抖。

5.注意事项:CPU通过监测按键连接的IO引脚的电平输入是1还是0来得知外部有没有人按下
这个按键。

CPU在按键被按下的一瞬间检测到的信号是很多次的忽高忽低的电平信号,这种信号是不稳定
的。

因此,需要使用按键消抖的算法使单片机获取到正常稳定的信号。

总的来说,51单片机按键使用需要注意按键的电路接法、抖动以及消抖等问题。

在使用过程中,需要遵循相应的原理和注意事项,以确保按键的正常工作。

单片机实现触摸键盘技术

单片机实现触摸键盘技术触摸键盘技术可以通过单片机实现,这种技术使用户能够通过触摸屏幕或触摸按键进行输入操作,替代了传统的物理按键,提供了更加便捷和灵活的输入方式。

触摸键盘技术的实现涉及到多个方面的知识,包括硬件设计和软件编程。

在硬件设计方面,我们需要选择合适的触摸屏幕或触摸按键模块,并与单片机进行连接。

在软件编程方面,需要编写相应的驱动程序和应用程序,实现触摸键盘的功能。

下面将详细介绍触摸键盘技术的实现步骤。

一、选择合适的触摸屏幕或触摸按键模块在选择触摸屏幕或触摸按键模块时,需要考虑它们的硬件接口和性能指标。

通常情况下,触摸屏幕模块使用SPI或I2C接口与单片机进行通信,触摸按键模块使用GPIO接口进行输入。

此外,还需要考虑模块的精度、灵敏度、稳定性等性能指标,以满足具体应用需求。

二、连接触摸屏幕或触摸按键模块将选定的触摸屏幕或触摸按键模块与单片机进行连接。

具体的连接方式取决于模块的硬件接口。

如果是触摸屏幕模块,可以通过SPI或I2C接口连接到单片机的相应引脚上。

如果是触摸按键模块,可以通过GPIO接口连接到单片机的输入引脚上。

三、编写触摸键盘驱动程序编写触摸键盘的驱动程序,用于与触摸屏幕或触摸按键模块进行通信,并获取用户输入的数据。

驱动程序需要实现以下功能:1.初始化模块:初始化触摸屏幕或触摸按键模块,配置相关参数。

2.检测触摸事件:周期性地检测触摸事件,包括触摸按下、触摸移动和触摸释放等事件。

3.获取坐标数据:在触摸事件发生时,获取触摸坐标数据,可以通过模块提供的接口实现。

4.处理输入数据:根据获取到的坐标数据,将其转换为具体的按键输入,可以使用坐标与按键的对应关系表进行转换。

四、编写触摸键盘应用程序在单片机上编写触摸键盘的应用程序,用于处理用户的输入和实现相应的功能。

应用程序需要实现以下功能:1.显示界面:根据应用需求,通过单片机的显示模块显示相应的界面,如按钮、菜单等。

2.响应输入:通过触摸键盘驱动程序获取用户的输入数据,并根据输入数据执行相应的操作,如按钮的点击、菜单的选择等。

单片机矩阵式键盘连接方法及工作原理

矩阵式键盘的连接方法和工作原理什么是矩阵式键盘?当键盘中按键数量较多时,为了减少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 个相交点,如上图所示。

单片机按键实验报告

单片机按键实验报告篇一:单片机按键扫描实验报告键盘扫描一.实验目的(1)掌握矩阵键盘接口电路和键盘扫描编程方法。

(2)掌握按键值处理与显示电路设计。

二.实验任务(1)设计4*4键盘,编写各个键的特征码和对应的键值(0~F);(2)编程扫描按键,将按键对应的数字值使用数码管显示出来。

三.实验电路及连线方法1.采用动态显示连线方法:电路由2 片74LS573,1 个六字一体的共阴数码管组成。

由U15 输出段选码,U16 做位选码,与单片机的采用I/O 口连接方式,短路片J22 连接P2.0,J23 连接P2.3,做输出信号锁存。

(实际电路连接是d7-d6-d5-d4-d3-d2-d1-d0?h-c-d-e-g-b-a-f)。

PW12 是电源端。

2.键盘电路连线方法:电路由16 个按键组成,用P1 口扩展4×4 行列式键盘。

J20 是键盘连接端,连接到P1 口。

J21 是行列键盘、独立键盘选择端,当J21 的短路片连接2-3脚时,构成4×4 行列式键盘;当J21 的短路片连接2-1 脚时,可形成3×4 行列式键盘,4 个独立式按键S4、S8、S12、S16,这4 个独立按键分别连接P1.4~P1.7;其他12 个键3×4 行列式键盘。

PW15 是电源端。

四.编程思路1.采用反转法识别按键的闭合。

2.采用动态显示将键值显示出来。

五.算法流程图六.资源分配1.用P1口进行查找按键2.用R3做键值指针3.用R1做动态显示为选码指针。

4.R5为延时指针。

七.程序设计KPIN:ORG MOV MOV ANL MOV 0000H P1,#0F0H A,P1 A,#0F0H B,AMOVP1,#0FHMOVA,P1ANLA,#0FHORLA,BCJNE A,#0FFH,KPIN1AJMP EXITKPIN1: MOVB,AMOVDPTR,#TABKPMOVR3,#0KPIN2: MOVA,R3MOVC A,@A+DPTRCJNE A,B,KPIN3MOVA,R3LOOP: MOVR1,#0FEH;键盘动态显示 LOOP1: MOVA,R3ANLA,#0FHMOV DPTR,#TABMOVC A,@A+DPTRCLRP2.0CLRP2.1MOVP0,ASETB P2.0NOPCLRP2.0LOOP2: MOVA,R1;位选码MOVP0,ASETB P2.1MOVR5,#250LOOP3: DJNZ R5,LOOP3CLRP2.1SJMP LOOPKPIN3: INCR3CJNE A,#0FFH,KPIN2EXIT: RETTABKP: DB0EEH,0DEH,0BEH,7EH,0EDH,0DDH,0BDH,7DH,0EBHDB 0DBH,0BBH,7BH,0E7H,0D7H,0B7H,77H,67H,0FFHTAB: DB77H,44H,3EH,6EH,4DH,6BH,7BH,46H,7FH,6FH,5FHDB 79H,33H,7CH,3BH,1BHEND八.调试出现的问题及解决问题1:程序正常运行,但按键显示出现乱码解决:动态显示笔形码错误,并改正。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档