51单片机实现独立按键控制LED灯
本节博客主要实现以下效果:
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灯相关推荐
- 【51单片机】独立按键控制LED灯(四种形式)
- 51单片机_7-1独立按键控制流水灯方向
文章目录 要求 资源 效果 main函数 要求 1.使用单片机内部定时器做为延时函数 2.独立按键K1控制流水灯左移 3.独立按键K2控制流水灯右移 资源 工程文件压缩包 链接:https://pan ...
- 51单片机 4个独立按键控制LED灯 (protues仿真)(C语言版)
51单片机 4个独立按键控制LED灯 仿真操作及代码展示 _ (protues仿真)_(C语言版) 一.思路及相关问题 1.逻辑思路: 当按下key1时 led1亮起来 因为按下去具有瞬时性不用whi ...
- 51单片机:独立按键控制LED灯
1. 独立按键控制LED灯状态 亮灭实验完成后,就可以控制LED状态,首先我们知道由于机械结构的弹性作用,按键开关在闭合时不会一瞬间稳定的接通,在断开时,也不会一下子断开.所以就得需要程序消抖,也就是 ...
- 51单片机红外通信及控制LED灯(LCD1602显示)
51单片机红外通信及控制LED灯(LCD1602显示) 大家好,又和大家见面了,离上一次DS18B20传感器的文章已经过去了一个星期了,这期我将给大家带来,基于STC89C52芯片和HS0038红外接 ...
- 51单片机:独立按键控制数码管计数
//按键动作的前沿和后沿会都有大约10ms的抖动,人在按下按键到松开至少需要50ms以上(待考证).此代码实现的功能为给按键计数,并给按键消抖 //欢迎邮箱交流:bglei@foxmail.com 作 ...
- 蓝桥杯51单片机之独立按键控制数码管【单片机开发初学者必学会】
文章目录 一.写在前面 二.无中断控制数码管 三.外部中断控制数码管 一.写在前面 关于数码管的控制与显示,在文章51单片机之数码管从点亮到动态时钟的实现[单片机开发初学者通俗易懂]已经有详细介绍了, ...
- 用C51汇编语言控制1234灯亮,51单片机:用汇编语言控制LED灯发光
硬件电路: P1.0 ~ P1.5 外接 6 个 LED,分别称为 D1 ~ D6,低电平发光. P0.0 ~ P0.3 外接 4 个 按键,分别称为 K1 ~ K4. P3.2 ~ P3.3 外接 ...
- 51单片机电脑通过串口控制LED灯
Hex模式:底层传输的实际数据 文本模式:把数据进行编码,显示ASCII码char字符,带括号的是控制字符,无法显示出来 代码 UART.c #include <REGX52.H>/** ...
最新文章
- Java中的值传递和引用传递
- (转) Twisted :第二十一部分 惰性不是迟缓: Twisted和Haskell
- 朱俊彦团队最新论文:用GAN监督学习给左晃右晃的猫狗加表情,很丝滑很贴合...
- 【Java 并发编程】CountDownLatch 简介
- 用DateTime.ToString(string format)输出不同格式的日期
- 【BZOJ2118】墨墨的等式【循环节做法】
- 编辑距离及编辑距离算法
- oracle未过账是什么意思,EBS R12 GL过帐问题(急)
- count() * ,1,字段 三兄弟
- jQuery.Form.js 异步提交表单使用总结
- addeventlistener事件第三个参数_JavaScript 事件与事件处理机制
- 图解 Scala 基本语法 V2018.12.17
- Windows2008 Server r2 64位显示桌面图标的方法
- 结对第一次—原型设计
- java电影_java电影视频点播网
- mysql 批量导入_MySQL快速大量导入
- 交流电桥———实验原理
- lol服务器维护是拳头,问拳头-英雄联盟官方网站-腾讯游戏
- 把句子拆分成单词 java_java – 将句子分成单词和标点符号
- linux查询hba卡命令,如何在Linux/Unix平台查看HBA卡的WWN号
热门文章
- 【LeetCode】871. Minimum Number of Refueling Stops 解题报告(Python)
- 多重引导系统启动流程
- oracle utl_smtp,Oracle实时通信:UTL_SMTP包详解
- Java解析XML的一些个人总结及感悟。(webService、xml、xsd)
- 征服上司站稳脚13招
- Python合并多个sheet工作表为一个工作表
- Python校实训第一天----分支语句之星座查询
- 怎么及时给服务器系统打补丁,技巧:巧打补丁保护服务器安全
- 使用 Laravel Sail 和 Laravel Octane 开发高性能 PHP 项目
- 苹果无线耳机连接不上_苹果AirPods Pro鉴别真伪最简单有效的方法