节约端口线及器件的新型键盘程序

2018-01-14 20:33:05编辑:什么鱼 关键字:端口线  键盘程序

键盘电路是 单片机 应用系统最常用的人机接口,往往要占用较多的I/O端口, 现在有些很节约I/O资源的键盘电路,如本站转载的这篇文章 http://www.fxdzw.com/dpj/jyio.htm ,但它在键盘上使用的二极管较多,或有些使用的编码芯片。利用本文介绍的电路,可以最大限度地减少键盘电路对I/O端口的点用 和器件。本电路特别适合一些直接搭焊、或需要导线延长键盘(如密码锁) 其节省宝贵的延长线数量。

 

2 硬件原理

       这里以4根I/O线为例,普通接法只能接4个键,本文介绍的电路是在组合接法的基础上增加了4个二极管。其软件处理使用了端口扫描检测方法,从而使按键数可达到12个,同时由于采用了组合逻辑来直接对端口进行读取,因此极大地简经了程序的处理过程。下图是该电路的电路原理图。 也可以根据此原理图类是做3线、5线等的键盘。

  

3 软件过程和程序

      检测过程:先将口1执低电平,然后读取口2、3、4,如有低电平则端口对应的按键被按下;如都是高电平,则将口2执低,然后读取口1、3、4,以此类推。

程序如下:

;端口定义
K1 BIT P1.0
K2 BIT P1.1
K3 BIT P1.2
K4 BIT P1.3

;******************************************
; 键盘扫描
;******************************************
KEY: SETB K2 ;一行
SETB K3
SETB K4
CLR K1
JB K2,KEY1
LCALL T1MS
JB K2,KEY1
MOV KEYZ,#01H
KT1: JNB K2,KT1
LJMP KEYOUT
KEY1: JB K3,KEY2
LCALL T1MS
JB K3,KEY2
MOV KEYZ,#02H
KT2: JNB K3,KT2
LJMP KEYOUT
KEY2: JB K4,KEY3
LCALL T1MS
JB K4,KEY3
MOV KEYZ,#03H
KT3: JNB K4,KT3
LJMP KEYOUT
KEY3: SETB K1 ;二行
CLR K2
JB K1,KEY4
LCALL T1MS
JB K1,KEY4
MOV KEYZ,#04H
KT4: JNB K1,KT4
LJMP KEYOUT
KEY4: JB K3,KEY5
LCALL T1MS
JB K3,KEY5
MOV KEYZ,#05H
KT5: JNB K3,KT5
LJMP KEYOUT
KEY5: JB K4,KEY6
LCALL T1MS
JB K4,KEY6
MOV KEYZ,#06H
KT6: JNB K4,KT6
LJMP KEYOUT
KEY6: SETB K2 ;三行
CLR K3
JB K1,KEY7
LCALL T1MS
JB K1,KEY7
MOV KEYZ,#07H
KT7: JNB K1,KT7
LJMP KEYOUT
KEY7: JB K2,KEY8
LCALL T1MS
JB K2,KEY8
MOV KEYZ,#08H
KT8: JNB K2,KT8
LJMP KEYOUT
KEY8: JB K4,KEY9
LCALL T1MS
JB K4,KEY9
MOV KEYZ,#09H
KT9: JNB K4,KT9
LJMP KEYOUT
KEY9: SETB K3 ;四行
CLR K4
JB K1,KEY10
LCALL T1MS
JB K1,KEY10
MOV KEYZ,#0AH
KT10: JNB K1,KT10
LJMP KEYOUT
KEY10: JB K2,KEY11
LCALL T1MS
JB K2,KEY11
MOV KEYZ,#0BH
KT11: JNB K2,KT11
LJMP KEYOUT
KEY11: JB K3,KEY
LCALL T1MS
JB K3,KEY
MOV KEYZ,#0CH
KT12: JNB K3,KT12
KEYOUT: RET

;********************************************
; 延时
;********************************************
T1MS: MOV R4,#0FEH ;1ms延时
T1MS0: NOP
NOP
DJNZ R4,T1MS0
RET


关键字:端口线  键盘程序

来源: eefocus 引用地址:http://www.eeworld.com.cn/mcu/article_2018011437360.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:DS18B20,源程序测试OK
下一篇:1602液晶屏驱动源程序

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

用微控制器单端口线驱动多个LED显示器

许多仪器设计中都需要七段显示器。在基于微控制器的常规设计中,一个七段显示器使用四输出端线。图1为常规四位七段LED显示器示意图。在该例中,四位七段LED需要两个8位输出口。图2为另一个通用显示器多路设计,1.5个8位端线驱动四个七段显示器。因为有视觉暂留,必须对显示器进行不断刷新,使其看起来稳定。 图3的电路不需要多个端口线,用一个端口线驱动四个显示器。(理论上,用这种方法,一个端口线可以驱动任意多个显示器)。一旦需要更新显示,端口线应输出软件产生的脉冲链。第一个脉冲应为长脉冲,后续脉冲为数量等于显示器个数的多个短脉冲。 IC1单稳态和与门用作长脉冲探测器。IC2到IC5(CD40110)为十进制升降计数/锁存/显示器
发表于 2007-04-26 11:26:07

用微控制器单端口线驱动多个LED显示器

许多仪器设计中都需要七段显示器。在基于微控制器的常规设计中,一个七段显示器使用四输出端线。图1为常规四位七段LED显示器示意图。在该例中,四位七段LED需要两个8位输出口。图2为另一个通用显示器多路设计,1.5个8位端线驱动四个七段显示器。因为有视觉暂留,必须对显示器进行不断刷新,使其看起来稳定。 图3的电路不需要多个端口线,用一个端口线驱动四个显示器。(理论上,用这种方法,一个端口线可以驱动任意多个显示器)。一旦需要更新显示,端口线应输出软件产生的脉冲链。第一个脉冲应为长脉冲,后续脉冲为数量等于显示器个数的多个短脉冲。 IC1单稳态和与门用作长脉冲探测器。IC2到IC5(CD40110)为十进制升降计数/锁存/显示器
发表于 2007-04-26 11:26:07

基于51单片机矩阵键盘程序

主程序1:void main(){   uchar i,j,k   i=0;   j=0;   while(1)   {      i=key();//键盘循环扫描,其值赋给变量数组table      if(i!=0)//键盘子程序返回值非0,即有按键按下      {          table[j]=i;//将值存在变量数组中j++;        
发表于 2018-06-25 20:42:57

采用AT89S51的并行口P1接4×4矩阵键盘程序

;   3.系统板上硬件连线设计    (1.      把“单片机系统“区域中的P3.0-P3.7端口用8芯排线连接到“4X4行列式键盘”区域中的C1-C4 R1-R4端口上;    (2.      把“单片机系统”区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P0.0/AD0对应着a,P0.1/AD1对应着b,……,P0.7/AD7对应着h。    4.  程序设计内容    (1. 
发表于 2018-03-08 21:39:48
采用AT89S51的并行口P1接4×4矩阵键盘程序

一个stc89c52单片机下的矩阵键盘程序

    下面是一个stc89c52单片机下的矩阵键盘程序,P0口接键盘,显示在P2口.     #include<reg52.h> #define uchar unsigned char #define uint unsigned int sbit key1=P3^2; sbit key2=P3^3;uchar code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};  //定义八个
发表于 2018-03-08 21:25:02

合泰单片机矩阵键盘程序

合泰HOLTEK 单片机 写的,对初学者来说里面的分析思路很有帮助。 #include ht48c10-1.inc ;------------------------------------------------------- data .section ’data’            ;== data section ==temp    db &nb
发表于 2018-01-25 19:57:44

小广播

何立民专栏

单片机及嵌入式宝典

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

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