1.设计任务
利用AT89C51单片机为核心控制元件,设计一个简易的电子密码锁,可设置四位密码,输入错误三次,报警灯亮起(红灯亮起),输入正确,绿灯闪烁三次。可通过LCD显示屏查看密码,并可通过特殊键位清除密码。
本系统由AT89C51单片机系统(主要是AT89C51单片机最小系统)、4X4矩阵键盘、LCD1602显示和报警系统等组成。
- 利用AT89C51单片机设计四位电子密码锁。
- 通过LCD显示查看已输入的密码。
- 可通过特殊按键清除密码。
- 密码输入正确后绿灯闪烁三次。
- 密码输错三次会有报警提示(报警红灯亮起)。
2. 设计要求
2.1系统方案论证
根据设计任务,分析设计系统的组成,给出实现设计任务的几种方案,分析比较几种设计方案的优略,本着尽量以软件代替硬件,同时力求电路简单,工作可靠的原则,确定总体设计方案。
2.2系统硬件电路设计
根据系统设计方案进行软、硬件的分配,软、硬件设计分别进行。硬件设计包括单片机最小系统和扩展接口及配置,硬件结构在设计时要选择合适的元器件,硬件电路要简洁、工作可靠,需用Proteus绘制整个系统的电路仿真原理图。
2.3软件设计
根据该系统要求的功能进行软件设计,简述软件的功能,并根据每个模块的功能绘制软件流程图,根据流程图编写程序并汇编调试通过;列出软件清单,软件清单要求加以注释。
#include <REGX52.H>
#include "Delay.h"
#include "LCD1602.h"
#include "MatrixKey.h"unsigned char N=0;
unsigned char KeyNum;
unsigned int Password,Count,Num_Val;sbit Led_G = P2^0;
sbit Led_R = P2^1;void main()
{Led_G = 1;Led_R = 1;LCD_Init();LCD_ShowString(1,1,"Password:");while(1){KeyNum=MatrixKey();if(KeyNum){if(KeyNum!=4&&KeyNum!=8&&KeyNum!=12&&KeyNum!=13&&KeyNum!=15&&KeyNum!=16) //如果S1~S10按键按下,输入密码{switch(KeyNum){case 1: Num_Val=1;break;case 2: Num_Val=2;break;case 3: Num_Val=3;break;case 5: Num_Val=4;break;case 6: Num_Val=5;break;case 7: Num_Val=6;break;case 9: Num_Val=7;break;case 10:Num_Val=8;break;case 11:Num_Val=9;break;case 14:Num_Val=0;break;}if(Count<4) //如果输入次数小于4{Password=Password*10; //密码左移一位Password=Password+Num_Val%10; //获取一位密码Count++; //计次加一}LCD_ShowNum(2,1,Password,4); //更新显示}if(KeyNum==15) //如果S11按键按下,确认{if(Password==2345) //如果密码等于正确密码{LCD_ShowString(1,14,"OK "); //显示OKLed_G = 0;Delay(300);Led_G = 1;Delay(300);Led_G = 0;Delay(300);Led_G = 1;Delay(300);Led_G = 0;Delay(300);Led_G = 1;Delay(300);Password=0; //密码清零Count=0; //计次清零LCD_ShowNum(2,1,Password,4); //更新显示LCD_ShowString(1,14," ");}else //否则{N++;if(N == 3){Led_R=0;Delay(2000);Led_R=1;N=0;}LCD_ShowString(1,14,"ERR"); //显示ERRPassword=0; //密码清零Count=0; //计次清零LCD_ShowNum(2,1,Password,4); //更新显示Delay(1000);LCD_ShowString(1,14," ");}}if(KeyNum==13) //如果S12按键按下,取消{Password=0; //密码清零Count=0; //计次清零LCD_ShowNum(2,1,Password,4); //更新显示}}}
}
完整代码点开链接私信获取。
【iBot机器人工作室的个人空间-哔哩哔哩】 https://b23.tv/ryUWVKa