搜索
bottom↓
回复: 51

求4个IO检测6位拨码开关方案

[复制链接]

出0入0汤圆

发表于 2018-3-8 16:20:49 | 显示全部楼层 |阅读模式
如题,由于STM32的IO资源有限,现在需要用4个IO检测6位拨码开关,请问哪位有用过类似方案的,求方案

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2018-3-8 16:28:54 | 显示全部楼层
38译码器

出0入4汤圆

发表于 2018-3-8 16:33:39 | 显示全部楼层
或者cd4051这种切换开关

出0入0汤圆

发表于 2018-3-8 16:48:25 | 显示全部楼层
移位寄存器

出90入0汤圆

发表于 2018-3-8 16:49:11 | 显示全部楼层
2个AD口,很可靠。
1个AD口,不太可靠。

出0入0汤圆

发表于 2018-3-8 16:53:09 | 显示全部楼层
加上地线就可以做3x2矩阵输入

出0入0汤圆

 楼主| 发表于 2018-3-8 16:55:02 | 显示全部楼层

38译码器是可以检测8位端口的状态的吗,8位端口不是只有输出功能吗,求科普

出0入0汤圆

 楼主| 发表于 2018-3-8 16:56:08 | 显示全部楼层
xymxym 发表于 2018-3-8 16:33
或者cd4051这种切换开关

这个不错,非常感谢

出0入4汤圆

发表于 2018-3-8 16:57:00 来自手机 | 显示全部楼层
感觉5楼是最简单的

出0入211汤圆

发表于 2018-3-8 16:57:01 | 显示全部楼层
搞一个74HC165芯片,并口转串行口,2个IO可以检测很多很多.....

出0入0汤圆

发表于 2018-3-8 17:06:20 | 显示全部楼层
楼上说的对,一个165就可以了

出0入0汤圆

 楼主| 发表于 2018-3-8 17:25:59 | 显示全部楼层
hushaoxin 发表于 2018-3-8 16:57
搞一个74HC165芯片,并口转串行口,2个IO可以检测很多很多.....

非常正确,真的是豁然开朗,非常感谢

出0入4汤圆

发表于 2018-3-8 19:23:07 来自手机 | 显示全部楼层
hushaoxin 发表于 2018-3-8 16:57
搞一个74HC165芯片,并口转串行口,2个IO可以检测很多很多.....

肯定没做过产品。
论成本和可靠性考虑,5楼方案更好。

出0入0汤圆

发表于 2018-3-8 20:02:36 来自手机 | 显示全部楼层
网上看到的 mp.weixin.qq.com/s/6Z73RBHp7JnBkQZO37emFw

出0入211汤圆

发表于 2018-3-8 20:08:50 | 显示全部楼层
laujc 发表于 2018-3-8 19:23
肯定没做过产品。
论成本和可靠性考虑,5楼方案更好。

数字逻辑芯片还有不可靠的?楼主要检测的是拨码开关,慢速的东西...

出10入23汤圆

发表于 2018-3-8 21:42:39 来自手机 | 显示全部楼层
r-2r dac看一看

出0入0汤圆

发表于 2018-3-8 22:05:55 | 显示全部楼层
以前做个3个IO口检测4个按键的,你看下原理,看看能不能做到你想要的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2018-3-8 23:08:25 来自手机 | 显示全部楼层
一个ad口,电阻取 15,8,4,2,1

出0入53汤圆

发表于 2018-3-8 23:23:14 来自手机 | 显示全部楼层
hzpyl 发表于 2018-3-8 16:49
2个AD口,很可靠。
1个AD口,不太可靠。

1个知道电阻分压,取分压值,2个ad口咋做

出0入4汤圆

发表于 2018-3-8 23:46:25 来自手机 | 显示全部楼层
hushaoxin 发表于 2018-3-8 20:08
数字逻辑芯片还有不可靠的?楼主要检测的是拨码开关,慢速的东西...

看来你也没搞过生产的。
多一个芯片,多一个损坏机率。

出0入4汤圆

发表于 2018-3-8 23:47:41 来自手机 | 显示全部楼层
zhcj66 发表于 2018-3-8 23:23
1个知道电阻分压,取分压值,2个ad口咋做

一个IO口检测3个开关,2个IO口检测6个。

出90入0汤圆

发表于 2018-3-9 07:58:16 | 显示全部楼层
laujc 发表于 2018-3-8 23:47
一个IO口检测3个开关,2个IO口检测6个。

完全正确。
1个AD口,检测6个开关,电压太接近,可靠性不好。

出0入53汤圆

发表于 2018-3-9 08:06:39 | 显示全部楼层
hzpyl 发表于 2018-3-9 07:58
完全正确。
1个AD口,检测6个开关,电压太接近,可靠性不好。

你的意思是1个AD口带3个按键?

另外我用stm32fxx一个adc的多通道,在切换通道的时候会出现,2个通道的数据互相影响数据,不知道楼上的遇到过吗?用DMA采集一个adc的多通道也会出现这样的现象,

用专用的ADC切换通道,通道之间的数据就不会互相影响

出0入0汤圆

 楼主| 发表于 2018-3-9 08:47:23 | 显示全部楼层
其实5楼的做法对轻触开关按键是可行的,但是6位的拨码开关是有64种状态的,用AD根本没法检测到

出0入0汤圆

发表于 2018-3-9 08:53:17 | 显示全部楼层
74HC595D,4个IO情况下,1片检测8个,2片检测16个

出0入0汤圆

发表于 2018-3-9 11:30:02 | 显示全部楼层
arm 发表于 2018-3-8 22:05
以前做个3个IO口检测4个按键的,你看下原理,看看能不能做到你想要的

这个识别不了多个按键吧?k1 k2 k3和k1  k2  k4的组合是识别不出来的。

出0入0汤圆

发表于 2018-3-9 12:45:44 来自手机 | 显示全部楼层
汽车的定速巡航,空调冷热等经常是走AD 口,这样一个PIN 脚就够啦

出0入4汤圆

发表于 2018-3-9 14:03:49 | 显示全部楼层
74HC165  多增加 一个芯片

出0入0汤圆

发表于 2018-3-9 14:21:44 | 显示全部楼层
大白 发表于 2018-3-8 16:55
38译码器是可以检测8位端口的状态的吗,8位端口不是只有输出功能吗,求科普 ...

3个IO输出,一个IO输入,其他自己脑补
138比165便宜

出0入0汤圆

 楼主| 发表于 2018-3-9 16:44:08 | 显示全部楼层
目前就用这个方案了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2018-3-9 20:04:01 | 显示全部楼层
用AD检测是说6个轻触开关吧
拨码开关状态太多了,能行?

出0入92汤圆

发表于 2018-3-10 10:36:28 | 显示全部楼层
4个IO检测6个按键,多支持多组合键 (amoBBS 阿莫电子论坛)
https://www.amobbs.com/forum.php?mod=viewthread&tid=5630686
楼主可以试试用我这个方案

出0入0汤圆

 楼主| 发表于 2018-3-12 09:31:01 | 显示全部楼层
xiaobendan 发表于 2018-3-9 20:04
用AD检测是说6个轻触开关吧
拨码开关状态太多了,能行?

对,还是您老理解问题的出发点啊

出0入0汤圆

 楼主| 发表于 2018-3-12 09:41:38 | 显示全部楼层
xyb852 发表于 2018-3-10 10:36
4个IO检测6个按键,多支持多组合键 (amoBBS 阿莫电子论坛)
https://www.amobbs.com/forum.php?mod=viewthre ...

你这个检测轻触按键还行,拨码开关就不行哦,如果我S2~S6拨上(闭合),按照你的方法,这样6个开关都会被检测出闭合状态的

出0入42汤圆

发表于 2018-3-13 13:41:20 | 显示全部楼层
楼主为什么不用不旋转编码开关 简单实用

出0入92汤圆

发表于 2018-3-26 08:49:35 | 显示全部楼层
大白 发表于 2018-3-12 09:41
你这个检测轻触按键还行,拨码开关就不行哦,如果我S2~S6拨上(闭合),按照你的方法,这样6个开关都会被 ...

完美支持拨码开关的,你仔细看完编程思路就明白了

出0入0汤圆

发表于 2018-3-26 09:41:13 来自手机 | 显示全部楼层
加上二极管用矩阵法…监测6个应该刚好…

出0入0汤圆

发表于 2018-3-26 13:44:00 | 显示全部楼层
liuzq1981 发表于 2018-3-9 08:53
74HC595D,4个IO情况下,1片检测8个,2片检测16个

595是扩展输出的,如何扩展输入,接按键?

出0入0汤圆

发表于 2018-3-26 13:55:02 | 显示全部楼层
浮生莫若闲 发表于 2018-3-26 13:44
595是扩展输出的,如何扩展输入,接按键?

595 D0----开关----|
595 D1----开关----|
595 DX----开关----|
595 DX----开关----|
                          |
                          |------ IODete

用另外一个IO检测595的输出,595扫描输出,检测 IODete 的电平就知道哪个按键被按下了。

出0入0汤圆

发表于 2018-3-26 14:07:40 | 显示全部楼层
siyeb 发表于 2018-3-26 13:55
595 D0----开关----|
595 D1----开关----|
595 DX----开关----|

原来是这样,倒是也行,不过我个人认为没HC165好使

出0入0汤圆

发表于 2018-3-26 14:13:06 | 显示全部楼层
浮生莫若闲 发表于 2018-3-26 14:07
原来是这样,倒是也行,不过我个人认为没HC165好使

这个是解决显示及按键在一块儿的,只用在显示上额外加一个io就可以检测按键事件。

出0入0汤圆

 楼主| 发表于 2018-3-28 09:33:10 | 显示全部楼层
xyb852 发表于 2018-3-26 08:49
完美支持拨码开关的,你仔细看完编程思路就明白了

你还是不了解你自己设计的东西啊,你再仔细瞧瞧你的电路,看完后你就知道不能用了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2018-6-12 16:29:04 | 显示全部楼层
大白 发表于 2018-3-9 16:44
目前就用这个方案了

楼主,你这图没看懂啊!
IO检测这个图里的哪个位置呢?另外要是有多个拨码开关同时拨了怎么识别呢?

出0入0汤圆

发表于 2018-6-12 16:47:58 | 显示全部楼层
AD转换啊。。。

出0入0汤圆

发表于 2020-1-15 19:35:47 | 显示全部楼层
mark  根据42楼  二极管那个性不通啊

出0入0汤圆

发表于 2020-1-16 11:14:44 | 显示全部楼层
大白 发表于 2018-3-9 08:47
其实5楼的做法对轻触开关按键是可行的,但是6位的拨码开关是有64种状态的,用AD根本没法检测到 ...

出1310入193汤圆

发表于 2020-1-16 14:12:01 来自手机 | 显示全部楼层
2.5V——1.5V——0.5V三档。一个io口

出0入0汤圆

发表于 2020-1-16 14:18:20 | 显示全部楼层
一般的, 3io加3个二极管,可以检测12个按键~~~

出0入4汤圆

发表于 2020-1-16 14:28:09 | 显示全部楼层

你还点赞?

其实LZ没有弄明白如何使用1个IO检测3个开关,这种方法是可行的,我项目中有使用。

出0入0汤圆

发表于 2020-1-19 11:12:01 | 显示全部楼层
laujc 发表于 2020-1-16 14:28
你还点赞?

其实LZ没有弄明白如何使用1个IO检测3个开关,这种方法是可行的,我项目中有使用。

3个开关8个状态,用1路AD确实可行,再多了估计就够呛

出0入4汤圆

发表于 2020-1-19 12:14:20 | 显示全部楼层
一个165就可以了吧

出0入4汤圆

发表于 2020-1-22 17:24:23 | 显示全部楼层
加6个二极管就搞定了,6个口就可以检测 8个状态了,
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 19:54

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表