有没有可能通过一个ADC口读取8位拨码开关,省IO

2019-12-27 18:55发布

感觉为了这个拨码开关占用了8个IO有点不值得。

思路是这样的:
下拉电阻是4.7K,而上拉电阻依次是1k,2.2k,4.7k,10k,20k,47k,100k,220k,通过拨码开关控制上拉电阻并联。
这样因为任意多个电阻并联都不会与其他电阻阻值相同(因为至少差距1倍了),

这样程序采样一次ADC,然后算出上拉电阻的总阻值。
因为8位拨码开关有256种组合,然后依次算出每种组合的并联电阻值,一共运算256次,就可以知道有哪几位开关闭合了。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
33条回答
下一页
1楼-- · 2019-12-30 22:57
还是用芯片扩展IO比较可靠,这种方法少数几个键还行,多了就呵呵了
skyxjh
2楼-- · 2019-12-31 01:01
楼主要256种组合,如何做都是可靠性难以保证。要想可靠就要用精密电压源加高精读多位数的ad,成本能接受吗。所以方案本身就难以可靠,省成本难以做好。加一片74165与8dip开关可以完美解决楼主256组合输入问题,成本属于最低了。
dz20062008
3楼-- · 2019-12-31 05:11
只是理想化的,8位拨码开关组合,相当于8位DA,再用12位AD采回来,理论上没问题,但像上面朋友们提到的误差还有干扰都会产生影响。

有些朋友提到电视按键,还有显示器按键,其实它们跟楼主的要求是不同的,它们一般是几个相等的电阻串联,每个按键连接不同的节点,按下按键,那个节点的电压值就送到ADC,检测按的是哪个按键,那只能检测一个按键,但楼主的要求是可能有多个开关闭合,所以检测方法是不一样的。

一周热门 更多>