|
51單片機+LCD1602+4*4矩陣鍵盤做的密碼鎖
密碼可以輸入10位數- #include <REGX52.H>
- #include "Delay.h"
- #include "LCD1602.h"
- #include "MatrixKey.h"
- unsigned char KeyNum;
- unsigned long Password,Count;
- void main()
- {
- LCD_Init();
- LCD_ShowString(1,1,"Password:");
- while(1)
- {
- KeyNum=MatrixKey();
- if(KeyNum)
- {
- if(KeyNum<=10) //如果S1~S10按鍵按下,輸入密碼
- {
- if(Count<4) //如果輸入次數小于4
- {
- Password*=10; //密碼左移一位
- Password+=KeyNum%10; //獲取一位密碼
- Count++; //計次加一
- }
- LCD_ShowNum(2,1,Password,4); //更新顯示
- }
- if(KeyNum==11) //如果S11按鍵按下,確認
- {
- if(Password==2345) //如果密碼等于正確密碼
- {
- LCD_ShowString(1,14,"OK "); //顯示OK
- Password=0; //密碼清零
- Count=0; //計次清零
- LCD_ShowNum(2,1,Password,4); //更新顯示
- }
- else //否則
- {
- LCD_ShowString(1,14,"ERR"); //顯示ERR
- Password=0; //密碼清零
- Count=0; //計次清零
- LCD_ShowNum(2,1,Password,4); //更新顯示
- }
- }
- if(KeyNum==12) //如果S12按鍵按下,取消
- {
- Password=0; //密碼清零
- Count=0; //計次清零
- LCD_ShowNum(2,1,Password,4); //更新顯示
- }
- }
- }
- }
復制代碼
- #include <REGX52.H>
- #include "Delay.h"
- /**
- * @brief 矩陣鍵盤讀取按鍵鍵碼
- * @param 無
- * @retval KeyNumber 按下按鍵的鍵碼值
- 如果按鍵按下不放,程序會停留在此函數,松手的一瞬間,返回按鍵鍵碼,沒有按鍵按下時,返回0
- */
- 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=16;}
-
- return KeyNumber;
- }
復制代碼
|
-
-
矩陣鍵盤密碼鎖.rar
2023-4-14 14:13 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
43.54 KB, 下載次數: 17, 下載積分: 黑幣 -5
代碼
|