键盘编码芯片 MM74C922
来源:互联网 发布:电子表格相同数据排序 编辑:程序博客网 时间:2024/06/01 10:23
4×4 的键盘,在单片机系统中,是很常见的。一般都是占用一个单片机的 8 位接口。
对于这种输入设备,通常是由单片机来识别某行某列的按键是否按下,还需要延时消抖等等。做而论道以前写过不少这方面的博文。
为了节省单片机的 IO 接口,也可以使用外接芯片来驱动 4×4 的键盘。
MM74C922,就是一块较好的 4×4 的键盘编码芯片。
它能够自己独立地进行键盘检测、消抖,以 8421 码给出键值。
它还能给出按键是否按下的标志,其数据线还具有三态输出的功能,便于进行总线连接。
总之,这块芯片功能很全面。
美中不足的是:它是以输出 1 来代表有键按下。如果用来向 51 单片机申请中断,还需要加上一个反相器。
下图就是利用 MM74C922 驱动的 4×4 键盘的电路图。
图片链接:http://xiangce.baidu.com/picture/detail/8d3b08f9c6212ac71b9a4c2ce7d3b3126a1920c3
图中使用了六位共阳数码管,位选的驱动,加了反相器 7404,制作实际的电路时,应该使用 8550。
百度知道上面有一个问题,要求把每次的按键,依次的显示在各个数码管上,并不是以前常见的移位显示。
题目链接:http://zhidao.baidu.com/question/514089095.html
仿照题目的要求,做而论道编写了如下的程序:
;--------------------------------------
D_BUF EQU 30H ;30H~35H 为显示缓冲区
;
ORG 0000H
MOV R1, #D_BUF
M_LOOP:
CALL DISP
JNB P2.6, M_LOOP ;没有按键就转移
CALL READKEY
MOV @R1, A ;存入键值
INC R1
CJNE R1, #D_BUF + 6, M_LOOP
SJMP 0000H
;--------------------------------------
READKEY:
MOV P0, #255 ;关闭显示, 准备读键
CLR P2.7 ;/OE=0
NOP
MOV A, P0
SETB P2.7
ANL A, #15
PUSH ACC
R_LOOP:
CALL DISP
JB P2.6, R_LOOP ;等待释放
POP ACC
RET
;--------------------------------------
DISP: ;共阳数码管, P0:段, P2:位(有反相)
MOV R2, #254 ;位选, 低电平有效
MOV R0, #D_BUF
MOV A, @R0
ADD A, #(TAB - $ - 3)
MOVC A, @A + PC
MOV P2, #255
MOV P0, A
MOV P2, R2
DJNZ R7, $ ;显示1024T
DJNZ R7, $
MOV A, R2
RL A
MOV R2, A
INC R0
CJNE R0, #D_BUF + 6, $ - 19 ;显示6位
MOV P2, #255
RET ;占用时间约为6.1ms
;-----------------------
TAB: ;共阳段码
DB 0C0H, 0F9H, 0A4H, 0B0H, 099H, 092H, 082H, 0F8H;0~7
DB 080H, 090H, 088H, 083H, 0C6H, 0A1H, 086H, 08EH;8~F
END
;--------------------------------------
本程序,可以驱动 MM74C922,正确读出键值,依次显示在数码管上。
提问者对回答的评价:太感谢了,真心有用
按照做而论道设计的电路,这块芯片仅仅单独占用了单片机的两条 IO 口线,就实现了 16 个按键的驱动,确实是非常节省资源。
本电路、程序,用 PROTEUS 仿真成功了,暂时还没有进行硬件实验。
- 键盘编码芯片 MM74C922
- LKT3100 密码键盘加密芯片
- UDA1341 音频编码解码芯片
- 编码芯片EV1527射频学习
- 直接访问键盘控制芯片获取键盘记录
- 【单片机】编码键盘实验
- 148编码键盘.C
- 键盘按键编码
- JOS 中的键盘编码
- 编码解码芯片PT2262/PT2272芯片原理简介:
- Hi3516D H.265 超高清编码芯片
- 三星DDR3内存芯片编码含义
- javascript获取键盘UNICODE编码
- ASCII码表及键盘编码
- 键盘按键编码对应表
- 键盘按键编码对应表
- Eclipse全键盘编码攻略
- Eclipse全键盘编码攻略
- [Java并发包学习八]深度剖析ConcurrentHashMap
- 单片机 AT89C51 汇编语言编写报警信号程序
- [OCLint]OCLint代码检查规则
- 拨盘开关输入方法
- 阿里云绿网怎么关闭
- 键盘编码芯片 MM74C922
- 用 LCD1602 显示的秒表
- ngnix 启动,停止和信号控制
- PROTEUS 仿真中的总线
- 工作感悟(1)
- 用 Python 脚本实现对 Linux 服务器的监控
- 复位电路
- 8255 的直接连接方法
- 每分钟改变一次方向的流水灯