有没有可能通过一个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条回答
lihui_mc
1楼-- · 2019-12-28 00:28
上传一个小工具了,自动生成AD转DIP的C语言表。还没实际测试过效果,不过可以很方便的算出各种阻值配对情况下,AD值分布。发现确实像12楼说的,电阻误差是主要问题,实际用的时候全部用1%的电阻,用一个IO来检测4个开关,还算靠谱。再多的话,付出的代价就高了,还不如用165来扩展。
lihui_mc
2楼-- · 2019-12-28 02:08
当然这个方法只适合开机读取一次的情况。因为运算量有点大的
kebaojun305
3楼-- · 2019-12-28 04:36
本帖最后由 kebaojun305 于 2017-6-10 17:19 编辑

你这不就是把拨码开关 搞成了一个手动 DAC了  
huangguimina4
4楼-- · 2019-12-28 06:09
查表不就快了??
lihui_mc
5楼-- · 2019-12-28 09:53
 精彩回答 2  元偷偷看……
.titrwh
6楼-- · 2019-12-28 10:29
完全可以啊

一周热门 更多>