基于51单片机的数码管密码锁设计资料

时间:2024-02-21 16:12:28

百度网盘下载地址(950):点击下载

采用了六位数码管实现六位密码锁设计,包含门控开关继电器、蜂鸣器报警电路,矩阵键盘实现,两个led灯能实时显示当前门开关状态。

初始密码:000000     密码位数:6位
注意:掉电后,所设密码会丢失,重新上电时,密码恢复为原始的000000
与P1.0相连的8位发光LED点亮代表门禁被打开;熄灭代表门禁被门禁上

程序功能:
          1、开:
          下载程序后,直接按六次数字0(即代表密码000000),LED亮,门被打开,输入密码时,
          六位数码管依次显示小横杠。
          2、更改密码:
          只有当开门禁(LED亮)后,该功能方可使用。
          首先按下更改密码键,然后设置相应密码,此时六位数码管会显示设置密码对应
          的数字。最后设置完六位后,按下确认密码更改,此后新密码即生效。
          3、重试密码:
          当输入密码时,密码输错后按下重试键,可重新输入六位密码。
          当设置密码时,设置中途想更改密码,也可按下此键重新设置。
          4、关闭门禁:
          按下上门禁按键即可将打开的门禁关闭。
          
功能测试:输入原始密码000000---按下更改密码按键---按0到9设置密码---按确认键
       密码更改---按上门禁按键关闭密码门禁---输入新的密码打开密码门禁

#include<reg52.h>

#define uchar unsigned char
#define uint unsigned int

uchar old1,old2,old3,old4,old5,old6; //原始密码000000
unsigned char PassWord[6];
uchar new1,new2,new3,new4,new5,new6;  //每次MCU采集到的密码输入
uchar a=16,b=16,c=16,d=16,e=16,f=16; //送入数码管显示的变量
uchar wei,key,temp;
unsigned char st=0;

bit allow,genggai,ok,wanbi,retry,close;	 //各个状态位


sbit beep=P3^6;
sbit Lock=P3^7;

sbit GLED=P3^5;
sbit RLED=P3^4;

sbit SCL = P3^3;		  //引脚定义
sbit SDA = P3^2;

unsigned char code table[]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,
0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0x40};



void InitI2C();
void I2CStart();
void I2CStop();
void I2CSend(uchar byte);
uchar I2CRead();
uchar read_eeprom(uchar addr);
void write_eeprom(uchar addr, uchar databyte);