单片机的一个io 纪要做输出控制io 又要做输入检测复位键
各位大佬LED1网络做输出io我知道,可是怎么检测复位有按键按下?我这边单独给led1上拉示波器测试是2.1v 按键按下检测也就是1.7v我的程序完全没有反应 本帖最后由 sayno_186 于 2021-1-16 23:56 编辑编辑原因:上传图片
IO 进行 切换扫描就行了。
按键需要接到IO口,LED要改成低电平亮。
IO = 1;//IO输入
if(IO == 0)//判断IO是否被拉低(按键按下)
{
//消抖 计数
//确定IO按下,执行相应动作
}
IO = 0;//IO直接输出
三个电阻都改成1K,正常时把三个IO都强输出做LED的控制逻辑,定时把三个IO都设成成内部上拉的输入端口,LED1端检测按键状态,采样了状态再马上把三个IO当做LED控制。如果只是检测有没有按键按下,10毫秒检测一次都是可以的,如果要检测连击之类的可以检测间隔短一些。 Elex 发表于 2021-1-16 23:50
三个电阻都改成1K,正常时把三个IO都强输出做LED的控制逻辑,定时把三个IO都设成成内部上拉的输入端口,LED ...
这个电路图是成品可以使用的 sayno_186 发表于 2021-1-16 23:50
编辑原因:上传图片
IO 进行 切换扫描就行了。
这个电路图是已经量产的东西三个引脚控制四个led灯和检测一个复位键 Elex 发表于 2021-1-16 23:50
三个电阻都改成1K,正常时把三个IO都强输出做LED的控制逻辑,定时把三个IO都设成成内部上拉的输入端口,LED ...
谢谢 我调试的时候就设置了一个io为上拉后面没注意了一直出不来 扫描按键时应该把三个都设置为输入,led1只开上拉,其余两个不开。
不过r17为10实在太大了,改为2至3k合适。或者读按键时用ad检测的的方式去读也行。因为你说的1.7V是达不到数字信号的低电平的要求的。 R17用3K,读按键时,LED1设置准双向口输出高电平,LED2、LED3设置为高阻,延时1~5us,读LED1就可以读到按键。
显示时,LED1、LED2、LED3设置为推挽输出。 本帖最后由 rqiang 于 2021-1-21 17:57 编辑
分时扫描:
前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 rqiang 发表于 2021-1-21 17:54
分时扫描:
前1-4驱动LED,5检测KEY
1,LED1输出高,LED2输出低,LED3输入
太热心了非常感谢你 小李非刀 发表于 2021-1-21 15:05
R17用3K,读按键时,LED1设置准双向口输出高电平,LED2、LED3设置为高阻,延时1~5us,读LED1就可以读到按键 ...
谢谢你
页:
[1]