A35基于51单片机汇编语言六位密码锁Proteus设计
作者:单片机仿真   类别:51单片机仿真    日期:2026-10-23 09:02:09    阅读:10 次   消耗积分:15 分

image.png

A35基于51单片机汇编语言六位密码锁Proteus设计

用51单片机汇编语言做一个六位密码锁:4×3矩阵键盘输入数字,8位数码管显示"PE"加6位密码,输满6位按ENTER比对,正确就吸合继电器开锁,错误就蜂鸣报警,CLR键可以退格。初始密码123456,开锁后还能原地改密码。

一、设计实现功能

本设计功能简介:使用51单片机和汇编语言设计一个六位密码锁的proteus仿真,要求以下功能:

1、使用汇编语言编写程序。

2、4×3矩阵键盘输入0~9,另有CLR退格、ENTER确认两个功能键。

3、8位数码管动态扫描,左侧固定显示"PE",右侧6位显示已输入的密码。

4、密码正确P1.0吸合继电器开锁,密码错误或操作错误蜂鸣器报警。

5、开锁状态下可重新设置6位新密码。

二、资源汇总

1、仿真文件:Proteus工程,7.8和8.6两个版本都能直接打开。

2、程序文件:main.asm汇编源码,以及编译好的cx.hex。

3、修改日期小工具:购买资料后赠送,用于修改文件创建日期,下载地址在文章最后。

三、设计介绍

拿到压缩包之后先解压,没有解压软件的直接搜"压缩",下载解压软件后先解压文件,再运行仿真和程序。

图1 Proteus仿真总览

仿真原理图

硬件分成三块,引脚分配看表:

功能引脚说明
段码P0.0~P0.7经74LS245缓冲后送数码管a~dp
位选P2.0~P2.7低电平选中,对应8位数码管
键盘行P3.0~P3.3输出扫描行码
键盘列P3.4~P3.6读入列状态
开锁P1.0低电平吸合继电器(仿真里用指示灯代替)
蜂鸣器P1.7T0中断翻转,约714Hz

P0口是开漏输出,直接驱动数码管亮度不够,所以中间加了一片74LS245做缓冲,这是真实电路里的常规做法,仿真里不加也能亮,但加上以后波形干净很多。

键盘扫描是标准的"先行后列"两段式:先把P3写成0F0H输出行码,逐个判断P3.0~P3.3哪个变低确定行号;再把P3写成0FH输出列码,判断P3.4~P3.6确定列号。键值算法只有一句:

`asm
CALCU: MOV A,LINE ;行号0~3
MOV B,#03H
MUL AB ;行号×3
ADD A,ROW ;加列号0~2
MOV VAL,A ;键值0~11
`

3列4行,键值正好0~9是数字键、10是CLR、11是ENTER,后面判断直接拿键值比大小,不用再查表。

密码的存储和显示是这个程序最值得看的地方。输入区38H~3DH存正确密码、3EH~43H存用户输入,两段都是"低位存最新一位":

`asm
SHIFTL: MOV LED_BIT_6,LED_BIT_5 ;段码整体左移一位
MOV LED_BIT_5,LED_BIT_4
...
MOV LED_BIT_1,#40H ;最右位先显示"-"
MOV KEY_6,KEY_5 ;输入值同步左移
...
MOV KEY_1,VAL ;最新按下的数字进KEY_1
`

每按一个数字,老数字往左挪一格,新数字进最右边。于是输入顺序1、2、3依次按下去,屏幕上就从右往左长出来,最后显示成PE123456——看着是正序,实际存储是倒序的。所以初始密码在程序里写成WORD_1=6、WORD_2=5……WORD_6=1,比对时WORD_1对KEY_1,位对位相等才算通过:

输入第几个送进哪个单元屏幕最右位
第1个KEY_11
第2个KEY_1(原值移到KEY_2)2
第6个KEY_16

按ENTER时先判断KEY_CNT是不是6,不够6位直接报警;够6位才逐字节比对。比对全等就CLR P1.0开锁,然后进入等待状态:按P3.5重新上锁,按其他任意键进入改密码流程。

报警用的是T0方式1、700微秒中断翻转P1.7,中断里数30次×20组,约0.42秒的一串蜂鸣,然后自动CLR TR0停掉。密码错误比操作错误多响一次长延时(ALARM_2里多调了一次DLY_L),靠声音长短能听出是哪类错误。

特别注意: 显示8位数码管每位的点亮时间是DLY_S的10×250次循环,约5毫秒,8位扫一轮40毫秒,刷新率25Hz,实物上会看到轻微闪烁,把MOV R6,#10改小到3~5就顺了;键盘没反应,先查P3有没有被写死(扫描前必须MOV P3,#0F0H),再查按键是不是一端接行一端接列;输入的数字对但一直提示错误,检查密码存储顺序,程序里"最新一位在KEY_1",如果你自己改成正序存,比对时会出现123456输对了却打不开;开锁后继电器不动作,P1.0是低电平有效,仿真里要接继电器线圈加三极管,直接接LED看不出吸合;改密码后新密码不生效,CHPSW最后那段CHANGE循环是把48H~4EH搬到40H~46H,地址写错就会搬到别处去。

四、日期修改

资料中提供修改日期的小工具,购买资料赠送修改文件创建日期的小工具,三个下载地址都在文章最后。

五、资料下载

付费后获取下载链接,直接下载到电脑上,然后解压即可!每个链接前面都配了二维码,手机扫码可以直接跳转。

/

版权所有,转载本站文章请注明出处:proteus单片机
上一篇:A34基于51单片机汇编语言直流电机调速Proteus设计
下一篇:A37基于51单片机汇编语言简易计算器Proteus设计
${comment['nickname']}   ${comment['createtime']}
  
       
${comment.content}
${reply.nickname} 回复 ${comment.nickname}    ${reply.createtime}
     
  
回复内容:${reply.content}