单片机常用按键电路

发布者:谁与争锋1最新更新时间:2015-08-14 来源: eefocus关键字:单片机  按键电路 手机看文章 扫描二维码
随时随地手机看文章
单片机组成的小系统中,有的需要人机交互功能,按键是最常见的输入方式。最常见的按键电路大致有,一对一的直接连接和动态扫描的矩阵式连接两种。

  一对一的直接连接就是一个按键直接对应一个CPU的输入口,比如下图

[转载]单片机常用按键电路

左右两个电路作用一样,区别是左边CPU的输入端常态为高电位,按下按键时为低电位;右边的常态为低电位,按下按键是高电位。

   这样的电路简单直接,一个按键独占一个端口,在按键数量较少端口数量富裕时可以直接使用。但很多场合需要的按键数比较多,要尽量少地占用端口就必须使用矩阵式的按键链接。如下图:

[转载]单片机常用按键电路

图中将按键按行列矩阵的方式排列,其中的每一行公用一根行线,每一列公用一根列线。以此图为例,16个按键,按一对一方式连接的话需要16个端口,而按这样的矩阵方式链接只需要8个端口,所需端口数大量减少。按键数Knum=line*row,而端口数Pnum=line+row,其中的li[转载]单片机常用按键电路ne和row分别代表行数和列数。

  图中的Px,Py为CPU的IO端口,在本例中可以使用不同的端口也可以使用同一个8位端口。上拉电阻不是必须,单片机IO口内部有上拉电路时此处就可省略。

    这个电路的工作原理是采用程序扫描的方式检测某个按键状态。比如将Px口的4位全置为低电平,这时如果没有任何按键按下的话,从Py口读回的4位应全为高,而如果有某一键按下,则对应按下键的那一列的位读回值将为低。这样就能知道按下键所在的列;接着确定按键所处行,把Py口的输入值作为输出,Px全部置高并读取输入,就能得到按键所在行位置,于是就确定了所按按键的行列位置。

扫描可以有两种实现的方法,一种是全行全列扫描,一种是逐行全列扫描。

 

上面的例子其实就是全行全列扫描方式,见流程框图。

其特点是,一个流程就能到是否有按键按下,并能确定按下按检测行列值,检测步骤简单迅速。但作为行列接口的Px,Py必须是双向的,亦即同时具有输入输出功能,单片机的端口基本都能满足。[page]

但如果端口非双向,或按键数量大,端口数紧张需进一步减少端口时,也许就需要别的方式来解决。

  还是拿上面的电路做例子,全行全列扫描是在检测到有按键按下时,先检测列然后再确定行。

 

[转载]单片机常用按键电路

   

 

 

   换种检测方式,就是先给定行,再检测列。比如行端口Px每次输出不是全部,而是只有一位输出为低,也就是预先给定了行,那么对应行有按键按下时,Py读回的值就代表按键所在列。Px口按位逐一输出低,每次读回Py值,这样的处理方式,更贴近扫描的含义。因为按键是机械动作,相对单片机运行速度来说,一次扫描流程足够检测到按键按下的动作。这种扫描方式就是逐行全列扫描。见流程图。

 

 

 

 

 

 

   这种扫描方式的特点是逐行扫描,有多少行就扫多少次,当有按键按下时,行列数就确定了。虽然显得麻烦点,但好处是Px只需是输出而Py只是输入,Px输出每次只有唯一的一位为低,这样的特点就可以对端口数进行简化,比如使用译码器。如图所示:
[转载]单片机常用按键电路
由图可以看出,同样按键数,增加一个138译码器之后,CPU所用端口数就减为5了。

[转载]单片机常用按键电路


 

Px口的3位只需输出0到7,译码器输出就能得到和前面一样的行扫描信号。这时候的程序处理流程,和上面的略有不同,主要是行的表示上不同。上面是行数的对应位表示对应行,下面的是行数的对应值就是对应行。程序框图如所示。

逐行扫描还有另外一个用处,就是当系统中有需要动态扫描的装置比如LED数码管或点阵时,行扫描线就可以为其提供动态扫描信号,这样也是为了减少端口使用数量,达到信号复用并减少代码量的目的。


 

 

 

 

 

除了上面提到的几种按键电路,还有一种按键电路,使用更少的端口数量,如图

[转载]单片机常用按键电路
 

该电路同矩阵式按键电路一样,所不同的是行列端口使用的是同一个端口,并且矩阵的一条对角线上按键由二极管代替。如此图所示,

按键数Knum=Pnum*(Pnum-1),其中Pnum就是使用的端口数。

以4个端口数为例,

一对一连接方式只能是4个按键;

不带译码器最多4个按键,

使用2-4译码器或3-8译码器方式最多8个按键

而这种电路可以达到12个按键。此电路程序部分和不带译码器的一样,只是注意对角线上被二极管替代的地方没有按键。

关键字:单片机  按键电路 引用地址:单片机常用按键电路

上一篇:FIFO程序设计解析(队列指针)
下一篇:快速排序+二分查找与哈希表

推荐阅读最新更新时间:2024-03-16 14:28

瑞萨新一代“RX系列”微控制器
· 快速、高性能 CPU—— 新型架构可实现 200MHz 的高速运行,每个时钟周期可以同时处理更多的指令: Dhrystone v2.1 基准测得的结果为 1.25MIPS/MHz 。 该新型 CPU 采用了哈佛( Harvard )架构,可以提供独立的地址和数据通道,有助于实现一个周期内的指令执行和数据存取。这种单周期能力已通过现场使用瑞萨 MCU 进行了测试和验证。为了确保尽可能高的性能,瑞萨对该架构进行了严谨的设计和广泛的测试工作。因此,新型架构通过对寄存器、指令和地址模式的有效利用而进行了充分的优化。此外,它还有 16 个 32 位通用寄存器,有助于 CPU 处理所有可用寄存器的数据和地址。
[新品]
AVR单片机教程——开发环境配置
今天去交大密院参观了设计展,无外乎两个主题:Arduino、Python。 关于Python,我印象最深的是一位Python程序员的话:你要硬核的话,可以去那边看Java。 拜托,都9102年了,Java已经算得上硬核了?是Python太好用,还是Java版本更新太快了?真正的硬核,绝对BrainFuck莫属,如果要实际一点,也是C++、Haskell之辈,当Java在他们口中称得上硬核的时候,我觉得我可以换一个展台了。 于是我来到了全是Arduino的楼层。看到那么多Arduino,我不禁疑惑,虽然Arduino是最常见的开发板,但也不至于完全没有STM32的踪影吧?问了才知道,是教授要求他们用Arduino的,我也就无
[单片机]
AVR<font color='red'>单片机</font>教程——开发环境配置
基于MSP430系列单片机的常用程序编写总结
前一段时间一直在用TI公司的MSP430系列的单片机,总结了点430常用的程序框架。 a.循环低功耗、中断服务程序唤醒 void main() { 关闭开门狗; 初始化时钟; 初始化端口; 初始化屏幕; 其他外围必要的初始化; 开中断; while(1) { 进入低功耗模式; 执行某函数; } } 中断函数1 { 退出低功耗; 中断服务程序; } 例如: 1 #pragma vector= ADC 12_VECTOR 2 __in te rrupt void ADC12ISR (void) //AD转换中断服务程序 3 { 4 sta TI c unsigned char index = 0; 5 LPM3_EXIT; 6
[单片机]
基于MSP430系列<font color='red'>单片机</font>的常用程序编写总结
用于Freescale HCS12系列MCU的通用编程器设计
为了实现飞思卡尔公司HCS12系列MCU的在线编程,通过软件架构和可移植性的方法设计了一个通用编程器。通过早期做的很多HCS12系列MCU芯片的编程实验,获得了它们的共性和差异性,通过软件设计的方法实现了对HCS12微控制器的在线编程,并侧重于研究编程器的通用性和高速下载特性。编程器具有通用性和使用便捷性。 随着Flash技术在微处理器上的广泛应用,单片机在开发和应用手段上有了革命性的变化,从传统的仿真器(ICE)到目前流行的JTAG等。设计人员仍然在不断地寻找一种移植性更高、更易操作、费用更低的开发手段。随着微处理器制造工艺的提高,一些高端微处理器(如CPU12/16/32、PowerPC、ColdFire等)内部已经包
[单片机]
用于Freescale HCS12系列<font color='red'>MCU</font>的通用编程器设计
基于PPP协议单片机拔号上网的设计与实现
引言 20 世纪90年代,以因特网为代表的计算机网络通信技术的发展和应用取得了前所未有的突破和成功,单片机上网技术在生活和现代建设的各方面的应用和研究随之成为当今一个热门话题。8位、16位单睡机的因为其较好的性价比,在测控领域仍然占据着重要地址。这些单片机的RAM、ROM一般都很小,而网络协议通常嵌入在操作系统中,无法把庞大的操作系统直接安装在这样的单片机中。所以,要实现上述单片机通过拔号直接连上因特网,需要考虑的主要技术就是如何在单片机上嵌入能符号需要的经过简化的网络协议。这就是本文所要讨论的主题。 本文着重分析所用数据包的类型和选项,给出几个典型数据包的格式。 一、PPP协议简介 IETF 成立了一个小组,推出了点
[单片机]
基于PPP协议<font color='red'>单片机</font>拔号上网的设计与实现
51单片机之串口操作入门经验总结与C源程序
用计算机来控制单片机,进而控制继电器等其他外设,感觉不错啊,怎么实现呢?一步步来吧。 单片机串行口通信,也就是单片机与计算机之间的通信,要实现,要明白一些基本的概念。 (1)实现之前,请确定串口正常,我之前做过串口操作,烧了不能控制,后来才发现,设备管理器里串口有叹号,驱动有问题,可能是开发实验板没有插好或是换了个USB口造成的(我用的是串口转USB的,笔记本用) (2)串口初始化,这方面,最好有相关的书来的,明白消化定时器与中断, 这样操作起来就容易了。 一。设定串口的工作方式:设定SCON寄存器。 什么是SCON呢? SCON寄存器是51单片机一个可寻址的专用寄存器,用于串行数据通信的控制,其字节地址为:98H,位地址为:98
[单片机]
基于RISC技术的8位微控制器设计
摘要:介绍基于RISC技术的8位微控制器的设计与实现。主要包括RISC指令集的选取;取指单元、译码单元、执行单元的设计;取指、译码、回写三级流水线技术的实现。该微控制器包含8级硬件堆栈、1个8位计数器、1个计数器溢出中断、2个外部中断源、8位数据输入和输出端口、16个通用寄存器、2K%26;#215;16位的程序存储器、512字节的数据存储器。设计使用可综合的Verilog语言描述, QuartusⅡ软件仿真,FPGA器件验证实现。 关键词:RISC Verilog 8位微控制器 FPGA 引 言 随着微电子技术的不断发展,超大规模集成电路的集成度和工艺水平不断提高,将整个应用电子系统集成在一个芯片中(SoC),已成为现代电子系
[半导体设计/制造]
座舱域控制器硬件架构方案:SoC + MCU
座舱域控制器是什么 座舱域控制器(Cabin Domain Controller)是一种用于航空飞机中的电子系统,用于集中管理和控制飞机内部的各种功能和系统。它是飞机电气系统的关键组件之一。 座舱域控制器的主要功能是将飞机上的各种设备和系统进行集成和协调,以实现对飞机座舱内部的各种功能和服务的控制和管理。它承担了多个子系统的集中控制和管理任务,包括各种显示系统、通信系统、音视频系统、照明系统、环境控制系统、安全系统等。座舱域控制器通过接收和处理来自这些子系统的命令和数据,控制和协调它们的工作状态,并向座舱内的用户提供各种功能和服务。 座舱域控制器还负责监测和诊断座舱各个子系统的状态和健康状况。它可以通过传感器和数据总线获取各个
[嵌入式]
座舱域控制器硬件架构方案:SoC + <font color='red'>MCU</font>
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved