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

发布者:温柔心绪最新更新时间: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>无法正常运行
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

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

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