有没有可能通过一个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条回答
FireHe
1楼-- · 2019-12-29 01:35
完全可以

以前很多电视的按键板就是这样做的

只是阻值配置要合理,要考虑接触电阻的存在(用按键的很容易出现问题,因为按键用的时间长了,接触电阻变化非常厉害)
mon51
2楼-- · 2019-12-29 04:10
pic少io的片子,经常这样做。电阻网值加大些,便于控制浮动差值,提高正确率。
jiaren
3楼-- · 2019-12-29 08:22
 精彩回答 2  元偷偷看……
lihui_mc
4楼-- · 2019-12-29 08:48
takashiki 发表于 2017-6-10 18:08
不要打我,我觉得是不可以的,完全无法实现。用个74HC165吧或者分两组占用2个IO,方便好多。
就算你用1‰误 ...

我刚才用计算器算了一下,1K电阻5%误差时,阻值是950欧,而1k//220k=995.4欧,确实已无法识别220k电阻是否并联。打算用你的建议,用两个io口来做
XA144F
5楼-- · 2019-12-29 12:09
你挊这么多电阻,为何不用个74165或者74595呢?
LM1876
6楼-- · 2019-12-29 14:20
这不是很正常的用法麼?A D 按键就是这么用的啊

一周热门 更多>