找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5000|回复: 2
打印 上一主题 下一主题
收起左侧

利用单片机AD转换做按键扫描,识别按键单键,双键长按短按。(两个按键同时按下)

[复制链接]
跳转到指定楼层
楼主
用一个IO口就可以识别多个按键,这里以两个按键为例。
1.可以识别S1和S2单击
2.识别S1和S2同时按下
3.S1和S2同时长按
电路图:
P2外接串联led灯,用来调试按键效果


按键程序代码如下:
void keyscan()
{
        if(AD_value>100)                //如果有任意按下
        {
                if(key1&&!key_lock)
                {
                        pre_kvalue=1;                //保存键值
                }
                else if(key2&&!key_lock)
                {
                        pre_kvalue=2;                //保存键值
                }
                if(key12&&pre_kvalue!=4)                                //双键按下。完成长按操作视为判断结束
                {
                        key_lock=1;                        //当按下双键时,不再判断单键是否按下
                        pre_kvalue=3;                //保存双键按下键值
                        if(key_count>150)                //长按1.5秒
                        {
                                pre_kvalue=4;                        //保存双键长按键值
                                key_count=0;                //长按计数清零
                        }
                }
        }
        else if(AD_value<100)                //等待全部按键弹起,执行相关按键指令
        {
                mode_choice();                        //执行对应按键的指令
                key_lock=0;                                        //双键标志位清零
                key_count=0;                                //长按计数清零

        }
}

完整程序代码和电路图已经打包好。大家一起学习交流

全部资料51hei下载地址:
AD按键扫描.zip (221.62 KB, 下载次数: 109)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:230440 发表于 2019-11-27 09:21 | 只看该作者
好好学习
回复

使用道具 举报

板凳
ID:67274 发表于 2021-12-4 03:05 | 只看该作者
试试看,AD电压采集需要的IO少.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表