节约单片机端口资源的键盘电路

发布者:温柔心绪最新更新时间:2011-09-28 关键字:单片机端口资源  键盘电路 手机看文章 扫描二维码
随时随地手机看文章

  1 新型键盘电路

  键盘电路是单片机应用系统最常用的人机接口,往往要占用较多的I/O端口,利用本文介绍的电路,可以最大限度地减少键盘电路对I/O端口的点用。本电路特别适合一些引脚少、结构紧凑的单片机,可为其节省宝贵的I/O资源。

  这里以3根I/O线为例,普通接法只能接3个键,即使是采用改进后的组合接法[1],最多也只能接7个链,本文介绍的电路是在组合接法的基础上增加了3个二极管,并采用了新的接法。其软件处理使用了端口访问和扫描检测两种方法,从而使按键数可达到16个,同时由于采用了组合逻辑来直接对端口进行读取,因此极大地简经了程序的处理过程,同时也节省了宝贵的存储器和CPU运算资源。图1是该电路的电路原理图。

  

 

  2 软件过程和程序

  该电路在程序处理时,由处理器首先向I/O1~I/O3写高电平,然后读入。如果非全“1”,说明,K0~K6中有键按下,此时可根据读入的端口状态判断键的状态,如果读入的结果为全“1”,则I/O1~I/O3轮流输出低电平,再读入,这样就可根据另外两根I/O线的状态来判别是K7~K15中的哪一个键被按下。重复调用键盘处理子程序可将读取的键值与上次的值进行比较,甚至两次读数相同为止,这样即可消除按键抖动所造成的误读。该电路选用的单片机为 AT89C2051,用C51语言编写的按键电路处理程序如下:

  #include

  #define uchar unsigned char

  uchar getkey(void);

  uchar keyvol;

  void main(void)

  {

  keyvol=getkey(); /*调用键处理函数,返回的数据等于16表示同有键按下,0至15对应k0至K15*/

  }[page]

以下为键盘处理子程序:

  uchar getkey(void)

  {

  uchar x

  P1=P1|0x07; /*I/O1至I/O3写“1”*/

  xP1&0x07; /*读入I/O1至I/O3并屏蔽其它位*/

  if(x= =10)

  {

  P1=P1|0x07;

  P1=P1&0xfd; /*I/O2写“0”*/

  x=P1&0x07;

  x=(x+1)/2+10; /*屏蔽I/O2并转换K10至K12的键值*/

  if(x = =13)

  {

  P1=P1|0x07;

  P1=P1&0xfb; /*I/O3写“0”*/

  x=P1&0x07;

  x=x+13; /*屏蔽I/O3并转换K13至K15的键值*/

  }

  }

  }

  return x;

  }

  利用该键盘电路并根据逻辑组合原理可推断开n条I/O线可组合的按键数N为:

  N=(2n-1)+(2 n-1 -1)n

  表1给出了2至4条I/O线可组合的按键数。

  表1 2~4条I/O线可组合的按键数

  I/O线 可组合按键

  2 5

  3 16

  4 43

  3 结束语

  这种新型键盘电路在使用时非常稳定可靠,节省大量的I/O端口,而且程序处理也很简洁,速率比4×4的扫描式电路还要快,因此,该电路特别适合一些引脚较少的单片机,如PIC12C508、Z86E03以及AT89C2051等。

 

 

关键字:单片机端口资源  键盘电路 引用地址:节约单片机端口资源的键盘电路

上一篇:用单片机模拟2262软件编码
下一篇:基于PSTN设计的家用电器远程控制系统

推荐阅读最新更新时间:2024-03-16 12:42

简单的4×4行列式键盘控制电路设计
  1.概述   键盘是一组按压式开关的集合,是微机系统不可缺少的输入设备,用于输入数据和命令。键盘的每一个按键都被赋予一个代码,称为键码。键盘系统的主要工作包括及时发现有键闭合,求闭合键的键码。根据这一过程的不同,键盘可以分为两种,即编码键盘和非编码键盘。编码键盘是通过一个编码电路来识别闭合键的键码,非编码键盘是通过软件来识别键码。由于非编码键盘的硬件电路简单,用户可以方便地增减键的数量,因此在单片机应用系统中,非编码键盘得到广泛的应用,有较好的应用价值。   2.设计原理   首先应该了解本次设计的基本要求和目的,再通过查找资料了解80C51单片机的工作原理、结构图,数码显示管的结构和工作原理。根据设计要求可以将单片机P
[单片机]
简单的4×4行列式<font color='red'>键盘</font>控制<font color='red'>电路</font>设计
51单片机键盘接口电路(含源程序)
键盘是由若干按钮组成的开关矩阵,它是单片机系统中最常用的输入设备,用户能通过键盘向计算机输入指令、地址和数据。一般单片机系统中采和非编码键盘,非编码键盘是由软件来识别键盘上的闭合键,它具有结构简单,使用灵活等特点,因此被广泛应用于单片机系统。 按钮开关的抖动问题 组成键盘的按钮有触点式和非触点式两种,单片机中应用的一般是由机械触点组成的。在下图中,当开 键盘结构图 图1 图2 关S未被按下时,P1。0输入为高电平,S闭合后,P1。0输入为低电平。由于按钮是机械触点,当机械触点断开、闭合时,会有抖动动,P1。0输入端的波形如图2所示。这种抖动对于人来说是感觉不到的,但对计算机来说,则
[单片机]
51<font color='red'>单片机</font><font color='red'>键盘</font>接口<font color='red'>电路</font>(含源程序)
数码预置电路以及128键的键盘扫描电路
数码预置电路 该电路的功能是把键盘按键信号变换成2位BCD码,并存储下来。图4-6-1为该编码及存储电路的逻辑图。 键盘扫描电路 在上例中,键盘规模较小,仅有0-9十个键。如果键盘规模较大,则用优先编码器等组合元件来实现编码将是不经济的。为此人们设计了键盘扫描电路。图4-6-2给出了128键的扫描编码器。
[工业控制]
数码预置<font color='red'>电路</font>以及128键的<font color='red'>键盘</font>扫描<font color='red'>电路</font>
键盘电路实例分析:上拉电阻错误导致51单片机无法正常运行
在电路设计中,为了将电阻钳位维持在高电平,会借助上拉电阻来实现电阻的稳定,因此上拉电阻开始大量出现在电路设计中。本文从以键盘电路实例为切入点,为大家分析一种由于上拉电阻位置原因导致51单片机电路无法正常运行的情况。 首先让我们来看一看这个键盘电路的原理图,如图1所示。 图1 在按键没有被按下时,端口为低电平,按下按键的时候端口上接高电平。但电路却没有正常工作,出现了问题。 下面就来分析一下问题所在。首先,将电源直接接到端口上是绝对不可以的。当按下按键时,会有很大的电流进入单片机。在工程上,这种往往应该加限流电阻,一般选择1K即可。 但也不能选择太大的电阻,因为电阻上面压降太大,造成输入低于应有的高电平,造成错
[单片机]
<font color='red'>键盘</font><font color='red'>电路</font>实例分析:上拉电阻错误导致51<font color='red'>单片机</font>无法正常运行
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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