电子文章 | 电子资料下载 | 家电维修 | 维修资料下载 | 加入收藏 | 全站地图
您现在所在位置:电子爱好者维修技术维修教程知识电子制作单片机电路中输入键的扩展

单片机电路中输入键的扩展

09-08 00:40:17 | http://www.5idzw.com | 电子制作 | 人气:884
标签:电子小制作,http://www.5idzw.com 单片机电路中输入键的扩展,http://www.5idzw.com

    笔者在实际制作中采用另外一种结构的按键输入方式,可使键的数量增加不少。例如同样使用8数据位总线可以将键增加到28个,最多可达36个,读键程序比矩阵式还简单,不知其他读者是否也用过类似形式的键盘电路。所以本文就电路原理和相关程序作些简述,目的是与读者共同探讨电路的实用性。

    电路如图所示,这里假设硬件使用的是MCS-51系列的P1口。读键程序流程图如图所示,读入键值前先向P1口写数据,即扫描值,使该端口始终有一位清0,其它位均为1,然后将P1 口数据读入累加器A。如果无键按下则读入的数据扫描值相等,即八位二进制数中仅有一位为0,此时标志寄存器的奇偶位P为1,程序按无键按下处理。如果有键按下则读入的数据必然有两位为0。此时奇偶位P为0,程序将键值临时存入B寄存器中,经延时去抖动后再读P1口数据,A与B寄存器比较是否相等,是则按有键闭合处理,否则按无键闭合处理。每完成一次键扫描无论有无键按下扫描值都左环移一位再写入P1口,循环判断所有的输入键。按键闭合确认后键值仍保存在A中,主程序进入判断转向程序寻找与键值对应的目标。

    为了便于程序阅读和少出差错。编程时使用与按键排列一致的二进制数。程序中的Q1至Q28表示的是要执行的程序,根据设计者的需要可用转移、调用指令。但执行完子程序后必须能够返回原处或主程序入口处。

    本电路用于AT89C2051芯片时应注意P1.0和P1.1内部无上拉电阻,需在外面分别对正电源连接10K左右的电阻,否程序无法正常工作。

    如果需要更多的按键可用GND分别对P1口每个I/O端连接一个按键,这样总共是36个键,主程序在判断 完上述的28个键后将P1口全部置位,逐位判断是否为零即可,程序简单,这里不再赘述,读者可自己编写,键扫描程序如下。

IN    EQU P1

STORE  EQU R5

TEMPl  EQU R6

TEMP2  EQU  R7

    ORG 0000H

    AJMP SETUP

    ORG 0020H

SETUP:MOV STORE.#11111110B:

    :键扫描主程序

MAINl:MOV lN,STORE:扫描值送定义的端口

    MOV A,IN:端口数据读入A

    JB P,MAIN2:奇偶标志是否为1

    MOV B,A  :否则键值送B暂存

    ACALL DELAY:延时去抖动

    MOV A.1N  :再读端口数据送A

    CJNE A,B,MAIN2:键值是否与第一次相等

    AJMP LOOKl:是则确定有键闭合

MAIN2:MOV A,sTORE;当前扫描值送A

    RL A:A左环移1位

    MOV STORE,A:送回扫描值存储器

    AJMP MAIN1  :转主程序入口

    :键值判断执行程序

LOOKl:CJNE A.#11111100B.LOOK2

    LCALL Q1

    AJMP MAIN2

LOOK2:CJNE A.#11111010B.LOOK3

    LCALL Q2

    AJMP MAIN2

LOOK26:CJNE A.#10011111B.LOOK27

    LCAI—L Q26

    AJMP MAIN2

LOOK27:CJNE A.#01011111B.LOOK28

    LCALL Q27

    AJMP MAIN2

LOOK28:CJNE A.#00111111B.LOOK29

    LCALL Q28

 LOOK29:AJMP MAIN2

:延时程序

DELAY:  MOV TEMPl.#01FH

 DELAYl:MOV TEMP2.#0FFH

    DINZ R7.$

    DJNZ R6,DELAYl

    RET

    END

 

 

,单片机电路中输入键的扩展
关于《单片机电路中输入键的扩展》的更多文章