51单片机的电子密码锁的设计与仿真

看看效果图

  1. 简介

(1)CPU使用51单片机。
(2)用4x4矩阵键盘作为操作信息输入。
(3)用LCM1602液晶显示模块作为信息显示。
(4)用蜂鸣器及发光二极管作为错误报警及状态显示。

  1. 功能
    (1)输入密码功能。
    输入密码时,用“★”号或“-”代替真实的密码以防密码泄露。在
    输入密码时,具有清除前一位/或多位的密码功能(用清除键)。
    密码输入完毕,按(确认/开锁键)确认并生效。
    (2)上锁功能。
    在锁开状态下,通过上锁键上锁。
    (3)在锁合的状态下,通过输入密码开锁功能。
    开锁时,先按确认/开锁键后,再在键盘上输入六位密码,然后按
    确认/开锁键,如果密码正确,进入锁开状态。
    (4)在锁开状态下,设置新密码功能。
    按设置新密码键,在键盘上输入六位新的密码,按(确认/开锁)
    键确认,代替旧密码。
    (5)在开锁时,如果输入密码三次错误,产生声、光报警功能。
    每错误一次,告警一次, 若连续三次错误,则系统屏蔽输入功能,
    直到系统复位后重新开始。
    程序设计

定义LCD管脚以及led灯以及蜂鸣器管脚


定义LCD显示的字符串以及初始化变量

矩阵键盘扫描

/** @description    : 矩阵键盘扫描* @param       :无* @return        : 无*/
void KeyDown(void)
{GPIO_KEY=0x0f;if(GPIO_KEY!=0x0f)//读取按键是否按下{      delay(3);//延时10ms进行消抖if(GPIO_KEY!=0x0f)//再次检测键盘是否按下{    //TR1=0;//测试列//LED=~LED;GPIO_KEY=0X0F;switch(GPIO_KEY){case(0X07):  KeyValue=0;break;case(0X0b):   KeyValue=1;break;case(0X0d): KeyValue=2;break;case(0X0e): KeyValue=3;break;}//测试行GPIO_KEY=0XF0;switch(GPIO_KEY){case(0X70): KeyValue=KeyValue;break;case(0Xb0):    KeyValue=KeyValue+4;break;case(0Xd0): KeyValue=KeyValue+8;break;case(0Xe0): KeyValue=KeyValue+12;break;}while(GPIO_KEY!=0xf0);    //检测按键松手检测return ;}}KeyValue = 0xff;
}
```扫描按键
```c
/** @description   : 按键扫描 并且执行相应的操作* @param       :无* @return        : 无*/
void Input_Key()
{//刷新按键的值若没有按键按下则返回0xffKeyDown();if(KeyValue == 0xff||pw_errnum>=3)return;//检测是否有按键按下,或者是否有//当1-9按下时if(KeyValue>=0&&KeyValue<=9){      if((flag == 0 || flag ==2)&&pw_count<6){pw_count++;//密码下标temp_pw[pw_count] = KeyValue;//保存按键值show_pw(pw_count);   //屏幕显示*}}else if(KeyValue == 12)//上锁键{if(flag == 1) //如果设备在开锁时按下{flag = 0;show_Status(&input_pw);//显示请输入密码}}else if(KeyValue == 13)//按下了清除键{if(pw_count>0)pw_count--;//下标左移show_pw(pw_count); //刷新屏幕密码}else if(KeyValue == 14)//按下了确定键{if(pw_count == 6)  //判断数量是否有6位{if(flag == 0) //锁关闭状态{if(temp_pw[0] == pw[0]&&temp_pw[1] == pw[1]&&temp_pw[2] == pw[2]&&temp_pw[3] == pw[3]&&temp_pw[4] == pw[4]&&temp_pw[5] == pw[5])//校验密码{show_Status(&welcome);//显示欢迎您flag = 1;                          //切换状态pw_count = 0;                    //密码清0pw_errnum = 0;               //错误密码次数清0show_pw(pw_count);    //刷新屏幕密码open();                         //执行开门时的回调函数}else{pw_errnum++;            //错误次数+1pw_count = 0;         //密码清0show_pw(pw_count);    //刷新屏幕密码show_Status(&pw_error); //显示密码错误alarm();                                //发出警告if(pw_errnum>=3)              //当密码错误达到3次时{show_Status(&Lock);  //显示设备锁了Lock_Device();      //报警 轰炸模式}}}else if(flag == 1)//锁打开状态,按下确定键无反应{}else if(flag == 2)//设置密码状态  保存新密码{//保存密码pw[0] = temp_pw[0];pw[1] = temp_pw[1];pw[2] = temp_pw[2];pw[3] = temp_pw[3];pw[4] = temp_pw[4];pw[5] = temp_pw[5];show_Status(&welcome); //显示欢迎你flag = 1;              //标志位置位pw_count = 0;         //密码清0show_pw(pw_count);   //刷新屏幕密码}}else{//密码未到6位不能操作
//                      LED = 0;}}else if(KeyValue == 15)//按下了设置密码键{if(flag == 1) //判断锁是否已经打开,打开才能设置密码{show_Status(set_pw);//显示新的标题flag = 2;         //标志位改成设置密码}}
}

需要的可以自己去下载哦!
需要该源码的可以关注公众号:智慧小巷
回复:电子密码锁
即可!

51单片机的电子密码锁的设计与仿真相关推荐

  1. 基于51单片机智能电子密码锁的设计

    该题目是作者课程设计时所写题目,隔了段时间了,之前一直放到自己的网站上的,现在网站资源过期了,就放到这里保存了. 题目要求如下: 内容及要求 以MCS-51单片机为核心,设计一个通过面板键盘输入密码的 ...

  2. 51单片机红外电子密码锁【红外对管矩阵键盘数码管LCD1602显示模块】

    系统功能 51单片机红外电子密码锁系统主要由红外线编码电路.红外线解码开锁电路.掉电保护电路.声光提示报警电路.键盘及显示电路等组成,编写相应的程序代码并进行结果测试和仿真演示. 利用红外遥控技术和单 ...

  3. 【制作】基于金沙滩51单片机的电子密码锁程序

    基于金沙滩51单片机的电子密码锁程序 很久之前做的一个课设,在B站发了效果视频,发现忘记分享代码了,现在整理分享一下. 零.设计报告 1.设计要求 这部分是讲的整个系统实现了什么功能. 1.1.密码的 ...

  4. 基于51单片机的电子万年历的设计-源代码

    电子万年历的设计目录 电子万年历的设计 电子万年历的系统整体设计框图 所需要的元件 DS18B20模块 DS18B20的特点 DS18B20内部结构 DS18B20管脚排列 DS1302模块 SPI时 ...

  5. 万年历设计单片机c语言,基于51单片机的电子万年历的设计

    基于51单片机的电子万年历的设计(论文9400字) 功能要求 1. 万年历能用数码管显示阳历年.月.日.星期.[小]时.分.秒并设置指定时间的闹铃. 2. 数字式温度计要求测温范围-50~100°C, ...

  6. 【036】基于51单片机的电子时钟与秒表Proteus仿真设计

    一.压缩包资料内容 (1).基于51单片机的电子时钟与秒表proteus仿真设计一份: (2).基于51单片机的电子时钟与秒表proteus仿真设计keli源代码一份: (3).基于51单片机的电子时 ...

  7. 基于51单片机的电子万年历的设计

    (24条消息) 基于51单片机的电子万年历的设计说明书(完整word版本说明书+原理图+代码)资源-CSDN文库 摘 要 电子万年历是单片机系统的一个应用,由硬件和软件相配合使用.硬件由主控器.时钟电 ...

  8. 基于51单片机甲醛浓度检测系统仿真设计(仿真+程序+原理图+报告+讲解)

    文章目录 资料下载(可点击) 功能说明 仿真图 复位电路 晶振电路 程序 原理图: 设计报告: 器件清单: 基于51单片机甲醛浓度检测系统仿真设计(仿真+程序+原理图+报告+讲解) 原理图:Altiu ...

  9. 电子密码锁课设单片机c语言,基于51单片机的电子密码锁综合课程设计

    5.大容量片内EEPROM,擦写次数10万次以上 EEPROM,擦写次数10万次以上,擦写次数10万次以上 6.ISP/IAP,在系统可编程/在应用可编程,无需编程器/仿真器 7.共8通道10位高速A ...

最新文章

  1. readline 库简写版本,测试可用
  2. 电脑登陆不了网页的服务器地址,电脑能登qq不能打开网页的解决方法
  3. 《设计师要懂心理学》-第四章-人如何思考
  4. 用于图片切割,图片压缩,缩略图的生成(转到一个好东西)
  5. 自学python到什么程度就可以工作-自学Python爬虫学到什么程度?就可以去找工作了?...
  6. rabbitmq接收不到消息_SpringBoot2.x系列教程63--SpringBoot整合消息队列之RabbitMQ详解
  7. rails 表单嵌套
  8. 利用GDAL进行工具开源化改造
  9. 【三维路径规划】基于matlab蚁群算法无人机三维路径规划【含Matlab源码 1278期】
  10. 如何编写python代码
  11. 《STK二次开发 C++版》S1:STK介绍
  12. linux 内核 触摸屏,向内核里面添加触摸屏驱动(方法适合其他设备)
  13. 视频格式转换器如何将腾讯QLV格式转换成MP4视频文件
  14. 自动发片q机器人_寻片机器人(微信群自动回复工具)V2.6.853 正式版
  15. APISpace IP归属地API
  16. 三极管的工作原理(详细、通俗易懂、图文并茂)
  17. 支付宝及时到账支付成功返回信息
  18. 如何制定客户留存策略_14个成功的客户留存策略举例
  19. 斐波那契螺旋线系列一:斐波那契数列介绍
  20. labview:一个采集数据的小程序

热门文章

  1. 基于STM32F103芯片实现LED灯闪烁
  2. python多个if怎么优化_利用策略模式优化过多 if else 代码
  3. 计算机win7等级考试试题,计算机等级考试一级win7操作题.docx
  4. android Compose Modifier介绍
  5. rust vapo_考研英语翻译技巧
  6. LAMP服务器环境搭建及工程部署
  7. HM编码器代码阅读(15)——帧间预测之AMVP模式(三)xGetBlkBits函数
  8. Python Web学习笔记,电影网站
  9. linux 使用dmidecode查看设备序列号
  10. 测量标准误(Standard Error of Measurement;SEm)