微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 单片机按键检测

单片机按键检测

时间:10-02 整理:3721RD 点击:
Atmega16单片机,按键电路如下,按键另一端一般都是直接接地的,这个比较另类。尝试了不少方法还是没写出检测按键的程序,在此求助各位高手..最好有具体程序例子


先把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打样 要改的话只能板上飞线 美观考虑 我暂时先看看有没有办法从程序方面解决这个问题

来个大神支招吧

和环境检测仪上的是一样的吗

什么是环境检测仪?

其实很简单,只要记住低电平的时候表示按键已经按下,然后按这个思路去写程序就好了,不过要记得写去抖延时函数来确定按键已经按下!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top