zysblog 发表于 2012-10-29 03:37:57

这种按键设计该如何进行按键检测呢?

本帖最后由 zysblog 于 2012-10-29 03:40 编辑

这是一个电子表,能调时间和日期,但按键和数码管的引脚复用的设计让我很头痛,该如何对此按键进行检测呢?

我用示波器测了一下,IOB4一直是高电平,猜测是做输入口用的,当我把某个按键按下来时,IOB4的波形就和那个按键所连接的引线波形(由于按键与显示复用,所以会有波形)完全一样,
所以可以通过这种途径来进行按键检测。

但具体该如何实施呢?因为它有两个位选口线,和一个段选口线跟按键是复用的,所以让我很头痛,如果在扫描显示的过程进行按键检测,由于其中一个是段选线,所以就没法准确检测。

如果在中断中进行按键检测,感觉是个不错的办法,但由于还需要检测长按,因为长按和短按的功能是不一样的,所以感觉,中断比较可行,但具体到细节实施依然比较复杂,有哪位高手能给个可以实施的意见吗?

devcang 发表于 2012-10-29 09:37:47

用开关的管子,应该可以,单片机IO只作开关控制

zysblog 发表于 2012-10-29 09:52:37

devcang 发表于 2012-10-29 09:37 static/image/common/back.gif
用开关的管子,应该可以,单片机IO只作开关控制

你好,貌似有道理,能详细点儿吗?

zhanan 发表于 2012-10-29 10:25:38

每次扫描刷新数据的时候,进行按键检测,IOB4应该是检测低电平:
关闭显示
令IOA0 IOB2 IOB3其中一个为低电平
延时1uS
读IOB4
输入显示数据
开通显示

按键都用位选更好。

zysblog 发表于 2012-10-29 10:51:59

zhanan 发表于 2012-10-29 10:25 static/image/common/back.gif
每次扫描刷新数据的时候,进行按键检测,IOB4应该是检测低电平:
关闭显示
令IOA0 IOB2 IOB3其中一个为低电 ...

是啊,按键如果都用位选就非常好,可是客户的电路已经来不及修改了,所以只能这样,而且用的是32.768KHz的晶振,最短机器周期是31us,这个扫描按键的方法是不是最简单的做法啊?还有更好,更简洁的方法吗?
页: [1]
查看完整版本: 这种按键设计该如何进行按键检测呢?