找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1021|回复: 1
打印 上一主题 下一主题
收起左侧

51单片机+LCD1602+4*4矩阵键盘做的密码锁代码

[复制链接]
跳转到指定楼层
楼主
ID:551638 发表于 2023-4-14 14:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
51单片机+LCD1602+4*4矩阵键盘做的密码锁
密码可以输入10位数
  1. #include <REGX52.H>
  2. #include "Delay.h"
  3. #include "LCD1602.h"
  4. #include "MatrixKey.h"

  5. unsigned char KeyNum;
  6. unsigned long Password,Count;

  7. void main()
  8. {
  9.         LCD_Init();
  10.         LCD_ShowString(1,1,"Password:");
  11.         while(1)
  12.         {
  13.                 KeyNum=MatrixKey();
  14.                 if(KeyNum)
  15.                 {
  16.                         if(KeyNum<=10)        //如果S1~S10按键按下,输入密码
  17.                         {
  18.                                 if(Count<4)        //如果输入次数小于4
  19.                                 {
  20.                                         Password*=10;                                //密码左移一位
  21.                                         Password+=KeyNum%10;                //获取一位密码
  22.                                         Count++;        //计次加一
  23.                                 }
  24.                                 LCD_ShowNum(2,1,Password,4);        //更新显示
  25.                         }
  26.                         if(KeyNum==11)        //如果S11按键按下,确认
  27.                         {
  28.                                 if(Password==2345)        //如果密码等于正确密码
  29.                                 {
  30.                                         LCD_ShowString(1,14,"OK ");        //显示OK
  31.                                         Password=0;                //密码清零
  32.                                         Count=0;                //计次清零
  33.                                         LCD_ShowNum(2,1,Password,4);        //更新显示
  34.                                 }
  35.                                 else                                //否则
  36.                                 {
  37.                                         LCD_ShowString(1,14,"ERR");        //显示ERR
  38.                                         Password=0;                //密码清零
  39.                                         Count=0;                //计次清零
  40.                                         LCD_ShowNum(2,1,Password,4);        //更新显示
  41.                                 }
  42.                         }
  43.                         if(KeyNum==12)        //如果S12按键按下,取消
  44.                         {
  45.                                 Password=0;                //密码清零
  46.                                 Count=0;                //计次清零
  47.                                 LCD_ShowNum(2,1,Password,4);        //更新显示
  48.                         }
  49.                 }
  50.         }
  51. }
复制代码

  1. #include <REGX52.H>
  2. #include "Delay.h"

  3. /**
  4.   * @brief  矩阵键盘读取按键键码
  5.   * @param  无
  6.   * @retval KeyNumber 按下按键的键码值
  7.                         如果按键按下不放,程序会停留在此函数,松手的一瞬间,返回按键键码,没有按键按下时,返回0
  8.   */
  9. unsigned char MatrixKey()
  10. {
  11.         unsigned char KeyNumber=0;
  12.        
  13.         P1=0xFF;
  14.         P1_3=0;
  15.         if(P1_7==0){Delay(20);while(P1_7==0);Delay(20);KeyNumber=1;}
  16.         if(P1_6==0){Delay(20);while(P1_6==0);Delay(20);KeyNumber=5;}
  17.         if(P1_5==0){Delay(20);while(P1_5==0);Delay(20);KeyNumber=9;}
  18.         if(P1_4==0){Delay(20);while(P1_4==0);Delay(20);KeyNumber=13;}
  19.        
  20.         P1=0xFF;
  21.         P1_2=0;
  22.         if(P1_7==0){Delay(20);while(P1_7==0);Delay(20);KeyNumber=2;}
  23.         if(P1_6==0){Delay(20);while(P1_6==0);Delay(20);KeyNumber=6;}
  24.         if(P1_5==0){Delay(20);while(P1_5==0);Delay(20);KeyNumber=10;}
  25.         if(P1_4==0){Delay(20);while(P1_4==0);Delay(20);KeyNumber=14;}
  26.        
  27.         P1=0xFF;
  28.         P1_1=0;
  29.         if(P1_7==0){Delay(20);while(P1_7==0);Delay(20);KeyNumber=3;}
  30.         if(P1_6==0){Delay(20);while(P1_6==0);Delay(20);KeyNumber=7;}
  31.         if(P1_5==0){Delay(20);while(P1_5==0);Delay(20);KeyNumber=11;}
  32.         if(P1_4==0){Delay(20);while(P1_4==0);Delay(20);KeyNumber=15;}
  33.        
  34.         P1=0xFF;
  35.         P1_0=0;
  36.         if(P1_7==0){Delay(20);while(P1_7==0);Delay(20);KeyNumber=4;}
  37.         if(P1_6==0){Delay(20);while(P1_6==0);Delay(20);KeyNumber=8;}
  38.         if(P1_5==0){Delay(20);while(P1_5==0);Delay(20);KeyNumber=12;}
  39.         if(P1_4==0){Delay(20);while(P1_4==0);Delay(20);KeyNumber=16;}
  40.        
  41.         return KeyNumber;
  42. }
复制代码


矩阵键盘密码锁.rar

43.54 KB, 下载次数: 17, 下载积分: 黑币 -5

代码

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:262 发表于 2023-4-14 23:42 | 只看该作者
楼主能分享一下原理图吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表