大家好!LED1网络做输出io我知道,可是怎么检测复位有按键按下? 我这边单独给led1上拉 示波器测试是2.1v 按键按下 检测也就是1.7v 我的程序完全没有反应。。。
这样可否?:
IO 进行 切换扫描就行了。按键需要接到IO口,LED要改成低电平亮。IO = 1; //IO输入if(IO == 0) //判断IO是否被拉低(按键按下){ //消抖 计数 //确定IO按下,执行相应动作}IO = 0; //IO直接输出
三个电阻都改成1K,正常时把三个IO都强输出做LED的控制逻辑,定时把三个IO都设成成内部上拉的输入端口,LED1端检测按键状态,采样了状态再马上把三个IO当做LED控制。如果只是检测有没有按键按下,10毫秒检测一次都是可以的,如果要检测连击之类的可以检测间隔短一些。
扫描按键时应该把三个都设置为输入,led1只开上拉,其余两个不开。 不过r17为10实在太大了,改为2至3k合适。或者读按键时用ad检测的的方式去读也行。因为你说的1.7V是达不到数字信号的低电平的要求的。
分时扫描:前1-4驱动LED,5检测KEY1,LED1输出高,LED2输出低,LED3输入2,LED2输出高,LED1输出低,LED3输入3,LED2输出高,LED3输出低,LED1输入4,LED3输出高,LED2输出低,LED1输入5,LED2输入,LED3输入,LED1输入(内部上拉),即可检测KEY
厉害了
感谢您的分享