本节博客主要实现以下效果:

3-1独立按键控制LED亮灭

本段代码主要使用了if...else...语句实现按下按下灯亮,松开按键时灯灭

#include <REGX51.H>void main()
{while(1){if(P3_1==0&&P3_0==0){P2_0=0;}else{P2_0=1;}}
}

3-2独立按键控制LED状态

首先使用较为灵活的延时函数生成代码,进行修改后如下

void Delay(unsigned int xms)
{unsigned char i, j;while(xms){i = 2;j = 239;do{while (--j);} while (--i);xms--;}
}

按键代码:

void main()
{while(1){if(P3_1==0){Delay(20);while(P3_1==0);     //{}Delay(20);P2_0=~P2_0;}}
}

实现效果:

3-2独立按键控制LED状态

3-3独立按键控制LED显示二进制

显示二进制的延时函数与上述一致,但是按键部分稍有变化

 if(P3_1==0){Delay(20);while(P3_1==0);Delay(20);LEDNum++;         P2=~LEDNum;  }

注意:要对按键进行消抖,判断按键是否仍然继续按下,在此之前定义一个局部变量记录变化,最后让其取反赋值给P2

unsigned char    LEDNum=0;

实现效果:

3-3独立按键控制LED显示二进制

3-4独立按键控制LED移位

3-4设置两个按键控制LED灯的移位,延时部分一致,与3-3比较可以定义一个全局变量

unsigned char LEDNum;

P3_1控制LED右移,P3_0控制LED左移

if(P3_1==0){Delay(20);while(P3_1==0);Delay(20);LEDNum++;if(LEDNum>=8)LEDNum=0;P2=~(0x01<<LEDNum);}if(P3_0==0){Delay(20);while(P3_0==0);Delay(20);if(LEDNum==0)LEDNum=7;elseLEDNum--;P2=~(0x01<<LEDNum);}

一开始D1是不亮的,所以可在代码前添加以下代码,表示将其状态取反后赋值给P2

 P2=~0x01;

实现效果:

3-4独立按键控制LED移位

51单片机实现独立按键控制LED灯相关推荐

  1. 【51单片机】独立按键控制LED灯(四种形式)

  2. 51单片机_7-1独立按键控制流水灯方向

    文章目录 要求 资源 效果 main函数 要求 1.使用单片机内部定时器做为延时函数 2.独立按键K1控制流水灯左移 3.独立按键K2控制流水灯右移 资源 工程文件压缩包 链接:https://pan ...

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

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

  4. 51单片机:独立按键控制LED灯

    1. 独立按键控制LED灯状态 亮灭实验完成后,就可以控制LED状态,首先我们知道由于机械结构的弹性作用,按键开关在闭合时不会一瞬间稳定的接通,在断开时,也不会一下子断开.所以就得需要程序消抖,也就是 ...

  5. 51单片机红外通信及控制LED灯(LCD1602显示)

    51单片机红外通信及控制LED灯(LCD1602显示) 大家好,又和大家见面了,离上一次DS18B20传感器的文章已经过去了一个星期了,这期我将给大家带来,基于STC89C52芯片和HS0038红外接 ...

  6. 51单片机:独立按键控制数码管计数

    //按键动作的前沿和后沿会都有大约10ms的抖动,人在按下按键到松开至少需要50ms以上(待考证).此代码实现的功能为给按键计数,并给按键消抖 //欢迎邮箱交流:bglei@foxmail.com 作 ...

  7. 蓝桥杯51单片机之独立按键控制数码管【单片机开发初学者必学会】

    文章目录 一.写在前面 二.无中断控制数码管 三.外部中断控制数码管 一.写在前面 关于数码管的控制与显示,在文章51单片机之数码管从点亮到动态时钟的实现[单片机开发初学者通俗易懂]已经有详细介绍了, ...

  8. 用C51汇编语言控制1234灯亮,51单片机:用汇编语言控制LED灯发光

    硬件电路: P1.0 ~ P1.5 外接 6 个 LED,分别称为 D1 ~ D6,低电平发光. P0.0 ~ P0.3 外接 4 个 按键,分别称为 K1 ~ K4. P3.2 ~ P3.3 外接  ...

  9. 51单片机电脑通过串口控制LED灯

    Hex模式:底层传输的实际数据 文本模式:把数据进行编码,显示ASCII码char字符,带括号的是控制字符,无法显示出来 代码 UART.c #include <REGX52.H>/** ...

最新文章

  1. Java中的值传递和引用传递
  2. (转) Twisted :第二十一部分 惰性不是迟缓: Twisted和Haskell
  3. 朱俊彦团队最新论文:用GAN监督学习给左晃右晃的猫狗加表情,很丝滑很贴合...
  4. 【Java 并发编程】CountDownLatch 简介
  5. 用DateTime.ToString(string format)输出不同格式的日期
  6. 【BZOJ2118】墨墨的等式【循环节做法】
  7. 编辑距离及编辑距离算法
  8. oracle未过账是什么意思,EBS R12 GL过帐问题(急)
  9. count() * ,1,字段 三兄弟
  10. jQuery.Form.js 异步提交表单使用总结
  11. addeventlistener事件第三个参数_JavaScript 事件与事件处理机制
  12. 图解 Scala 基本语法 V2018.12.17
  13. Windows2008 Server r2 64位显示桌面图标的方法
  14. 结对第一次—原型设计
  15. java电影_java电影视频点播网
  16. mysql 批量导入_MySQL快速大量导入
  17. 交流电桥———实验原理
  18. lol服务器维护是拳头,问拳头-英雄联盟官方网站-腾讯游戏
  19. 把句子拆分成单词 java_java – 将句子分成单词和标点符号
  20. linux查询hba卡命令,如何在Linux/Unix平台查看HBA卡的WWN号

热门文章

  1. 【LeetCode】871. Minimum Number of Refueling Stops 解题报告(Python)
  2. 多重引导系统启动流程
  3. oracle utl_smtp,Oracle实时通信:UTL_SMTP包详解
  4. Java解析XML的一些个人总结及感悟。(webService、xml、xsd)
  5. 征服上司站稳脚13招
  6. Python合并多个sheet工作表为一个工作表
  7. Python校实训第一天----分支语句之星座查询
  8. 怎么及时给服务器系统打补丁,技巧:巧打补丁保护服务器安全
  9. 使用 Laravel Sail 和 Laravel Octane 开发高性能 PHP 项目
  10. 苹果无线耳机连接不上_苹果AirPods Pro鉴别真伪最简单有效的方法