打印
[AVR单片机]

求单片机项目常用按键处理方法

[复制链接]
1001|7
手机看帖
扫描二维码
随时随地手机跟帖
沙发
hexin261234088| | 2014-8-12 10:13 | 只看该作者
查询法,定时扫描按键I/O;(独立键盘,矩阵键盘)
中断法,通过按键触发外部中断执行;
模拟电阻分压法,通过单片机AD电压检测来判断按键值。
这些都是常用的按键检测方法,网上搜索相关资料很多。

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
二月十五 + 2 很给力!
板凳
二月十五| | 2014-8-12 11:52 | 只看该作者
网上搜索相关资料很多。

使用特权

评论回复
地板
dning|  楼主 | 2014-8-15 16:23 | 只看该作者
hexin261234088 发表于 2014-8-12 10:13
查询法,定时扫描按键I/O;(独立键盘,矩阵键盘)
中断法,通过按键触发外部中断执行;
模拟电阻分压法, ...

网上的不实用呀 做实验还可以  我想问的是大家如何处理普通按键的上升沿触发和下降沿触发

使用特权

评论回复
5
ff107538818| | 2014-9-10 17:09 | 只看该作者
本帖最后由 ff107538818 于 2014-9-10 17:19 编辑

一个敲出来的,慢慢看吧


unsigned char keysta=1; //按键状态值,当键倍按下或者弹起时相应变化, keysta 在定时器、延时、中断里消抖后赋值

void main()
{

unsigned char keybackup=1; //保存上次键盘按下或弹起的值

while(1)
{

if(keybackup!=keysta)
{

if(keybackup==0)       //keybackup==0   判断等于0时,就是按键弹起时动作(上升沿触发),    keybackup==1 判断 等于1时就是按键按下时动作(下降沿触发),
{
//执行要处理的动作
}

keybackup=keysta;

}

}

}

使用特权

评论回复
6
xymbmcu| | 2014-9-12 09:39 | 只看该作者
状态机,值得考虑。

使用特权

评论回复
7
qq4988| | 2014-9-12 11:00 | 只看该作者
8
perry_peng| | 2014-9-19 12:59 | 只看该作者
定时器中断查询I/O状态并计数。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

1

粉丝