蓝桥杯单片机必备知识—–(6)矩阵按键

蓝桥杯单片机必备知识—–(6)矩阵按键

蓝桥杯单片机必备知识—–(6)矩阵按键

思路: 就是线反转法

线反转法:将控制行的线置高控制列的线置地,如果哪个低,则为哪一行有按键按下;然后将控制列的线置高控制行的线置地,如果哪个低,则为哪一列有按键按下。如此之后就可以确定到底是哪个按键按下。
在这里插入图片描述

注:跳线帽设置为KBD!!!!!

扫描键盘函数

void read_key()
{
   
	static unsigned char hang;
	static unsigned char state = 0;
	
	switch(state)
	{
   
		case 0:	
		{
   
			P3 = 0x0f;P42 = 0;P44 = 0; 
			if(P3 != 0x0f) state = 1;
		}break;
		case 1:
		{
   
			P3 = 0x0f; P42 = 0; P44 = 0;	//列置低,行置高
			if(P3 != 0x0f) 		//判断行
			{
   
				if(P33 == 0) hang = 1;
				if(P32 == 0) hang = 2;
				if(P31 == 0) hang = 3;
				if(P30 == 0) hang = 4;
				switch(hang)
				{
   
					case 1:
					{
   
						P3 = 0xf0;P42 = 1;P44 = 1;				//行置低,列置高
						if(P44 == 0){
    s4++;state = 2;hang = 0;}
						if(P42 == 0){
    s8++;state = 2;hang = 0;}
						if(P35 == 0){
   s12++;state = 2;hang = 0;}
						if(P34 == 0){
    s16++;state = 2;hang = 0;}
					}break;
					case 2:
					{
   
						P3 = 0xf0;P42 = 1;P44 = 1;
						if(P44 == 0){
    s5++;state = 2;hang = 0;}
						if(P42 == 0){
    s9++;state = 2;hang = 0;}
						if(P35 == 0){
   s13++;state = 2;hang = 0;}
						if(P34 == 0){
    s17++;state = 2;hang = 0;}
					}break;
					case 3:
					{
   
						P3 = 0xf0;P42 = 1;P44 = 1;
						if(P44 == 0){
    s6++;state = 2;hang = 0;}
						if(P42 == 0){
    s10++;state = 2;hang = 0;}
						if(P35 == 0){
   s14++;state = 2;hang = 0;}
						if(P34 == 0){
    s18++;state = 2;hang = 0;}
					}break;
					case 4:
					{
   
						P3 = 0xf0;P42 = 1;P44 = 1;
						if(P44 == 0){
    s7++;state = 2;hang = 0;}
						if(P42 == 0){
    s11++;state = 2;hang = 0;}
						if(P35 == 0){
   s15++;state = 2;hang = 0;}
						if(P34 == 0){
    s19++;state = 2;hang = 0;}
					}break;
				}
			}
			else state = 0;
		}break;
		case 2:		//判断按键是否松开
		{
   
			P3 = 0x0f;P42 = 0;P44 = 0;
			if(P3 == 0x0f) state = 0;
		}break;
	}
	
}

测试效果图:

在这里插入图片描述
一般蓝桥杯会使用s4s5s8s9小矩形键盘来测试你对矩阵键盘的掌握程度。
在这里插入图片描述

小矩阵键盘

void read_key()
{
   
	static unsigned char hang;
	static unsigned char state = 0;
	
	switch(state)
	{
   
		case 0:	
		{
   
			P3 = 0x0f;P42 = 0;P44 = 0;
			if(P3 != 0x0f) state = 1;
		}break;
		case 1:
		{
   
			P3 = 0x0f; P42 = 0; P44 = 0;
			if(P3 != 0x0f) 
			{
   
				if(P33 == 0) hang = 1;
				if(P32 == 0) hang = 2;
				switch(hang)
				{
   
					case 1:
					{
   
						P3 = 0xf0;P42 = 1;P44 = 1;
						if(P44 == 0){
    s4++;state = 2;hang = 0;}
						if(P42 == 0){
    s8++;state = 2;hang = 0;}
					}break;
					case 2:
					{
   
						P3 = 0xf0;P42 = 1;P44 = 1;
						if(P44 == 0){
    s5++;state = 2;hang = 0;}
						if(P42 == 0){
    s9++;state = 2;hang = 0;}
					}break;
				}
			}
			else state = 0;
		}break;
		case 2:
		{
   
			P3 = 0x0f;P42 = 0;P44 = 0;
			if(P3 == 0x0f) state = 0;
		}break;
	}
	
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/100142.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • windows关闭/开启休眠命令行

    windows关闭/开启休眠命令行C:\hiberfil.sys占用空间过大,可以考虑关闭休眠重新开启

  • win10 卸载cuda10.1

    win10 卸载cuda10.1创建于:@2020.04.19修改于:@2020.04.19文章目录1.背景2.cuda卸载1.背景在尝试安装tensorflow-gpu时,cuda安装版本错误。需要卸载。2.cuda卸载(1)在控制面板中打开【程序】–>【程序和功能】(2)确定要卸载的内容,图中红框内的内容(3)删除C盘里面C:\ProgramFiles\NVIDIAGPUComputi…

  • JRTPLIB使用实例

    JRTPLIB使用实例这几天在看关于JRTPLIB方面的东西。在网上看了不少文章,其中有很大部分使用的JRTPLIB版本在3.0以下。在网上下载了一个JRTPLIB-3.7的库,发现里面的函数接口做了一些修改。现奉上一篇基

  • 关于nginx的五大面试题_vue面试题大全

    关于nginx的五大面试题_vue面试题大全1、你近期使用过的Nginx的版本?生产环境使用Stableversion:最新稳定版注意各版本的区别:Nginx官网提供了三个类型的版本1、Mainlineversion:Mainline是Nginx目前主力在做的版本,可以说是开发版2、Stableversion:最新稳定版,生产环境上建议使用的版本3、Legacyversions:遗留的老版本的稳定版2、Nginx…

  • idea2022最新激活码[最新免费获取]

    (idea2022最新激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~https://javaforall.cn/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~1M…

  • 联想笔记本电脑键盘灯怎么开启_联想笔记本电脑的键盘灯怎么开[通俗易懂]

    联想笔记本电脑键盘灯怎么开启_联想笔记本电脑的键盘灯怎么开[通俗易懂]展开全部1、联想笔记本部分型号具备键盘背32313133353236313431303231363533e4b893e5b19e31333431336664光功能,方法通过“FN+空格”打开,支持此功能的机型,键盘上有相应标示。部分早期的Thinkpad笔记本电脑若带有键盘灯,需要通过“Fn+PageUp”组合键开启。发现电脑键盘的“Space(空格键)”按键上有下图所示的标识符号电脑一般带有键…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号