键盘编码芯片MM74C922

来源:本站
导读:目前正在解读《键盘编码芯片MM74C922》的相关信息,《键盘编码芯片MM74C922》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《键盘编码芯片MM74C922》的详细说明。
简介:为了节省单片机的 IO 接口,可以使用外接芯片来驱动 4×4 的键盘。 MM74C922,就是一块较好的 4×4 的键盘编码芯片。

4×4的键盘,在单片机系统中,是很常见的。一般都是占用一个单片机的8位接口。

对于这种输入设备,通常是由单片机来识别某行某列的按键是否按下,还需要延时消抖等等。

为了节省单片机的IO接口,也可以使用外接芯片来驱动4×4的键盘。

MM74C922,就是一块较好的4×4的键盘编码芯片。

它能够自己独立地进行键盘检测、消抖,以8421码给出键值。

它还能给出按键是否按下的标志,其数据线还具有三态输出的功能,便于进行总线连接。

总之,这块芯片功能很全面。

美中不足的是:它是以输出1来代表有键按下。如果用来向51单片机申请中断,还需要加上一个反相器。

下图就是利用MM74C922驱动的4×4键盘的电路图。

键盘编码芯片MM74C922

图中使用了六位共阳数码管,位选的驱动,加了反相器7404,制作实际的电路时,应该使用8550。

百度知道上面有一个问题,要求把每次的按键,依次的显示在各个数码管上,并不是以前常见的移位显示。

题目链接:http://www.ippipp.com/group/topic/id/1915。

仿照题目的要求,编写了如下的程序:

;--------------------------------------

D_BUFEQU30H;30H~35H为显示缓冲区

;

ORG0000H

MOVR1,#D_BUF

M_LOOP:

CALLDISP

JNBP2.6,M_LOOP;没有按键就转移

CALLREADKEY

MOV@R1,A;存入键值

INCR1

CJNER1,#D_BUF+6,M_LOOP

SJMP0000H

;--------------------------------------

READKEY:

MOVP0,#255;关闭显示,准备读键

CLRP2.7;/OE=0

NOP

MOVA,P0

SETBP2.7

ANLA,#15

PUSHACC

R_LOOP:

CALLDISP

JBP2.6,R_LOOP;等待释放

POPACC

RET

;--------------------------------------

DISP:;共阳数码管,P0:段,P2:位(有反相)

MOVR2,#254;位选,低电平有效

MOVR0,#D_BUF

MOVA,@R0

ADDA,#(TAB-$-3)

MOVCA,@A+PC

MOVP2,#255

MOVP0,A

MOVP2,R2

DJNZR7,$;显示1024T

DJNZR7,$

MOVA,R2

RLA

MOVR2,A

INCR0

CJNER0,#D_BUF+6,$-19;显示6位

MOVP2,#255

RET;占用时间约为6.1ms

;-----------------------

TAB:;共阳段码

DB0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H;0~7

DB080H,090H,088H,083H,0C6H,0A1H,086H,08EH;8~F

END

;--------------------------------------

本程序,可以驱动MM74C922,正确读出键值,依次显示在数码管上。

按照我设计的电路,这块芯片仅仅单独占用了单片机的两条IO口线,就实现了16个按键的驱动,确实是非常节省资源。

本电路、程序,用PROTEUS仿真成功了,暂时还没有进行硬件实验。

提醒:《键盘编码芯片MM74C922》最后刷新时间 2024-03-14 00:57:37,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《键盘编码芯片MM74C922》该内容的真实性请自行鉴别。