基于单片机智能电子密码锁设计(proteus仿真+程序) (1)输入密码:通过4*4矩阵键盘输入6位密码; (2)修改密码:可以对初始密码进行修改; (3)显示电路:使用LCD1602显示密码锁运行状态; (5)掉电密码能保存(24c02保存密码) (6)管理员权限:当忘记密码时,可以通过管理员密码 对初始密码进行修改。

键盘按下瞬间,蓝色背光的LCD屏突然亮起,六个星号在屏幕上跳动——这就是我折腾了半个月的智能密码锁原型机。和市面上那些花里胡哨的智能锁不同,这次用51单片机+24C02存储的方案,成本还不到一杯奶茶钱。

硬件搭建时最头疼的是矩阵键盘扫描。4x4的薄膜键盘在Proteus里看着乖巧,实际接线时总有几个键不听话。后来发现是上拉电阻没处理好,改成了这种行列扫描结构:

uchar KeyScan() {
    P1 = 0xf0;
    if(P1 != 0xf0) {
        delay(10);  // 消抖
        switch(P1) {
            case 0xe0: row=0;break;
            case 0xd0: row=1;break;
            //...其他行扫描
        }
        P1 = 0x0f;
        switch(P1) {
            case 0x0e: col=0;break;
            case 0x0d: col=1;break;
            //...其他列扫描
        }
        return key_map[row][col];
    }
    return 0xff; //无按键
}

这段代码的精髓在于行列交替扫描。先让高四位输出低电平,读取低四位状态确定行号,反过来再确定列号。注意那个10ms的延时不是摆设,实测没有消抖处理时,快速输入会误判成连续按键。

基于单片机智能电子密码锁设计(proteus仿真+程序) (1)输入密码:通过4*4矩阵键盘输入6位密码; (2)修改密码:可以对初始密码进行修改; (3)显示电路:使用LCD1602显示密码锁运行状态; (5)掉电密码能保存(24c02保存密码) (6)管理员权限:当忘记密码时,可以通过管理员密码 对初始密码进行修改。

密码存储用了24C02这颗EEPROM,掉电不丢数据是关键。写存储时要注意页写限制——每次最多写8字节。我们的6位密码刚好拆分成两个存储单元:

void Write_24C02(uchar addr, uchar dat) {
    I2C_Start();
    I2C_SendByte(0xa0); //器件地址
    I2C_WaitAck();
    I2C_SendByte(addr); //存储地址
    I2C_WaitAck();
    I2C_SendByte(dat);
    I2C_WaitAck();
    I2C_Stop();
    delay(10); //写入周期等待
}

特别要提醒的是最后的10ms延时,24C02的写入周期约5ms,急着连续写入会导致数据丢失。有个隐藏bug折腾了我两天:当连续修改密码超过3次时偶尔会存储失败,后来发现是器件地址中的块选位没处理好。

管理员模式的设计比较有意思。当连续输错3次密码,LCD会显示"Admin Mode?",这时长按#号键5秒进入特殊状态。核心代码里用到了定时器中断来计时:

if(KEY == '#') {
    TMOD = 0x01; //定时器0模式1
    TH0 = 0x3C;  //50ms定时
    TL0 = 0xB0;
    ET0 = 1;
    EA = 1;
    TR0 = 1;
    while(KEY == '#') {  //保持按压
        if(time_count >= 100) { //5秒到达
            AdminMode();
            break;
        }
    }
}

定时器中断里每50ms累加计数,这种设计比纯延时更可靠。不过要注意按键释放检测,否则可能误触发。实测发现机械按键在长按时会有轻微抖动,所以在中断服务程序里加了状态标志位过滤。

当所有功能调通时,最惊喜的不是密码验证成功,而是发现24C02里的旧密码在重新上电后依然存在。这种非易失存储就像电子世界的记忆水晶,哪怕断电数月,再次唤醒时它仍记得当初设定的"131420"——这串数字,或许就是硬件开发者独有的浪漫吧。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐