当前位置:   article > 正文

蓝桥杯单片机开发_蓝桥杯单片机项目

蓝桥杯单片机项目

蓝桥杯单片机矩阵键盘

  • 于7月5日参加了学校举办的蓝桥杯单片机开发组比赛,这次的比赛非比寻常,不仅仅是推迟了三个月,因为疫情的原因,而且也不像往年一样需要到昆工的考场,这次直接在本校举行,有些学校只有一个人比赛的,当然氛围也是不错的,从早上9:00开始到下午14:00,时间是5个小时,中途还有学校提供的充饥食物,一袋牛奶和巧克力,总体来说,办得还不错。但是,我还是要说,对于这次的比赛,还是失利了,非常的伤心,可能损失了几百块,最重要的是题目不算太难,他考察的都比较简单,而且知识点也都复习到了,但是可能也是抱佛脚的缘故,结果就在矩阵键盘和中断处理上翻车了。这也提醒我们,不要抱有侥幸心理,练题必须练到面面俱到,不要盲目的去背源代码,那个可能是徒劳的,一定要理解着使用。
    好了不吹牛了,下面我就来自己总结一下矩阵键盘(细节决定成败呀,就是因为一个符号||写成了&&!),先看原理图: 在这里插入图片描述
    从图中我们可以看出,矩阵键盘是接在P3口的,按行是从P3.0-P3.4,列是从P3.5-P3.7,但是需要注意的是P3.6、P3.7分别接到了P4.2、P4.4,这个就比较坑了,我要也是在这里翻了车。下面看代码:
uchar_8 Key_Scan()
{
	uchar_8 Temp_C,Temp_R;
	Key_Value =0xF0; P44 =P42 =1;
	if(((Key_Value & 0xF0) !=0xF0) || ((P44 & P42) !=1))
	{
		Delay(10); //10ms
		if(((Key_Value & 0xF0) !=0xF0) || ((P44 & P42) !=1))
		{
			if(!P44)
			{
				Temp_C = Key_Value & 0x70;
			}
			else if(!P42)
			{
				Temp_C =Key_Value & 0xB0;
			}
			else 
				Temp_C =Key_Value & 0xF0;
			
			Key_Value =0x0F; P44 =P42 =0;
			Temp_R =Key_Value & 0x0F;
			while((Key_Value &0x0F) !=0x0F);
			return (Temp_C | Temp_R);
		}
	}
	return 0xFF;
}

uchar_8 Mtx_Key()
{
	switch(Key_Scan())//调用键盘反转扫描函数
	{
		case 0x7E: return 0; break; //1
		case 0xBE: return 1; break;
		case 0xDE: return 2; break;
		case 0xEE: return 3; break;
		case 0x7D: return 4; break; //2
		case 0xBD: return 5; break;
		case 0xDD: return 6; break;
		case 0xED: return 7; break;
		case 0x7B: return 8; break; //3
		case 0xBB: return 9; break;
		case 0xDB: return 10; break;
		case 0xEB: return 11; break;
		case 0x77: return 12; break; //4
		case 0xB7: return 13; break;
		case 0xD7: return 14; break;
		case 0xE7: return 15; break;
		default:  break;
	}
	return 0xFF;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 这个驱动程序可以看出,采用了反转扫描方式,这种方式代码量比较少,但是不太好理解。
    下面我们分析一下原理,其实也比较简单的,先给P3口低四位拉低,然后读出列值,在拉低高四位,读出行值,最后和起来就是当前键值了。
    这个就是矩阵键盘了,简单把,可是,我的两个多小时就花费在这个上了,就是if条件判断的第二条,太难受了,好了,不说了。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/560730
推荐阅读
相关标签
  

闽ICP备14008679号