一.独立按键

1.特点:同侧导通,异侧断开

2.独立按键的I/O口

 单片机上电后,所有I/O口默认都是高电平。没有按开关时都是高电平,按下后变成低电平。

寄存器通过检测高低电平检测按键是否被按下

1)由下原理图可知,独立按键         K1 = P3_0       K2 = P3_1       K3 = P3_2       K4 = P3_3

二.LED

1. 16进制表示

点亮第1个LED     P2 = 0xFE;      //1111 1110

点亮第2个LED    P2 = 0xFD;      //1111 1101
点亮第3个LED   P2 = 0xFB;      //1111 1011
点亮第4个LED   P2 = 0xF7;      //1111 0111
点亮第5个LED    P2 = 0xEF;      //1110 1111
点亮第6个LED    P2 = 0xDF;      //1101 1111
点亮第7个LED     P2 = 0xBF;      //1011 1111
点亮第8个LED    P2 = 0x7F;      //0111 1111

2.I/O口表示

点亮第1个LED     P2_0=0;      熄灭第1个LED    P2_0=1;

点亮第2个LED     P2_1=0;      熄灭第2个LED    P2_1=1;

点亮第3个LED     P2_2=0;      熄灭第2个LED    P2_2=1;

后面的LED以此类推

三.按键的抖动

为了除去抖动造成的影响,可以在按键抖动期间使用延时函数,从而避开抖动时间

while(1){if(P3_1==0){//除去抖动Delay1ms(20);while(P3_1==0);Delay1ms(20);//LED亮暗取反P2_0 = ~P2_0;}
}

四.实例应用

1.实现除去抖动、按下按键后改变灯的暗亮的功能

功能:按一次,LED变亮,再按一次,LED变暗,再按一次,LED变亮,以此类推。

if(P3_1==0)            //按键按一次{P2_0 = ~P2_0;  //LED电平取反一次}
#include <REGX52.H>void Delay1ms(unsigned int xms)        //@12.000MHz
{unsigned char i, j;while(xms){i = 2;j = 239;do{while (--j);} while (--i);xms --;}
}void mian()
{while(1){if(P3_1==0){Delay1ms(20);while(P3_1==0);Delay1ms(20);P2_0 = ~P2_0;}}
}

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

功能:按一次开关,二进制计数+1

    unsigned char LEDNum=0;  //0000 0000while(1) {if(P3_1==0){Delay1ms(20);while(P3_1==0);Delay1ms(20);LEDNum++;        //0000 0001P2=~LEDNum;      //1111 1110(取反)}}
#include <REGX52.H>void Delay1ms(unsigned int xms)        //@12.000MHz
{unsigned char i, j;while(xms){i = 2;j = 239;do{while (--j);} while (--i);xms --;}
}void main()
{unsigned char LEDNum=0;  //0000 0000while(1){if(P3_1==0){Delay1ms(20);while(P3_1==0);Delay1ms(20);LEDNum++;        //0000 0001P2=~LEDNum;      //1111 1110(取反)}}
}

3.独立按键控制LED位移(按键版流水灯)

功能:每按一次开关,LED灯移动一次。

按位左移<<

按位左移的代码实现

unsigned char LEDNum = 0 ;while(1){if(P3_1==0){LEDNum++;if(LEDNum>=8)LEDNum=0;P2=~(0x01<<LEDNum);  //“<<”按位左移}    }
#include <REGX52.H>void Delay1ms(unsigned int xms)
{unsigned char i, j;while(xms){i = 2;j = 239;do{while (--j);} while (--i);xms --;}
}void mian()
{unsigned char LEDNum = 0 ;while(1){if(P3_1==0){Delay1ms(20);while(P3_1==0);Delay1ms(20);LEDNum++;if(LEDNum>=8)LEDNum=0;P2=~(0x01<<LEDNum);} }
}

51单片机入门学习------独立按键控制LED亮灭相关推荐

  1. 单片机C51(STC89C52RC)独立按键控制LED亮灭、状态、显示二进制、位移

    目录 1.独立按键控制LED灯亮灭 2.独立按键控制LED灯状态 3.独立按键控制LED灯显示二进制 4.独立按键控制LED灯位移 5.附录 1.独立按键控制LED灯亮灭 独立按键控制LED灯状态,在 ...

  2. 51单片机 4个独立按键控制LED灯 (protues仿真)(C语言版)

    51单片机 4个独立按键控制LED灯 仿真操作及代码展示 _ (protues仿真)_(C语言版) 一.思路及相关问题 1.逻辑思路: 当按下key1时 led1亮起来 因为按下去具有瞬时性不用whi ...

  3. C51---3.2 独立按键控制LED亮灭状态

    C51---3.2 独立按键控制LED亮灭状态 原理图 按键消抖 main函数 原理图 按键消抖 对于机械开关,当机械触点断开.闭合时,由于机械触点的弹性作用,一个开关在闭合时不会马上稳定地接通,在断 ...

  4. 按键控制LED亮灭(按一次常亮和按一次亮一下)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.按键按一次LED一直亮 二.按一下按键LED亮一下 总结 前言 一.51单片机按键控制LED亮灭 51单片机的LE ...

  5. 沁恒CH582M开发板-2-按键扫描(按键控制LED亮灭)

             沁恒CH582M开发板-按键扫描(按键控制LED亮灭) 硬件准备: 源地CH582M核心板开发板 RISC-V沁恒WCH蓝牙BLE5.3双路USB: USB-Typec数据线,面包板 ...

  6. 按键控制LED亮灭(CC2530)

    一.实验目的 通过按键实现LED灯的开关控制,实现人机交互 二.实验相关电路图 按键接子啊P0_1接口上,P0端口的第一位P0_1为低电平时说明按键被按下,P0_1为高电平时说明为抬起状态. 三.实验 ...

  7. CC2530:按键控制LED亮灭

    #include <ioCC2530.h>typedef unsigned char uchar; typedef unsigned int uint;#define LED1 P1_0 ...

  8. 51单片机实现独立按键控制LED灯

    本节博客主要实现以下效果: 3-1独立按键控制LED亮灭 本段代码主要使用了if...else...语句实现按下按下灯亮,松开按键时灯灭 #include <REGX51.H>void m ...

  9. 51单片机-独立按键控制LED

    1.   51单片机独立按键的位置: 独立按键的定义:独立按键相当于一种电子开关,按下时开关接通,松开时开关断开,实现原理是通过轻触按键内部的金属弹片受力弹动来实现接通和断开: 在整个51开发板的左下 ...

最新文章

  1. 面试官如何判断面试者的机器学习水平?
  2. mysql数据库入门题型_mysql数据库入门
  3. diamond源码阅读-diamond-client
  4. pyhanlp 词性标注(正篇)
  5. MySQL Replication--复制异常1
  6. 再见 Win10系统!下一代操作系统要来了!!
  7. mysql安装后变10g_Oracle 10G安装中一些常见问题解决
  8. php软件开发--php进阶
  9. 文本删除空行_Word的空行、空格、页眉线删不了?8秒一次性处理,教你删掉它们...
  10. QT实现可移动和改变尺寸的无边框窗口
  11. linux 脚本使用第一篇
  12. 基类显式继承接口,类继承基类时又继承同一接口,引发接口方法混乱(显式继承接口的弊端)...
  13. java的字符串复制_我应该如何复制Java中的字符串?
  14. SpringMVC学习(六)处理乱码问题
  15. java如何调用蜂鸣器_用鸿蒙OS在蜂鸣器上播放一曲《两只老虎》
  16. unity怎么制作云飘动_现实的动态云系统特效脚本Unity3D素材资源
  17. 测试网卡芯片型号的软件,查看电脑无线网卡型号_查看无线网卡芯片型号
  18. 算法的两大性能指标:时间复杂度和空间复杂度
  19. win10如何切换计算机用户,Windows10系统下切换用户的多种技巧
  20. 济南出台5G专项规划,十年布局5G基站18万处

热门文章

  1. ROS操作系统 opencv-python读取摄像头+rviz可视化
  2. 图数据库JanusGraph介绍及使用(三):安装与初步使用
  3. 网站打开出现服务器错误代码,网站打开出现“404”错误怎么解决?
  4. nest.js入门一
  5. (转)MySpace 起步揭密
  6. 第一章 c语言程序设计概述 选择题,C语言程序设计 C语言概述练习题答案
  7. 数字电路和模拟电路-2数字电路基础
  8. ARM Linux摄像头传感器数据处理全景视野:从板端编码视频到高级应用
  9. SQL连接查询和笛卡尔积
  10. 浅谈postman设置token依赖步骤