蓝桥杯笔记之 矩阵键盘程序设计(五)

本文详细介绍了一个基于单片机的按键扫描程序实现原理。通过控制P4和P3口的输入输出,实现对矩阵键盘的行和列信号检测,判断是否有按键被按下,并确定具体按键位置。文章提供了完整的程序代码,包括行和列信号的初始化、按键状态检测及消抖处理,适用于初学者理解和学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

直接贴程序

注意
1.j5的跳线帽不要接错
2.第二次扫描还是按下了一次,故不用软件消抖

void keyscan()
{
	P44=1;P42=1;P35=1;P34=1;   //这是列,检测列
	P30=0;P31=0;P32=0;P33=0;   //行

	if(P44!=1||P42!=1||P35!=1||P34!=1)
	{
		Delay1ms();Delay1ms();Delay1ms();
		if(P44!=1||P42!=1||P35!=1||P34!=1)
		{
		 	if(P44!=1)   //第一列
			{
				key_value=1;
			}

			if(P42!=1)   //第二列
			{
				key_value=2;
			}

			if(P35!=1)   //第三列
			{
				key_value=3;
			}

			if(P34!=1)   //第四列
			{
				key_value=4;
			}
		}
	}   //列检测结束
	
	P44=0;P42=0;P35=0;P34=0;   //列
	P30=1;P31=1;P32=1;P33=1;   //行,行检测
	if(P30!=1||P31!=1||P32!=1||P33!=1)	//第二次检测不需要延时,一定要注意呀
	{
		 if(P30!=1)  //第一行
		{
			key_value=key_value;
		}

		if(P31!=1)  //第二行
		{
			key_value=key_value+4;
		}

		if(P32!=1)  //第三行
		{
			key_value=key_value+8;
		}

		if(P33!=1)  //第四行
		{
			key_value=key_value+12;
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值