电子密码锁.docx
- 文档编号:13766665
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:43
- 大小:448.71KB
电子密码锁.docx
《电子密码锁.docx》由会员分享,可在线阅读,更多相关《电子密码锁.docx(43页珍藏版)》请在冰点文库上搜索。
电子密码锁
课程设计报告
主课题:
电子密码锁
报告人:
同组成员:
课设时间:
05月30日-06月10日
一、实现功能
1)设计一多位电子密码锁,输入密码用“0”表示,输入密码正确,显示“YES”,输入密码错误,显示“NO”,蜂鸣器响
2)具有确定键和取消键,在未确定之前可以取消,重新输入
3)连续输入三次错误密码,蜂鸣器响,显示“ERROR”键盘锁定
4)具有密码重置功能
5)显示北京时间,同时可对北京时间进行修改
二、使用硬件
1.ADUC848
ADUC848管脚图如下图所示
Pin1~4:
(P1.0~P1.3)作为矩阵式键盘或独立按键的输入,P1口只能用于输入,默认用于模拟输入,作为数字输入使用时应先往P1口相应引脚写0,这里可以用P0&=0xf0。
若P2、P3、P0口要作为输入,则应往相应引脚写1。
Pin5、6:
AVDD、AGND,模拟电源输入。
Pin7、8:
外部参考电压接入,Pin7接AGND。
片内DAC有2.5V内部参考,ADC有1.25V内部参考。
Pin9、10:
(P1.4、P1.5)两路AD输入,可做差分输入,需要设置ADC的寄存器。
Pin11、12:
(P1.6、P1.7)各200uA激励电流源,可配合RTD等
做应用。
Pin13:
两路AD输入做普通输入时的电压参考端,AD输入电压不能低于此引脚电压。
Pin14:
片内DAC输出。
Pin15:
复位引脚。
Pin16、17:
单片机RS232接口的RXD(P3.0)TXD(P3.1)。
Pin18:
(P3.2)外部中断0,用于红外接收和PS/2接口。
Pin19:
(P3.3)LCD1602,LCD12864A的EN引脚,控制第一位数码管。
Pin20、21:
DVDD、DGND数字电源输入。
Pin22:
(P3.4)PS/2接口的data信号。
Pin23:
(P3.5)LCD1602和LCD12864A的RW。
Pin24:
(P3.6)LCD1602和LCD12864A的RS。
Pin25:
LCD12864A的CS1。
Pin26:
IIC接口时钟信号。
Pin27:
IIC接口data信号。
Pin28:
(P2.0)SPI接口时钟信号。
Pin29:
(P2.1)SPI接口MOSI信号、控制第6位数码管的位码。
Pin30:
(P2.2)SPI接口MISO信号、控制第7位数码管的位码。
Pin31:
(P2.3)SPI接口SS信号、控制第8位数码管的位码;P2.0~3也作为4X4矩阵式键盘的扫描输出信号、步进电机的控制信号、数码管第数码管第6、7、8位位码。
但是SPI、4X4矩阵式键盘、步进电机、数码管第6、7、8位功能不能同时实现。
Pin32、Pin33:
接外部32.768KHz晶振。
Pin34、Pin35:
DVDD、DGND。
Pin36:
(P2.4)LCD12864A的CS2。
Pin37:
(P2.5)内部PWM模块输出,控制红外LED。
Pin38:
(P2.6)内部PWM模块输出,控制蜂鸣器。
Pin39:
(P2.7)内部PWM模块的外部时钟输入(也可以用内部时钟)。
Pin40:
EA,低电平有效,正常使用时拉低。
Pin41:
PSEN,在此引脚电平为低时按复位键进入debug模式,可以下载和调试程序。
Pin42:
ALE。
Pin47、Pin48:
DGND、DVDD。
Pin43、44、45、46、49、50、51、52:
P0口、LCD1602和LCD12864的数据总线,数码管的段码。
2.电源模块
本学习板共有如下3种供电方式:
(1)5V电源适配器供电(开关往上拨、插针1下面两脚接跳线帽)。
(2)7~12V电源适配器供电(开关往上拨、插针1上面两脚接跳线帽)。
(3)USB供电(开关往下拨)。
电源模块原理图
本次使用第3种供电方式,将开关sw4第1、2脚接通(开关往下拨),电源网络DVDD连接到USB电源输入端。
3.数码管
该模块原理如图
(1)DS0~7:
数码管段码。
(2)BIT0~7:
数码管位码。
(3)MOTORA~D:
步进电机驱动信号。
(4)DISCTRL0~4:
显示控制信号,控制数码管低5位。
(5)D0~8:
单片机P0口。
本设计采用共阴极数码管,段码由PNP三极管驱动,位码由NPN型三极管驱动。
引脚复用:
数码管低5位(板上为右边5位)的位码由DISCTRL0~4控制,可单独使用,高3位的位码控制信号与SPI信号,电机驱动信号,4X4矩阵式键盘复用,使用数码管高3位时参与复用的其他功能则不能使用。
插针配置:
(1)若要使用数码管第4~0位(板上为右边5位),可以接通插针8。
(2)若要使用数码管第7~5位(板上为左边3位),可以分别接通插针5~7和9。
4.蜂鸣器
该模块原理图如图1.10所示。
本设计中采用无源电磁式蜂鸣器,蜂鸣器由PWM1(P2.6)控制。
PWM1和PWM0均为片内PWM模块的输出。
蜂鸣器采用普通NPN三极管。
插针配置:
使用蜂鸣器,可以接通插针3。
5.按键模块
该模块原理如图
由于P1口(用于行扫描)内部无上拉电阻,为使无键按下时行信号为高电平,故将行信号接上拉电阻,电阻大小10K即可。
引脚复用:
P2.0~P2.3为4X4矩阵式键盘列扫描信号,又复用作步进电机控制信号,SPI信号、P2.1~P2.3还复用为数码管第5、6、7位位码控制信号。
参与复用的一项功能使用时,其他参与复用的功能则不能使用。
插针配置:
(1)插针10上面两脚接跳线帽,4X4矩阵式键盘输入,行扫描信号为P1.0~P1.3,列扫描信号为P2.0~2.3。
(2)插针10下面两脚接跳线帽,独立按键输入,该模式有4个独立按键可用,按键扫描所用端口为P1.0~P1.3。
这4个按键为4X4矩阵键盘的左边4个按键。
6.复位与下载
复位与下载电路如图
进入下载或调试模式的步骤为:
(1)按住BTN1(downordebug按键)不要放开;
(2)按下BTN2(reset按键),然后放开BTN2(reset按键);
(3)放开BTN1(downordebug按键)。
这样单片机就进入了调试模式,可以下载或调试程序。
三.程序流程图:
检测按键程序流程图:
设置时间流程图:
输入密码流程图:
N
N
N
Y
N
Y
N
Y
修改密码流程图:
N
Y
Y
Y
四、源程序:
BITCNTDATA58H
ERRORCNTDATA5AH
BUFEQU2BH
SBFEQU2AH
MBFEQU29H
HBFEQU28H
ORG0000H
LJMPMAIN
ORG000BH
LJMPCLOCK0
ORG0039H
MAIN:
MOVBUF,#00H
MOVSBF,#06H
MOVMBF,#10H
MOVHBF,#02H
MOVTMOD,#11H//T0十六位
MOVTL0,#00H
MOVTH0,#1CH
SETBET0
SETBET1
SETBEA
SETBTR0
;密码初始化程序
L0:
MOVBITCNT,#00H;输入计数
MOVERRORCNT,#00H;存放错误次数
MOVR4,#08H
MOVR1,#27H
START:
MOVA,R4
MOV@R1,A
DECR1
DJNZR4,START;20H-27H存放初始密码
;检测按键程序
SCAN:
LCALLKEY0;调用键盘输入子程序
MOVR5,A
XRLA,#0BH
JZTIME;设置时间键被按下,转到TIME(设置时间程序)
MOVA,R5
XRLA,#0CH
JZENTER;输密码键被按下,转到输入密码程序
MOVA,R5
XRLA,#0DH
JZNNN1
SJMPNNN2
NNN1:
LJMPSET0;改密码键被按下,转到修改密码程序
NNN2:
LJMPSCAN;其他键被按下,无效,再扫描按键
;设置时间程序
TIME:
CLRTR0
B0:
LCALLINPUTTIME
MOVR6,A
CLRC
SUBBA,#03H
JCW0
SJMPB0
W0:
MOV70H,R6
B1:
LCALLINPUTTIME
W1:
MOV61H,A
MOVA,70H
SWAPA
ADDA,61H
MOVHBF,A
B2:
LCALLINPUTTIME
MOVR6,A
CLRC
SUBBA,#06H
JCW2
SJMPB2
W2:
MOV73H,R6
B3:
LCALLINPUTTIME
W3:
MOV64H,A
MOVA,73H
SWAPA
ADDA,64H
MOVMBF,A
B4:
LCALLINPUTTIME
MOVR6,A
CLRC
SUBBA,#06H
JCW4
SJMPB4
W4:
MOV76H,R6
B5:
LCALLINPUTTIME
W5:
MOV67H,A
MOVA,76H
SWAPA
ADDA,67H
MOVSBF,A
SETBTR0
LJMPSCAN
;输入密码程序
ENTER:
CALLCLEAR;调用存放数码管段码子程序,数码管全显示"-",表示等待密码输入状态
MOVBITCNT,#08H;输入密码程序
MOVR1,#30H;30H-37H存放数码管段码
MOVR0,#40H;40H-47H存放输入的密码
CALLINPUT;调用密码输入子程序
XRLA,#0EH;判断取消键是否被按下
JZENTER;取消键被按下,跳到ENTER重新输入密码
CALLCOMP;调用比较密码子程序
JNCNNN3;C='0',密码错误,转到L1检测按键
SJMPPASS
NNN3:
LJMPL1;C='0',密码错误,转到L1检测按键
PASS:
MOVERRORCNT,#00H;全部正确,错误次数清零
MOVR1,#30H
MOVR2,#05H
MOV@R1,#89H;30H存入"y"的段码
INCR1
MOV@R1,#61H;31H存入"e"的段码
INCR1
MOV@R1,#49H;32H存入"S"的段码
LOOP0:
INCR1;33H-37H存入全灭的段码
MOV@R1,#0FFH
DJNZR2,LOOP0
LJMPDISP1
;修改密码程序
SET0:
CALLCLEAR;调用存放数码管段码子程序,数码管全显示"-",表示等待密码输入状态
MOVBITCNT,#08H
MOVR1,#30H
MOVR0,#40H
CALLINPUT;调用输入密码子程序,输入原密码
XRLA,#0EH;判断取消键是否被按下
JZSET0;取消键被按下,跳到SET0重新输入密码
CALLCOMP;调用比较密码子程序,比较密码
JNCNNNN3
SJMPNENTER
NNNN3:
LJMPX1;C='0',密码错误,转到L1检测按键
NENTER:
MOVR1,#30H;密码正确,进入输新密码准备程序
MOVR2,#07H
MOV@R1,#71H;30H存入"F"的段码,原密码输入正确,接着输入两次新密码
LOOP1:
INCR1
MOV@R1,#0FFH
DJNZR2,LOOP1;33H-37H存入全灭的段码
MOVBITCNT,#08H;8位密码
MOVR1,#30H;30H-37H存放数码管段码
MOVR0,#50H;50H-57H暂存放新密码
CALLINPUT;调用输入密码子程序,输入新密码
XRLA,#0EH;判断取消键是否被按下
JZNENTER;取消键被按下,跳到NENTER重新输入密码
AGAIN:
CALLCLEAR
MOVR1,#30H;进入输第二次新密码准备程序
MOVR2,#07H
MOV@R1,#0F5H;30H存入"r"的段码,提示输入新密码
LOOP2:
INCR1
MOV@R1,#0FFH
DJNZR2,LOOP2;35H-37H存入全灭的段码
MOVBITCNT,#08H;确认新密码
MOVR1,#30H
MOVR0,#40H
CALLINPUT;调用输入密码子程序,再次输入新密码
XRLA,#0EH;判断取消键是否被按下
JZAGAIN;取消键被按下,跳到AGAIN重新输入密码
MOVR0,#40H;比较新密码程序
MOVA,@R0
CJNEA,50H,X5;比较第0位新密码,相同则跳到下一位比较,错误则跳到X5,调用错误子程序
N1:
INCR0
MOVA,@R0
CJNEA,51H,X5;比较第1位新密码,相同则跳到下一位比较,错误则跳到X5,调用错误子程序
N2:
INCR0
MOVA,@R0
CJNEA,52H,X5;比较第2位新密码,相同则跳到下一位比较,错误则跳到X5,调用错误子程序
N3:
INCR0
MOVA,@R0
CJNEA,53H,X5;比较第3位新密码,相同则跳到下一位比较,错误则跳到X5,调用错误子程序
N4:
INCR0
MOVA,@R0
CJNEA,54H,X5;比较第4位新密码,相同则跳到下一位比较,错误则跳到X5,调用错误子程序
N5:
INCR0
MOVA,@R0
CJNEA,55H,X5;比较第5位新密码,相同则跳到下一位比较,错误则跳到X5,调用错误子程序
N6:
INCR0
MOVA,@R0
CJNEA,56H,X5;比较第6位新密码,相同则跳到下一位比较,错误则跳到X5,调用错误子程序
N7:
INCR0
MOVA,@R0
CJNEA,57H,X5;比较第7位新密码,相同则跳到下一位比较,错误则跳到X5,调用错误子程序
MOVR2,#08H;两次输入的密码相同,将新密码存入20H-27H单元中
MOVR1,#20H
MOVR0,#50H
LOOP3:
MOVA,@R0
MOV@R1,A
INCR1
INCR0
DJNZR2,LOOP3
MOVR1,#30H;修改成功,在数码管上显示"donE"
MOVR2,#03H
MOV@R1,#71H;30H存入"F"的段码
INCR1
MOV@R1,#0F3H;31H存入"I"的段码
INCR1
MOV@R1,#13H;32H存入"n"的段码
INCR1
MOV@R1,#49H;33H存入"S"的段码
INCR1
MOV@R1,#91H;34H存入"H"的段码
LOOP4:
INCR1;35H-37H存入全灭的段码
MOV@R1,#0FFH
DJNZR2,LOOP4
LJMPDISP1
X1:
LJMPL1
X5:
CALLNO
LJMPNENTER
;以下是各种子程序
CLEAR:
MOVR2,#08H;40H-47H单元清零,准备存放输入的密码
MOVR0,#40H
LOP1:
MOV@R0,#00H
INCR0
DJNZR2,LOP1
;存放数码管段码子程序
X0:
MOVR1,#08H
MOVR0,#30H
LOP2:
MOV@R0,#0FDH
INCR0
DJNZR1,LOP2;30H-37H存放等待输入密码时数码管的段码"-"
RET
;输入时间子程序
INPUTTIME:
LCALLKEY0
MOVR5,A
XRLA,#0AH
JZINPUTTIME;无效键被按下,无效,转到INPUT,继续扫描
MOVA,R5
XRLA,#0BH
JZINPUTTIME;设置时间键被按下,
MOVA,R5
XRLA,#0CH
JZINPUTTIME;输密码键被按下,无效,继续扫描
MOVA,R5
XRLA,#0DH
JZINPUTTIME;改密码键被按下,无效,继续扫描
MOVA,R5
XRLA,#0EH
JZINPUTTIME;取消键被按下,
MOVA,R5
XRLA,#0FH
JZINPUTTIME;确定键被按下,
MOVA,R5
RET
;输入密码子程序
INPUT:
LCALLKEY1
MOVR5,A
XRLA,#0AH
JZINPUT;无效键被按下,转到INPUT
MOVA,R5
XRLA,#0BH
JZINPUT;设置时间键被按下,转到TIME(设置时间程序)
MOVA,R5
XRLA,#0CH
JZINPUT;输密码键被按下,无效,继续扫描
MOVA,R5
XRLA,#0DH
JZINPUT;改密码键被按下,无效,继续扫描
MOVA,R5
XRLA,#0EH
JZCANCEL;取消键被按下,转到ENTER(重新输入)
MOVA,R5
XRLA,#0FH
JZOK;确定键被按下,跳出子程序
MOVA,R5
MOV@R0,A;数字键被按下,存入密码
MOV@R1,#03H;输入密码用"0"表示
INCR0
INCR1
CALLDISP
DJNZBITCNT,INPUT
LOP3:
LCALLKEY1;已输入8位密码,检测按键
MOVR5,A
XRLA,#0EH
JZCANCEL;取消键被按下,转到CANCEL(取消程序)
MOVA,R5
XRLA,#0FH
JZOK
SJMPLOP3;确定键被按下,跳出子程序
OK:
RET
CANCEL:
MOVA,R5;A存放取消的键值
RET
;比较密码子程序
COMP:
MOVR0,#40H
MOVA,@R0
CJNEA,20H,X3;比较第0位密码,相同则跳到下一位比较,错误则跳到no(错误程序)
NEXT1:
INCR0
MOVA,@R0
CJNEA,21H,X3;比较第1位密码,相同则跳到下一位比较,错误则跳到no(错误程序)
NEXT2:
INCR0
MOVA,@R0
CJNEA,22H,X3;比较第2位密码,相同则跳到下一位比较,错误则跳到no(错误程序)
NEXT3:
INCR0
MOVA,@R0
CJNEA,23H,X3;比较第3位密码,相同则跳到下一位比较,错误则跳到no(错误程序)
NEXT4:
INCR0
MOVA,@R0
CJNEA,24H,X3;比较第4位密码,相同则跳到下一位比较,错误则跳到no(错误程序)
NEXT5:
INCR0
MOVA,@R0
CJNEA,25H,X3;比较第5位密码,相同则跳到下一位比较,错误则跳到no(错误程序)
NEXT6:
INCR0
MOVA,@R0
CJNEA,26H,X3;比较第6位密码,相同则跳到下一位比较,错误则跳到no(错误程序)
NEXT7:
INCR0
MOVA,@R0
CJNEA,27H,X3;比较第7位密码,相同则跳到下一位比较,错误则跳到no(错误程序)
SETBC;C='1'表示密码正确
RET
X3:
CLRC;C='0'表示密码错误
INCERRORCNT;错误次数加1
CALLNO
RET
L1:
MOVA,ERRORCNT
CJNEA,#03H,NNNN1
SJMPNNNN2
NNNN1:
LJMPDISP1;错误次数不足3,则转到DISP1
NNNN2:
MOVR1,#30H;错三次,锁键盘
MOVR2,#03H
MOV@R1,#61H;30H存入"E"的段码
INCR1
MOV@R1,#0F5H;31H存入"R"的段码
INCR1
MOV@R1,#0F5H;32H存入"R"的段码
INCR1
MOV@R1,#0C5H;33H存入"0"的段码
INCR1
MOV@R1,#0F5H;34H存入"R"的段码
LOP:
INCR1;35H-37H存入全灭的段码
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子 密码锁