51_蓝桥杯_独立按键

一 电路

注意:J5跳帽接到2~3引脚,使按键S4-S5四个按键的另外一端接地,从而成为4个独立按键。

二 独立按键工作原理

三 代码

代码1:按下S7点亮L1指示灯,松开按键,指示灯熄灭,按下S6点亮L2指示灯,按下S5点亮L3指示灯,按下S4点亮L4指示灯。

复制代码
#include "reg52.h"

void Delay(unsignde int t)
{
  while(t--);
}//实现延时功能的函数
 
void InitHC138(unsigned char n)
{
 switch (n)
 { 
   case 4;
      HC138_C = 1;
      HC138_B = 0;
      HC138_A = 0;//输出Y4
   break;
   case 5;
      HC138_C = 1;
      HC138_B = 0;
      HC138_A = 1;//输出Y5
   break;
case 4;
      HC138_C = 1;
      HC138_B = 1;
      HC138_A = 0;//输出Y6
   break;
   case 5;
      HC138_C = 1;
      HC138_B = 1;
      HC138_A = 1;//输出Y7
   break;
 }
}//锁存器选择

void dulianjian()
{
  if(S7 == 0)
  {
   Delay(100);
    if(S7 == 0)
    {
      L1 = 0;
      while(S7 == 0)
      L1 = 1;
     }
    }

   if(S6 == 0)
   {
   Delay(100);
    if(S6 == 0)
    {
      L2 = 0;
      while(S5 == 0)
      L2 = 1;
     }
    }

   if(S5 == 0)
   {
   Delay(100);
    if(S5 == 0)
    {
      L3 = 0;
      while(S5 == 0)
      L3 = 1;
     }
    }

   if(S4 == 0)
   {
   Delay(100);
    if(S4 == 0)
    {
      L4 = 0;
      while(S4 == 0)
      L4 = 1;
     }
    }
}

void main()
{
  InitHC138(4);
  while(1)
  {
    dulianjian();
  }
}

代码2 : S7点亮L1时,S6不可执行操作,S5点亮L3,S4点亮L4;

S6点亮L2时,S7不可执行操作,S5点亮L5,S4点亮L6;

L1,L2均未被点亮时,S5,S4均不可执行操作。

复制代码
#include "reg52.h"

void Delay(unsignde int t)
{
  while(t--);
}//实现延时功能的函数
 
void InitHC138(unsigned char n)
{
 switch (n)
 { 
   case 4;
      HC138_C = 1;
      HC138_B = 0;
      HC138_A = 0;//输出Y4
   break;
   case 5;
      HC138_C = 1;
      HC138_B = 0;
      HC138_A = 1;//输出Y5
   break;
case 4;
      HC138_C = 1;
      HC138_B = 1;
      HC138_A = 0;//输出Y6
   break;
   case 5;
      HC138_C = 1;
      HC138_B = 1;
      HC138_A = 1;//输出Y7
   break;
 }
}//锁存器选择

unsigned char stat_k = 0;
void dulianjian()
{
  if(S7 == 0)
  {
   Delay(100);
    if(stat_k == 0)
    {
      L1 = 0;
      stat_k = 1;
    }
      else if(stat_k = 1)
      L1 = 1;
      stat_k = 0;
     }
    }

   
  if(S6 == 0)
  {
   Delay(100);
    if(stat_k == 0)
    {
      L2 = 0;
      stat_k = 2;
    }
      else if(stat_k = 2)
      L2 = 1;
      stat_k = 0;
     }
    }

   if(S5 == 0)
  {
   Delay(100);
    if(stat_k == 1)
    {
      L3 = 0;
      while(S5 == 0);
      L3 = 1;
    }
      else if(stat_k = 2)
      L5 = 0;
      while(S5 == 0);
      L5 = 1;
     }
    }
   if(S4 == 0)
  {
   Delay(100);
    if(stat_k == 1)
    {
      L4 = 0;
      while(S5 == 0);
      L4 = 1;
    }
      else if(stat_k = 2)
      L6 = 0;
      while(S5 == 0);
      L6 = 1;
     }
    }
}

void main()
{
  InitHC138(4);
  while(1)
  {
    dulianjian();
  }
}
相关推荐
I'mChloe3 小时前
PTO-ISA 深度解析:PyPTO 范式生成的底层指令集与 NPU 算子执行的硬件映射
c语言·开发语言
学历真的很重要4 小时前
【系统架构师】第二章 操作系统知识 - 第二部分:进程与线程(补充版)
学习·职场和发展·系统架构·系统架构师
2的n次方_4 小时前
Runtime 内存管理深化:推理批处理下的内存复用与生命周期精细控制
c语言·网络·架构
嵌入小生0074 小时前
标准IO---核心函数接口延续(嵌入式Linux)
c语言·vscode·vim·嵌入式·小白·标准io·函数接口
hqyjzsb5 小时前
盲目用AI提效?当心陷入“工具奴”陷阱,效率不增反降
人工智能·学习·职场和发展·创业创新·学习方法·业界资讯·远程工作
历程里程碑5 小时前
Linux20 : IO
linux·c语言·开发语言·数据结构·c++·算法
C澒5 小时前
Vue 项目渐进式迁移 React:组件库接入与跨框架协同技术方案
前端·vue.js·react.js·架构·系统架构
YuTaoShao6 小时前
【LeetCode 每日一题】1653. 使字符串平衡的最少删除次数——(解法一)前后缀分解
算法·leetcode·职场和发展
VT.馒头6 小时前
【力扣】2727. 判断对象是否为空
javascript·数据结构·算法·leetcode·职场和发展
智者知已应修善业7 小时前
【洛谷P9975奶牛被病毒传染最少数量推导,导出多样例】2025-2-26
c语言·c++·经验分享·笔记·算法·推荐算法