当前位置: 首页 > news >正文

03 51单片机之独立按键控制LED状态

文章目录

  • 1、独立按键
  • 2、键盘的类型
  • 3、原理图示意
  • 4、新建工程
  • 5、工程编码
  • 6、C51数据运算
  • 7、按键抖动
  • 8、工程编码(防抖操作)
  • 9、独立按键控制LED并显示二进制
  • 9、独立按键控制LED移位


1、独立按键

键盘是电子系统中人机对话的重要组成部分,是人向机器发出指令、输入信息的必须设备。键盘在单片机应用系统中是使用最广泛的一种数据输入设备。键盘是由多个按键组成的。按键的工作原理:按键通常是一种常开型开关,常态下按键的两个触点处于断开状态,按下按键时它们才闭合
在这里插入图片描述

Figure1. 独立按键

2、键盘的类型

通常键盘有编码键盘和非编码键盘两种。编码键盘通过硬件电路产生被按按键的键值码,这种键盘使用方便,所需程序简单,但硬件电路复杂,如计算机的键盘,单片机则通常不采用编码键盘。而软件编程来识别的称为非编码键盘,非编码键盘硬件电路简单。在单片机组成的各种系统中,最常用的是非编码键盘。

3、原理图示意

在这里插入图片描述

Figure2. 独立按键原理图

注意:按键一端与IO口连接,另外一端接地。通过控制IO口输出高电平即可检测按键是否按下,当按下时IO口会被拉低,松开后IO口回到高电平

4、新建工程

在这里插入图片描述

Figure3. 新建工程

5、工程编码

在这里插入图片描述

Figure4. 工程编码

#include <REGX52.H>void main()
{while(1){/* Press on the Button. */if(0 == P3_1){/* Light up LED. */P2_0 = 0;}else{/* Light off LED. */P2_0 = 1;}}
}

6、C51数据运算

在这里插入图片描述

Figure5. C51数据运算

#include <REGX52.H>void main()
{while(1){/* Press on the Button. */if((0 == P3_1)&&(0 == P3_0)){/* Light up LED. */P2_0 = 0;}else{/* Light off LED. */P2_0 = 1;}}
}

7、按键抖动

对于机械开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开,所以在开关闭合及断开的瞬间会伴随一连串的抖动。
在这里插入图片描述

Figure6. 按键抖动

8、工程编码(防抖操作)

在这里插入图片描述

Figure7. 工程编码(防抖操作)

#include <REGX52.H>void DelayMs(unsigned int xms)		//@12.000MHz
{unsigned char i, j;while(xms--){i = 2;j = 239;do{while (--j);} while (--i);}
}void main()
{while(1){/* Press on the Button. */if(0 == P3_1){/* Delay time is 20ms. */DelayMs(20);while(0 == P3_1);/* Delay time is 20ms. */DelayMs(20);P2_0 = ~P2_0;}}
}

9、独立按键控制LED并显示二进制

在这里插入图片描述

Figure8. 独立按键控制LED并显示二进制

#include <REGX52.H>void DelayMs(unsigned int xms)		//@12.000MHz
{unsigned char i, j;while(xms--){i = 2;j = 239;do{while (--j);} while (--i);}
}void main()
{unsigned char LedNum = 0; // 8 bitwhile(1){/* Press on the Button. */if(0 == P3_1){/* Delay time is 20ms. */DelayMs(20);while(0 == P3_1);/* Delay time is 20ms. */DelayMs(20);/* After Power on. P2 pin is high level status. P2 = 1111 1111 */LedNum++;P2 = ~LedNum;}}
}

9、独立按键控制LED移位

在这里插入图片描述

Figure9. 独立按键控制LED移位

#include <REGX52.H>void DelayMs(unsigned int xms)		//@12.000MHz
{unsigned char i, j;while(xms--){i = 2;j = 239;do{while (--j);} while (--i);}
}void main()
{unsigned char LEDNum = 0; // 8 bitP2 = ~0x01; // init Led status after power on.while(1){/* Press on the Button. */if(0 == P3_1){/* Delay time is 20ms. */DelayMs(20);while(0 == P3_1);/* Delay time is 20ms. */DelayMs(20);/* After Power on. P2 pin is high level status. P2 = 1111 1111 */LEDNum++;if(LEDNum >= 8)LEDNum = 0;P2 = ~(0x1 << LEDNum);}if(0 == P3_0){/* Delay time is 20ms. */DelayMs(20);while(0 == P3_0);/* Delay time is 20ms. */DelayMs(20);/* After Power on. P2 pin is high level status. P2 = 1111 1111 */if(LEDNum <= 0)LEDNum = 8;elseLEDNum--;P2 = ~(0x1 << LEDNum);}}
}

文章转载自:
http://bladderwort.ciuzn.cn
http://beamish.ciuzn.cn
http://ahemeral.ciuzn.cn
http://blasphemous.ciuzn.cn
http://allimportant.ciuzn.cn
http://acrocephalia.ciuzn.cn
http://chillily.ciuzn.cn
http://ardor.ciuzn.cn
http://amperehour.ciuzn.cn
http://angiocarpy.ciuzn.cn
http://ataxic.ciuzn.cn
http://attachment.ciuzn.cn
http://cachalot.ciuzn.cn
http://avouch.ciuzn.cn
http://areophysics.ciuzn.cn
http://bicolor.ciuzn.cn
http://backlist.ciuzn.cn
http://chibcha.ciuzn.cn
http://azinphosmethyl.ciuzn.cn
http://cataclasm.ciuzn.cn
http://bombinate.ciuzn.cn
http://bauchle.ciuzn.cn
http://astragalar.ciuzn.cn
http://acropolis.ciuzn.cn
http://assaultable.ciuzn.cn
http://bacchant.ciuzn.cn
http://accoucheur.ciuzn.cn
http://acquit.ciuzn.cn
http://automobilist.ciuzn.cn
http://beethovenian.ciuzn.cn
http://www.dtcms.com/a/281319.html

相关文章:

  • HCIA第三次综合实验:VLAN
  • 连接new服务器注意事项
  • Java核心类库深度解析与实战:从字符串处理到计算器开发
  • 外网如何连接内网中的mysql数据库服务?跨网直接访问操作,不用公网IP
  • 人机协作系列(四)AI编程的下一个范式革命——看Factory AI如何重构软件工程?
  • 力扣——1071. 字符串的最大公因子
  • 解密AWS VPC路由表:显式关联与隐式关联,谁决定了网络出口?
  • 深入剖析Java并发基石:AQS原理与实战
  • java 并发面试题2
  • 【Java篇】IntelliJ IDEA 安装与基础配置指南
  • Linux操作系统从入门到实战(十)Linux开发工具(下)make/Makefile的推导过程与扩展语法
  • 大模型在1型糖尿病肾病V期预测及治疗方案制定中的应用研究
  • 快速了解 HTTPS
  • MyBatis Plus功能增强全解析:从手写SQL到优雅开发的进阶指南
  • 16、鸿蒙Harmony Next开发:组件扩展
  • KeilMDK5如何生成.bin文件
  • 项目进度跨地域团队协作困难,如何统一进度安排
  • PHP语法高级篇(三):Cookie与会话
  • Redis中的红锁
  • ADC采集、缓存
  • Axios 完整功能介绍和完整示例演示
  • 映美打印机-URL页面打印
  • Spring MVC 执行流程详解:一次请求经历了什么?
  • 微信小程序:在ios中border边框显示不全
  • XCTF-repeater三链破盾:PIE泄露+ROP桥接+Shellcode执行的艺术
  • PyTorch 数据加载实战:从 CSV 到图像的全流程解析
  • 股指期货主连和次主连的区别是什么?
  • 游戏加速器核心技术:动态超发
  • Linux 文件系统实现层详解:原理、结构与驱动衔接
  • 人类气道黏膜下腺类器官:解析呼吸炎症与感染的新平台