数字密码锁的设计论文.docx
《数字密码锁的设计论文.docx》由会员分享,可在线阅读,更多相关《数字密码锁的设计论文.docx(49页珍藏版)》请在冰豆网上搜索。
数字密码锁的设计论文
电子与信息工程学院
本科毕业论文
论文题目数字密码锁的设计
学生姓名073621***
学号073621010
专业电子信息科学与技术
班级07电信
(1)
指导教师×××
2010年5月
摘要
基于Atmega88V设计的数字密码锁是以Atmega88V为核心控制电路,配以电源电路、复位电路、指示电路、报警电路、键盘电路等外围电路,实现对密码的输入、识别、修改、存储及输入密码错误时报警等功能。
该系统中,Atmega88V是输入和输出的联系部件,它通过读取从键盘输入的数据并对存储在单片机中的密码进行识别比较,判断密码是否输入正确,并作出相应的决定,指示报警器是否发出嗡鸣声以及发光二极管是否闪烁。
这种密码锁以其安全性高、成本低、易操作等优点受到越来越多人的欢迎。
关键词:
密码锁;Atmega88V;键盘;LCD显示
ABSTRACT
ThecorecontrolcircuitofdigitalcodelockdesignedbasedonATMEGA88VisAtmega88V,andtogetherwiththepowercircuit,resetcircuit,indicatingcircuit,alarmcircuit,keyboardandotherperipheralcircuitscircuititcanrealizethefunctionofinput,identification,modification,storageofthepassword,andthealarmwheninputtingthewrongpassword.Inthesystem,Atmega88Visthelinkofinputandoutputcomponents,itcanestimatewhethertheinputpasswordisrightbyidentifyingandcomparingthedatareadingfromthekeyboardandthepasswordstoredinthemicrocontroller,andmaketheappropriatedecisionthatwhethertheindicatingalarmaudiblehumandthelightdiodeblinking.Becauseofitshighsecurity,lowcost,easyoperation,etc,thisdigitalcodelockismoreandmorepopular.
Keywords:
digitalcodelock;Atmega88V;keyboard;LCDdisplay
1.绪论
随着社会经济的不断发展,安全防盗已成为社会问题。
如何制造安全可靠,又要使用方便的各种防盗锁,是制锁着长期以来研制的主题。
数字密码锁是二十一世纪锁业的一次革命,它特点是不用钥匙、无锁孔、不易损坏、不易磨损、不易被破译、可多次跟换密码、换号不换锁,具有防砸、防撬、防堵等功能,安装门锁时不破坏原门[1]。
数字密码锁是利用数字密码来开启的锁具,其重复概率仅为十万分之一,具有很高的安全性;而旋芯式锁具使用却相对不够安全[2]。
通过对社会各阶层千余人的调查,百分之百的人都愿意一身轻松没有任何顾虑的出入家门,都愿意用上一种锁具可使人摆脱钥匙的束缚[3]。
因此,设计数字密码锁的市场发展前景极为广阔。
基于ATMEGA88V设计的数字密码锁是以ATMEGA88V为核心控制电路,配以电源电路、晶振电路、复位电路、指示电路、报警电路、键盘和机电驱动电路等,实现对密码的输入、识别、修改、存储及输入密码错误时报警等功能。
该系统中,ATMEGA88V是输入和输出的联系部件,它通过读取从键盘输入的数据并对数据进行识别比较,判断密码是否输入正确,并作出相应的决定,指示驱动电磁是否执行开锁功能及报警器是否发出嗡鸣声。
这种密码锁以其安全性高、成本低、易操作等优点受到越来越多人的欢迎。
2.课题设计方案
2.1整体方案选择
方案一:
基于触发式电子密码锁的设计
触发式电子密码锁是应用数字电子技术的编、译码技术,并通过按键实现密码的设置、修改及识别功能[4]。
该设计电路主要由按键部分、计数部分、译码部分、显示部分及报警等电路组成。
由于密码采用脉冲输入法,故按键部分不能用数字键盘,须采用轻触式开关。
密码由用户按下轻触式开关的次数决定。
按键部分与脉冲触发计数器相连接,当用户按下轻触式开关,经计数器计数后,将输入密码送入译码部分进行识别比较,从而决定密码锁是否打开以及警报是否响起。
其原理框图如图1。
图1触发式电子密码锁原理框图
基于触发式电子密码锁的设计方案简单,制作成本也较低,不过需用到较多集成芯片,电路焊接起来很复杂;密码采用脉冲输入法,故对输入脉冲有很高要求,而且密码输入及修改过程也比较繁杂。
方案二:
基于VHDL的电子密码锁的设计
基于VHDL的电子密码锁的设计,是以现场可编程逻辑器件(FPGA)为设计载体,以硬件描述语言(VHDL)为主要表达方式,以QuartusⅡ开发软件和EDA开发系统为设计工具,实现对密码的输入、识别、修改、存储及输入密码错误时报警等功能[5]。
其硬件电路比较简单,可以将其分成键盘输入部分、密码锁控制电路部分、电源电路部分和密码锁显示电路四部分。
其组成框图如图2:
图2数字密码锁原理框图
该设计中,电源部分是用来为整个电路提供工作电压,保证电路正常工作;用户可以通过外接键盘输入密码开锁或者修改密码等;显示电路包括数字显示器和信号指示灯,数字显示器是用来显示用户输入的密码,信号灯用来提示用户密码输入的正确与否;报警部分是在密码输入错误时发出警报;整个硬件电路的核心部分就是控制部分,控制部分又可以分成使能电路、消抖电路、编码器、比较器、译码器、密码存储器、控制器等几个模块[6],这几个模块共同控制着密码输入,密码修改,开锁,报警等功能,这些模块的功能可以由一片FPGA芯片来完成。
基于VHDL的电子密码锁的设计,硬件电路简单,焊接方便,其硬件描述语言即程序的编写较为复杂,硬件成本相对较高。
方案三:
基于单片机的数字密码锁的设计
基于单片机的数字密码锁的设计,是以单片机为核心控制器,配以稳压电路、晶振电路、复位电路、指示电路、报警电路、键盘和机电驱动电路等,实现对密码的输入、识别、修改、存储及输入密码错误时报警等功能[7]。
其原理框图如图3:
图3基于单片机的电子密码锁的设计原理框图
在原理框图中,稳压电路为整个电路提供工作电压,使电路各部分能正常工作;晶振电路产生稳定的时钟周期,使程序正常运行;复位电路是在系统出现故障时使程序在地址为零的地方重新运行;键盘是用来输入或修改密码的;指示电路是指明电路是否正常工作;报警电路是在密码输入错误时发出报警信号。
在这几部分电路的共同工作下,即可实现数字密码锁的各项功能。
基于单片机的数字密码锁的设计方案,硬件电路较简单,软件编程也不复杂,而且其硬件成本很低,安全性高,易操作,方便而且实用。
由上述分析、系统成本和可行性实用性等因素考虑,本课题选用方案三,即采用单片机来实现数字密码锁的各项功能。
2.2控制器的选择
2.2.151系列单片机概述
应用最广泛的八位单片机首推Intel的51系列,主要有8031系列、8051系列,后来Atmel公司以8051的内核为基准,推出了AT89系列单片机[8]。
51系列有如下优点[9]:
1.从内部的硬件到软件有一套完整的按位操作系统,称作位处理器,或布尔处理器。
它的处理对象不是字或字节而是位。
它不光能对片内某些特殊功能寄存器的某位进行处理,还能进行位的逻辑运算,其功能十分完备,使用起来得心应手。
2.乘法和除法指令,这也给编程带来了便利。
很多的八位单片机都不具备乘法功能,作乘法时还得编上一段子程序调用,十分不便。
3.二进制-十进制调整指令DA,能将二进制变为BCD码,这对于十进制的计量十分方便。
而在其他的单片机中,则也需调用专用的子程序才行。
51系列也有许多值得改进之处[10],如:
1.运行速度过慢等。
当晶振频率为12MHz时,机器周期达1μs,显然适应不了现代高速运行的需要
2.所有I/O口都是准双向口,I/O口的驱动能力弱。
3.芯片里面的P0口没有上拉电阻,如果要输出高电平或者要定义成输入口,一般要接电阻上拉。
4.功耗比较高,抗干扰能力也不是很强。
2.2.2PIC系列
PIC系列单片机是美国微芯公司(Microship)的产品,它也是一种精简指令型的单片机,指令数量比较少,中档的PIC系列仅仅有35条指令而已,低档的仅有33条指令。
但是如果使用汇编语言编写PIC单片机的程序有一个致命的弱点就是PIC中低档单片机里有一个翻页的概念,编写程序比较麻烦[11]。
PIC系列单片机的特点是:
1.哈佛结构的总线结构:
MCS-51单片机的总线结构是冯-诺依曼型,计算机在同一个存储空间取指令和数据,两者不能同时进行;而PIC单片机的总线结构是哈佛结构,指令和数据空间是完全分开的,一个用于指令,一个用于数据,由于可以对程序和数据同时进行访问,所以提高了数据吞吐率。
正因为在PIC单片机中采用了哈佛双总线结构,所以与常见的微控制器不同的一点是:
程序和数据总线可以采用不同的宽度。
数据总线都是8位的,但指令总线位数分别位12、14、16位。
2.双指令流水线结构:
MCS-51单片机的取指和执行采用单指令流水线结构,即取一条指令,执行完后再取下一条指令;而PIC的取指和执行采用双指令流水线结构,当一条指令被执行时,允许下一条指令同时被取出,这样就实现了单周期指令。
3.寄存器组:
PIC单片机的所有寄存器,包括I/O口,定时器和程序计数器等都采用RAM结构形式,而且都只需要一个指令周期就可以完成访问和操作;而MCS-51单片机需要两个或两个以上的周期才能改变寄存器的内容。
2.2.3AVR系列
AVR单片机也是Atmel公司的产品,最早的就是AT90系列单片机,现在很多AT90单片机都转型为Atmega系列和Attiny系列,AVR单片机最大的特点是精简指令型单片机,执行速度在相同的振荡频率下是8位MCU中最快的一种单片机[12]。
AVR单片机其显著的特点为高性能、高速度、低功耗。
它取消机器周期,以时钟周期为指令周期,实行流水作业[13]。
AVR单片机指令以字为单位,且大部分指令都为单周期指令。
而单周期既可执行本指令功能,同时完成下一条指令的读取。
通用寄存器一共32个(RO-R31),前16个寄存器(R0~R15)都不能直接与立即数打交道,因而通用性有所下降。
AVR系列没有类似累加器A的结构,它主要是通过R16~R31寄存器来实现A的功能。
在AVR中,没有像5l系列的数据指针DPTR,而是由X(由R26、R27组成)、Y(由R28、.R29组成)、Z(由R30、R31组成)三个16位的寄存器来完成数据指针的功能(相当于有三组DPTR),而且还能作后增量或先减量等的运行。
在51系列中,所有的逻辑运算都必须在A中进行;而AVR却可以在任两个寄存器之间进行,省去了在A中的来回折腾,这些都比51系列强。
AVR的专用寄存器集中在00~3F地址区间,无需像PIC那样得先进行选存储体的过程,使用起来比PIC方便。
AVR的I/O脚类似PIC,它也有用来控制输入或输出的方向寄存器,在输出状态下,高电平输出的电流在10mA左右,低电平吸入电流20Ma。
综合来看,AVR与51、PIC单片机相比具有一系列的优点,用通俗的说法主要体现在这几个方面:
1.在相同的系统时钟下AVR运行速度最快;
2.所有AVR单片机的FLASH、EEPROM蓄存器都可以反复烧写、支持在ISP在线编程(烧写),入门费用非常少;
3.片内集成多种频率的RC振荡器、上电自动复位、看门狗、启动延时等功能,使得电路设计变得非常简单;
4.每个IO口作输出时都可以输出很强的高、低电平,作输入时IO口可以是高阻抗或者带上拉电阻[14];
5.片内具有丰富实用的资源,如AD模数器、DA数模器,丰富的中断源、SPI、USART、TWI通信口、PWM等等;
6.片内采用了先进的数据加密技术,大大的提高了破解的难度;
7.片内FLASH空间大、品种多,引脚少的有8脚,多的有64脚等各种封装
8.部分芯片的引脚兼容51系列,代换容易,如ATtiny2313兼容AT89C2051,ATmega8515/162兼容AT89S51等
本课题采用AVR系列的Atmega88V单片机作为密码锁的核心控制器。
3.系统的主要器件
由于本设计采用Atmega88V单片机作为核心控制器,该单片机的特点之一就是内部自带晶振电路,而且该晶振电路可以满足完成本设计所需的要求,故本设计的结构框图与第二章节中的图3稍有差别,本系统的结构框图如图4:
图4基于单片机的电子密码锁的设计原理框图
在该设计中,电源部分由外接电源直接提供,故在作品版面上没有设计电源模块;复位电路是由一个按键,一个电容和两个电阻组成;键盘电路是由6个按键和6个电阻组成独立键盘连接到单片机上完成按键功能;指示电路是由发光二极管和液晶显示以及电阻组成,用以完成设计中的指示功能和显示功能;报警电路是由发光二极管、蜂鸣器和电阻组成,用以完成密码输入错误时发出警报的功能;核心控制器采用Atmega88V单片机。
所以本设计中用到的器件很少也很简单,下面主要介绍一下Atmega88V单片机的引脚结构和功能以及液晶显示器的用法。
3.1ATmega88V单片机简介
ATmega88V是基于AVR增强型RISC结构的低功耗8位CMOS微控制器。
由于其先进的指令集以及单时钟周期指令执行时间,ATmega88V的数据吞吐率高达1MIPS/MHZ,从而可以缓减在功耗和处理速度之间的矛盾[15]。
ATmega88V有如下特点[16]:
8K字节的系统内可编程Flash(具有在编程过程中还可以读的能力,即RWW),512字节的EEPROM,1K字节SRAM,23个通用I/O口线,32个通用工作寄存器,三个具有比较模式的灵活的定时/计数器(T/C),片内/外中断,可编程串行USART,面向字节的两线串行借口,一个SPI串行端口,一个6路10位ADC(TQFP与MLF封装的器件具有8路10位ADC),具有片内振荡器的可编程看门狗定时器,以及五种可以通过软件选择的省电模式。
空闲模式时CPU停止工作,而SRAM、T/C、USART、两线串行接口、SPI端口以及终端系统继续工作;掉电模式时晶体振荡器停止震荡,所有功能除了中断和硬件复位之外都停止工作,寄存器的内容则一直保持;省电模式时异步定时器继续运行,以允许用户维持时间基准,器件的其他部分则处于睡眠状态;ADC噪声抑制模式时CPU和所有的I/O模块停止运行,而异步定时器和ADC继续工作,以减少ADC转换时的开关噪声;Standby模式时振荡器工作而其他部分睡眠,使得器件只消耗极少的电流,同时具有快速启动能力。
ATmega88V芯片的引脚图[17]如图5:
图5ATmega88V引脚图
VCC:
数字电路的电源
GDN:
地
端口B(PB7..0)XTAL1/端口B为8位双向I/O口,并具有可编程的内部上拉电
XTAL2/TOSC1/TOSC2阻。
其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。
作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。
在复位过程中,即使系统时钟未起振,端口B保持高阻态。
通过对系统时钟选择位的设定,PB6可作为反向震荡放大器与内部时钟操作电路的输入,PB7可作为反向震荡放大器的输出。
系统使用内部RC振荡器时,通过设置ASSR寄存器的AS2位,可以将PB7..6作为异步定时器/计数器2的输入口TOSC2..1使用。
端口B也可以用作其他不同的特殊功能。
端口C(PC5..0):
端口C为7位双向I/O口,并具有可编程的内部上拉电阻。
其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。
作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。
在复位过程中,即使系统时钟还未起振,端口B保持为高阻态。
PC6/RESET:
RSTDISBL位被编程时,可将PC6作为一个I/O口使用。
因此PC6引脚与端口C其它引脚的电特性是有区别。
RSTDISBL位未被编程时,PC6将作为复位输入引脚Reset。
此时,即使系统时钟没有运行,该引脚上出现的持续时间超过最小脉冲宽度的低电平将产生复位信号。
持续时间不到最小脉冲宽度的低电平不会产生复位信号。
端口C也可以用作其它不同的特殊功能。
端口D(PD7..O)端口D为8位双向I/O口,并具有可编程的内部上拉电阻。
其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。
作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。
在复位过程中,即使系统时钟还未起振,端口D保持为高阻态。
端口D也可以用作其它不同的特殊功能。
AVCC:
AVCC为A/D转换器的电源。
当引脚PC3..0与PC7..6用于ADC时,AVCC应通过一个低通滤波器与VCC连接。
不使用ADC时该引脚应直接与VCC连接。
PC6..4的电源则是由VCC提供的。
AREF:
AREF为ADC的模拟基准输入引脚。
ADC7..6(TQFP与MLF封装)TQFP与MLF封装芯片的ADC7..6引脚为两个10位A/D转换器的输入口,它们的电压由AVCC提供。
3.2液晶显示模块0802
字符型液晶显示模块是一种将LCD显示屏、驱动器、控制器和偏压产生电路集成在一块PCB板上的液晶显示模块,是专门用于显示字符、数字和符号的点阵型液晶显示模块,分4位和8位数据传输方式,提供5×7点阵光标和5×10点阵光标的显示模式。
字符型液晶显示模块还有显示数据缓冲区DDRAM、字符发生器CGROM和字符发生器CGRAM。
0802液晶显示就是一种字符型液晶显示模块,下面用表格的方式介绍它的主要技术参数、引脚说明和指令功能以及字符代码与字符图形对应关系[18]。
1.主要技术参数如表1:
表1主要技术参数
显示容量
8×2个字符
工作电压
4.5—5.5V
工作电流
2.0mA
最佳工作电压
5.0V
2.引脚说明如表2:
表2引脚说明
编号
符号
引脚说明
编号
符号
引脚说明
1
VSS
电源负端
9
D2
DataI/O
2
VDD
电源正端
10
D3
DataI/O
3
VO
LCD驱动电压
11
D4
DataI/O
4
RS
数据/命令选择端
12
D5
DataI/O
5
R/W
读/写选择端
13
D6
DataI/O
6
E
使能信号
14
D7
DataI/O
7
D0
DataI/O
15
LEDA
背光源正极
8
D1
DataI/O
16
LEDK
背光源负极
3.指令表如表3
表3指令表
指令
RS
RW
D7
D6
D5
D4
D3
D2
D1
D0
清除屏幕
0
0
0
0
0
0
0
0
0
1
光标返回
0
0
0
0
0
0
0
0
1
*
置输入模式
0
0
0
0
0
0
0
1
I/D
S
显示开关控制
0
0
0
0
0
0
1
D
C
B
光标或字符移位
0
0
0
0
0
1
SC
RL
*
*
置功能
0
0
0
0
1
DL
N
F
*
*
置字符发生存储地址
0
0
0
1
字符发生存储器地址
置数据存储地址
0
0
1
显示数据存储器地址
读忙标志或地址
0
1
BF
计数器地址
写数据到DDRAM
1
0
要写的数据
从DDRAM读数据
1
1
读出的数据
在表3.2.3中,I/D表示光标移动方向,I/D=1右移,I/D=0左移;S表示屏幕上所有文字是否左移或右移,S=1表示有效,S=0无效;D控制整体的开与关,1开显示,0关显示;C控制光标的开与关,1有光标,0无光标;B控制光标是否闪烁,1闪烁,0不闪烁;S/C为1时移动显示的文字,0时移动光标;R/L为1时右移,0时左移;DL为1时为8位总线,0时为4位总线;N为0时为单行显示,1时双行显示;F为0时显示5×7的点阵字符,1时显示5×10的点阵字符;BF为忙标志位,1表示忙,此时模块不能接受命令或者数据,0表示不忙。
4.字符代码与字符图形对应关系如表4:
表4字符代码与字符图形对应关系
4.硬件设计
由第三章中图4可知,本课题的硬件设计部分可分为控制器模块、电源模块、复位模块、按键模块、液晶显示模块和报警模块。
电源模块由外接电源直接提供,为单片机提供工作电压,使电路各部分能正常工作;复位电路是由一个按键,一个电容和两个电阻组成,功能是在系统出现故障时使程序在地址为零的地方重新运行;键盘电路是由6个按键和6个电阻组成独立键盘连接到单片机上,用来输入或修改密码;指示电路是由发光二极管和液晶显示以及电阻组成,用以完成设计中的指示功能和显示功能;报警电路是由发光二极管、蜂鸣器和电阻组成,用以完成密码输入错误时发出警报的功能;核心控制器采用Atmega88V单片机。
在所有模块中,电源模块、复位模块和控制器模块可构成单片机最小系统,本章节主要介绍这几个模块的设计原理原理图。
4.1单片机的最小系统
单片机最小系统一般由电源电路、晶振电路、复位电路以及单片机组成[19]。
电源电路是为单片机提供工作电压,保证单片机正常工作;晶振电路是为单片机提供时钟周期,使程序正常运行;复位电路是在系统出现故障时使程序在地址为零的地方重新运行。
本课题选用的单片机是AVR系列的Atmega88V,该芯片内部自带晶振部分[20],其晶振在本课题中可以完成为单片机提供时钟周期的任务,故无需再外加外部晶振电路。
电源模块由外接5V电源来提供,故也没设计;其复位电路图设计如图6:
图6复位电路
复位电路的设计是由1个按键、1个电容和2个电阻组成,其工作原理是:
按键后:
电容器被短路放电、REST直接和+5V相连,就是高电平,此时进入“复位状态”;松手后,电源开始对电容器充电,此时,充电电流在电阻上,形成高电平送到REST,仍然是“复位状态”;稍后,充电结束,电流降为0,电阻上的电压也将为0,REST降为低电平,开始正常工作[21]。
在本课题中,单片机最小系统图如图7:
图7Atmega88V单片机最小系统
4.2键盘电路
键盘分编码键盘和非编码键盘。
键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值的称为编码键盘,如计算机键盘。
而靠软件编程来识别的称为非编码键盘。
在单片机组成的各种系统中,用得最多的是非编码键盘,也有用到编码键盘的。
非编码键盘又分为行列式(又称为矩阵式)键盘和独立键盘[22]。
矩阵键盘就是将键盘的两端都接到单片机的I/O口上;独立键盘就是把键盘的一