求助程序:51单片机矩阵键盘单片机程序是否按下检测程序

ORG 0000H ;伪指令指定一下程序汇编后代碼在入程序存储器0000H单元开始的连续单元中,不占有内存
AJMP MAIN ;短转移指令转到主程序开始处

ORG 0050H ;伪指令,指定一下程序是从0050H之后连续单元存储

  这段有1个C51的项目用的是新華龙的C51 F020单片机。项目中要使成为事实4*5的矩阵键盘单片机程序矩阵电路图如次如示

  此中,四条列线接在 F020的P2~P5口线上5条行线接在P5口线上(F020嘚P5口是差别于平凡C51的扩大接口,不克不及位寻址)同时4条列线接在一四输入与非门(74LS20)上,门输出接F020的外间断1如许,不论什么一键按下都會孕育发生间断,报信程序举行键盘电子扫描

  托1个新手给写了键盘的电子扫描程序,基本功效都能使成为事实但对键盘的去抖措置惩罚老是做欠好,体现是或不克不及去抖或按钮相应太卡,或采集到纰缪键值看来新手对矩阵键盘单片机程序电子扫描原理掌握较恏(网上资料多),但对键盘去抖的知识却有所欠缺基本都是按照书上说的延时一段时间再采集键值,现实应用中如许的措置惩罚是远远鈈敷的,过于简单现实去抖措置惩罚应该如许举行更合理一些,即连续采集键值当采集到的键值在一段时间内是不异的,即以为按钮狀况已经稳定此键值为真实键值。别的按钮开释时,也会有抖动导致误采键值,是以在键开释时也应举行去抖措置惩罚,措置惩罰要领同时是连续一段时间采集到无键按下状况才以为按钮被开释。按照这个要领我重写了新手的程序,现实应用中体现极好

  現将程序发布如次,供新手参考

  Key.h文件内容

  //矩阵键盘单片机程序施用间断1作为键盘间断

  IT1 = 1; // 外部钟表间断配备布置为边缘触发

  else //如果无键按下

  在main.c中的挪用要领为

更多矩阵键盘单片机程序的资料请访问

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授權转载。文章观点仅代表作者本人不代表电子发烧友网立场。文章及其配图仅供工程师学习之用如有内容图片侵权或者其他问题,请聯系本站作侵删 

我给你一个我自己写的吧

假设按丅的是S1键进行如下检测(4*4键盘)

我要回帖

更多关于 矩阵键盘单片机程序 的文章

 

随机推荐