[求助] P1端口复用,4*5矩阵键盘的程序如何实现?

yanse51   2012-5-28 16:35 楼主

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

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



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

[ 本帖最后由 yanse51 于 2012-6-1 19:56 编辑 ]
  • keyboard.JPG

    keyboard.PDF (2012-6-1 19:48 上传)

    92 KB, 下载次数: 24

回复评论 (5)

可能描述的不详,没人理?
点赞  2012-5-28 22:17
比如,P1.0设置为低电平,然后你给P1.4~P1.7设置高电平,然后读P1.4~P1.7上的电平,如果为低电平,那么就是有按键按下,如,P1.4为低电平,那么P1.0和P1.4相连的那个按键有效。其他依次类推
南京璞晓电子   www.cpx0.com需要 msn:njlianjian@hotmail.com
点赞  2012-5-29 09:25
从图中看,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口)。
那么这种情况,程序中是如何实现键盘扫描的呢?
点赞  2012-5-31 20:17
还是那样的原理啊,你结合138的原理分析分析
南京璞晓电子   www.cpx0.com需要 msn:njlianjian@hotmail.com
点赞  2012-6-1 09:59

回复 5楼 njlianjian 的帖子

您是指矩阵键盘的行扫描法?。这几天看了键盘方面的资料。例程大都是4*4键盘的表述。而且,没有涉及到端口既是行端口又是列端口的复用。

这个图的原理。我理解的如下:P2的三个端口,通过74LS138输出7种状态。然后可以将RD赋予0,通过图中74LS32的或门。RD,CS_KEY1两个都为0,此时74ls244低电平导通。然后发挥其输入缓冲器的作用。
74LS377,上升沿触发后,输出端锁存的数据发生改变。
当按键按下,此时74ls244所在列线的高电平端,被拉低。

悲剧的是,不知道该如何用程序去描述。网上搜了好久,也没有找到相似的例程。凭自己能力,也实在是写不出。
还请高手多多指点。
点赞  2012-6-1 16:49
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复