采用AT89C51的电子密码锁的设计
数码管有静态显示和动态显示两种显示方式,相比于静态显示方式,动态显示在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示画面,不会有闪烁感,在显示效果上和静态显示是一致的,但动态显示能节省大量的I/O口,降低硬件电路的复杂性,而且功耗更低。在本设计中采用的是动态显示方式。
本文引用地址:https://www.eepw.com.cn/article/170168.htm蜂鸣器报警模块
密码输入错误次数超过3次时可通过蜂鸣器鸣叫报警。蜂鸣器报警电路如图4所示。本设计中采用压电式蜂鸣器,利用单片机 P1.7端口外接的三极管的电流放大作用驱动蜂鸣器实现发声提示。

软件设计
单片机电子密码锁软件设计主要包括以下几个模块:主程序模块,数码管显示模块,矩阵键盘扫描模块,键功能程序模块,密码重设模块,延时模块,蜂鸣器报警模块。
主程序流程图如图5所示。包括键盘扫描和键功能程序两部分。

系统启动后不断进行键盘扫描,判断是否有键按下。若无键按下则
继续扫描,有键按下则转入键功能模块判别按下的是什么功能键,然后转入相应的功能程序,功能程序执行完毕后转到键盘扫描程序循环操作。
矩阵键盘扫描模块
本设计中采用行扫描法进行按键识别。由于采用机械式的按键,在按键过程中会产生抖动现象,为避免单片机误判为多次输入同一按键,必须进行消抖处理。设计中采用软件延时的方法进行消抖。在检测出有键按下后执行延时程序,前沿抖动消失后,再次检测按键状态。相关程序段如下:
LSCAN: MOV P3,#0F0H;扫描行码
L1: JNB P3.0,L2
LCALL DLY_S
JNB P3.0,L2
MOV LINE,#00H
LJMP RSCAN
L2: JNB P3.1,L3
LCALL DLY_S
JNB P3.1,L3 MOV LINE,#01H
LJMP RSCAN
L3: JNB P3.2,L4 LCALL DLY_S
JNB P3.2,L4
MOV LINE,#02H
LJMP RSCAN
L4: JNB P3.3,A0
LCALL DLY_S
JNB P3.3,A0
MOV LINE,#03H
RSCAN:MOV P3,#0FH;扫描列码
C1: JNB P3.4,C2
MOV ROW,#00H
LJMP CALCU
C2: JNB P3.5,C3
MOV ROW,#01H
LJMP CALCU
C3: JNB P3.6,C1
MOV ROW,#02H
CALCU: MOV A,LINE ;计算键值
MOV B,#03H
MUL AB
ADD A,ROW
MOV VAL,A ;键值存入VAL中
DIY机械键盘相关社区:机械键盘DIY
蜂鸣器相关文章:蜂鸣器原理
评论