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

[复制链接]
1590|7
 楼主| dning 发表于 2014-8-8 17:14 | 显示全部楼层 |阅读模式
单片机项目常用按键处理方法最好有C++代码
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;(独立键盘,矩阵键盘)
中断法,通过按键触发外部中断执行;
模拟电阻分压法, ...

网上的不实用呀 做实验还可以  我想问的是大家如何处理普通按键的上升沿触发和下降沿触发
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;

}

}

}
xymbmcu 发表于 2014-9-12 09:39 | 显示全部楼层
状态机,值得考虑。
qq4988 发表于 2014-9-12 11:00 | 显示全部楼层
perry_peng 发表于 2014-9-19 12:59 | 显示全部楼层
定时器中断查询I/O状态并计数。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部