单片机c语言自锁程序,从业将近十年!手把手教你单片机程序框架(连载)

第九节:独立按键的双击按键触发。

开场白:

上一节讲了在定时中断函数里处理独立按键的扫描程序,这种结构的程序我用在了很多项目上。这一节教大家如何实现按键双击触发的功能,这种功能类似鼠标的双击。要教会大家一个知识点:如何在上一节的基础上,略作修改,就可以实现按键的双击功能。

具体内容,请看源代码讲解。

(1)硬件平台:基于朱兆祺51单片机学习板。用矩阵键盘中的S1和S5号键作为独立按键,记得把输出线P0.4一直输出低电平,模拟独立按键的触发地GND。

(2)实现功能:有两个独立按键,每双击一个独立按键,蜂鸣器发出“滴”的一声后就停。

(3)源代码讲解如下:

#include "REG52.H"

#define const_voice_short  40   //蜂鸣器短叫的持续时间

/* 注释一:

* 调整抖动时间阀值的大小,可以更改按键的触发灵敏度。

* 去抖动的时间本质上等于累计定时中断次数的时间。

*/

#define const_key_time1  20    //按键去抖动延时的时间

#define const_key_time2  20    //按键去抖动延时的时间

/* 注释二:

* 有效时间差,是指连续两次按键触发的最大有效间隔时间。

* 如果双击的两个按键按下的时间间隔太长,则视为无效双击。

*/

#define const_interval_time1  200     //连续两次按键之间的有效时间差

#define const_interval_time2  200     //连续两次按键之间的有效时间差

void initial_myself();

void initial_peripheral();

void delay_long(unsigned int uiDelaylong);

void T0_time();  //定时中断函数

void key_service(); //按键服务的应用程序

void key_scan(); //按键扫描函数 放在定时中断里

sbit key_sr1=P0^0; //对应朱兆祺学习板的S1键

sbit key_sr2=P0^1; //对应朱兆祺学习板的S5键

sbit key_gnd_dr=P0^4; //模拟独立按键的地GND,因此必须一直输出低电平

sbit beep_dr=P2^7; //蜂鸣器的驱动IO口

unsigned char ucKeySec=0;   //被触发的按键编号

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值