历史上的今天
返回首页

历史上的今天

今天是:2025年02月03日(星期一)

2020年02月03日 | 干货!8051单片机的反转法扫描键盘

2020-02-03 来源:elecfans

键盘扫描采用反转法读键:先从P2口的高4位输出零电平,从P2口的低4位读取键盘状态;再从P2口的低4位输出零电平,从P2口的高4位读取键盘状态,将两次读取的结果组合起来就可以得到当前按键的特征码(见程序中TABLE表)。有了这张表就可以编程,将它们转换成顺序码。用当前读得的特征码来顺序查表,用一单元记录查找次数。当在表中查到有该特征码时,它的位置(即查找次数)就是对应的顺序码。对应的键盘查键程序如下:

干货!8051单片机的反转法扫描键盘

KEY: MOV P2,#0FH ;用反转法查键

MOV A,P2

ANL A,#0FH

MOV B,A

MOV P2,#0F0H

MOV A,P2

ANL A,#0F0H

ORL A,B

CJNE A,#0FFH,KEY1

RET ;无键按下

KEY1: MOV B,A ;有键按下,存键码

MOV DPTR,#TABLE

MOV R3,#0FFH ;存顺序码单元初始化

KEY2: INC R3

MOV A,R3

MOVC A,@A+DPTR

CJNE A,B,KEY3 ;判键码,求顺序码

MOV A,R3 ;若找到键码,存顺序码

RET

KEY3: CJNE A,#0FFH,KEY2;判是否查完

RET ;已查完,键码未找到,以无按键处理

TABLE: DB 77H,7BH,0BBH ;按键特征码表

DB 0DBH,7DH,0BDH

DB 0DDH,7EH,0BEH

DB 0DEH,0B7H,0D7H

DB 0EEH,0EDH,0EBH

DB 0E7H,0C7H,0FFH

用C语言的写法

#include

#include

#include

#include

#include

#includeCC.h》

#define uchar unsigned char

#define uint unsigned int

keysCAN()

{

uchar i,h=0xfe;

for(i=4,P1=h;i》0;i--) //扫描

{

if((P1&0xf0)!=0xf0) //有键按下?

{

uchar a;

for(a=255;a》0;a--) //延时

{}

if((P1&0xf0)!=0xf0) //有键按下

{

uchar key,p;

p=P1;

for(key=0;key《16;key++) //查表

{

uchar code keytab[]={0xEE,0xDE,0xBE,0x7E, //键码表

0xED,0xDD,0xBD,0x7D,

0xEB,0xDB,0xBB,0x7B,

0xE7,0xD7,0xB7,0x77};

if(p==keytab[key]) //查到返回返回键号

{

P1=0xff;

return(key);

}

}

}

}

h=_crol_(h,1);

P1=h;

}

P1=0xff;

return(16); //没查到返回16

}

main()

{ while(1)

{P0=keyscan();

while(1)

;

}

}

推荐阅读

史海拾趣

AUSTIN公司的发展小趣事

随着汽车市场的不断变化和消费者需求的多样化,奥斯汀汽车也在不断调整市场策略和产品布局。公司根据市场需求推出了一系列新的车型,并积极拓展海外市场。虽然奥斯汀汽车在历史长河中经历了许多波折和挑战,但其品牌精神和传统始终得以传承和发扬。如今,奥斯汀汽车已经成为了英国汽车文化的重要组成部分,其经典车型和品牌形象仍然深受消费者喜爱。

这些故事展示了AUSTIN汽车公司在汽车行业中的发展历程,从创始与早期成功,到危机与重生,再到技术合作与国际化发展,以及产品创新与多样化,最终实现了市场调整与品牌传承。这些事实性的描述,旨在呈现AUSTIN汽车公司在历史长河中的真实面貌,而不涉及任何褒贬评价。

Conflux公司的发展小趣事

随着公司业务的不断发展,Conflux开始寻求与其他电子行业企业的合作。通过与智能手机制造商的合作,Conflux成功将其区块链技术集成到了手机支付应用中,为用户提供了更加便捷、安全的支付体验。此外,Conflux还与多家电商平台达成战略合作,利用区块链技术优化交易流程,提高交易透明度。这些合作不仅拓展了Conflux的市场份额,也进一步提升了其在电子行业的影响力。

Etco Inc公司的发展小趣事

进入21世纪后,Etco Inc公司意识到全球化趋势的不可逆转。为了拓展国际市场,公司决定实施全球化战略。首先,公司在美国本土之外建立了多个生产基地和研发中心,以便更好地满足全球客户的需求。其次,Etco加强了与国际客户的合作与交流,积极参与国际展览和研讨会,提高了品牌知名度和影响力。这些举措使Etco在全球电子连接器市场中的份额不断攀升。

ATOP_Technologies公司的发展小趣事

随着产品线的不断丰富和技术实力的提升,ATOP Technologies开始将目光投向更广阔的市场。公司积极参与国内外各类行业展会和交流活动,加强与同行和客户的交流与合作。同时,ATOP Technologies还积极开展国际合作,与多个国家的知名企业建立了战略合作关系,共同推动工业自动化领域的发展。

Bipolarics Inc公司的发展小趣事

在市场竞争日益激烈的背景下,Bipolarics Inc意识到单打独斗难以取得长久发展。于是,公司开始积极寻求与其他企业的战略合作。通过与一家知名的芯片制造商合作,Bipolarics Inc成功将其双极性晶体管技术应用于更广泛的领域,进一步提升了产品的竞争力。同时,这种合作也带来了双方在技术研发和市场推广方面的资源共享,推动了双方的共同发展。

Fastron公司的发展小趣事

Fastron公司非常重视与客户的合作关系。公司始终坚持以客户为中心的服务理念,为客户提供优质的产品和服务。Fastron不仅关注客户的需求和反馈,还积极与客户沟通合作,共同推动产品的升级和优化。这种紧密的合作关系使得Fastron与客户之间建立了长期稳定的信任关系,为公司的持续发展提供了有力保障。

问答坊 | AI 解惑

有需要电感、变压器样品的工程师请进来,可能会有您用到的产品。

本帖最后由 jameswangsynnex 于 2015-3-3 19:57 编辑 我工厂位于深圳观澜,是一家专业电感、贴片变压器生产商.在品质、交期、单价各方面都有一定的优势.有需要这方面样品的工程师敬请联络索样,我会尽快免费提供给大家,谢谢! 美登一电子(深圳)有 ...…

查看全部问答>

智能电子钟程序

学习单片机十天,编写的智能电子钟程序。…

查看全部问答>

50Mhz分频的问题

怎么将50M的时钟分频成153600hz? 用普通的方法好像不能解决,因为除不尽。 我设想用一个pll,倍频后,再分 高手指教…

查看全部问答>

有操作系统的嵌入式设备和没有操作系统的嵌入式设备之间的区别

有操作系统的嵌入式设备和没有操作系统的嵌入式设备之间的区别,以及有操作系统的嵌入式设备的优点是什么??…

查看全部问答>

初学者问几个问题,关于wince与arm,望高人指教

首先,我用的是微芯力科的ws-430评估板,cpu为at91rm9200,要求用wince开发。 评估板附带的资料只有linux以及ucos系统的,没有wince的资料,打电话到微芯力科公司,被告知该板不支持wince,因为wince要求某尺寸的真彩屏幕,而我的板子上是一个128 ...…

查看全部问答>

如何验证下位机的串行发送程序

我现在没有芯片,只是在keilc中写的串行通信程序,我想验证一下它能不能实现发送字节,只有一台的情况下该如何做?其中发送字节程序是? void sendbyte(unsigned char word) { SBUF=word; while(TI==0);   TI=0; } …

查看全部问答>

到底怎么才算嵌入式编程?

会C语言就算是会嵌入式编程了吗?…

查看全部问答>

原以为写个usb驱动很简单

DOS下的usb storage驱动一个比一个不好用,我一急就决定自己写一个,结果搞了20天了,还一头浆糊,怎么办。想来想去还是原始社会好啊…

查看全部问答>

AD快捷键大全

挺全的,ad6的快捷键大全,很实用的…

查看全部问答>

如何使用MSP430外部计数信号TACLK

急求高手指点,我的做法是引脚TACLK连接外部频率信号,对外部信号直接计数,不知道为什么总是得不到计数值。 MSP430F2274 P1SEL |= BIT0; P1DIR &= ~BIT0; TACTL = TASSEL_0 + ID_0 + MC_2;…

查看全部问答>