由矩阵键盘输入密码,按下确认键后,由LCD液晶显示屏输出结果是否正确
软硬件目录STC89C52
keil5
stc烧录软件
普中单片机开发板
LCD1602
部分代码(C语言)#include#include "LCD1602.h" //LCD矩阵键盘头文件 #include "MatrixKey.h" //矩阵键盘头文件 unsigned char KeyNum; unsigned int password; unsigned int password_1 = 0; unsigned int real_password=2345; //给定密码值 unsigned int array[10]=0; unsigned int i = 1; unsigned int j = 1; void main() { LCD_Init(); LCD_ShowString(1,2,"PassWord"); while(1) { KeyNum=MatrixKey(); if(KeyNum) { if(KeyNum<=10) { password=KeyNum%10; LCD_ShowNum(2,i,password,1); //显示出输入的键值 array[i]=password; //将输入值赋给数组 i++; } if(KeyNum==15) //确认键按下则判断输入值与给定值是否相等 { for(j=1;j<5;j++) { password_1=array[j]+password_1*10; } if(password_1==real_password) { LCD_ShowString(2,10,"RIGHT!"); } else { LCD_ShowString(2,10,"ERROR!"); } } } } }
#include#include "Delay.h" unsigned char MatrixKey() //矩阵键盘函数 { unsigned char KeyNumber=0; //第一 P1=0xff; P1_3=0; if(P1_7==0) { Delay(20); while(P1_7==0) { Delay(20); KeyNumber=1; } } if(P1_6==0) { Delay(20); while(P1_6==0) { Delay(20); KeyNumber=5; } } if(P1_5==0) { Delay(20); while(P1_5==0) { Delay(20); KeyNumber=9; } } if(P1_4==0) { Delay(20); while(P1_4==0) { Delay(20); KeyNumber=13; } } //第二列 P1=0xff; P1_2=0; if(P1_7==0) { Delay(20); while(P1_7==0) { Delay(20); KeyNumber=2; } } if(P1_6==0) { Delay(20); while(P1_6==0) { Delay(20); KeyNumber=6; } } if(P1_5==0) { Delay(20); while(P1_5==0) { Delay(20); KeyNumber=10; } } if(P1_4==0) { Delay(20); while(P1_4==0) { Delay(20); KeyNumber=14; } } //第三列 P1=0xff; P1_1=0; if(P1_7==0) { Delay(20); while(P1_7==0) { Delay(20); KeyNumber=3; } } if(P1_6==0) { Delay(20); while(P1_6==0) { Delay(20); KeyNumber=7; } } if(P1_5==0) { Delay(20); while(P1_5==0) { Delay(20); KeyNumber=11; } } if(P1_4==0) { Delay(20); while(P1_4==0) { Delay(20); KeyNumber=15; } } //第四列 P1=0xff; P1_0=0; if(P1_7==0) { Delay(20); while(P1_7==0) { Delay(20); KeyNumber=4; } } if(P1_6==0) { Delay(20); while(P1_6==0) { Delay(20); KeyNumber=8; } } if(P1_5==0) { Delay(20); while(P1_5==0) { Delay(20); KeyNumber=12; } } if(P1_4==0) { Delay(20); while(P1_4==0) { Delay(20); KeyNumber=15; } } return KeyNumber; }



