OpenVINOTM,给你看得见的未来!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » MCU的一个I/O既要做LED指示灯的输出,又要做输入按键的检测,如何搞?

共7条 1/1 1 跳转至

MCU的一个I/O既要做LED指示灯的输出,又要做输入按键的检测,如何搞?

工程师
2021-02-01 21:04:12    评分

大家好!LED1网络做输出io我知道,可是怎么检测复位有按键按下?  我这边单独给led1上拉  示波器测试是2.1v   按键按下  检测也就是1.7v  我的程序完全没有反应。。。

image.png




关键词: 指示灯     LED     按键     多功能    

工程师
2021-02-01 21:15:58    评分
2楼

这样可否?:


IO 进行 切换扫描就行了。
按键需要接到IO口,LED要改成低电平亮。

IO = 1;  //IO输入
if(IO == 0)  //判断IO是否被拉低(按键按下)
{
   //消抖 计数
   //确定IO按下,执行相应动作
}
IO = 0;  //IO直接输出


助工
2021-02-01 21:20:46    评分
3楼

三个电阻都改成1K,正常时把三个IO都强输出做LED的控制逻辑,定时把三个IO都设成成内部上拉的输入端口,LED1端检测按键状态,采样了状态再马上把三个IO当做LED控制。如果只是检测有没有按键按下,10毫秒检测一次都是可以的,如果要检测连击之类的可以检测间隔短一些。


助工
2021-02-01 21:30:30    评分
4楼

扫描按键时应该把三个都设置为输入,led1只开上拉,其余两个不开。
    不过r17为10实在太大了,改为2至3k合适。或者读按键时用ad检测的的方式去读也行。因为你说的1.7V是达不到数字信号的低电平的要求的。


工程师
2021-02-01 21:34:41    评分
5楼

分时扫描:
前1-4驱动LED,5检测KEY
1,LED1输出高,LED2输出低,LED3输入
2,LED2输出高,LED1输出低,LED3输入
3,LED2输出高,LED3输出低,LED1输入
4,LED3输出高,LED2输出低,LED1输入
5,LED2输入,LED3输入,LED1输入(内部上拉),即可检测KEY


工程师
2021-02-01 23:17:08    评分
6楼

厉害了


工程师
2021-02-01 23:28:17    评分
7楼

感谢您的分享


共7条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]