谈一下单片机的键盘去抖问题

谈一下单片机的键盘去抖问题,第1张

概述 说起键盘,大家觉得一定没什么技术含量吧,如果你是学软件开发,不是ARM嵌入式或不是学芯片的,你们都可以这样说,因为他们可是门外汉呀,哈哈,说笑一下,下面是我用C51语言写的一个按键去抖程序,大家定会问为什么要去抖呢,说到这里,我要说下去现在去抖的方法有几种,去抖有两种方式,一种是硬件去抖,一种是软件去抖,硬件去抖是加一个电容就可以了,这要加大成本,和电路的复杂性。我们在开发C51的时候一般最常用 说起键盘,大家觉得一定没什么技术含量吧,如果你是学软件开发,不是ARM嵌入式或不是学芯片的,你们都可以这样说,因为他们可是门外汉呀,哈哈,说笑一下,下面是我用C51语言写的一个按键去抖程序,大家定会问为什么要去抖呢,说到这里,我要说下去现在去抖的方法有几种,去抖有两种方式,一种是硬件去抖,一种是软件去抖,硬件去抖是加一个电容就可以了,这要加大成本,和电路的复杂性。我们在开发C51的时候一般最常用的是软件去抖。下面看这个矩阵键盘的去抖程序吧。

如果有VC++/C ,VBS,C#,VB,单片机方面的问题,我们可以一同探讨一下,共同学习进步

这是我的博客,http://hi.baidu.com/979170768/blog

#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
sfr KeyPort=0x90;//#define KeyPort P1 -----行在P1口低四位
sbit Key_C1=P1^4; //第1列接P1.4
sbit Key_C2=P1^5; //第2列接P1.5
sbit Key_C3=P1^6; //第3列接P1.6
sfr Led=0x80 ; //#define Led P0--------P0口LED
voID delay(uchar ms);函数的声明
voID main()
{
Led=0xfe; 定义一个LED点亮
while(1)
{
KeyPort=0x6f; //0110 1111
if(KeyPort!=0x6f)// 是否有键按下
{
delay(10); //延时10ms 去抖
if(KeyPort!=0x6f) //再判断一下
{
switch(KeyPort) //进行矩阵键盘按键判断
{
case 0x6e: //0110 1110
Led=_crol_(Led,1);
break;
case 0x6d: //0110 1101
Led=_crol_(Led,4);
break;
case 0x6b: //0110 1011
Led=_crol_(Led,7);
break;
case 0x67: //0110 0111
Led=_crol_(Led,10);
break;
}
while(KeyPort!=0x6f); //松手检测
}
}

KeyPort=0x5f; //0101 1111
if(KeyPort!=0x5f)
{
delay(10);
if(KeyPort!=0x5f)
{
switch(KeyPort)
{
case 0x5e: //0101 1110
Led=_crol_(Led,2);
break;
case 0x5d: //0101 1101
Led=_crol_(Led,5);
break;
case 0x5b: //0101 1011
Led=_crol_(Led,8);
break;
case 0x57: //0101 0111
Led=_crol_(Led,11);
break;
}
while(KeyPort!=0x5f);
}
}

KeyPort=0x3f; //0011 1111 if(KeyPort!=0x3f) { delay(10); if(KeyPort!=0x3f) { switch(KeyPort) { case 0x3e: //0011 1110 Led=_crol_(Led,3); break; case 0x3d: //0011 1101 Led=_crol_(Led,6); break; case 0x3b: //0011 1011 Led=_crol_(Led,9); break; case 0x37: //0011 0111 Led=_crol_(Led,12); break; } while(KeyPort!=0x3f); } } } } voID delay(uchar ms) { uchar i; for(;ms>0;ms--) for(i=0;i<244;i++); }

总结

以上是内存溢出为你收集整理的谈一下单片机的键盘去抖问题全部内容,希望文章能够帮你解决谈一下单片机的键盘去抖问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1291221.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-10
下一篇 2022-06-10

发表评论

登录后才能评论

评论列表(0条)

保存