摘要:
本文设计了一种基于AT89C51单片机的智能电子密码锁系统。该系统通过单片机控制外围电路,实现密码的输入与修改、信息显示、键盘锁定、系统报警以及开锁和闭锁等功能。设计中采用AT24C02存储器保存密码,初始密码设为199010。通过验证用户输入的密码是否正确,系统执行开锁或报警操作,提高了密码锁的安全性和智能化水平。
一、引言
随着科技的发展和人们生活水平的提高,对于家居安全的需求也日益增长。传统的机械锁因其固定性和易复制性,已无法满足现代安全需求。因此,开发一种安全、便捷、智能化的电子密码锁系统显得尤为重要。
二、系统总体设计
本设计采用AT89C51单片机作为控制核心,配合外围电路和软件程序,实现电子密码锁的各项功能。系统主要包括密码输入模块、信息显示模块、键盘锁定模块、报警模块、开锁和闭锁模块等。
三、硬件设计
3.1 单片机选择
AT89C51单片机作为本设计的核心控制器,具有性能稳定、功耗低、价格实惠等优点。其丰富的I/O端口和强大的处理能力为系统的实现提供了有力支持。
3.2 存储器选择
采用AT24C02存储器用于保存密码。AT24C02具有非易失性、低功耗、高速读取等特点,适合用于存储密码等关键信息。
3.3 外围电路设计
外围电路包括密码输入键盘、液晶显示屏、继电器等。键盘用于输入密码,液晶显示屏用于显示密码输入状态、错误信息以及系统状态等,继电器用于控制锁的开关。
四、软件设计
软件设计是实现系统功能的关键。本设计采用C语言进行编程,通过编写程序实现密码的输入与修改、信息显示、键盘锁定、系统报警以及开锁和闭锁等功能。具体实现过程如下:
4.1 密码输入与修改
系统通过判断用户输入的密码与存储器中保存的密码是否一致,来执行开锁或报警操作。同时,提供密码修改功能,允许用户在满足一定条件(如正确输入原密码)的情况下修改密码。
4.2 信息显示
液晶显示屏用于实时显示密码输入状态、错误信息以及系统状态等,方便用户了解系统运行状态和操作结果。
4.3 键盘锁定与报警
当用户连续多次输入错误密码时,系统将自动锁定键盘并触发报警功能,以防止非法入侵。
4.4 开锁与闭锁
通过控制继电器实现锁的开关功能。当用户输入正确密码时,继电器动作实现开锁;否则保持闭锁状态。
五、系统测试与结果分析
在实际测试中,本系统能够准确识别用户输入的密码,并根据密码的正确性执行相应的操作。同时,系统具有良好的稳定性和可靠性,能够满足实际应用需求。
六、结论与展望
本文设计了一种基于AT89C51单片机的智能电子密码锁系统,实现了密码的输入与修改、信息显示、键盘锁定、系统报警以及开锁和闭锁等功能。该系统具有安全、便捷、智能化等特点,可广泛应用于家庭、办公室等场所。未来,可以进一步研究如何增加系统的安全性能,如采用更复杂的加密算法、增加生物识别功能等,以提高系统的整体安全水平。
uchar code table7[12]="Enter Again:";
uchar code table8[12]="Enter Error!";
uchar code table9[15]="Modify Success!";
uchar code table10[13]="Welcome back!";
//***********************************
//相关函数的声明
//***********************************
void delay1ms();
void delay(uchar n);
void write_1602com(uchar com);
void write_1602dat(uchar dat);
void initinal(void);
bit lcdbusy();
uchar key_scan();
void enter_password(void); //功能:显示输入密码画面
void password_error(void);//功能:显示输入密码错误后的画面
void ok(void);//功能:显示输入密码正确后的画面
void new_password(void);//功能:显示输入新密码的画面
void enter_again(void);//功能:显示再次输入新密码的画面
void enter_error(void);//功能:显示两次输入的密码不一样后的画面
void modify_success(void);//功能:显示更改成功后的画面
void welcome(void); //功能:显示欢迎画面
void wtite_1602com(uchar com);
void write_1602dat(uchar dat);
/*****************************************************
函数功能:延时若干毫秒
入口参数:n
***************************************************/
void delay(uchar n)
{ unsigned char i,x,y;
for(i=0;i<n;i++){for(x=0;x<10;x++)for(y=0;y<33;y++); } }
/*****************************************************
函数功能:延时1ms
***************************************************/
void delay1(uchar n){ unsigned char i,j;
for(i=0;i<n;i++){ for(j=0;j<10;j++)delay(10);} }
/*****************************************************
函数功能:定时器子函数,调用该函数可以计时
***************************************************/
void time( ){ TMOD = 0x01; //定时器0,工作方式1
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256; //50ms中断一次
EA = 1;ET0 = 1;TR0 = 1;}
/*****************************************************
函数功能:定时函数,在一段时间内没有键按下则关闭显示器
***************************************************/
void time_1( ) interrupt 1{
TH0 = (65536-65536)/256;TL0 = (65536-65536)%256;time_50ms++;
if(time_50ms==20){time_1s++;time_50ms=0;}
if(time_1s==20){write_1602com(0x01);write_1602com(0x0c
【资源下载】下载地址:点击下载(600) https://docs.qq.com/doc/p/ffc421513a628b30450ae742547c0b850456d7c8