蓝桥杯单片机——独立按键、矩阵按键

本篇讲的单片机是第十一届蓝桥杯单片机实训的硬件设备。


蓝桥杯单片机硬件基础

独立/矩阵按键原理图

独立按键

跳线帽需要短接J5口的3和2引脚,按键能使用的仅有第一列(即上图中S4、S5、S6、S7)。当按键按下时,相应的P30-33口输入为低电平,由此编写独立按键扫描函数。

矩阵按键

跳线帽需要短接J5口的1和2引脚,按键能使用16个(即上图中S4-S19)。矩阵按键的扫描方法可采用行列扫描法,分为两步:

  • 将行的输出设为低电平(0),检测列的电平输入值。
  • 将列的输出设为低电平(0),检测行的电平输入值。

将两个检测值进行叠加,计算判断哪个按键被按下;具体的原理这里就不展开讲解了,较为简单。


相关代码编写:
  • 独立按键扫描函数:
void KEY_1(void)
{
	static u8 key_flag = 1;
	if(key_flag && (P30 == 0||P31 == 0|| P32 == 0||P33 == 0))
	{
		key_flag = 0;
		if(P30 == 0)        //S7
		{	
		}
		else if(P31 == 0)   //S6
		{
		}
		else if(P32 == 0)   //S5
		{
		}
		else if(P33 == 0)   //S4
		{
		}
	}
	else if(P33 && P32 && P31 && P30) key_flag = 1;
}
  • 矩阵按键扫描函数:
u16 j;
void KEY_2(void)
{
	u16 k; static u16 i;
	
	P44 = 0; P42 = 1; P35 = 1; P34 = 1;
	k = P3;
	P44 = 1; P42 = 0;
	k = (k<<4)|(P3&0x0f);
	P42 = 1; P35 = 0;
	k = (k<<4)|(P3&0x0f);
	P35 = 1; P34 = 0;
	k = (k<<4)|(P3&0x0f);
	
	k = ~k;
	i = k&(k^j);
	j = k;
	
	switch(i)
	{
		case 0x8000: break;     //S4
		case 0x4000: break;
		case 0x2000: break;
		case 0x1000: break;
		
		case 0x0800: break;     
		case 0x0400: break;
		case 0x0200: break;
		case 0x0100: break;
		
		case 0x0080: break;
		case 0x0040: break;
		case 0x0020: break;
		case 0x0010: break;
		
		case 0x0008: break;
		case 0x0004: break;
		case 0x0002: break;
		case 0x0001: break;
	}
}

函数的使用方法,这里就不展示了,欢迎提问和咨询 ~

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值