51单片机——独立按键

 一、独立按键对应单片机P3管脚,如图

96c23b692b47488997db4871c9acbc50.jpg

 二、按键点亮LED灯

#include <STC89C5xRC.H>

void main()

{

 while(1)

 {

  if(P30==0)

  {

   P20=0;

  }

  else

  {

   P20=1;

  }

 }

}

当按键为0时,代表按下,所以当P30按下时,让P20=0(亮)

 

三、按下后松开点亮LED灯

#include <STC89C5xRC.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(P31==0)

  {

   Delay(20); // Keys away shaking

   while(P31==0);

   Delay(20); // Detection of let go

   P20=~P20;

  }

 }

}

独立按键按下时是有抖动的,为了防止抖动产生影响,所以给按键加上延迟。(Delay(20))

当P31按下时,产生抖动,延迟20ms。如果不松,P31一直是0,陷入死循环。

当P31不等于0时,代表松开了,产生抖动,延迟20ms。

因为P20之前默认是1(高电平),通过取反,实现P20由高电平转为低电平,P20灯变亮。

当再次按下松开时,又变为高电平,灯灭。

 

四、按键实现LED灯二进制表示

#include <STC89C5xRC.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;  // char max num is 255
    while(1)
    {
    if(P31==0)
    {
        Delay(20);
        while(P31==0);
        Delay(20);
        LEDNum++;
        P2=~LEDNum;
    }
    }
}

当P31按下时,产生抖动,延迟20ms。

如果不松,陷入死循环。

松开时,产生抖动,延迟20ms。

char类型占1个字节(8bit),一开始默认为0000 0000。

松开按键后,加一,变为0000 0001,赋值给P2,使P20亮。

再次执行后,再加一,变为0000 0010,赋值给P2,使P21亮。

再次执行后,再加一,变为0000 0011,赋值给P2,使P20和P21亮。

。。。。

实现二进制表示。

五、通过按键实现灯左移右移

#include <STC89C5xRC.H>

void Delay(unsigned int xms); // must statement

 

unsigned char LEDNum; // The global variable

 

void main()

{

    P2=~0x01; //int P2

 while(1)

 {

  if(P31==0)

  {

  Delay(20);

  while(P31==0);

  Delay(20);

  LEDNum++;

  if(LEDNum>=8)

   LEDNum=0;

  P2=~(0x01<<LEDNum); // 0x01 of P2 need shift to the left LEDNum, and get the not

  }

  if(P30==0)

  {

  Delay(20);

  while(P30==0);

  Delay(20);

  if(LEDNum==0)

   LEDNum=7;

  else

   LEDNum--;

  P2=~(0x01<<LEDNum);

  }

 }

}

 

void Delay(unsigned int xms) //@12.000MHz

{

 unsigned char i, j;

 while(xms)

 {

 i = 2;

 j = 239;

 do

 {

  while (--j);

 } while (--i);

 xms--;

 }

}

一开始让P20亮,然后通过控制P30和P31,实现左移和右移。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/428986.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[产品管理-32]:NPDP新产品开发 - 30 - 文化、团队与领导力 - 领导力与团队的可持续发展

目录 一、团队领导的领导力 1.1 领导力 1、领导力的定义 2、领导力的重要性 3、领导力的构成要素 4、如何提升领导力 1.2 情商 二、虚拟团队 1、团队定义与特征 2、团队优势 3、团队挑战与应对策略 三、可持续发展 四、团队管理和领导力中的度量指标 4.1 激励创新…

XXL-JOB分片概念讲解

3. 分片功能讲解 3.1 案例需求&#xff1a; 1.我们现在实现这样的需求&#xff0c;在指定节假日&#xff0c;需要给平台的所有用户去发送祝福的短信 3.2.编码实现&#xff1a; a.初始化数据 1.在数据库中导入xxl_job_demo.sql数据 b.集成Druid&MyBatis 1.添加依赖 &…

[Python数据拟合与可视化]:使用线性、多项式、指数和高斯模型拟合数据

引言 在数据分析和机器学习领域&#xff0c;选择合适的模型对数据进行拟合是至关重要的。本文将通过一个实际的Python编程案例&#xff0c;比较线性、多项式、指数和高斯模型在数据拟合方面的性能。通过生成模拟数据&#xff0c;我们将使用这些模型进行拟合&#xff0c;并评估…

安捷伦Agilent/keysight 53220A参数资料 通用频率计 计数器

Agilent 53220A&#xff0c;Keysight 53220A&#xff0c;通用频率计数器/计时器&#xff0c;350 MHz&#xff0c;12 位&#xff0c;100 ps 53220A 350 MHz 通用频率计数器/计时器是一款双通道频率计数器&#xff0c;能够执行所需的全部频率和时间间隔测量。它可以添加可选的射…

Linux--守护进程与会话

进程组 概念 进程组就是一个或多个进程的集合。 一个进程组可以包含多个进程。 下面我们通过一句简单的命令行来展示&#xff1a; 为什么会有进程组&#xff1f; 批量操作&#xff1a;进程组允许将多个进程组织在一起&#xff0c;形成一个逻辑上的整体。当需要对多个进程…

【计算机网络】详解UDP套接字网络字节序IP地址端口号

一、网络字节序 我们已经知道, 内存中的多字节数据相对于内存地址有大端和小端之分, 磁盘文件中的多字节数据相对于文件中的偏移地址也有大端小端之分, 网络数据流同样有大端小端之分. 发送主机通常将发送缓冲区中的数据按内存地址从低到高的顺序发出; 接收主机把从网络上接到…

2023北华大学程序设计新生赛部分题解

时光如流水般逝去&#xff0c;我已在校园中奋战大二&#xff01;(≧▽≦) 今天&#xff0c;静静回顾去年的新生赛&#xff0c;心中涌起无尽感慨&#xff0c;仿佛那段青春岁月如烟花般绚烂。✧&#xff61;(≧▽≦)&#xff61;✧ 青春就像一场燃烧的盛宴&#xff0c;激情澎湃&…

DOS(Disk Operating System,磁盘操作系统)常用指令

目录 背景: 早期探索: DOS之父&#xff1a; 发展历程&#xff1a; 常用指令&#xff1a; 进入命令&#xff1a; 操作1.进入和回退&#xff1a; 操作2.增、删&#xff1a; 操作3.其它&#xff1a; 总结: 背景: 早期探索: DOS(Disk Operating System,磁盘操作系统)在…

数据结构——二叉搜索树

目录 二叉搜索树 概念性质 性能分析 实现代码 前置准备 插入 查找 删除&#xff08;重点&#xff09; ​编辑 key和key/value的使用场景 key/value二叉搜索树代码实现 二叉搜索树 概念性质 二叉搜索树&#xff08;Binary Search Tree&#xff0c;简称BST&#xff0…

主流卷积神经网络CNN总结

ResNet&#xff08;2015&#xff09;残差神经网络 残差结构 ResNet50具体卷积结构图 ResNeXt&#xff08;2016&#xff09;加入了分组卷积的思想&#xff0c;将原ResNet网络中的block替换成由group分组的block&#xff0c;两者得到的feature map一致&#xff0c;只是参数量更少…

2024年华为杯-研赛F题论文问题一二讲解+代码分享

X射线脉冲星光子到达时间建模 摘要 脉冲星是一类高速自转的中子星&#xff0c;其自转形成规律性脉冲信号&#xff0c;类似于“宇宙中的灯塔”&#xff0c;因此被认为是极为精确的时钟。X射线脉冲星导航利用脉冲星信号为航天器提供时间和空间参考。通过比较脉冲信号到达航天器…

Vue3.0组合式API:使用reactive()、ref()创建响应式代理对象

Vue3.0组合式API系列文章&#xff1a; 《Vue3.0组合式API&#xff1a;setup()函数》 《Vue3.0组合式API&#xff1a;使用reactive()、ref()创建响应式代理对象》 《Vue3.0组合式API&#xff1a;computed计算属性、watch监听器、watchEffect高级监听器》 《Vue3.0组合式API&…

内网渗透之中间人欺骗攻击-ARP攻击

ARP攻击 ARP协议简介 ARP全称为Address Resolution Protocol&#xff0c;即地址解析协议&#xff0c;它是一个根据IP地址获取物理地址的TCP/IP协议&#xff0c;主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机&#xff0c;并接收返回消息&#xff0c;以此确定…

动态线程池(五)

动态线程池 Filter过滤器 AlarmBaseFilter NoticeBaseFilter NotifyRedisTateLimiterFilter RedisRateLimiter redis限流器 NotifierHandler DtpNotifier动态线程池通知者 Notifier通知者 关于发送Email消息的额外说明

【Java集合】深入了解ArrayList实现原理

概述 1.数据存储是基于动态数组实现的&#xff0c;默认初始容量为10。 2.添加数据时&#xff0c;首先需要检查元素个数是否超过数组容量&#xff0c;如果超过了则需要对数组进行扩容&#xff08;1.5倍&#xff09;&#xff1b;插入数据时&#xff0c;需要将从插入点 k 开始到数…

4.接口测试基础(Jmter工具/场景二:一个项目由多个人负责接口测试,我只负责其中三个模块,协同)

一、场景二&#xff1a;一个项目由多个人负责接口测试&#xff0c;我只负责其中三个模块&#xff0c;协同 1.什么是测试片段&#xff1f; 1&#xff09;就相当于只是项目的一部分用例&#xff0c;不能单独运行&#xff0c;必须要和控制器&#xff08;include,模块&#xff09;一…

河鱼浏览器——您的电商多店管理专家,轻松应对拼多多20+店铺登录挑战

在电商领域驰骋&#xff0c;每一个店铺都是您商业版图的一部分&#xff0c;但同时管理多个拼多多店铺&#xff0c;尤其是超过20个&#xff0c;是否让您感到力不从心&#xff1f;河鱼浏览器&#xff0c;专为电商精英打造的高效管理工具&#xff0c;为您化解这一难题。 **多开无…

JVM 一个对象是否已经死亡?

目录 前言 引用计数法 可达性分析法 引用 finalize() 方法区回收 前言 虚拟机中垃圾回收器是掌握对象生死的判官, 只要是垃圾回收器认为需要被回收的, 那么这个对象基本可以宣告"死亡". 但是也不是所有的对象, 都需要被回收, 因此, 我们在学习垃圾回收的时候…

Qt开发技巧(四)“tr“使用,时间类使用,Qt容器取值,类对象的删除,QPainter画家类,QString的转换,用好 QVariant类型

继续讲一些Qt技巧操作 1.非必要不用"tr" 如果程序运行场景确定是某一固定语言&#xff0c;就不需要用tr,"tr"之主要针对多语种翻译的&#xff0c;因为tr的本意是包含英文&#xff0c;然后翻译到其他语言比如中文&#xff0c;不要滥用tr&#xff0c;如果没有…

万字长文——ConvNeXt(2022CVPR),卷积网络的顶峰之作,在Transformer盛行的当下,卷积网络还能再战!

ConvNext:A ConvNet for the 2020s ConvNext:2020 年代的卷积神经网络 论文地址: https://arxiv.org/pdf/2201.03545 自从Transformer成功应用在视觉领域并且取得显著成绩后,很多人开始抛弃卷积网络架构,转而使用Transformer。然而有的大佬不认为卷积过时了,于是有了这篇…