实验结果
由矩阵键盘输入密码,按下确认键后,由LCD液晶显示屏输出结果是否正确
软硬件目录
STC89C52
keil5
stc烧录软件
普中单片机开发板
LCD1602
部分代码(C语言)
#include <REGX52.H>
#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 <REGX52.H>
#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;
}