代码及问题:
// main.c //
#include <regx52.h>
#include "LCD1602.h"
#include "MatrixKey.h"
#include "delay.h"
#include "key.h"
#define LED P2
unsigned char input[16]= {
'q', 'q', 'q', 'q', 'q', 'q', 'q', 'q',
'q', 'q', 'q', 'q', 'q', 'q', 'q', 'q'}; // 输入初始化
unsigned char password[16] = {
'0', '1', '2', '3', '4', '5', '6', '7',
'8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; // 储存的正确密码
unsigned char i, j, key;
void main()
{
L1:
// 正常来说应该把这句话加上,但是我加上以后编译就错了,不知道为什么
// input[16]= {
// 'q', 'q', 'q', 'q', 'q', 'q', 'q', 'q',
// 'q', 'q', 'q', 'q', 'q', 'q', 'q', 'q'};
i=0; j=0; key=0;
LCD_Init();
LCD_ShowString(1, 1, "Password:");
LCD_ShowString(2, 1, " ");
while(1)
{
key = KeyScan(0); // 独立按键,确认键控制输入是否结束
if(MatrixKeyScan(0)) // 4*4矩阵键盘输入密码
{
input[ i] = MatrixKeyScan(0);
i++;
for(j=0; j<i; j++)
{
LCD_ShowChar(2, 1+j, input[j]); // 输入一位就显示一位数字
}
}
if(key==1 || i>16)
{
key = 0;
for(j=0; j<16; j++)
{
if(password[j]!=input[j])
{
LCD_ShowString(2, 1, "Wrong! ");
while(key==1)
{
i = 0;
goto L1; // 如果密码错了再按一次确认键然后就可以重新输入
}
}
}
LCD_ShowString(2, 1, "Access! "); // 如果密码正确就会一直显示这个
}
}
}
// 问题应该全在main.c里,其他的键盘和屏幕我都测试过了,那些模块都没问题。现象和全部代码在附件里,主要的问题就是显示乱码,非常感谢。
|