基于单片机的密码锁.docx
《基于单片机的密码锁.docx》由会员分享,可在线阅读,更多相关《基于单片机的密码锁.docx(44页珍藏版)》请在冰点文库上搜索。
基于单片机的密码锁
毕业论文
专业
班次
姓名
指导老师
成都工业学院
二00九年六月
基于单片机的密码锁
【摘要】:
本次设计是基于单片机AT89S52为控制核心的电子密码锁。
按系统功能划分,可分为控制与开锁两大部件,控制部分由单片机AT89S52、LED发光二极管显示、键盘等组成。
开锁部分由单片机AT89S52、电机锁控制电路等组成。
系统能够完成自动开锁,重设密码等基本的密码锁功能,在不断电的情况下,具有工作稳定可靠,保密性高,实用性强等特点。
【关键词】:
单片机AT89S52,汇编语言,wave软件,Altiumdesigner,
印制电路板PCB
【Abstract】:
Thedesignisbasedonthesingle-chipAT89S52thecoretocontroltheelectroniclocks.Dividedbythesystemcanbedividedintocontrolandunlockthetwoparts,controlinpartbythesingle-chipAT89S52,LEDlight-emittingdiodedisplay,keyboard,andsoon.Unlockinpartbythesingle-chipAT89S52,electriclockcontrolcircuitandsoon.Systemcanbecompletedautomaticallyunlock,resetthepasswordforthepasswordlockandotherbasicfunctions,withastableandreliablework,highconfidentiality,practicalandsoon.
【KeyWords】:
Single-chipAT89S52,assemblylanguage,wavesoftware,Altiumdesigner,
PrintedcircuitboardPCB,
目录
第一章引言…………………………………………………(4)
第二章单片机应用系统概述………………………………(4)
1.1单片机密码锁概述…………………………………(5)
1.2本设计任务主要内容………………………………(5)
第三章电子密码锁的原理…………………………………(7)
2.1密码锁的基本论述………………………………...(7)
第三章系统主要硬件设计………………………………….(8)
3.1方案论证与比较……………………………………(8)
3.1.1键盘电路……………………………………(8)
3.1.2缓冲电路…………………………………...(9)
3.1.3电压拉升电阻……………………………...(10)
3.1.4LED显示器……………………………...(10)
3.2单片机主机系统电路……………………………....(11)
3.2.1单片机电路………………………………...(12)
3.2.2复位电路…………………………………...(12)
3.2.3时钟电路…………………………………...(13)
第四章系统软件设计
4.1系统程序结构……………………………………....(14)
4.2系统主程序………………………………………....(14)
4.3基于Proteus的软件仿真…………………………..(21)
第五章PCB设计……………………………………………..(23)
5.1元件选择……………………………………………..(23)
5.2Altiumdesigner原理图的绘制……………………….(23)
5.3元件封装制作………………………………………...(24)
5.4PCB的电磁兼容性设计……………………………...(24)
5.5布局布线……………………………………………..(28)
5.6制造文件输出………………………………………..(29)
第六章元件采购……………………………………………….(33)
6.1BOM文件导出……………………………………….(33)
6.2元件采购……………………………………………..(35)
6.3电路板焊接…………………………………………...(35)
第7章结束语………………………………………………….(38)
致谢……………………………………………………………...(39)
附录……………………………………………………………...(40)
A系统原理图…………………………………………....(40)
源程序…………………………………………...................(40)
参考文献………………………………………………………...(50)
第一章引言
1.1单片机应用系统概述
自从1971年微处理器研制成功后,不久就出现了单片微型计算机。
1976年Intel公司推出的MCS-48系列8位单片机,以其优良的特点得到广泛运用。
为以后的单片机发展打下基础。
后来的单片机,一直以此构架发展至今。
单片机是一个单芯片形态、面向控制对象的嵌入式应用计算机系统。
它的出现及发展使计算机技术从通用型数值计算领域进入到智能化的控制领域。
从此,计算机技术在两个重要领域——通用计算机领域和嵌入式计算机领域都得到了极其重要的发展,并正在深深地改变着我们的社会。
嵌入式系统无疑是当前最热门、最具有发展前天的IT应用之一。
嵌入式系统的应用可以使传统的电子系统升级成为智能化的电子产品,使其成为具有“生命”的现代化智能系统。
嵌入式系统一般应用于对实时响应要求较高的设备中,单片机作为嵌入式系统的核心部件,其应用使电子系统的智能化出现了意想不到的效果,常常无需对硬件资源做任何改动,只需更新系统软件就能使系统功能升级。
现代社会中嵌入式系统无处不在,早已被应用在国防、国民经济、以及人们日常生活的各个领域,主要可以归纳为一下几个方面。
(1)军事装备:
各种武器控制(火炮控制、弹道控制、炮弹引信等),坦克、舰船、轰炸等各种电子装备,雷达、电子对抗、军事通讯装备等。
(2)家用电器:
各种家电产品,如数字电视、机顶盒、数码相机、VCD、DVD、可视电话、洗衣机、电冰箱、手机、智能玩具等。
(3)工业控制:
各种智能仪器仪表、数控装置、可编程控制器、分布式控制系统、工业机器人、机电一体化设备、汽车电子设备等。
(4)商用设备:
各种收款机、POS系统、电子秤、条形码阅读器、商务终端、IC卡输入设备、自动柜员机、防盗系统等。
(5)办公用品:
复印机、打印机、传真机、扫描仪、手机、个人数字助理(PDA)、变频空调设备、通信终端、程控变换机、网络设备等。
(6)医疗电子设备:
各种医疗电子仪器,如X光机、超声诊断仪、心脏起搏器、监护仪器等,以及辅助诊断系统、专家系统等。
单片机应用系统的设计包括单片机基本扩展、外围电路设计和程序设计、单片机应用系统开发环境、系统可靠性设计、电磁兼容性设计等内容。
通常开发一个单片机系统的步骤如下:
1.2单片机密码锁概述
随着电子技术的发展,具有防盗报警、语音提示等功能的电子密码锁代替安全性差的机械式密码锁已必然趋势。
目前大部分密电子码锁采用单片机进行设计,其主要特点是:
1.电路较简单,小巧灵活,成本低,易于产品化。
2.面向控制,能针对性地解决从简单到复杂的各类控制任务,因而有较高的性价比。
3.抗干扰能力强,适应温度范围宽,在各种恶劣的环境条件下都能可靠的工作,这是其他机种无法比拟的。
4.可以很方便的实现多机和分布控制,使整个系统的效率和可靠性大为提高。
1.3本设计任务的主要内容
1密码锁设计要求如下:
1)能进行密码重置;
2)能进行自动开锁;
3)能有正确的显示(LED)用于提示;
4)具有抗干扰能量;
5)体积小、功耗低、便于嵌入到其他系统。
2硬件电路的设计
1)方案的论证
2)元件的选择
3)用Altiumdesigner绘制原理图
3系统的PCB制作
1)PCB布局布线;
2)PCB实验板的焊接。
4系统软件的编写
1)软件的编写和编译检查;
2)基于Proteus的软件仿真。
5电路板实验测试
1)能否完成以上的功能
6分析数据
1)分析此次设计的不足
第二章电子密码锁的原理
2.1电子密码锁原理论
电子锁具的组成框图,它是以51系列单片机(AT89S52)为核心,配以相应硬件电路,完成密码的设置、存贮、识别和显示、开锁、等基本功能。
单片机接收键入的代码,并与存贮在flashROM中的密码进行比较,如果密码正确,则驱动电机转动示意开锁;如果密码不正确,则允许操作人员重新输入密码,
关键技术
为了提高智能密码锁的安全性、可靠性,应该在器件选择上采取措施(如采用低功耗、宽温度范围的器件),在设计中还采用了一些关键技术。
下面是一些电子密码锁图片:
图2-1电子密码锁图2-2电子密码锁
第三章系统主要硬件设计
3.1方案论证与比较
单片机采用Atmel公司的AT89S52,其他外围电路如下
3.1.1键盘3x5
图3-1键盘电路
矩阵式键盘的工作原理及接口:
矩阵式键盘的优点:
约I/O口线。
键盘扫描程序包括:
粗扫描,逐列扫描,求键值三大步骤。
(1)粗扫描
粗扫描可粗略的判断整个键盘上有无键按下,开始时设置所有列线(P20-P22)为低电平,当无键按下时,因各行线与各列线相互断开,各行线(P00-P04)均保持为高电平当有键按下时则相应的行线与列线相连,该行行线变为低电平,由此可见粗扫描的步骤如下:
①输出P20P21P22=000
②输入P00P01P02P03P04=11111,则无键按下;若非全为1,则有键按下
(2)逐列扫描
通过粗扫描能初步判断是否有键按下,但是按下的键时哪一列哪一行的还是不明确,必须通过逐列扫描加以确定。
逐列扫描的步骤如下:
①设置第0列扫描码:
P20P21P22=110
②输入列扫描码P20P21P22,扫描该列,
③输入P00P01P02P03P04,若P00P01P02P03P04为全1,则该列无键按下。
修改列扫描码P20P21P22=101,转②,③扫描下一列,重复直至3列扫描完。
④若扫描某列时,输入P00P01P02P03P04非全为一,则该列有键按下
例如:
当列扫描码P20P21P22=011,输入行码P00P01P02P03P04=11110
则可以判断0行,一列有键按下。
可见,根据列扫描码及行码可知被按键的坐标位置(又称位置码)。
(3)求键值。
根据按键的位置码求键值的方法很多,对于3x5键盘可采用查表的方法求键值。
先将键盘上各键对应的行码和列码组成键识别码。
键盘识别码=行码求反+列码
键盘上的每一个键对应唯一的识别码,先将键盘识别码存入表格中,在通过查表法,查出键值。
键盘识别码表如下:
8DH,8BH,87H
4DH,4BH,47H
2DH,2BH,27H
1DH,1BH,17H,8EH
3.1.2缓冲电路
图3-2缓冲电路(74ls07)
74ls07是TTL六位高压输出缓冲器/驱动器(oc,30v)
3.1.3电压拉升电阻
图3-3电压拉升电阻
单片机端口不能直接驱动LED亮,所以要加电压上拉电阻把电压提高。
用以点亮LED显示
3.1.4LED显示器
共阴极LED显示字符与对应的七段码表
显示字符
D7D6D5D4D3D2D1D0
七段码
dpgfedcba
0
00111111
3FH
1
00000110
06H
2
01011011
5BH
3
01001111
4FH
4
01100110
66H
5
01101101
6DH
6
01111101
7DH
7
00000111
07H
8
01111111
7FH
9
01101111
6FH
A
01110111
77H
B
01111100
7CH
C
00111001
39H
D
01011110
5EH
E
01111001
79H
F
01110001
71H
P
01110011
73H
U
00113110
3EH
H
01110110
76H
.
10000000
80H
空白
00000000
00H
图3-4LED显示器
3.2单片机主机系统电路
Atmel公司的AT89S52,该单片机主要特点如下:
(1)AT89S52系列单片机以8051为内核,兼容MCS-51系列单片机。
(2)AT89S52系列单片机内、内部含有Flash存储器,在系统开发可以反复擦写。
(3)AT89S52采用静态时钟方式,可以节省电能。
(4)AT89S52支持ISP(在线编程),不需要把单片机从电路板取下来就可以擦写程序。
(5)AT89S52晶振频率高达24M,运行速度更快。
(6)AT89S52价格也比较便宜
(7)增加了看门狗电路,防止程序“走飞”,更加安全可靠。
3.2.1单片机电路
图3.2.1单片机主电路
引脚功能:
P1口用来送显示信号给LED的数据,P200~P202送命令到LED控制LED的显示方式。
P00-P04和P200-P202接键盘电路。
3.2.2复位电路
单片机在RESET端加一个大于20ms正脉冲即可实现复位,上电复位和按钮组合的复位电路如下图:
在系统上电的瞬间,RST与电源电压同电位,随着电容的电压逐渐上升,RST电位下降,于是在RST形成一个正脉冲。
只要该脉冲足够宽就可以实现复位,即
ms。
一般取R
4.7
,C
22uF。
当人按下按钮S1时,使电容C1通过R1迅速放电,待S1弹起后,C再次充电,实现手动复位。
图3.2.2复位电路
3.2.3时钟电路
当使用单片机的内部时钟电路时,单片机的XATL1和XATL2用来接石英晶体和微调电容,如图所示,晶体一般可以选择3M~24M,电容选择30pF左右。
我们选择晶振为12MHz,电容33pF。
图3.2.3时钟电路
第四章系统软件设计
4.1系统程序的结构
(1)本次设计使用汇编语言编写程序,汇编语言运行速度快,效率高。
但是不利于阅读,这方面比C语言稍差
(2)主程序,分为键盘扫描程序和显示程序,还有一些基本的控制程序。
4.2系统主程序
本设计主程序的思想如下:
程序设计框图:
(1)如果输入密码正确,显示RIg;
(2)如果输入密码错误则显示ERR;
(3)如果按下重新设置密码键,则显示RSE;
(4)在重置和输入过程中有相应的提示。
(5)系统采用AT89S52的内时钟:
12MHz;
(6)没有使用看门狗功能;
(7)密码正确电机转动,示意开门
键盘扫描程序如下:
ORG0000H
MOVR1,#11H
COM:
MOV@R1,#08H
INCR1
CJNER1,#17H,COM;设置初始密码,并放在21H-26H中
MOVR1,#20H
MOVP3.0,#0
MOVP1,#00H
KEYD:
MOVP2,#00H
MOVA,P0
CPLA
ANLA,#1FH
JNZKEYD1
LJMPKEYD
KEYD1:
LCALLTM12ms;消抖动延时
MOVR2,#0FEH
KEYD2:
MOVP2,R2
MOVA,P0
CPLA
ANLA,#1FH
JNZKEYD3
MOVA,R2
RLA
MOVR2,A
CJNEA,#0F7H,KEYD2;判断是否三列扫描完毕
LJMPKEYD
KEYD3:
RLA
RLA
RLA
MOV34H,R2
ANL34H,#07H
ORLA,34H
MOV34H,A
MOVDPTR,#KEYTAB
MOVR3,#0FFH
LP:
INCR3
CLRA
MOVCA,@A+DPTR
INCDPTR
CJNEA,34H,LP;查表求键值
KDL:
MOVA,P0;判断按键是否释放
ANLA,#1FH
CJNEA,#1FH,KDL
LCALLTM12ms
MOVA,R3;判断是否按下重新设置密码键
CJNEA,#0BH,AOM
LCALLADISP
MOVR6,#1BH
MOVR1,#20H
LJMPKEYD
AOM:
MOVA,R3;判断是否按下清除键
CJNEA,#0AH,AOM1
LCALLBACK
MOVA,R1
ANLA,#0F0H
CJNEA,#10H,AOM2
LCALLEDISP
AOM2:
LCALLDDISP
LJMPKEYD
AOM1:
INCR1
MOVA,R3
MOV@R1,A
MOVA,R1
CJNEA,#17H,AOM3;判断是不是输入密码完毕
JMPAOM4
AOM3:
LJMPAOM5
AOM4:
MOVA,@R1
CJNEA,#0CH,AOM6
MOVR1,#20H
LCALLGDISP
LJMPKEYD
AOM6:
DECR1
LJMPKEYD
AOM5:
CJNER1,#27H,AOM7:
判断是不是重设密码完毕
JMPAOM9
AOM7:
MOVA,R1;如果既不是重设密码完毕,也不是输入密码完毕那么显示
ANLA,#0F0H
CJNEA,#10H,AOM8
LCALLEDISP
AOM8:
LCALLDDISP
LJMPKEYD
AOM9:
MOVA,@R1
CJNEA,#0CH,BOM
LJMPBOM1
BOM:
DECR1
LJMPKEYD
BOM1:
MOVR1,#21H
MOVR0,#11H
BOM2:
MOVA,@R0
MOV36H,@R1
CJNEA,36H,ERROR
LJMPBOM3
ERROR:
MOVR1,#20H
LCALLCDISP
LJMPKEYD
BOM3:
INCR0
INCR1
MOVA,R1
CJNER1,#27H,BOM2;判断是不是验证密码完毕
LCALLBDISP;验证程序
BOM4:
CJNER6,#1BH,OK
MOVR1,#10H
MOVR6,#00H
LJMPKEYD
OK:
MOVR1,#20H
LCALLFDISP
MOVP3.0,#1
MOV50H,#0FFH
SHI:
LCALLTM12ms
DJNZ50H,SHI
MOVP3.0,#0
LJMPKEYD
KEYTAB:
DB43H,45H,46H
DB23H,25H,26H
DB13H,15H,16H
DB0BH,0DH,0EH,83H
按下重新设置密码键的显示程序:
ADISP:
MOVR0,#0FFH
ADISP1:
MOV30H,#00H
MOVR4,#01H
MOVR5,#0FFH
ADISP2:
MOVP2,#00H
MOVA,30H
MOVDPTR,#BBRSE
MOVCA,@A+DPTR
MOVP2,R4
MOVP1,A
ADISP3:
DJNZR5,ADISP3
INC30H
MOVA,R4
RLA
MOVR4,A
JBAcc.4,ADISP2
DJNZR0,ADISP1
MOVP1,#0FFH
RET
BBRSE:
DB88H,92H,86H
其他显示程序原理相同,故此处不一一列出,完整程序在附录中已经列出。
如有需要,请参考附录上的程序。
谢谢!
!
!
延时程序:
TM12ms:
MOVR7,#18H;延时12毫秒
TM:
MOVR0,#0FFH
TM2:
DJNZR0,TM2
DJNZR7,TM
RET
4.3基于Proteus的软件仿真
Proteus是一款功能强大的软件,其ISIS用来做仿真十分方便,尤其是单片机系统的仿真,我们在本设计的试验初期,用Proteus来仿真我们的软件程序,以便验证我们的设计的可行性做出分析。
首先在软件中找到我们设计用的元件,然后连接好电路图,设置好各个元件的参数值,特别注意在LED显示器上连接需要接上拉电阻。
电路图如下:
用Proteus绘制好电路图后导入程序文件(HEX文件),然后就可以执行仿真
软件有时候仿真不太正确,但大体上是正确的,能给我门的设计起到指引的作用。
为我门设计成功提供便利条件。
第五章PCB设计
5.1元件选择
软件和硬件设计完成后就可以开始制作试验样板,首先是元件的选择,通过找资料和比较,本设计采用Atmel公司的AT89S52单片机,LED显示器
以及74LS07和按键等。
元件如下图所示
LED显示器
按键
5.2AltiumDesigner原理图的绘制
AltiumDesinger6是Protel的最新高版本,其功能强大,集成原理图设计,PCB设计,信号完整性分析,SPICE仿真,FPGA设计等。
Altiumdedsigner6操作更加容易,功能更加完善。
我们采用它来做我们的原理图和PCB设计。
首先绘制原理图。
绘制原理图时注意:
连线简洁,在同一图纸上元件线路多则使用网络标号来表示,
而多张图纸使用端口Port来连接他们:
连线要清楚的表示连接关系,当连接线路比较多而且集中时可以使用总线
来连接它们。
绘制完成后对所有元件做一个编号操作和编译检查。
主要是检查电路的连接是否符合电气规则。
5.3元件封装的建立
在绘制完成原理图后接下来就是确定元件的封装。
元件的封装必须按照元件实物来确定其大小,比如焊盘大小、外轮廓的大小等,绘制封装过程中注意焊盘
必须设置成多层上,元件的外轮廓绘制在TopOverLay,通常第一焊盘设置成方形。
建立之后必须和原理图元件关联起来。
一些典型的元件封装如下:
5.