单片机按键检测
时间:10-02
整理:3721RD
点击:
Atmega16单片机,按键电路如下,按键另一端一般都是直接接地的,这个比较另类。尝试了不少方法还是没写出检测按键的程序,在此求助各位高手..最好有具体程序例子
不知道哪里说明了IO下拉输入。
先把IO拉低,然后再检测高电平,试试。
不行啊
DDRD = 0xff;
PORTD = 0x00;
DDRD = 0x00;
if((PIND|0x00)!=0x00)
pressed = 1;
else
pressed = 0;
// DDRD = 0xff;
return pressed;
具体搞不懂。不好意思。
加个延时去抖动试试,另外,在51上面移植试试。
AVR单片机没有搞过。是不是可以设置IO口的状态,如果可以,把这里的IO设置为下拉输入试试。
默认下拉输入的...第一个按键按下之后,单片机IO口就一直保持高电平了,按键松开还是高电平
我还不懂,真得要学习。
按下以后,测试下“读”引脚的电位。
不知道哪里说明了IO下拉输入。
读出的是高电平
好吧 我错了 就算不上拉 读出的值也是高电平
求高手支招 目测已无解
你可以检测按键电平的上升沿跳动呢!亲....但是怎么按键释放了还是高电平呢?
直接外接下拉电阻
根据9楼给的图 无论什么时候 单片机读的值始终是高电平 因为1. 我没有外部下拉 2. 单片机输出状态3种情况都是高阻态
电路没法改了 已经PCB打样 要改的话只能板上飞线 美观考虑 我暂时先看看有没有办法从程序方面解决这个问题
来个大神支招吧
和环境检测仪上的是一样的吗
什么是环境检测仪?
其实很简单,只要记住低电平的时候表示按键已经按下,然后按这个思路去写程序就好了,不过要记得写去抖延时函数来确定按键已经按下!