【蓝桥杯单片机5】独立键盘的基本操作

文章描述了一个使用微控制器处理按键输入的系统,通过74HC573锁存器控制指示灯状态。在检测到按键按下时,进行了去抖动处理以确保稳定性,不同按键对应点亮不同的指示灯,松开则熄灭。提供的代码示例展示了如何处理S7按键,其他按键处理方式类似。
摘要由CSDN通过智能技术生成

注意:将J5处的跳帽接到2~3引脚,使按键S4~S7四个按键的另外一端接地从而成为4个独立键盘。在扫描按键的过程中,发现有按键触发信号后,先做去抖动处理,当确认为按键按下时,才进行相应的功能处理。

实验1、按下S7点亮L1指键熄灭。S6点亮L2指示灯,S5点亮L3指示灯,S4点亮L4指示灯,都是松开熄灭。按键均作去抖。

代码部分:

1、74HC573及延时函数

void HC138_state(unsigned char channel)
{
  switch(channel)
  {
    case 4:
      P2 = (P2 & 0x1f)|0x80;
    break;
    case 5:
      P2 = (P2 & 0x1f)|0xa0;
    break;
    case 6:
      P2 = (P2 & 0x1f)|0xc0;
    break;
    case 7:
      P2 = (P2 & 0x1f)|0xe0;
    break;
  }
}

void DelayK(unsigned char t)
{
  while (t--);  
}

2、按键部分 (只编写了按下S7点亮L1,松开熄灭其余同理)

void Key_Proc()
{
  if(S7 == 0)
  {
    DelayK(100);        //去抖动
    if(S7 == 0)
    {
      L1 = 0;
      while(S7 ==0);
        L1 = 1;
    }
  }
}

全部代码展示:

/***********************************************************
将J5处的跳帽接到2~3引脚,使按键S4~S7四个按键的另外一端接地
从而成为4个独立键盘。在扫描按键的过程中,发现有按键触发信号
后,先做去抖动处理,当确认为按键按下时,才进行相应的功能处理。

1、按下S7点亮L1指键熄灭。S6点亮L2指示灯,S5点亮L3指示灯,
    S4点亮L4指示灯,都是松开熄灭。按键均作去抖。
************************************************************/

#include "reg52.h"
sbit S7 = P3^0;
sbit S6 = P3^1;
sbit S5 = P3^2;
sbit S4 = P3^3;

sbit L1 = P0^0;
sbit L2 = P0^1;
sbit L3 = P0^2;
sbit L4 = P0^3;
sbit L5 = P0^4;
sbit L6 = P0^5;
sbit L7 = P0^6;

void DelayK(unsigned char t)
{
  while (t--);  
}

void HC138_state(unsigned char channel)
{
  switch(channel)
  {
    case 4:
      P2 = (P2 & 0x1f)|0x80;
    break;
    case 5:
      P2 = (P2 & 0x1f)|0xa0;
    break;
    case 6:
      P2 = (P2 & 0x1f)|0xc0;
    break;
    case 7:
      P2 = (P2 & 0x1f)|0xe0;
    break;
  }
}

void Key_Proc()
{
  if(S7 == 0)
  {
    DelayK(100);//去抖动
    if(S7 == 0)
    {
      L1 = 0;
      while(S7 ==0);
        L1 = 1;
    }
  }
}

//初始化关外设
void InitSystem()					
{
	HC138_state(4);
	P0=0x00;							//蜂鸣器,继电器都关闭
}
void main()
{
  
//  InitSystem();
  HC138_state(4);
   while(1)
   {    
     Key_Proc();
    
   }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值