极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12905|回复: 5

利用模拟输入读取多个按键怎么实现?

[复制链接]
发表于 2015-9-13 23:29:00 | 显示全部楼层 |阅读模式
买了一个液晶,A0用于读入板上5个按钮的状态,是不是就是用的按钮加并联电阻呢,具体电路是怎样的,电阻的取值是不是成倍的呢?
回复

使用道具 举报

发表于 2015-9-14 08:54:15 | 显示全部楼层
这是STC单片机提供的两种简单的AD转换按键电路,我们常见的MP3播放器的按键电路有些就是用的 AD。

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

发表于 2015-9-16 00:50:27 | 显示全部楼层
见贴
键盘输入,我只用一个端口
http://www.geek-workshop.com/thread-15272-1-1.html
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-9-17 23:10:15 | 显示全部楼层
164335413 发表于 2015-9-14 08:54
这是STC单片机提供的两种简单的AD转换按键电路,我们常见的MP3播放器的按键电路有些就是用的 AD。

原来是这样,我还以为是用的电阻并联的方式呢。。。

不过这种是只能检测一个按键的说,多个按键同时按下的话,只有数字最小的起作用,后面的都被短路了。

那个电容是普通的还是电解电容?作用是什么呢?

回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-9-17 23:11:45 | 显示全部楼层
老来疯 发表于 2015-9-16 00:50
见贴
键盘输入,我只用一个端口
http://www.geek-workshop.com/thread-15272-1-1.html

你这个与上面的有点儿不一样啊,感觉
回复 支持 反对

使用道具 举报

发表于 2015-9-18 02:46:50 | 显示全部楼层
pumpitup 发表于 2015-9-17 23:11
你这个与上面的有点儿不一样啊,感觉

是不一样,原理很简单。关键是这一句    int m = ( V1 - V1 % 100) / 100; 把读到的 值 去掉尾数,只保留最大的那位数。便于  switch (m) {   } 函数 判断,
  V1 = analogRead(A0)
还有一点很重要,就是不要把欲取得的数 放在电阻节点上,应该放在两个节点中间,保证数值偏差时也能向下取整。具体做法就是 把 最下面接地的那个电阻 的值 取半,另一半放在正电端。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-15 19:35 , Processed in 0.069247 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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