矩阵按键

这个程序的功能是一个按键控制一个灯的亮灭,16个按键控制8个灯。有2个按键控制一个灯。

首先需要用到点灯程序中的硬件,如 译码器,或非门,数据选择器。
其次就是4x4的按键
#include "STC15F2K60S2.h"是单片机的头文件,定义了一些特殊的数据寄存器。

#include "STC15F2K60S2.h"

#define K P3   //P3口以K来代替
sbit LED1=P0^0;//8个灯的控制
sbit LED2=P0^1;
sbit LED3=P0^2;
sbit LED4=P0^3;
sbit LED5=P0^4;
sbit LED6=P0^5;
sbit LED7=P0^6;
sbit LED8=P0^7;

void delay(unsigned int MS)
{//延时程序
 unsigned int i,j;
 for(i=0;i<MS;i++)
 for(j=0;j<MS;j++);
}

void ScanKey()  //矩阵按键
{
  unsigned char H;//行检测与列检测的判断值
  K=0xfe;
  H=K;
  if(H!=0xfe)  
  {
   delay(250);
       H=K; 
   if(H!=0xfe)
   {
    H=K;
    switch(H)
    {
     case 0xee:LED1=!LED1;break;
     case 0xde:LED2=!LED2;break;
     case 0xbe:LED3=!LED3;break;
     case 0x7e:LED4=!LED4;break;
    }
    while(K!=0xfe);
   }
  }
  K=0xfd;
  H=K;
  if(H!=0xfd)  
  {
   delay(250);
       H=K; 
   if(H!=0xfd)
   {
    H=K;
    switch(H)
    {
     case 0xed:LED5=!LED5;break;
     case 0xdd:LED6=!LED6;break;
     case 0xbd:LED7=!LED7;break;
     case 0x7d:LED8=!LED8;break;
    }
    while(K!=0xfd);
   }
  }
   K=0xfb;
  H=K;
  if(H!=0xfb)  
  {
   delay(250);
       H=K; 
   if(H!=0xfb)
   {
    H=K;
    switch(H)
    {
     case 0xeb:LED1=!LED1;break;
     case 0xdb:LED2=!LED2;break;
     case 0xbb:LED3=!LED3;break;
     case 0x7b:LED4=!LED4;break;
    }
    while(K!=0xfb);
   }
  }
   K=0xf7;
  H=K;
  if(H!=0xf7)  
  {
   delay(250);
       H=K; 
   if(H!=0xf7)
   {
    H=K;
    switch(H)
    {
     case 0xe7:LED5=!LED5;break;
     case 0xd7:LED6=!LED6;break;
     case 0xb7:LED7=!LED7;break;
     case 0x77:LED8=!LED8;break;
    }
    while(K!=0xf7);
   }
  }
}

void main()
{
 P2=0x80;//开启Y4C
 LED1=1;LED2=1;LED3=1;LED4=1;LED5=1;LED6=1;LED7=1;
 while(1)
 {
     ScanKey();
 }
}

最后这个程序在我的单片机上有一些问题,只有8个按键能控制8个灯,而有8个按键却无法使用。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值