51中端口复用,4*5矩阵键盘的程序如何实现

2020-01-21 21:36发布

本帖最后由 yanse1214 于 2012-5-28 22:34 编辑

这是本人用PROTEUS中画的图。其中端口D7,D1既用于行线也用于列线。

因为列线电路中是高电平,所以我想应采用行扫描法。但是程序究竟如何写呢?



        另:图中74ls32的RD端,连接的是DS12C887的DS端。当RD与CS_KEY1同时为0,此时,74ls244才选通。

其余连接,都是照搬原图。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
proteldxp
1楼-- · 2020-01-10 16:42
solisgood 发表于 2018-5-29 15:42
https://item.jd.com/23404127736.html

这个是单相的啊
lxa0
2楼-- · 2020-01-21 21:49
 精彩回答 2  元偷偷看……
yanse1214
3楼-- · 2020-01-21 22:47
本帖最后由 yanse1214 于 2012-5-28 22:52 编辑

多谢高手捧场。您可以双击此图片,就放大了。另:我又添加了个PDF的文档


是必须配合锁存。所以,图中用了74ls377。
从图中看,51端p20,p21,p22三端输出三个信号,然后通过74ls138输出8种状态。其中就有CS_KEY1,CS_KEYO.这种条件量。
通常4*4键盘,取一个端口的低4位和高4位。然后进行逐行扫描。但是在本图这个4*5的键盘中,当244有效时,kin1,kin2,kin3,kin4列线端,输入给51芯片的端口是D7,D4,D3,D1.
当377有效时,kout1,kout2,kout3,kout4,kout5行输出端,对应于51的输出端口是:D1,D7,D5,D2,D0.
也就是说,有2个端口复用了(D7和D1)。(D0....D7对应于51的P0口)。
那么这种情况,程序中是如何实现键盘扫描的呢?
还请高手详细指教。
yanse1214
4楼-- · 2020-01-22 03:44
这个按键扫描函数还真是费劲。好好思考
DF状元宏
5楼-- · 2020-01-22 08:33
看过,不知道有没有更好的!

一周热门 更多>