历史上的今天
返回首页

历史上的今天

今天是: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++);

}


推荐阅读

史海拾趣

Elprotronic Inc.公司的发展小趣事

在电子行业中,客户服务质量直接关系到企业的声誉和市场竞争力。Elprotronic Inc.深知这一点,因此一直致力于优化客户服务体系。他们建立了专业的客户服务团队和客户服务热线电话等多种渠道来及时解答客户的咨询和问题。同时,公司还定期开展客户满意度调查活动收集客户反馈和建议以便及时改进和优化产品和服务。这些努力使得Elprotronic Inc.在客户服务方面赢得了良好的口碑和信誉也为公司的长期发展奠定了坚实的基础。

请注意,以上故事均为虚构内容,旨在展示Elprotronic Inc.公司可能的发展路径和故事。实际情况可能有所不同,具体细节请以公司官方发布的信息为准。

CAMBION公司的发展小趣事

在追求经济效益的同时,CAMBION公司也注重可持续发展和社会责任。公司积极推广环保理念,采用环保材料和节能技术生产电子产品。此外,CAMBION还关注社会公益事业,通过捐款、设立奖学金等方式支持教育事业和弱势群体。这些举措不仅提升了公司的社会形象,也为公司的长期发展奠定了坚实基础。

以上五个故事是基于电子行业的一般发展趋势和可能面临的挑战而构想的,它们并不特指CAMBION公司的实际发展经历。如需了解CAMBION公司的真实故事,建议查阅相关新闻报道、行业报告或公司官方资料。

E Connector Solutions公司的发展小趣事

随着公司业务的不断发展,E Connector Solutions公司开始积极拓展市场。公司通过参加国际展会、与海外客户建立合作关系等方式,逐步打开了国际市场的大门。同时,公司还积极实施国际化战略,通过设立海外研发中心、生产基地等方式,加强与全球客户的合作与交流。这些举措不仅拓宽了公司的业务范围,还提升了公司的国际竞争力。

FORMOSA公司的发展小趣事

在台湾,一家名为“FORMOSA电子元件制造厂”的公司,起初是一家小型电阻器生产商,专注于为本地电子制造商提供基础元件。随着个人电脑和消费电子市场的蓬勃发展,该公司敏锐地捕捉到市场需求,开始投资研发高精度、低成本的电子元件。通过不断的技术创新和质量控制,FORMOSA电子元件逐渐在国际市场上获得认可,成为多家知名电子产品制造商的供应商。公司还积极拓展海外市场,在欧洲和北美设立分支机构,进一步巩固了其在全球电子元件市场的地位。

AKM [Asahi Kasei Microsystems]公司的发展小趣事

随着互联网和电子商务的兴起,一家名为“FORMOSA电子商城”的平台应运而生。该平台利用先进的互联网技术,为电子产品制造商、分销商和消费者搭建了一个高效、便捷的在线交易平台。FORMOSA电子商城不仅提供丰富的电子产品选择,还通过智能化的推荐系统和优质的客户服务,为用户提供个性化的购物体验。平台还积极推动供应链的数字化转型,帮助合作伙伴优化库存管理、提高运营效率。在短短几年内,FORMOSA电子商城便成为了电子行业内知名的电子商务品牌。

DSMI Electronics SA公司的发展小趣事

DSMI Electronics SA公司非常重视企业文化的建设和团队建设。公司倡导开放、协作、创新、务实的企业文化,鼓励员工积极参与技术创新和市场竞争。同时,DSMI还注重人才培养和引进,通过内部培训、外部招聘等方式,不断提升员工的素质和能力。这些努力为公司的持续发展提供了有力的人才保障。

问答坊 | AI 解惑

国半推出新款PWM降压控制器,采用低噪音仿电流模式结构

美国国家半导体公司宣布推出一款新的脉冲宽度调制(PWM)降压控制器,其特点是采用美国国家半导体独有的仿电流模式(ECM)结构,确保输出电压时占空比可以降至最低,而开关频率可以高达1.5MHz。 这款型号为LM3495的降压控制器可为ASIC、FPGA、数字信号 ...…

查看全部问答>

DSP芯片的原理和开发应用(3)

2.4 TI浮点DSP芯片 2.4.1 TMS320C3X TMS320C3X是TI的第三代产品,也是第一代浮点DSP芯片。TMS320C3X中目前具有TMS320C 30、TMS320C31和TMS320C32三种。TMS320C31是TMS320C30的简化和改进型,它在TMS320 C30的基础上去掉了一般用户不常用的 ...…

查看全部问答>

为何在数字信号处理系统价格如此低廉而且功能如此强大时,仍推荐模拟信号处理?

解答:因为有些时候模拟信号处理价格甚至更为低廉,而且可以完成数字信号处理不能完成的功能。模拟信号处理电路的销量可以证明这种说法。   伦敦南肯辛顿(South Kensington)科学博物馆建于维多利亚女王统治时期。尽管它运行良好而且很值得参 ...…

查看全部问答>

09电赛猜题群!信号+控制类!

本帖最后由 paulhyde 于 2014-9-15 09:01 编辑 QQ号:89212186 集各省高手,猜09赛题! 大家抓紧时间,多多交流,争取缩小赛题!  …

查看全部问答>

外企机械工程师的二十年职业感悟

89年毕业,国企4年,民企2年,港企7年,意企5年,日韩合资企业2年,经历非标设备、玩具、电子、自动化设备行业。 在珠三角亲历了“中国制造”的繁荣壮大,也感受到目前金融海啸带来的凛冽气息,对“中国制造”有一些管窥之见,结合本人的经历,在 ...…

查看全部问答>

如何用 diff及其他工具写一个版本控制系统?

摘自:arm linux fpga 嵌入0群  49900581(超级群)  群主在坛子里ID:wangkj wangkj:32. 如何用 diff 及其他工具写一个版本控制系统?(要有 check in, check out, file lock .. 等功能) 先知_找到了:不是都有免费 ...…

查看全部问答>

请教关于CE下右键功能消失的问题

请教各位:    在正常情况下,手按住触摸屏会出现一个小圆圈,然后弹出菜单:图标排列方式、刷新、粘贴、新建文件夹、属性等 类似鼠标右键功能 但是我的PDA用一段时间后就没有这个功能了,长按触摸屏,相当于只按左键,并不弹出菜单 ...…

查看全部问答>

VxWorks5.5是否支持PCI Express

vxworks5.5是否对PCI Express能够支持? 还是只要BSP中对其支持就可以了? 刚学VxWorks不是很长时间,对很多问题不是很清楚,希望各位能够帮我解答这个问题,还有就是在VxWorks下写PCI Express设备的驱动与PCI设备的驱动区别大吗?…

查看全部问答>

信号线与电源线共用的问题

我现在有两个电路模块,需要互相通信,数据量少,采用类似485的通信就可以了。但是我想用通信线由其中的一块电路板给另外电路板供电,即两根线既用来通信又做电源线,请问大家有做个类似项目的吗?给点思路啊。谢谢!…

查看全部问答>

压力传感器!!!!

有没有高手用过压力传感器啊,用凌阳单片机采集信息。 主要内容:从一个容器向另一个容器注水,用压力传感器测出容器中水量变化,传给单片机处理。 有人推荐我使用MPX5010,但是以前没有用过,还请高手们指点啊!!!!!!!!!…

查看全部问答>