单片机C51(STC89C52RC)独立按键控制LED亮灭、状态、显示二进制、位移
目录
1.独立按键控制LED灯亮灭
2.独立按键控制LED灯状态
3.独立按键控制LED灯显示二进制
4.独立按键控制LED灯位移
5.附录
1.独立按键控制LED灯亮灭
独立按键控制LED灯状态,在独立按键按下时,LED灯点亮,松手后LED灯熄灭。独立按键按下为0,松开为1,在STC89C52RC芯片上,P2为LED灯IO口,P2_0表示第一个LED灯,其他LED灯以此类推,可以通过查看芯片原理图知道。
#include <REGX52.H>void main()
{while(1){if(P3_1==0){P2_0=0;}else{P2_0=1;}}
}
2.独立按键控制LED灯状态
机械式按钮按下或释放时,由于机械弹性作用的影响,总是伴随有一定时间的触点机械抖动,之后触点才稳定下来。在抖动期间,触点的连接状态、导电特性不稳定,接口信号的电平也不稳定,其抖动过程如图 所示,图中 t1和 t3 为抖动时间,其时长与按钮开关的机械特性有关,一般20ms;t2为按键闭合的稳定期,其时间由使用者按键的动作确定,一般为几百毫秒以上, t0和t1为按键释放期。
与处理速度为微秒级的单片机相比而言,这种机械抖动是不可忽略的。如果在触点抖动期间进行按键的通断状态检测,那么可能会导致判断出错,即按键一次操作(按下或释放)被错误地认为是多次操作,从而使单片机产生错误的动作,这是不允许出现的。因此,为了避免按键触点机械抖动所导致的检测误判,必须采取相应的去抖动措施。消除按键抖动可以采用硬件方法,如在按键电路中增加 RS 触发器电路或 RC 积分电路进行消抖;也可采用软件方法,在按键扫描程序中增加相应的代码进行消抖。前者需要增加电路成本,且设备体积也随之增大;后者仅占用少量的 CPU 时间,单片机应用系统多采用软件方法消抖。
软件实现键信号去抖动处理的基本思想是:延时法,即当 CPU 检测到有按键按下时,执行一个20ms左右(时长可按键类型适当调整)的延时程序后再进行按键检测,如果检测到按键仍处于被按下状态,则确认按键被按下;反之,则认为是机械抖动引起的状态变化。对按键释放识别也是采用相同的办法处理。需要注意的是,如果单片机软件系统采用按键定时扫描方式,且扫描周期比软件去抖动的延时时间短,则需要对去抖动的延时程序做特殊的处理,否则可能会引起键盘误读错误。
#include <REGX52.H>
void Delay(unsigned int xms) //@12.000MHz
{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.独立按键控制LED灯显示二进制
unsigned char 表示0~255的八位二进制数,与LED灯IO口位数正好相同。
#include <REGX52.H>
void Delay(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;while(1){if(P3_1==0){Delay(20);while(P3_1==0);Delay(20);LEDNum++;P2=~LEDNum;}}}
4.独立按键控制LED灯位移
通过独立按键控制LED灯向左或者向右位移
#include <REGX52.H>
unsigned char LEDNum;
void Delay(unsigned int xms) //@12.000MHz
{unsigned char i, j;while(xms){i = 2;j = 239;do{while (--j);} while (--i);xms--;}}
void main()
{ P2=~(0x01);while(1){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;}else{LEDNum--;}P2=~(0x01<<LEDNum);}}
}
5.附录
<<位运算,0x01<<a 表示将1按位向左移动a位
例如:0000 0001<<1表示0000 0010
~是取反运算符~(0x01)表示1111 1110
单片机C51(STC89C52RC)独立按键控制LED亮灭、状态、显示二进制、位移相关推荐
- C51---3.2 独立按键控制LED亮灭状态
C51---3.2 独立按键控制LED亮灭状态 原理图 按键消抖 main函数 原理图 按键消抖 对于机械开关,当机械触点断开.闭合时,由于机械触点的弹性作用,一个开关在闭合时不会马上稳定地接通,在断 ...
- 51单片机入门学习------独立按键控制LED亮灭
一.独立按键 1.特点:同侧导通,异侧断开 2.独立按键的I/O口 单片机上电后,所有I/O口默认都是高电平.没有按开关时都是高电平,按下后变成低电平. 寄存器通过检测高低电平检测按键是否被按下 1 ...
- 51单片机 4个独立按键控制LED灯 (protues仿真)(C语言版)
51单片机 4个独立按键控制LED灯 仿真操作及代码展示 _ (protues仿真)_(C语言版) 一.思路及相关问题 1.逻辑思路: 当按下key1时 led1亮起来 因为按下去具有瞬时性不用whi ...
- 按键控制LED亮灭(按一次常亮和按一次亮一下)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.按键按一次LED一直亮 二.按一下按键LED亮一下 总结 前言 一.51单片机按键控制LED亮灭 51单片机的LE ...
- 沁恒CH582M开发板-2-按键扫描(按键控制LED亮灭)
沁恒CH582M开发板-按键扫描(按键控制LED亮灭) 硬件准备: 源地CH582M核心板开发板 RISC-V沁恒WCH蓝牙BLE5.3双路USB: USB-Typec数据线,面包板 ...
- 按键控制LED亮灭(CC2530)
一.实验目的 通过按键实现LED灯的开关控制,实现人机交互 二.实验相关电路图 按键接子啊P0_1接口上,P0端口的第一位P0_1为低电平时说明按键被按下,P0_1为高电平时说明为抬起状态. 三.实验 ...
- CC2530:按键控制LED亮灭
#include <ioCC2530.h>typedef unsigned char uchar; typedef unsigned int uint;#define LED1 P1_0 ...
- 51单片机实现独立按键控制LED灯
本节博客主要实现以下效果: 3-1独立按键控制LED亮灭 本段代码主要使用了if...else...语句实现按下按下灯亮,松开按键时灯灭 #include <REGX51.H>void m ...
- 51单片机-独立按键控制LED
1. 51单片机独立按键的位置: 独立按键的定义:独立按键相当于一种电子开关,按下时开关接通,松开时开关断开,实现原理是通过轻触按键内部的金属弹片受力弹动来实现接通和断开: 在整个51开发板的左下 ...
最新文章
- 【HEVC】1、HM-16.7编码器的基本结构
- 【GitLab】Gitlab用户在组中有五种权限:Guest、Reporter、Developer、Master、Owner
- python3循环遍历嵌套字典替换指定值
- 判断一个窗口是否有焦点_判断一个项目是否值得加盟的基本方法
- linux网络唤醒,如何在Ubuntu Server 18.04中启用网络唤醒(WOL)
- Mac下VirtualBox虚拟机Win7与主机共享文件夹
- 一些html5和css3的一些常见面试题
- Rust 修复隐秘的ReDoS 漏洞
- 总结一下目标检测与跟踪
- java内存泄露 垃圾回收_Java面试中底层垃圾回收、代码安全、内存泄露
- 名词后面用过去分词的具体用法是怎么样的?
- 浅谈计算机网络发展方向,浅谈计算机网络的发展方向
- 在苹果Mac上怎样更改AirDrop名称?
- 第四周项目3--单链表应用之逆置
- Wifi网络共享----Wifi共享精灵
- echarts 2.0 macarons主题安装
- JBoss 中间件漏洞
- 服务器重启之后 宝塔面板打不开
- ImageMagick将多张图片拼接成一张图片_word转存技巧:如何将每页文档转换为图片保存?...
- GANs:生成对抗网络系列及应用
热门文章
- 【android】读写设备节点
- 在线资源链接 占位图 配色
- 没学历、没经验、没技能,啥都没有,靠啥找工作?
- The Thundering Herd accept system call
- C语言中将变量的数值打印到.txt文件
- Pratice Of Concurrency(一: BlockingQueue )
- 物联全域定位技术漫谈
- 服务端JAVA执行js_[Java][Js]利用Rhino在服务器端执行JavaScript
- python 调用event handler_扣丁学堂Python开发之调用语音模块时报错及解决方法
- 浙江大学计算机学院搞能源,CPUFPGA混合架构上的硬件线程加速方法-浙江大学计算机学院.PDF...