历史上的今天
今天是:2025年03月22日(星期六)
2021年03月22日 | 浅谈单片机的按键去抖问题
2021-03-22 来源:eefocus
简介:本文是我用C51语言写的一个按键去抖程序,大家定会问为什么要去抖呢,说到这里,我要说下去现在去抖的方法有几种,去抖有两种方式,一种是硬件去抖,一种是软件去抖,硬件去抖是加一个电容就可以了,这要加大成本,和电路的复杂性。我们在开发C51的时候一般最常用的是软件去抖。下面看这个矩阵键盘的去抖程序吧。
#include #include #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++); }
史海拾趣
|
美国国家半导体公司宣布推出一款新的脉冲宽度调制(PWM)降压控制器,其特点是采用美国国家半导体独有的仿电流模式(ECM)结构,确保输出电压时占空比可以降至最低,而开关频率可以高达1.5MHz。 这款型号为LM3495的降压控制器可为ASIC、FPGA、数字信号 ...… 查看全部问答> |
|
2.4 TI浮点DSP芯片 2.4.1 TMS320C3X TMS320C3X是TI的第三代产品,也是第一代浮点DSP芯片。TMS320C3X中目前具有TMS320C 30、TMS320C31和TMS320C32三种。TMS320C31是TMS320C30的简化和改进型,它在TMS320 C30的基础上去掉了一般用户不常用的 ...… 查看全部问答> |
|
为何在数字信号处理系统价格如此低廉而且功能如此强大时,仍推荐模拟信号处理? 解答:因为有些时候模拟信号处理价格甚至更为低廉,而且可以完成数字信号处理不能完成的功能。模拟信号处理电路的销量可以证明这种说法。 伦敦南肯辛顿(South Kensington)科学博物馆建于维多利亚女王统治时期。尽管它运行良好而且很值得参 ...… 查看全部问答> |
|
本帖最后由 paulhyde 于 2014-9-15 09:01 编辑 QQ号:89212186 集各省高手,猜09赛题! 大家抓紧时间,多多交流,争取缩小赛题! … 查看全部问答> |
|
89年毕业,国企4年,民企2年,港企7年,意企5年,日韩合资企业2年,经历非标设备、玩具、电子、自动化设备行业。 在珠三角亲历了“中国制造”的繁荣壮大,也感受到目前金融海啸带来的凛冽气息,对“中国制造”有一些管窥之见,结合本人的经历,在 ...… 查看全部问答> |
|
摘自:arm linux fpga 嵌入0群 49900581(超级群) 群主在坛子里ID:wangkj wangkj:32. 如何用 diff 及其他工具写一个版本控制系统?(要有 check in, check out, file lock .. 等功能) 先知_找到了:不是都有免费 ...… 查看全部问答> |
|
请教各位: 在正常情况下,手按住触摸屏会出现一个小圆圈,然后弹出菜单:图标排列方式、刷新、粘贴、新建文件夹、属性等 类似鼠标右键功能 但是我的PDA用一段时间后就没有这个功能了,长按触摸屏,相当于只按左键,并不弹出菜单 ...… 查看全部问答> |
|
vxworks5.5是否对PCI Express能够支持? 还是只要BSP中对其支持就可以了? 刚学VxWorks不是很长时间,对很多问题不是很清楚,希望各位能够帮我解答这个问题,还有就是在VxWorks下写PCI Express设备的驱动与PCI设备的驱动区别大吗?… 查看全部问答> |
|
我现在有两个电路模块,需要互相通信,数据量少,采用类似485的通信就可以了。但是我想用通信线由其中的一块电路板给另外电路板供电,即两根线既用来通信又做电源线,请问大家有做个类似项目的吗?给点思路啊。谢谢!… 查看全部问答> |




