首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 电子制作
单片机电路中输入键的扩展
来源:本站整理  作者:佚名  2009-03-05 17:24:12



    笔者在实际制作中采用另外一种结构的按键输入方式,可使键的数量增加不少。例如同样使用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

 

 

关键词:

·上一文章:轮式机器人的制作
·下一文章:LED电子万年历

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)
Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:104,406.30000 毫秒