51单片机按键奇偶数检测

前言
1.写按键奇偶数的一些思路我会以我的理解在这里分析给大家,而且我也是一个小白,如果有什么不对的地方,有大佬看见了还希望给我指出来,并且这也算是我的一片笔记,以后有时间的时候也会回顾一下。


前言

提示:想法

想法:单片机按键写法非常多,而且我也看了很多前辈写的按键,感觉都没有达到我自己想的效果,而且前辈们写的都普遍比较复杂,为了按键的稳定性,看了头皮发麻,对于我们这种新手,非常的不友好,所以我就想想自己写,干好最近遇到了一个按键的问题,就是要判断按键按下是奇数还是偶数,写的不好,希望大家能指出不足。


一、按键奇偶数的思路

思路:首先我们要判断按键按下了几次,这个我们就需要一个变量把按下的次数都记下来,然后对这个按键进行取模(%)的操作,因为,取模就只有两种情况,为0的话就代表按下的次数是一个偶数嘛,不然就是奇数,这个非常好理解,然后还需要一个时间的变量,因为我们手松开了嘛,那就代表不需要按了,定义一个时间的变量,如果到了一定的时间,就代表我们已经结束这个操作了,就好让我们来判断按了几次,这里为什么是定义的时间变量,没有用定时器,是因为单片机里面的定时器是非常宝贵的,用一个就少一个,对我们非常的不友好,所以就定义了时间变量,没用定时器

二、按键的主函数

1.

代码如下:

#include "reg52.h"
extern unsigned int timer;
extern unsigned char flag;//按键的状态
extern unsigned char start;//累计按下的次数void key_timer()//按键按下的时间
{timer = 0;if(KEY1 == 0){DelayMs(100);if(KEY1 == 0){timer++;}}
}void key_state()//按键按下的状态
{start = 0;if(KEY1 == 0){DelayMs(100);{if(KEY1 == 0){start++;flag = 1;}}}
}
key_scan()
{key_timer();key_state();if(KEY1 == 0){DelayMs(100);if(flag == 1){if(start % 2 == 0){//偶数事件}else{//奇数事件}}else{timer++;if(timer >= 3000){//按键弹起大概超过三秒,判断按键结束return;}}}
}

2.对外的接口

代码如下:

#ifndef _key_h
#define _key_h
extern unsigned int timer;
extern unsigned char flag;//按键的状态
extern unsigned char start;//累计按下的次数
key_scan();
#endif

这里是.h文件


总结

这里我分了几个模块写的,反正就是怎么简单,怎么清晰怎么来,而且思路也在这里,如果有什么好的想法也挺好的,毕竟看这篇文章的,大概水平跟我也差不多,有时候就是需要思路而已。

其实按键按下就是这么几种情况,并没有什么别的,只是因为我们刚开始接触这个,没有什么这方面的概念,所以觉得很复杂,如果把这几种情况想清楚了,其实也挺简单的。

独立按键的奇偶数检测相关推荐

  1. 蓝桥杯之单片机设计与开发(9)——独立按键实现计时器

    功能:     1.按下S6,清零并停止计时     2.按下S5,暂停计时     3.按下S4,开始计时 计时时,LED为流水灯状态,计时显示格式为 分-秒-毫秒 main.c /******** ...

  2. vba循环通过键盘某个按键按下退出循环_51单片机按键检测--独立按键与矩阵键盘...

    按键可以说是51单片机项目开发的一个重要组件了,它是作为51单片机IO口输入的一种重要方式.我们可以通过按键控制单片机执行相应的程序,得到我们想要得效果.51单片机的按键输入主要有两种,一种是独立按键 ...

  3. 矩阵键盘 多键组合 c语言,矩阵键盘的检测和独立按键有很大的区别

    描述 先说矩阵键盘,因为我写的组合键代码是在矩阵键盘的基础上写的,当然在独立按键上写组合键更简单一些.所以当你矩阵键盘的组合键会写的时候,你在独立按键上的组合键也就会写了. 矩阵键盘的检测和独立按键有 ...

  4. GD32F405RGT6独立按键检测--状态机(库函数)

    GD32F405RGT6独立按键检测–状态机(库函数) 我李某人话不多说,直接上代码,哈哈哈 1.key.h文件 #ifndef _KEY_H_ #define _KEY_H_#include &qu ...

  5. 【Proteus仿真】8位端口检测8独立按键

    [Proteus仿真]8位端口检测8独立按键 Proteus仿真 示例代码 /* Main.c file generated by New Project wizard** Created: 周三 6 ...

  6. 独立按键检测短按、长按,松手后响应操作

    背景 有项目使用独立按键检测,短按.长按.根据使用效果,发现松手后,也就是按键弹起后响应操作比较好操作. 记得之前,博主写过一篇关于按键的检测的文章,但是过于复杂了.可能很难懂,这里就简单一点,只处理 ...

  7. 矩阵键盘程序_独立按键与矩阵按键

    一.独立按键原理 按键在闭合和断开时,触点会存在抖动现象 硬件消抖电路 独立按键控制程 二.独立按键控制程序 #include "reg52.h" typedef unsigned ...

  8. Verilog实现独立按键消抖(状态机)

    本文参考小梅哥的独立按键消抖视频 1,实验原理: 这里是黑金开发板教程中的图,可以看出,按键未按下时的状态是高电平,按下为低电平.下边是小梅哥画的图解. 因为是机械按键,按下时候有一个不稳定的抖动期, ...

  9. 按键(独立按键、矩阵键盘)——附带程序

    按键 一.独立按键: 简介: 消抖: 代码: 二.矩阵键盘 : 行列反转扫描法: 按键对照表: 三.矩阵键盘实验 效果展示: 仿真电路图: 代码: 一.独立按键: 简介: 接触式按键,又叫轻触开关 接 ...

最新文章

  1. 十篇文章速览多模态推荐系统的最新进展
  2. php 跨区域,如何构造PHP的内容包括在非安全(http://)和安全(https://)区域以及跨多个目录使用?...
  3. out参数不用赋值?这么神奇吗!
  4. 从头到尾彻底理解傅里叶变换算法(上)
  5. 大厂的 SDK 写法,偷学到了!
  6. java执行完main就结束了吗_为什么main方法中执行完第一个方法完之后,后面的代码都不执行了?...
  7. 从RSAC2017看威胁情报如何落地
  8. 设计模式 (十八 ) 观察者模式
  9. 移远BC95系列区别
  10. 服务器安装找不到RAID卡驱动,DELL R430安装WINDOWS 2008 R2 RAID卡无驱动之无法识别sas硬盘的解决方法...
  11. SonarQube 持续集成代码质量管理
  12. java 先入先出_一道java的基础题:一个线程安全的后进先出队列
  13. 简单3步,给小程序加个官方的吐槽功能吧!
  14. 修真院教学模式四大体系之开发流程
  15. Python一行代码实现1到100之和
  16. Opencv获取电脑摄像头抓拍的信息,
  17. dellR730装机教程
  18. spring boot整合MySQL数据库
  19. Oracle Grid Infrastructure架构
  20. 5/17/2015 今週日本語勉強の纏め

热门文章

  1. python如何控制输出格式_python格式化输出
  2. Java中字符数组与字符串的转换方法
  3. Quan Xidorn: Writing A Custom Derive From Zero
  4. Preference,PreferenceCategory,PreferenceList,PreferenceCheckBox等控件的简单讲解
  5. http 响应码 301 和 302 代表的是什么?有什么区别?
  6. druid 数据库密码加密
  7. 面经总结(大数据开发相关)
  8. 快手云控是骗人的吗?
  9. 3dmax:3dmax的软件两大常用工具之基本三维实体(标准基本体、扩展基本体、复合对象)之详细攻略——daiding
  10. linux shell 逻辑判断