唐山学院单片机子密码锁研发设计方案.docx
《唐山学院单片机子密码锁研发设计方案.docx》由会员分享,可在线阅读,更多相关《唐山学院单片机子密码锁研发设计方案.docx(25页珍藏版)》请在冰豆网上搜索。
![唐山学院单片机子密码锁研发设计方案.docx](https://file1.bdocx.com/fileroot1/2023-1/27/103bd581-e2c3-4401-9e07-b66691ed3a21/103bd581-e2c3-4401-9e07-b66691ed3a211.gif)
唐山学院单片机子密码锁研发设计方案
目录
前言1
1电子密码锁的设计2
1.1电子密码锁设计的目的3
1.2设计任务3
1.3运行环境及开发工具3
2总体方案设计4
3设计的要求5
4密码锁的硬件设计6
4.1行列式键盘6
4.2LM016LLCD显示器6
4.3按键提示和报错7
4.4总电路设计图8
5密码锁的软件设计7
5.1主程序的设计8
5.2主要功能程序的设计9
5.2.1键盘扫描程序设计的流程图9
5.2.2LCD显示程序设计的流程图10
5.2.3修改密码子程序设计的流程图11
5.3仿真图及其分析12
5.3.1欢迎界面仿真图12
5.3.2输入密码界面仿真图13
5.3.3修改密码界面仿真图14
6总结与思考15
参考文献16
附录:
源程序指令代码17
前言
目前,最常用的锁是20世纪50年代意大利人设计的机械锁,其机构简单、使用方便、价格便宜。
但在使用中暴露了很多缺点:
一是机械锁是靠金属制成的钥匙上的不同齿形与锁芯的配合来工作的。
据统计,每4000把锁中就有两把锁的钥匙齿牙相同或类似,故安全性低。
二是钥匙一旦丢失,无论谁捡到都可以将锁打开。
三是机械锁的材料大多为黄铜,质地较软,容易损坏。
四是机械锁钥匙易于复制,不适于诸如宾馆等公共场所使用。
由于人们对锁的安全性,方便性等性能有更高的要求,许多智能锁也相继问世,但这类产品的特点是针对特定指纹或有效卡,但能适用于保密要求高且仅供个别人使用的箱、柜、房间,其成本一般较高,在一定程度上限制了这类产品的普及和推广。
随着人们生活水平的提高,电子密码防盗锁作为防盗卫士的作用日趋重要。
电子密码防盗锁用密码代替钥匙,不但省去了佩戴钥匙的烦恼,也从根本上解决了普通门锁保密性差的缺点。
随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简单,被撬的事件屡见不鲜,机械锁的这些弊端为一种新型的锁---电子密码锁,提供了发展的空间。
随着人们对安全的重视和科技的发展,许多电子智能锁已在国内外相继面世。
但是这些产品的特点是针对特定的指纹和有效卡,只能适用于保密要求的箱、柜、门等。
而且指纹识识别器若在公共场所使用存在容易机械损坏,IC卡还存在容易丢失、损坏等特点。
加上其成本较高,一定程度上限制了这类产品的普及和推广。
电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的欢迎。
鉴于目前的技术水平与市场的接收程度,电子密码锁是这类电子防盗产品的主流。
1电子密码锁的设计
1.1电子密码锁设计的目的
(1)熟悉电路,理解各个元件之间的控制流程。
(2)熟悉PROTEUS平台的运行环境。
(3)熟练掌握汇编语言,矩阵式键盘的实时控制操作。
(4)理解电子密码锁的工作原理。
1.2设计任务
(1)确定4×4键盘控制识别方案。
(2)分析电子密码锁的流程。
(3)画出程序流程图。
(4)分析电路图。
(5)编写代码。
(6)程序分析与调试。
(7)测试。
1.3运行环境及开发工具
(1)WindowsXP/win7系统。
(2)Keil51或WAVE编译环境。
(3)PROTEUS实验平台。
(4)运用汇编语言编程
2总体方案设计
本次设计使用AT89C51实现一基于单片机的电子密码锁。
本系统由单片机系统、矩阵键盘、LED显示和报警系统组成。
系统能完成开锁、超次锁定、修改用户密码基本的密码锁的功能。
本系统成本低廉,功能实用。
以AT89C51单片机为核心的控制电路,采用模块化的设计方案。
通过单片机的P2端口的开关来控制案件的输入的内容,根据另一单片机端口P1口LCD数码显示管所显示的的情况来确定程序的运行和理论的结果是否一致。
具体设计方案如下:
1.正确连接好硬件电路线路;
2.加载程序.HEX文件,运行程序;
3.按下键盘开关,结果键值显示在LCD数码管显示器上;
4.对比LCD数码管显示情况与理论值是否相符。
如相符合,即方案可行。
图2.1总体的设计框图
3设计的要求
1、设计密码锁的密码为六位数,可以修改;
2、用4×4组成0~9数字键及确认键、取消键、修改密码键、退出修改键。
3、当密码锁通电以后,通过LCD显示与用户沟通,组成显示电路提示信息,输入键盘按下时,LED指示灯亮,按键松开了指示灯就灭;
4、当密码位数输入完毕按下确认键时,对输入的密码与设定的密码进行比较,若密码正确,则门开;当输入的密码错误时,显示输入错误,并且用蜂鸣器报错;
5、所修改的密码只能是六位数,要是在改密码以后要恢复最初密码,只需将密码锁断电即可。
4密码锁的硬件设计
4.1行列式键盘
图4.1行列键盘图
图4.1所示键盘根据具体的功能省去4×4键盘中的两个按键,再通过翻转法扫描键盘的到键值,再根据键值进行相应的操作。
4.2LM016LLCD显示器
图4.2LCD显示器图
该图器件是LM016L液晶显示屏,D0到D7口连接在单片机的I/O口上(如该设计就连接在P1口),E,RW,RS引脚也与单片机相连(如本设计连在P3.5,P3.6,P3.7口),VEE和VSS接电源,VDD接地,再通过软件设计实现各个字符串的显示。
4.3按键提示和报错
图4.3提示报错电路图
该图利用一个发光二极管提示用户按键是否按下,用蜂鸣器提示密码错误,发出错误警报,将a,b两端接在单片机上(本设计连在P0.6,P0.7口)
4.4总电路设计图
图4.4硬件设计图
图4.4是将行列式键盘,LCD显示器,提示和警报和AT89C51单片机连接起来,在给单片机加上晶振电路和复位电路就构成了一个完整的电子密码锁的硬件设计图。
5密码锁的软件设计
5.1主程序的设计
1、主程序流程图
图5.1主程序流程图
2、主程序的功能说明
在主程序中可以实现密码的储存,键值的判断,通过不同的键值判断程序的下一步走向,在没按键式或是在没按下特殊功能键时,程序在不停顶循环,直到符合用户的要求和意愿。
5.2主要功能程序的设计
5.2.1键盘扫描程序设计的流程图
图5.2键盘扫描程序设计的流程图
5.2.2LCD显示程序设计的流程图
图5.3LCD显示程序设计的流程图
5.2.3修改密码子程序设计的流程图
图5.4修改密码子程序设计的流程图
5.3仿真图及其分析
5.3.1欢迎界面仿真图
图5.5欢迎界面仿真图
图5.5为电子密码锁的欢迎界面,在两秒的欢迎界面后,显示器出现与用户沟通的用户输入显示如图5.6所示
5.3.2输入密码界面仿真图
图5.6输入密码界面仿真图
图5.6为用户输入密码时的沟通界面,可以通过星号判断输入数据的个数,当用户按下其他功能键时,显示器会有相应的动作,当按下“确认”时,若密码正确则显示“SUCCESS”,
提示用户输入的密码是正确的,如密码错误则显示“ERROR”并发出警报,当按下“取消”时,显示将提示用户重新输入。
5.3.3修改密码界面仿真图
图5.7修改密码界面仿真图
图5.7是用户修改密码时的用户沟通界面,当按下“确认”是若输入的新密码格式不对则显示“SAVEFAILURE”,若输入的新密码的格式正确则显示“SAVESUCCESS”,当按下“取消”时,显示将提示用户重新输入新密码,当按下“退出修改”时,显示器将提示用户没有储存新密码,并且显示欢迎界面。
6总结与思考
通过本次课程设计,我学到了许多书本上无法学到的知识,也深刻体会到单片机技术应用领域的广泛。
不仅让我对学过的单片机知识有了很多的巩固,同时也对单片机这一门课程产生了更大的兴趣。
本设计涉及到《单片机原理及应用》、《模拟电子技术》等学科。
让我对专业知识有了更深的理解。
在本次课程设计过程中,我学会了在网络上查找有关本设计的各硬件的资源,其中包括:
LCD的驱动原理、AT89C51单片机及其引脚说明、键盘扫描程序的编写等,为本次课程设计提供了一定的资料。
在做课程设计的初期阶段,难度较大。
在设计基本完成时密码的修改还是不能实现,通过求助于老师、查找了问题的所在。
最后经过指导老师的耐心指点和连续的奋战才基本设计出来。
感谢老师的无私的帮助!
本次设计我能独立完成,算是有了很大的收获。
不但对单片机有了更为深入的了解,对一个课题如何排版、画流程图、编程序等,有了一定的认识。
进一步加强了自己的动手能力和运用专业知识的能力,从中学习到如何去思考和解决问题,以及如何灵活地改变方法去实现设计方案;特别是深刻体会到的是软件和硬件结合的重要性,以及两者的联系和配合作用。
同时明白了办事只要有信心,有毅力,找对方法,就会成功!
通过本次课程设计,让我了解到智能化技术对当今人们生活的重要性。
同时这次做课程设计的经历也使我受益匪浅。
让我知道做任何事情都应脚踏实地,刻苦努力地去做。
只有这样,才能做好。
在这次课程设计中,我既巩固了专业知识,又学到了在设计过程中的许多流程和该注意的事项,增强了电子产品开发的意识。
本次经历将是我在大学时期很好的一次实践和锻炼机会。
参考文献
1、何立民主编,单片机中级教程,北京航空航天大学出版社
2、丁元杰主编,单片机原理与应用,机械工业出版社
3、孙育才主编,MCS-51系列单片微型计算机及其应用,东南大学出版社
4、潘新民、王燕芳主编,微型计算机控制技术实用教程,北京电子工业出版社
5、刘湘涛、江世明主编,单片机原理与应用,北京电子工业出版社
附录:
源程序指令代码
ORG0000H;
LJMPSTART
ORG000BH
LJMPINT
RSBITP3.7
RWBITP3.6
EBITP3.5
ORG0040H
START:
MOV70H,#1;将正确的密码存放
MOV71H,#2
MOV72H,#3
MOV73H,#4
MOV74H,#5
MOV75H,#6
START1:
ACALLWELCOME
ACALLDELAY1
ACALLDELAY1
ACALLDELAY1
KAISHI:
MOVR2,#00H
MOVR0,#50H
ACALLINPUT
JIXU:
ACALLSAOMIAO
CJNEA,#10,PD2
ACALLPD1
AJMPPD4
PD2:
CJNEA,#11,PD3
AJMPPD4
PD3:
ACALLINPUT
LJMPJIXU
PD4:
LJMPKAISHI;这一部分为主程序,电子密码锁的各种功能函数都嵌套在主程序中
SAOMIAO:
NOP;键盘扫描子程序
MAIN:
MOVP2,#0F0H
MOVA,P2
CJNEA,#0F0H,M
SJMPMAIN
M:
ACALLDELAY
CJNEA,#0F0H,MM
SJMPMAIN
MM:
MOV20H,A
MOVP2,#0FH
MOV31H,P2
CLRP0.6
MMM:
MOVP2,#0F0H
MOVA,P2
CJNEA,#0F0H,MMM
SETBP0.6
JNB20H.4,AP1
JNB20H.5,AP2
JNB20H.6,AP3
JNB20H.7,AP4
LJMPMAIN
AP1:
MOV30H,#0
AJMPWP
AP2:
MOV30H,#4
AJMPWP
AP3:
MOV30H,#8
AJMPWP
AP4:
MOV30H,#12
AJMPWP
WP:
MOVA,31H
JNBACC.0,D0
JNBACC.1,D1
JNBACC.2,D2
JNBACC.3,D3
LJMPMAIN
D0:
MOVA,#0
ADDA,30H
MOV@R0,A
MOVA,R0
INCR0
INCR2
LJMPWWW
D1:
MOVA,#1
ADDA,30H
MOV@R0,A
INCR0
INCR2
LJMPWWW
D2:
MOVA,#2
ADDA,30H
MOV@R0,A
INCR0
INCR2
LJMPWWW
D3:
MOVA,#3
ADDA,30H
MOV@R0,A
INCR0
INCR2
WWW:
NOP
RET;扫描程序出口,该部分用翻转法,先给高位置1,低位置0,再将其翻转过来,扫描得到键值
PD1:
CLRC;输入密码判断程序
MOVA,50H
SUBBA,70H
JNZEXIT
CLRC
MOVA,51H
SUBBA,71H
JNZEXIT
CLRC
MOVA,52H
SUBBA,72H
JNZEXIT
CLRC
MOVA,53H
SUBBA,73H
JNZEXIT
CLRC
MOVA,54H
SUBBA,74H
JNZEXIT
CLRC
MOVA,55H
SUBBA,75H
JNZEXIT
CLRC
DECR2
MOVA,R2
SUBBA,#6
JNZEXIT
ACALLSUCCESS
ACALLDELAY1
ACALLDELAY1
ACALLDELAY1
ACALLWELCOME
PP1:
ACALLSAOMIAO
MOVA,57H
CJNEA,#12,PP
AJMPPPP0
PP:
AJMPPP1
PPP0:
ACALLXIUGAI
LJMPSTART1
EXIT:
ACALLERROR
MOVTMOD,#01
MOVTH0,0FCH
MOVTL0,0EH
SETBEA
SETBET0
SETBTR0
ACALLDELAY1
CLRTR0
RET
XIUGAI:
ACALLNEWWORD;修改密码的程序
MOVR2,#00
MOVR0,#50H
JIXIU1:
ACALLSAOMIAO
CJNEA,#10,XX1
LJMPPD5;跳转到判断输入密码格式是否正确
XX1:
CJNEA,#11,XX2
LJMPPD6;跳转到开始修改密码的状态
XX2:
CJNEA,#12,XX3
LJMPPD6
XX3:
CJNEA,#13,XX4
LJMPPD7;退出修改密码
XX4:
ACALLXIANSX
LJMPJIXIU1
PD5:
ACALLPANDUAN
AJMPPD8
PD6:
LJMPXIUGAI
PD7:
ACALLNOMOTIFY
ACALLDELAY1
ACALLDELAY1
ACALLDELAY1
PD8:
NOP
RET
XIANSX:
MOVA,R2;显示新密码的程序
MOVR3,A
ACALLBUSY
MOVP1,#38H
ACALLENABLE
ACALLBUSY
MOVP1,#0FH
ACALLENABLE
ACALLBUSY
MOVP1,#06H
ACALLENABLE
ACALLBUSY
MOVP1,#192
ACALLENABLE
MOVDPTR,#1900H
LP5:
ACALLBUSY
MOVA,#00H
MOVCA,@A+DPTR
MOVP1,A
ACALLDATAS
INCDPTR
DJNZR3,LP5
RET
PANDUAN:
MOVA,R2;密码修改时的格式是否正确的判断程序
SUBBA,#7
JNZEXIT1
MOV70H,50H
MOV71H,51H
MOV72H,52H
MOV73H,53H
MOV74H,54H
MOV74H,54H
ACALLSAVES
AJMPEXIT2
EXIT1:
ACALLSAVEF
EXIT2:
ACALLDELAY1
ACALLDELAY1
ACALLDELAY1
RET
ENABLE:
SETBE
CLRRW
CLRRS
CLRE
RET
DATAS:
SETBE
SETBRS
CLRRW
CLRE
RET
BUSY:
CLRE;LCD判忙程序
MOVP1,#0FFH
CLRRS
SETBRW
SETBE
JBP1.7,BUSY
RET
CHUSHI:
ACALLBUSY;LCD初始化程序
MOVP1,#01H
ACALLENABLE
ACALLBUSY
MOVP1,#38H
ACALLENABLE
ACALLBUSY
MOVP1,#0FH
ACALLENABLE
ACALLBUSY
MOVP1,#06H
ACALLENABLE
ACALLBUSY
MOVP1,#80H
ACALLENABLE
RET
INPUT:
MOVA,R2;INPUT加星号的显示程序
MOVR3,#6
ADDA,R3
MOVR3,A
MOVDPTR,#2000H
AJMPPPP
SUCCESS:
MOVDPTR,#2050H
MOVR3,#7
AJMPPPP
ERROR:
MOVDPTR,#2100H
MOVR3,#5
AJMPPPP
PPP:
ACALLCHUSHI
LP:
ACALLBUSY
MOVA,#00H
MOVCA,@A+DPTR
MOVP1,A
ACALLDATAS
INCDPTR
DJNZR3,LP
RET
WELCOME:
MOVDPTR,#2150H;显示WELCOMETOUSE的程序
MOVR3,#14
ACALLCHUSHI
LP1:
ACALLBUSY
MOVA,#00
MOVCA,@A+DPTR
MOVP1,A
ACALLDATAS
INCDPTR
DJNZR3,LP1
RET
NEWWORD:
MOVDPTR,#2200H;显示NEWPASSWORDIS的程序
MOVR3,#15
ACALLCHUSHI
LP2:
ACALLBUSY
MOVA,#00
MOVCA,@A+DPTR
MOVP1,A
ACALLDATAS
INCDPTR
DJNZR3,LP2
RET
SAVEF:
MOVDPTR,#2250H;显示SAVEFAILURE的程序
MOVR3,#12
ACALLCHUSHI
LP3:
ACALLBUSY
MOVA,#00
MOVCA,@A+DPTR
MOVP1,A
ACALLDATAS
INCDPTR
DJNZR3,LP3
RET
SAVES:
MOVDPTR,#2300H;显示SAVESUCCESS的程序
MOVR3,#12
ACALLCHUSHI
LP4:
ACALLBUSY
MOVA,#00
MOVCA,@A+DPTR
MOVP1,A
ACALLDATAS
INCDPTR
DJNZR3,LP4
RET
NOMOTIFY:
MOVDPTR,#2350H
MOVR3,#9
ACALLCHUSHI
LP6:
ACALLBUSY
MOVA,#00
MOVCA,@A+DPTR
MOVP1,A
ACALLDATAS
INCDPTR
DJNZR3,LP6
RET
INT:
;定时器中断服务程序
MOVTH0,0FCH
MOVTL0,0EH
SETBTR0
CPLP0.7
RETI
DELAY:
MOVR7,#3;消除抖动的延时程序
OP:
MOVR6,#255
DJNZR6,$
DJNZR7,OP
RET
DELAY1:
MOVR6,#5
YS2:
MOVR4,#255
YS1:
MOVR5,#255
DJNZR5,$
DJNZR4,YS1
DJNZR6,YS2
RET
ORG1900H
DB2AH,2AH,2AH,2AH,2AH,2AH,2AH,2AH,2AH,2AH
ORG1950H
DB30H,31H,32H,33H,34H,35H,36H,37H,38H,39H
ORG2000H
DB49H,4EH,50H,55H,54H,3AH
DB2AH,2AH,2AH,2AH,2AH,2AH,2H,2AH,2AH
ORG2050H
DB53H,55H,43H,43H,45H,53H,53H
ORG2100H
DB45H,52H,52H,4FH,52H
ORG2150H
DB57H,45H,4CH,43H,4FH,4DH,45H,20H,54H
DB4FH,20H,55H,53H,45H
ORG2200H
DB4EH,45H,57H,20H,50H,41H,53H,53H
DB57H,4FH,52H,44H,20H,49H,53H
ORG2250H
DB53H,41H,56H,45H,20H,46H,41H,49H,4CH,55H,52H,45H
ORG2300H
DB53H,41H,56H,45H,20H,53H,55H,43H,43H,45H,53H,53H
ORG2350H
DB4EH,4FH,20H,4DH,4FH,54H,49H,46H,59H
END