代碼及問題:
// 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里,其他的鍵盤和屏幕我都測試過了,那些模塊都沒問題,F象和全部代碼在附件里,主要的問題就是顯示亂碼,非常感謝。
|