电子密码锁的安装调试与维修教学任务
学习目标
1、知道单片机的特点及其结构。
2、识读MCS—51各引脚并掌握其工作原理。。
3、懂并按要求编写基本的单片机指令。
4、电子密码锁元件的特点。
5、懂电子密码锁原理图。
6、懂电子密码锁安装图。
7、懂电子密码锁的程序。
8、行安装、调试、维修电子密码锁。
学习内容:
1、单片机的特点及其结构。
2、识读MCS—51各引脚并掌握其工作原理。
3、识读指令的结构,类型及编写
4、电子锁电子元件的特点。
5、电子锁的工作原理、特点、种类。
6、电子锁电子元件的测试。
7、进行电子锁程序的设计。
本学习情境学时:44学时
本课题的教学步骤可分为:
1、下发任务书
2、学习流程
3、引导问题
4、有关表格
5、自我测试题(评价标准、测试题)
任务书
随着生活水平的提高,人们对自己所处环境安全性要求越来越高。本设计主要是基于单片机智能锁的硬件和软件的设计及实现方法,这种电路设计具有按键有效提示,输入错误提示,控制开锁电平,控制报警电路,修改密码等多种功能"可在意外泄密的情况下随时修改密码"4位数密码共一万组不重复组合,保密性强,灵活性高,特别适用于家庭,办公室,学生宿舍及宾馆等公开场所。
通过本课题的学习,你能够独立完成密码锁的组装,并且可以进行它类型密码锁的维修;下图为密码锁电原理图。
图1电子密码锁原理图
图片模糊,建议替换或删除×
图2实物图
总体方案设计
设计思路
共设了9个用户输入键,其中只有4个是有效的密码按键,其它的都是干扰按键,若按下干扰键,键盘输入电路自动清零,原先输入的密码无效,需要重新输入;如果用户输入密码的时间超过40秒(一般情况下,用户不会超过40秒,若用户觉得不便,还可以修改)电路将报警80秒,若电路连续报警三次,电路将锁定键盘5分钟,防止他人的非法操作。
采用AT89S51为核心的单片机控制方案。利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性,不但能实现基本的密码锁功能,还能添加调电存储、声光提示甚至添加遥控控制功能。其原理如图2-2所示。
图2-2单片机控制方案
开锁机构
通过单片机送给开锁执行机构,电路驱动电磁锁吸合,从而达到开锁的目的。其原理如图2-3所示。
图2-3密码锁开锁机构示意图
当用户输入的密码正确时,单片机便输出开门信号,送到开锁驱动电路,然后驱动电磁锁,达到开门的目的。其实际电路如图2-4所示。
电路由驱动和开锁两级组成。由D5、R1、T10组成驱动电路,其中T10可以选择普通的小功率三极管如、都可以满足要求。D5是开锁指示灯;由D6、C24、T11组成开锁。其中D6、C24是为了消除电磁锁可能产生的反向高电压以及可能产生的电磁干扰。T11可选用中功率的三极管如,电磁锁的选用要视情况而定,但是吸合力要足够且有一定的余量。
注:在设计中,暂时用发光二极管代替电磁锁,发光管亮,表示开锁;灭,表示没有开锁。
图2-4密码锁开锁机构电路图
按键电路设计
由于设计要求使用矩阵键盘,所以本设计就采用行列式键盘,同时也能减少键盘与单片机接口时所占用的I/O线的数目,在按键比较多的时候,通常采用这样方法。其原理如图2-5所示。
图2-5行列式键盘原理电路图
每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N条行线和M条列线,即可组成具有N×M个按键的键盘。
首先辨别键盘中有无键按下,有单片机I/O口向键盘送全扫描字,然后读入行线状态来判断。方法是:向行线输出全扫描字00H,把全部列线置为低电平,然后将列线的电平状态读入累加器A中。如果有按键按下,总会有一根行线电平被拉至低电平从而使行线不全为1。判断键盘中哪一个键被按下使通过将列线逐列置低电平后,检查行输入状态来实现的。方法是:依次给列线送低电平,然后查所有行线状态,如果全为1,则所按下的键不在此列;如果不全为1,则所按下的键必在此列,而且是在与零电平行线相交的交点上的那个键。
按键的操作面板如图2-6所示。共计数字键10个,功能键2个。
图2-6按键操作面板示意图
10个数字键用来输入密码,另外2个功能键分别是:开锁和上锁。上锁和开锁的过程在1-2中已经详细介绍,在此不再说。。
面板上还有一个蜂鸣器,其中一个功能是用来指示操作的按键是否在成功的按下;另外一个功能是当用户输入密码错误的次数超过了3次,鸣笛以示报警。
显示电路设计
本系统设计的显示电路为了节约单片机的接口资源而采用串行显示的方式,只使用单片机的两个串行口,就可以完成单片机的显示功能,显示电路的电路原理图如图2-7所示。
电路设定:当程序检测在5分钟内没有按键操作的时候,就关闭显示。这个功能使用程序来实现的,一旦没有按键动作就启动一个定时器,检测在5分钟内没有按键动作的时候,启动一个程序,关闭显示,这样可以达到节省电能的目的。
从单片机串口输出的信号先送到左边的移位寄存器(74HC),由于移位脉冲的作用,使数据向右移,达到显示的目的。移位寄存器74HC还兼作数码管的驱动,插头1(header1)接电源,插头2(header2)接数据和脉冲输出端。电路中的三个整流管D1~D3的作用是降低数码管的工作电压,增加其使用寿命。
图2-7显示器原理图
程序
程序:
;=====================定义参数=============================
LED_ONBIT00H;数码管亮暗标志(1为亮,0为暗)
KEYCARDBIT01H;按键标志
PWD_RIGHTBIT02H;密码是否正确(1为正确,0为错误)
KEY_LOCKBIT03H;键盘锁定(1为锁,0为开)
SONDBITP1.4;蜂鸣器
GREENBITP1.5;绿灯
REDBITP1.6;红灯
LED1EQU50H;数码管自动变暗时间数1
KEYSEQU53H;按键键值
KEY1EQU54H;按键行值
PWD1EQU56H;存密码1
PWD2EQU57H;存密码2
PWD3EQU58H;存密码3
PWD4EQU59H;存密码4
SHOW1EQU5AH;显示1
SHOW2EQU5BH;显示2
SHOW3EQU5CH;显示3
SHOW4EQU5DH;显示4
SHOW0EQU5EH;临时用
;====================程序开始==============================
ORGH
AJMPINIT
;=====================初始化===============================
ORGH
INIT:
MOVP0,#40H
MOVP2,#0FH
MOVP3,#00H
MOVLED1,#3FH
MOVKEYS,#00H
MOVKEY1,#00H
MOVSHOW0,#00H
MOVSHOW1,#00H
MOVSHOW2,#10H
MOVSHOW3,#20H
MOVSHOW4,#30H
LCALLPWD_INIT
SETBLED_ON
CLRPWD_RIGHT
SETBSOND
SETBRED
SETBGREEN
CLRKEY_LOCK
CLRKEYCARD
AJMPMAIN
;===========================================================主程序======================================================
MAIN:
MOVP2,#0FH
MOVP3,#00H
LCALLKEY_FIRST;调用键盘程序
JNBKEYCARD,MAIN;KEYCARD=0时,无键按下跳回MAIN
LCALLKEY_MAIN;KEYCARD=0时,调用键盘处理程序
JNBKEYCARD,MAIN
LJMPMKEY_FUNCTION;跳到主程序键盘各按键处理程序
;============================================================END========================================================
;=====================检测按键第一次按下========================
KEY_FIRST:
JNBLED_ON,KEY_LOOP
MOVA,P2;数码管亮时扫描
ANLA,#0FH;屏敝掉高4位
CJNEA,#0FH,KEY_SECOND;判断是否有键按下
CLRKEYCARD;无键则KEYCARD置0
LCALLLED_DISPLAY;调用显示子程序
DJNZLED1,ESC
CLRLED_ON
MOVLED1,#03FH
ESC:
RET
KEY_LOOP:;数码管暗时扫描
MOVA,P2
ANLA,#0FH
CJNEA,#0FH,KEY_SECOND
CLRKEYCARD
RET
;=======================检测按键第二次按下=================
KEY_SECOND:
LCALLBEEP1;按键响声
JNBLED_ON,KEY_EXIT1;如果LED是暗的,则置LED_ON为1
MOVLED1,#03FH
LCALLDELAY10MS;去抖,延时10ms
MOVA,P2;重新扫描键盘
ANLA,#0FH
CJNEA,#0FH,KEY_EN;有键按下,则置KEYCARD为1
CLRKEYCARD;无键按下,则置KEYCARD为0
RET
KEY_EXIT1:
LCALLKEY_RELEASE
SETBLED_ON
RET
KEY_EN:
SETBKEYCARD;置KEYCARD为1
RET
;===============================================KEY_MAIN=================================================
KEY_MAIN:
MOVR3,#0EH
MOVR4,#04H;循环次数
KEY_ROW:
MOVP3,R3
MOVA,P2
ANLA,#0FH
MOVKEY1,R3;将行信息存到KEY1中
CJNEA,#0FH,KEY_WORD;是该行则跳到键值计算程序
MOVA,R3
SETBC
RLCA;带进位循环左移
ANLA,#0FH
MOVR3,A
DJNZR4,KEY_ROW
CLRKEYCARD
RET
;================键值计算========================
KEY_WORD:
SWAPA
ORLA,KEY1;列+行=键值
MOVKEYS,A;键值存到KEYS中
RET
;==================================主程序各按键功能=======================================
MKEY_FUNCTION:
MOVKEYS,A;键值赋给A
MK0:
CJNEA,#0EEH,MK1
CLRKEYCARD
MOVSHOW1,#0BH
MOVSHOW2,#1BH
MOVSHOW3,#2BH
MOVSHOW4,#3BH
LCALLKEY_RELEASE;按键松开程序
MOVR5,#05H
MOVR6,#03H
CLRKEY_LOCK
LOGIN_MAIN:;输入密码主程序
MOVP2,#0FH
MOVP3,#00H
LCALLKEY_FIRST;调用键盘扫描程序
JNBKEYCARD,LOGIN_MAIN
LCALLKEY_MAIN;调用键盘处理程序
LJMPLKEY_FUNCTION;跳到输密码时各键功能处理程序
MK1:
LCALLKEY_RELEASE
LJMPMAIN
;=========================================END====================================
;==========================出厂密码============================
PWD_INIT:
MOVPWD1,#01H
MOVPWD2,#02H
MOVPWD3,#03H
MOVPWD4,#04H
RET
;======================================输入密码时各按键功能====================================
LKEY_FUNCTION:
MOVA,KEYS
;=================无效键============================
LK0:
CJNEA,#0EEH,LK1
LCALLLAMP_RED;闪红灯
LCALLKEY_RELEASE
LJMPLOGIN_MAIN;返回输入密码主程序
LK1:
CJNEA,#0EDH,LK2
LCALLLAMP_RED
LCALLKEY_RELEASE
LJMPLOGIN_MAIN
LK2:
CJNEA,#0EBH,LK3
LCALLLAMP_RED
LCALLKEY_RELEASE
LJMPLOGIN_MAIN
;=================退出键==================
LK3:
CJNEA,#0E7H,LK4
MOVSHOW1,#00H
MOVSHOW2,#10H
MOVSHOW3,#20H
MOVSHOW4,#30H
CLRKEY_LOCK
LJMPMAIN;返回主程序
;===============清除键=========================
LK4:
CJNEA,#07BH,LK5
MOVSHOW1,#0BH
MOVSHOW2,#1BH
MOVSHOW3,#2BH
MOVSHOW4,#3BH
MOVR5,#05H
LCALLKEY_RELEASE
LJMPLOGIN_MAIN
;================确定键=========================
LK5:
CJNEA,#H,LK6
LCALLPWD_COMPARE;调用密码检测子程序
LCALLKEY_RELEASE
JBPWD_RIGHT,SYS_LOGIN;PWD_RIGHT为1时表示密码正确,跳到SYS_LOGIN
DJNZR6,LK5_EXIT;否则将输入次数R6减1
INCR6;若输入次数已经是3次了,就保持R6为1
SETBKEY_LOCK;置KEY_LOCK为1
LK5_EXIT:
MOVSHOW1,#0BH
MOVSHOW2,#1BH
MOVSHOW3,#2BH
MOVSHOW4,#3BH
MOVR5,#05H
LK5_ESC:
LCALLKEY_RELEASE
LJMPLOGIN_MAIN;返回输入密码主程序
;=============0-9数字键========================
LK6:
MOVR0,#00H
JBKEY_LOCK,LK6_EXIT;置KEY_LOCK为1时锁定数字键
DJNZR5,LKEY_NUM;输入个数满4个则锁定数字键,否则R5减1
INCR5;若输入个数已经是4个了,就保持R5为1
LK6_EXIT:
LCALLBEEP2;误操作键盘发声
AJMPLK6_ESC
LKEY_NUM:
MOVA,R0
INCR0
MOVDPTR,#KEY_VALUE
MOVCA,
A+DPTRCJNEA,KEYS,LKEY_NUM
DECR0
MOVA,R0
MOVDPTR,#TAB
MOVCA,
A+DPTRMOVKEYS,A
ORLA,#30H
MOVSHOW0,A
LCALLLED_MOVE;调用左移功能
MOVSHOW4,SHOW0
LK6_ESC:
ACALLKEY_RELEASE
LJMPLOGIN_MAIN
;=======================================END=================================================
;================================登陆系统========================================
SYS_LOGIN:
MOVSHOW1,#01H
MOVSHOW2,#11H
MOVSHOW3,#21H
MOVSHOW4,#31H
CLRGREEN;绿灯亮表示开锁成功
SYS_MAIN:;开锁状态主程序
MOVP2,#0FH
MOVP3,#00H
LCALLKEY_FIRST;调用键盘扫描程序
JNBKEYCARD,SYS_MAIN
LCALLKEY_MAIN;调用键盘处理程序
LJMPSYSKEY_FUNCTION
;==================================登陆系统后各键功能===================================
SYSKEY_FUNCTION:
MOVA,KEYS
;================修改密码键===============
SYSK1:
CJNEA,#0EDH,SYSK2
SET_PWD:
MOVR5,#05H
CLRKEY_LOCK
MOVSHOW1,#0AH
MOVSHOW2,#1AH
MOVSHOW3,#2AH
MOVSHOW4,#3AH
SETPWD_MAIN:;修改密码主程序
MOVP2,#0FH
MOVP3,#00H
LCALLKEY_FIRST;调用键盘扫描程序
JNBKEYCARD,SETPWD_MAIN
LCALLKEY_MAIN;调用键盘处理程序
LJMPSKEY_FUNCTION
;================恢复出厂设置===========
SYSK2:
CJNEA,#0EBH,SYSK3
LCALLPWD_INIT
LCALLKEY_RELEASE
LJMPSYS_MAIN
;=================退出键==================
SYSK3:
CJNEA,#0E7H,SYSK4
MOVSHOW1,#00H
MOVSHOW2,#10H
MOVSHOW3,#20H
MOVSHOW4,#30H
CLRKEY_LOCK
SETBGREEN;关绿灯
LJMPMAIN;跳回主程序
;==================无效键==================
SYSK4:
LCALLBEEP2
LCALLKEY_RELEASE
LJMPSYS_MAIN
;==================================END==================================================
;=================================修改密码各键功能==========================================
SKEY_FUNCTION:
MOVA,KEYS
;=================无效键=====================
SK0:
CJNEA,#0EEH,SK1
LCALLLAMP_RED
LCALLKEY_RELEASE
LJMPSETPWD_MAIN
SK1:
CJNEA,#0EDH,SK2
LCALLLAMP_RED
LCALLKEY_RELEASE
LJMPSETPWD_MAIN
SK2:
CJNEA,#0EBH,SK3
LCALLLAMP_RED
LCALLKEY_RELEASE
LJMPSETPWD_MAIN
;=================退出修改密码================
SK3:
CJNEA,#0E7H,SK4
MOVSHOW1,#01H
MOVSHOW2,#11H
MOVSHOW3,#21H
MOVSHOW4,#31H
LCALLKEY_RELEASE
LJMPSYS_MAIN
;==================清除键=====================
SK4:
CJNEA,#07BH,SK5
MOVSHOW1,#0AH
MOVSHOW2,#1AH
MOVSHOW3,#2AH
MOVSHOW4,#3AH
MOVR5,#05H
LCALLKEY_RELEASE
LJMPSETPWD_MAIN
;=================确认键======================
SK5:
CJNEA,#H,SK6
LCALLKEY_RELEASE
CJNER5,#01H,SETPWD_FAIL;当输入个数小于4个,则密码修改不成功
LCALLSETPWD_SUCCESS;成功调用SETPWD_SUCCESS
LJMPSYS_MAIN
;================0-9数字键=================
SK6:
MOVR0,#00H
DJNZR5,SKEY_NUM
INCR5
LCALLBEEP2
AJMPSK6_ESC
SKEY_NUM:
MOVA,R0
INCR0
MOVDPTR,#KEY_VALUE
MOVCA,
A+DPTRCJNEA,KEYS,SKEY_NUM
DECR0
MOVA,R0
MOVDPTR,#TAB
MOVCA,
A+DPTRMOVKEYS,A
ORLA,#30H
MOVSHOW0,A
LCALLLED_MOVE
MOVSHOW4,SHOW0
SK6_ESC:
ACALLKEY_RELEASE
LJMPSETPWD_MAIN
;===========================================END=============================================
;====================================修改密码失败====================================
SETPWD_FAIL:
LJMPSET_PWD
;====================================修改密码成功==================================
SETPWD_SUCCESS:
ANLSHOW1,#0FH
ANLSHOW2,#0FH
ANLSHOW3,#0FH
ANLSHOW4,#0FH
MOVPWD1,SHOW1
MOVPWD2,SHOW2
MOVPWD3,SHOW3
MOVPWD4,SHOW4
MOVSHOW1,#01H
MOVSHOW2,#11H
MOVSHOW3,#21H
MOVSHOW4,#31H
LCALLLAMP_GREEN;闪绿灯
RET
;=====================================左移功能==============================================
LED_MOVE:
CLRC
MOVA,SHOW2
SUBBA,#10H
MOVSHOW1,A
CLRC
MOVA,SHOW3
SUBBA,#10H
MOVSHOW2,A
CLRC
MOVA,SHOW4
SUBBA,#10H
MOVSHOW3,A
RET
;======================================密码检测========================================
PWD_COMPARE:
MOVA,SHOW1
ANLA,#0FH
CJNEA,PWD1,PWD_EXIT
MOVA,SHOW2
ANLA,#0FH
CJNEA,PWD2,PWD_EXIT
MOVA,SHOW3
ANLA,#0FH
CJNEA,PWD3,PWD_EXIT
MOVA,SHOW4
ANLA,#0FH
CJNEA,PWD4,PWD_EXIT
SETBPWD_RIGHT
AJMPPWD_ESC
PWD_EXIT:
CLRPWD_RIGHT
PWD_ESC:
RET
;======================================判断键是否释放====================================
KEY_RELEASE:
MOVP3,#00H
KEY_LOSEN:
MOVA,P2
ANLA,#0FH
LCALLLED_DISPLAY
CJNEA,#0FH,KEY_LOSEN
RET
;=======================================LED显示================================
LED_DISPLAY:
JNBLED_ON,LED_OFF
MOVP0,SHOW1
LCALLDELAY10MS
MOVP0,SHOW2
LCALLDELAY10MS
MOVP0,SHOW3
LCALLDELAY10MS
MOVP0,SHOW4
LCALLDELAY10MS
LED_OFF:
MOVP0,#4FH
RET
;========================正常按键响声===========================
BEEP1:
CLRSOND
LCALLDELAY1
SETBSOND
RET
;========================非法按键响声============================
BEEP2:
CLRSOND
LCALLDELAYMS
LCALLDELAYMS
SETBSOND
RET
;=========================操作有误闪红灯=================================
LAMP_RED:
MOVR2,#06H
MOVR1,#0FFH
LAMP_LOOP:
DJNZR1,LAMP_LOOP
CPLRED
MOVR1,#0FFH
DJNZR2,LAMP_LOOP
SETBRED
RET
;==========================修改密码成功闪绿灯==========================================
LAMP_GREEN:
MOVR2,#06H
MOVR1,#0FFH
LAMP_LOOP1:
DJNZR1,LAMP_LOOP1
CPLGREEN
MOVR1,#0FFH
DJNZR2,LAMP_LOOP1
CLRGREEN
RET
;========================10MS延时===========================
DELAY10MS:
MOVR2,#04H
LOOP3:
MOVR1,#0F9H
LOOP4:
DJNZR1,LOOP4
DJNZR2,LOOP3
RET
;========================MS延时===========================
DELAYMS:
MOVR2,#0FFH
LOOP7:
MOVR1,#0FFH
LOOP8:
DJNZR1,LOOP8
DJNZR2,LOOP7
RET
;=========================声音延时===========================
DELAY1:
MOVR2,#0FFH
LOOP5:
MOVR1,#03FH
LOOP6:
DJNZR1,LOOP6
DJNZR2,LOOP5
RET
;==========================键值表===========================
KEY_VALUE:DB0EEH,0EDH,0EBH,0E7H,0DEH,0DDH,0DBH,0D7H,0BEH,0BDH,0BBH,0B7H,07EH,07DH,07BH,H
;==========================数字表===========================
TAB:DB00H,00H,00H,00H,00H,01H,02H,03H,04H,05H,06H,07H,08H,09H
预备知识:
1、汇编语言语句一般格式为_____________。
2、什么是寻址方式?寻址方式分为:____________、_____________、______________、
3、传送指令的分类及其格式
4、程序的基本结构有___________、_____________、_____________三种。
5、按控制条件,循环程序可分为_____________和_____________两种形式。
6、51系列的单片机的RAM为_____________,
7、51系列的中断源为_____________个,_____________个优先级。
8、总线分为_____________、_____________、_____________三类。
9、什么是时钟周期、机器周期、指令周期?三者之间有何联系?
10、在逻辑电路中,输入和输出只有两种状态,即_____________和_____________。通常以逻辑_____________和逻辑_____________表示电平高低
11、常用逻辑电路有_____________、_____________、_____________、_____________、_____________、_____________。_____________。
12、MCS-51的CPU能处理_____________位二进制数或代码。
13、51系列共有_____________个_____________位的定时器/计数器。
14、I/O是什么?I/O口是什么?
15、MCS-51单片机在物理结构上有_____________个存储空间。分别是_____________、_____________、_____________、_____________。
16、程序内存ROM寻址范围从_____________到_____________,容量为_____________KB。
17、译码器有_____________个输入端:分别是_____________,
_____________个输出端,分别是_____________。
18、80C51单片机共有_____________条指令,这些条指令共有_____________种寻址方式。
19、操作码与操作数之间必须用_____________分开,操作数与操作数之间必须用逗号_____________分开。
20、设某单片机系统的外接晶振频率为6MHz,使用定时器1以方式0产生周期为ms的等宽正方波连续脉冲,并由P1.0输出。试写出其设计程序。
21、说明下列指令中源操作数采用的寻址方式。
MOVR5,R7
MOVA,55H
MOVA,#55H
JMP
A+DPTR22、段数码管从内部接线上分_____________和_____________两种
23、机器语言指令由_______和_______两部分组成.
24、八段码显示器的结构及其工作原理。
25、如何用八段码显示器显示数字“3”?
流程卡:(2个课时)
电路板制作:(15个课时)
1、准备本项任务所需的材料、工具,
2、如果不全,缺哪些?
3、根据上一项目的制作步骤进行操作。
材料明细卡
平分卡:(2个课时)
数字钟的组装与维修(满分分)
评分页
工作小结:(1个课时)
转载请注明:http://www.abuoumao.com/hyfz/5151.html