jianhong_wu 发表于 2015-2-10 00:00:15

弹跳摸高器的工作原理是什么?如果要256个按键,IO口不够有哪些扩展IO口的办法?已解答.

城堡--北京:
问一下,io口要扩展,我现在要做16*16的矩阵扫描键盘,有啥好的扩展芯片嘛?

Zed-青岛:
74HC595.

坚鸿-深圳:
74hc165。3个IO口驱动两片74hc165联级,就可以扫描16个按键了。74hc595是扩展输出的,74hc165是扩展输入的.

城堡--北京:
我是扫描256个按键.我现在要做个弹跳摸高器,检测精度是1cm。现在手上的样品测量高度是120cm,它是用11*11的矩阵键盘检测的。我现在要做测量240cm的。

脑残橙廊坊:
这和键盘有啥关系?

城堡--北京:
标准的弹跳摸高器,上边的触摸板类似按键似的,你摸上去其实是按下一个键,根据触发的按键就知道你触摸的高度了。所以弹跳摸高器其实里边就是一个大矩阵键盘扫描。

坚鸿-深圳:
用stc15系列的单片机,这个系列的单片机特点就是IO口多,62个IO口都有,48个IO口也有,而且非常便宜,6元左右一个。可能用一个单片机就够了。如果系统任务太多,跑步过来就用两个单片机,一个单片机专门用来扫描按键,然后跟另外一个单片机通讯。


Inc-东莞:
刚刚搜查了一下资料,只需要6~7个IO即可,6个IO可以扫描249个按键,7个IO可以扫描568个按键。具体思路,请搜索节约单片机端口资源的键盘电路。

上图电路,利用3个IO,扫描16个按键。
以下是按键程序,可参考。
uchar getkey(void)

{

uchar x

P1=P1|0x07; /*I/O1至I/O3写“1”*/

xP1&0x07; /*读入I/O1至I/O3并屏蔽其它位*/

if(x= =10)

{

P1=P1|0x07;

P1=P1&0xfd; /*I/O2写“0”*/

x=P1&0x07;

x=(x+1)/2+10; /*屏蔽I/O2并转换K10至K12的键值*/

if(x = =13)

{

P1=P1|0x07;

P1=P1&0xfb; /*I/O3写“0”*/

x=P1&0x07;

x=x+13; /*屏蔽I/O3并转换K13至K15的键值*/

}

}

}

return x;

}

理论上,N个IO,可以组合成的按键数:N = (2n-1)+(2n-1)n。
虽然我没用过,不过已经有人实现了,原因是我从来不需要这么多按键,我没有一个项目是利用这么多按键的。

城堡--北京:
我现在做这个需要的是稳定性。

南山--河北:
之前做过4096个按键扫描的,用8个74hc165,8个74hc595,6个io口搞定呵呵,其实不算是按键 ,是扫描64个线链接关系的,组合起来和64*64的矩阵键盘一个道理.


城堡--北京:
谢谢.


页: [1]
查看完整版本: 弹跳摸高器的工作原理是什么?如果要256个按键,IO口不够有哪些扩展IO口的办法?已解答.