独立按键的奇偶数检测
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文件
总结
这里我分了几个模块写的,反正就是怎么简单,怎么清晰怎么来,而且思路也在这里,如果有什么好的想法也挺好的,毕竟看这篇文章的,大概水平跟我也差不多,有时候就是需要思路而已。
其实按键按下就是这么几种情况,并没有什么别的,只是因为我们刚开始接触这个,没有什么这方面的概念,所以觉得很复杂,如果把这几种情况想清楚了,其实也挺简单的。
独立按键的奇偶数检测相关推荐
- 蓝桥杯之单片机设计与开发(9)——独立按键实现计时器
功能: 1.按下S6,清零并停止计时 2.按下S5,暂停计时 3.按下S4,开始计时 计时时,LED为流水灯状态,计时显示格式为 分-秒-毫秒 main.c /******** ...
- vba循环通过键盘某个按键按下退出循环_51单片机按键检测--独立按键与矩阵键盘...
按键可以说是51单片机项目开发的一个重要组件了,它是作为51单片机IO口输入的一种重要方式.我们可以通过按键控制单片机执行相应的程序,得到我们想要得效果.51单片机的按键输入主要有两种,一种是独立按键 ...
- 矩阵键盘 多键组合 c语言,矩阵键盘的检测和独立按键有很大的区别
描述 先说矩阵键盘,因为我写的组合键代码是在矩阵键盘的基础上写的,当然在独立按键上写组合键更简单一些.所以当你矩阵键盘的组合键会写的时候,你在独立按键上的组合键也就会写了. 矩阵键盘的检测和独立按键有 ...
- GD32F405RGT6独立按键检测--状态机(库函数)
GD32F405RGT6独立按键检测–状态机(库函数) 我李某人话不多说,直接上代码,哈哈哈 1.key.h文件 #ifndef _KEY_H_ #define _KEY_H_#include &qu ...
- 【Proteus仿真】8位端口检测8独立按键
[Proteus仿真]8位端口检测8独立按键 Proteus仿真 示例代码 /* Main.c file generated by New Project wizard** Created: 周三 6 ...
- 独立按键检测短按、长按,松手后响应操作
背景 有项目使用独立按键检测,短按.长按.根据使用效果,发现松手后,也就是按键弹起后响应操作比较好操作. 记得之前,博主写过一篇关于按键的检测的文章,但是过于复杂了.可能很难懂,这里就简单一点,只处理 ...
- 矩阵键盘程序_独立按键与矩阵按键
一.独立按键原理 按键在闭合和断开时,触点会存在抖动现象 硬件消抖电路 独立按键控制程 二.独立按键控制程序 #include "reg52.h" typedef unsigned ...
- Verilog实现独立按键消抖(状态机)
本文参考小梅哥的独立按键消抖视频 1,实验原理: 这里是黑金开发板教程中的图,可以看出,按键未按下时的状态是高电平,按下为低电平.下边是小梅哥画的图解. 因为是机械按键,按下时候有一个不稳定的抖动期, ...
- 按键(独立按键、矩阵键盘)——附带程序
按键 一.独立按键: 简介: 消抖: 代码: 二.矩阵键盘 : 行列反转扫描法: 按键对照表: 三.矩阵键盘实验 效果展示: 仿真电路图: 代码: 一.独立按键: 简介: 接触式按键,又叫轻触开关 接 ...
最新文章
- 十篇文章速览多模态推荐系统的最新进展
- php 跨区域,如何构造PHP的内容包括在非安全(http://)和安全(https://)区域以及跨多个目录使用?...
- out参数不用赋值?这么神奇吗!
- 从头到尾彻底理解傅里叶变换算法(上)
- 大厂的 SDK 写法,偷学到了!
- java执行完main就结束了吗_为什么main方法中执行完第一个方法完之后,后面的代码都不执行了?...
- 从RSAC2017看威胁情报如何落地
- 设计模式 (十八 ) 观察者模式
- 移远BC95系列区别
- 服务器安装找不到RAID卡驱动,DELL R430安装WINDOWS 2008 R2 RAID卡无驱动之无法识别sas硬盘的解决方法...
- SonarQube 持续集成代码质量管理
- java 先入先出_一道java的基础题:一个线程安全的后进先出队列
- 简单3步,给小程序加个官方的吐槽功能吧!
- 修真院教学模式四大体系之开发流程
- Python一行代码实现1到100之和
- Opencv获取电脑摄像头抓拍的信息,
- dellR730装机教程
- spring boot整合MySQL数据库
- Oracle Grid Infrastructure架构
- 5/17/2015 今週日本語勉強の纏め
热门文章
- python如何控制输出格式_python格式化输出
- Java中字符数组与字符串的转换方法
- Quan Xidorn: Writing A Custom Derive From Zero
- Preference,PreferenceCategory,PreferenceList,PreferenceCheckBox等控件的简单讲解
- http 响应码 301 和 302 代表的是什么?有什么区别?
- druid 数据库密码加密
- 面经总结(大数据开发相关)
- 快手云控是骗人的吗?
- 3dmax:3dmax的软件两大常用工具之基本三维实体(标准基本体、扩展基本体、复合对象)之详细攻略——daiding
- linux shell 逻辑判断