独立按键

4x4按键P3口控制(独立只需用到S4~S7,也就是p3.0~p3.3,con3接3和2)



点灯需要的硬件再这里也需要用到,如译码器,或非门,数据选择器。

#include "STC15F2K60S2.h" 单片机头文件名,定义一些特殊的数据寄存器0.0,如#include "reg51.h",是在打单片机程序前需要打出来的,如c语言的#include "stdio.h"

每次检测按键按下时需要有延时去抖,因为在按下按键时按键其实是接触分离了很多次然后才稳定下来的,所以在接触分离时需要延迟程序要避过,然后再次检测稳定时的状态是什么,延时最好设定为一毫秒,长了反应慢,短了反应太快。

#include "STC15F2K60S2.h"

sbit LED1=P0^0;
sbit LED2=P0^1;
sbit LED3=P0^2;
sbit LED4=P0^3;


delay(unsigned int MS)
{//延时程序
 unsigned int i,j;
 for(i=0;i<MS;i++)
 for(j=0;j<MS;j++);
}
void main()
{
 In();
 P2=0x80;//开启Y4C
 LED1=1;LED2=1;LED3=1;LED4=1;
 while(1)
 {
  if((P3&0x0f)!=0x0f)
  {//检测按键是否按下
   delay(500);//延时去抖
   if((P3&0x01)!=0x01)//再次检测
   {
    LED1=!LED1;//点亮或者熄灭L1
    while((P3&0x01)!=0x01);//检查是否放开按键
   }
   if((P3&0x02)!=0x02)
   {
    LED2=!LED2;
    while((P3&0x02)!=0x02);
   }
    if((P3&0x04)!=0x04)
   {
    LED3=!LED3;
    while((P3&0x04)!=0x04);
   }
   if((P3&0x08)!=0x08)
   {
    LED4=!LED4;
    while((P3&0x08)!=0x08);
   }
   else;
  }
 }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值