历史上的今天
返回首页

历史上的今天

今天是:2025年01月14日(星期二)

正在发生

2018年01月14日 | 节约端口线及器件的新型键盘程序

2018-01-14 来源:eefocus

键盘电路是 单片机 应用系统最常用的人机接口,往往要占用较多的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


推荐阅读

史海拾趣

APX Technologies公司的发展小趣事

面对日益激烈的市场竞争,APX Technologies积极寻求与其他企业的合作。公司与一家知名的电子设备制造商达成战略合作协议,共同开发一款具有创新功能的新型智能手机。这款手机的成功上市不仅提升了APX Technologies的品牌知名度,也为其带来了可观的利润。

EOS POWER INDIA Pvt公司的发展小趣事

在稳固了印度市场后,EOS开始积极拓展国际市场。公司参加了多个国际电子展会,与全球各地的客户和合作伙伴建立了广泛的联系。通过与国际知名企业的合作与交流,EOS不断吸收先进的管理经验和技术理念,并将其应用到自己的产品和服务中。这些举措不仅提升了EOS的国际知名度,还为公司带来了更多的商业机会。

Electroswitch公司的发展小趣事

随着市场竞争的加剧,Electroswitch意识到仅仅依靠产品质量已经不足以赢得市场。因此,公司开始注重提升服务质量,为客户提供更加全面和专业的支持。通过加强售前咨询、售后服务以及技术支持等方面的投入,Electroswitch成功赢得了客户的信任和忠诚。这也使得公司在电子行业中的地位得到了进一步提升。

DSMI Electronics SA公司的发展小趣事

DSMI Electronics SA公司始于20世纪90年代末,由一群志同道合的电子工程师和科研人员创立。在创业初期,公司就明确了自己的技术定位:专注于电子元件和模块的研发与生产,特别是针对嵌入式系统和工业自动化领域。他们凭借深厚的技术积累和不懈的努力,成功开发出了一系列性能稳定、质量可靠的电子元件,赢得了市场的初步认可。

Anaren公司的发展小趣事

DSMI Electronics SA公司非常重视企业文化的建设和团队建设。公司倡导开放、协作、创新、务实的企业文化,鼓励员工积极参与技术创新和市场竞争。同时,DSMI还注重人才培养和引进,通过内部培训、外部招聘等方式,不断提升员工的素质和能力。这些努力为公司的持续发展提供了有力的人才保障。

Daito Communication Apparatus Co Ltd公司的发展小趣事

自1948年成立以来,Daito公司一直致力于电子元器件的研发与生产。在公司的早期阶段,他们意识到保险丝在电子设备中的重要性,并决定投入大量资源进行研发。经过数年的努力,Daito公司成功开发出了高精度报警保险丝,这一创新产品凭借其卓越的性能和可靠性,迅速在市场上获得了认可。

高精度报警保险丝的成功并没有让Daito公司停止创新的步伐。他们不断对保险丝的失效原因与寿命进行预测和分析,通过全面质量管理,使产品质量得到了显著的提高。同时,Daito公司还将各系列保险丝的额定值多层次化,以满足不同客户的需求,扩大了顾客的选择余地。

问答坊 | AI 解惑

AVR309 USB to UART Protocol Converter 中文版

AVR309提供了一个比较完整的案例,从上位机软件、驱动程程序到下位机的硬件、固件都提供了完整的文档。是一个好的学习例子。 第一次做翻译,有些地方可能翻译得不是那么标准。 希望对后来者有一点帮助。…

查看全部问答>

光耦知识教程

主要内容如下.值的收藏. 光电耦合器的应用   光电耦合器的主要特点   光耦的检测方法   光耦的主要参数   光耦的主要参数   光耦的转换率(CTR)   什么是光电耦合器   ...…

查看全部问答>

全国大学生电子设计大赛历年题目

本帖最后由 paulhyde 于 2014-9-15 04:20 编辑 全国大学生电子设计大赛历年题目  …

查看全部问答>

电磁炉线圈改造不工作原因?

我把电磁炉线圈改造成筒状,就是对管状的物体加热,改造后怎么会不加热,通电后显示正常,就是将铁管穿入线圈选择加热后不加热,状态就和没有锅一样,在穿入的铁管上有轻微的间隔的“叮”声。请教大家我如何改造才能实现我的要求呢?…

查看全部问答>

ERROR:Pack:1107 - Unable to combine the following symbols into a single IOB

ERROR:Pack:1107 - Unable to combine the following symbols into a single IOB   component:    PAD symbol \"fosc_j\" (Pad Signal = fosc_j)    BUF symbol \"fosc_j_IBUF\" (Output Signal = fosc_j_IBUF)  ...…

查看全部问答>

调用RAS拨号,加载coredll.lib的现象

在利用RAS拨号的应用程序中,在加载coredll.lib库的时候出现如下问题:     #pragma comment(lib,\"coredll.lib\")//coredll.lib已拷贝至工程文件目录下 编译的时候报错:  corelibc.lib(secchk.obj) : error LNK2019: 无法 ...…

查看全部问答>

三星2510开发板,那家比较好??有没有那位朋友推荐推荐

三星2510开发板,那家比较好??有没有那位朋友推荐推荐…

查看全部问答>

EMC基本原理及PCB的EMC设计

资料不错,大家可以参考一下。 …

查看全部问答>

CosmicCxSTM84.2.4是做什么用的?

已经安装了STVD和STVP,但安装C编译器后,出来一个Cosmic CxSTM8 4.2.4,点开它似乎也可以建立项目?/ Cosmic CxSTM8 4.2.4是否为Cosmic的编辑环境?!例如类似IAR的这种编辑、编译、DEBUG一体的一种环境? 呵呵,如何把Cosmic的C编译器嵌入 ...…

查看全部问答>

EP4CE6F17C8的程序怎么才能吓到EP2C8Q208里

有EP4CE6F17C8的程序,一个处理视频的,现在只有EP2C8Q208的板子,改了型号和引脚还是有错误,求好心人指导一下。程序在附件里。…

查看全部问答>