)
矩阵键盘以上图片均截自江协科技b站视频。扫描方式P17-P14用低电平表示行开启P13-P10用低电平表示列开启。以下为实现代码头文件跟着江协科技走就行了。#includeDelay.h unsigned char MatrixKey() { unsigned char KeyNumber0; P10xFF; P1_30; if(P1_70){Delay(20);while(P1_70);Delay(20);KeyNumber1;} if(P1_60){Delay(20);while(P1_60);Delay(20);KeyNumber5;} if(P1_50){Delay(20);while(P1_50);Delay(20);KeyNumber9;} if(P1_40){Delay(20);while(P1_40);Delay(20);KeyNumber13;} P10xFF; P1_20; if(P1_70){Delay(20);while(P1_70);Delay(20);KeyNumber2;} if(P1_60){Delay(20);while(P1_60);Delay(20);KeyNumber6;} if(P1_50){Delay(20);while(P1_50);Delay(20);KeyNumber10;} if(P1_40){Delay(20);while(P1_40);Delay(20);KeyNumber14;} P10xFF; P1_10; if(P1_70){Delay(20);while(P1_70);Delay(20);KeyNumber3;} if(P1_60){Delay(20);while(P1_60);Delay(20);KeyNumber7;} if(P1_50){Delay(20);while(P1_50);Delay(20);KeyNumber11;} if(P1_40){Delay(20);while(P1_40);Delay(20);KeyNumber15;} P10xFF; P1_00; if(P1_70){Delay(20);while(P1_70);Delay(20);KeyNumber4;} if(P1_60){Delay(20);while(P1_60);Delay(20);KeyNumber8;} if(P1_50){Delay(20);while(P1_50);Delay(20);KeyNumber12;} if(P1_40){Delay(20);while(P1_40);Delay(20);KeyNumber16;} return KeyNumber; }#includeREGX52.H #includeDelay.h #includeLCD1602.h #includeMatrixKey.h unsigned char KeyNum; void main() { LCD_Init(); LCD_ShowString(1,1,HelloWorld); while(1) { KeyNumMatrixKey(); if(KeyNum) { LCD_ShowNum(2,1,KeyNum,2); }//如果没有判断的话按键松开会迅速显示数字然后再次执行while循环显示0 } }