找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4483|回复: 7
收起左侧

如何将按键按下一次作为一次输入

[复制链接]
ID:113960 发表于 2016-10-31 22:36 | 显示全部楼层 |阅读模式
我用的是扫描法检测按键  但是按下一次就会扫描很多次  如何更改函数使得按下抬起一次作为一次的输入

char keyScan(void)
{
    char key = 0;
    char row,col;
//    char key_now ;
//    char key_past;

    P9DIR = 0XF0;
    P9REN = 0X0F;
    P9OUT = 0X0F;         
    if((P9IN & 0X0f) != 0X0f)   //判断是否有有键按下(检测输入是否全部为高),若有 往下执行
    {
        delays();
        if((P9IN&0x0f)!=0x0f)     //再次判断列中是否是干扰信号,不是则向下执行
        {         
            row = P9IN&0x0f;

            P9DIR = 0X0F;
            P9REN = 0XF0;
            P9OUT = 0XF0;
            col = P9IN&0xf0;
//            if((key_past==0)&&(key_now==1))
            {   key = row|col;
//                key_past = key_now;
//                key_now = 0;
            }
        }        
    }   
    return key;
}
回复

使用道具 举报

ID:111634 发表于 2016-11-1 08:05 | 显示全部楼层
本帖最后由 zl2168 于 2016-11-1 08:07 编辑

实例5  4种不同方式键控信号灯


按键按能否锁定可分为有锁按键和无锁按键。有锁按键是按下即能锁定闭合状态,只有再次按一下才能解除闭合状态,回归断开状态。无锁按键不能锁定闭合状态,除非按住键不予释放,典型的例子就是电脑键盘上的按键。


单片机应用系统中,根据按键闭合和释放状态,有多种不同的键控方式,可编写不同的程序予以实现。本例要求按以下4种不同方式分别键控VD0~ VD3


① 无锁按键:S0按下,VD0亮;S0释放,VD0暗;


② 无锁按键(前沿有效):S1按下,VD1亮;S1释放,VD1延时2s后暗。


③ 无锁按键(后沿有效):S2按下,VD2不亮;S2释放,VD2亮,并延时2s后暗。


模拟有锁按键:S3按第一次,VD3亮,并继续保持;按第二次,VD3才暗。


Proteus仿真一下,确认有效。
实例5 不同方式键控灯.rar (31.72 KB, 下载次数: 8)
回复

使用道具 举报

ID:113960 发表于 2016-11-1 10:30 | 显示全部楼层
zl2168 发表于 2016-11-1 08:05
实例5  4种不同方式键控信号灯

你发的东西不错 但是我的电脑打不开这些文件
回复

使用道具 举报

ID:111634 发表于 2016-11-1 12:17 | 显示全部楼层
骓风 发表于 2016-11-1 10:30
你发的东西不错 但是我的电脑打不开这些文件

在proteus中打开,可仿真演示,有实效。但程序在书中,要自己去看。
回复

使用道具 举报

ID:123732 发表于 2016-11-1 16:12 | 显示全部楼层
加入while((P9IN & 0X0f) != 0X0f);到执行按键程序之后
回复

使用道具 举报

ID:113960 发表于 2016-11-1 22:48 | 显示全部楼层
刘海龙 发表于 2016-11-1 16:12
加入while((P9IN & 0X0f) != 0X0f);到执行按键程序之后

已经解决了  谢谢
回复

使用道具 举报

ID:954216 发表于 2021-7-22 15:54 | 显示全部楼层
刘海龙 发表于 2016-11-1 16:12
加入while((P9IN & 0X0f) != 0X0f);到执行按键程序之后

为什么呢
回复

使用道具 举报

ID:161164 发表于 2021-7-23 00:10 | 显示全部楼层

等待放开按键
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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