基于51单片机的数码管密码锁设计资料
采用了六位数码管实现六位密码锁设计,包含门控开关继电器、蜂鸣器报警电路,矩阵键盘实现,两个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);