前言

1.独立按键


当按下时,金属弹片下压,使得中间3个点连接一起。

查看原理图

#include <REGX52.H> // REGX52有关于位定义的,而REG52则没有,需要自己sbit定义

2.按下K1点亮LED

#include <REGX52.H> // REGX52有关于位定义的,而REG52则没有,需要自己sbit定义
#include <INTRINS.H>// 延时xms
void Delay1ms(unsigned int xms) //@11.0592MHz
{unsigned char i, j;while (xms) // while里面是延时1ms的代码{_nop_();i = 2;j = 199;do{while (--j);} while (--i);--xms;}
}
void test1()
{while (1){if(P3_1 == 0) // 按下按键K1 点亮LED{P2_0 = 0;}else{P2_0 = 1;}}
}void main()
{test1();
}


利用软件延时消抖。

if(P3_1 == 0)
{Delay1ms(20); // 软件延时消抖while (P3_1 == 0); // 检测松手Delay1ms(20); // 延时消抖
}

3.按键控制LED状态

#include <REGX52.H> // REGX52有关于位定义的,而REG52则没有,需要自己sbit定义
#include <INTRINS.H>// 延时xms
void Delay1ms(unsigned int xms) //@11.0592MHz
{unsigned char i, j;while (xms--) // while里面是延时1ms的代码{_nop_();i = 2;j = 199;do{while (--j);} while (--i);}
}// 按下按键才点亮,再按一次就熄灭
void test2()
{while (1){if(P3_1 == 0){Delay1ms(20); // 软件延时消抖while (P3_1 == 0); // 检测松手Delay1ms(20); // 延时消抖P2_0 = ~P2_0;}}}
void main()
{test2();
}

4.按键控制LED移位

// 独立按键控制LED移位
// 所使用开发板D1~D8是从左到右的
// 按下K1右移,按下K2左移
void test4()
{unsigned char LEDNum = 0;P2 = 0xFE;// 上电时要让D1点亮while (1){if (P3_1 == 0){// 软件消抖Delay1ms(20);while (P3_1 == 0); // 检测松手Delay1ms(20);LEDNum++;if (LEDNum >= 8){LEDNum = 0;}// 0x01 << 1 -->  0000 0010 取反 --> 1111 1101// 0x01 << 2 -->  0000 0100 取反 --> 1111 1011// ...// 0x01 << 7 -->  1000 0000 取反 --> 0111 1111// 0x01 << 8 -->  0000 0000 取反 --> 1111 1111// 因此当左移到8位时,需要重新从0开始移位P2 = ~(0x01 << LEDNum);}// 按下K2右移if (P3_0 == 0){// 软件消抖Delay1ms(20);while (P3_0 == 0); // 检测松手Delay1ms(20);if(LEDNum == 0){LEDNum = 7; // 0再--就变成255了}else{LEDNum--;}P2 = ~(0x01 << LEDNum);}}
}
void main()
{test4();
}

尾声

C51单片机之按键控制LED【02】相关推荐

  1. 单片机按键控制数码管c语言程序,基于单片机的按键控制LED数码管共阴极动态显示电路设计报告(毕业论文).doc...

    基于单片机的按键控制LED数码管共阴极动态显示电路设计报告(毕业论文) 物理与电子工程学院2014级课程设计 PAGE IV 物理与电子工程学院 <单片机原理与接口技术> 课程设计报告书 ...

  2. 用51单片机实现按键控制LED灯亮灭

    用51单片机实现按键控制LED灯亮灭 #include<reg51.h>//头文件 sbit LED=P2^0;//位定义LED灯 sbit k1=P3^1;//位定义按键 void de ...

  3. Proteus:单片机用按键控制LED的亮灭

    题目概述: 单片机用按键控制LED的亮灭. 编程: #include <reg51.h> sbit beep=P1^5; sbit LED=P0^0; sbit k1=P1^0; void ...

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

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

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

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

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

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

  7. STC15单片机 线性按键控制LED流水灯位移

    目录 1.现象 2.代码 3.LED模块原理图 4.线性键盘原理图 1.现象 程序下载完成后: 首先,由最右边的 LED1 点亮.当按下线性按键 S1 后,LED1 熄灭,LED2 点亮.其次,每按下 ...

  8. 51单片机 独立按键控制LED 实现的三人表决器

    有图可以看出,当(K1,K2,K3,K4)按下时(P31,P30P32,P33)短接到地,从高电位被拉到地在数字电路中高电位被看作(1)底电位被看作(0) 可以看出当P2为0时LED上才有电位差,才会 ...

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

    1.前言 1.1功能介绍 代码1:按下K1,D1亮,松开D1灭:代码2:按下K1不亮,直到松手才亮,再按一下无变化,直到松手才变化: 1.2按键的抖动 对于机械开关,当机械触点断开.闭合时,由于机械触 ...

最新文章

  1. element UI el-autocomplete 带输入建议的输入框
  2. TF之DD:实现输出Inception模型内的某个卷积层或者所有卷积层的形状
  3. 安装 Flex2packagebeta_1.994
  4. 汇编语言数据传送示例
  5. 2018汇总数据结构算法篇
  6. mybatis-翻页
  7. php中ignore_user_abort函数的用法
  8. java jasper 生成xlsx_JasperReports导出到xlsx,而不是xls
  9. dentry path_lookat dput
  10. Python模块受欢迎排行榜Top200
  11. 狂肝两万字带你用pytorch搞深度学习!!!
  12. FastQC 与 质控
  13. MathJax:微积分常用符号
  14. 工作站就是高级的微型计算机,家用pc机和工作站有什么不同?
  15. iOS: Motion Event
  16. ch不是小写英文字母的c语言代码,函数fun的功能是进行字母转换。若形参ch中是小写英文字母,则转换成对应的大写英文字母;若ch中是大写英文字母,则...
  17. Vue 组件封装之 Questionnaire 问卷调查
  18. 基于STM8L15x-16x-05x系列单片机的官方标准库文件创建第一个EWSTM8工程项目
  19. 物联网工程导论答案(吴功宜第2版)1-2单元
  20. 为已有设备启用Windows AutoPilot(一)--先决条件

热门文章

  1. 完美使用Word的小技巧
  2. Debian的BIND9的配置
  3. html自动适应wap,html5响应式/多彩小清新个人轻博客模板(自适应手机wap)
  4. Juniper 防火墙端口映射
  5. 【回答问题】ChatGPT上线了!给我推荐20个比较流行的nlp预训练模型
  6. PMP证书有没有必要续证?
  7. 5.2 递归算法及设计思想
  8. 对输入法中全角半角和中英文输入法的理解
  9. Vue 服务端渲染(SSR)
  10. 计算输入字符串的长度c语言,C语言统计输入的字符串的长度