设计本次毕业设计之前构思了两种方案:一种是用以74LS112双JK触发器构成的数字逻辑电路控制方案;另一种是用以单片机为核心的电子密码锁。第一种方案应用数字电子技术的编、译码技术,并通过按键实现密码的设置、修改及识别功能,在设计的时候考虑到第一种方案需用到较多集成芯片,电路焊接起来很复杂;密码采用脉冲输入法,故对输入脉冲有很高要求,而且密码输入及修改过程也比较繁杂。而第二种方案是采用集成芯片单片机还有其他集成芯片来控制整个电路,灵活准确性好且保密性强还具有扩展功能,并且焊接起来很简单,因此采用了后一种方案,即单片机控制的数字密码锁设计。 2.2 方案实现
此次设计的基于单片机的数字密码锁,它主要由单片机、矩阵键盘、液晶显示和报警提示等部分组成。单片机作为本设计的核心元件,利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性,实现基本的密码锁功能,其原理图如图2.1所示。矩阵键盘用于输入数字密码和进行各种功能的实现,主要有数字输入按键、确认按键、密码修改按键等,用户可以通过连接单片机的矩阵键盘输入密码,液晶显示屏提示一些输入,让用户更方便的操作电子密码锁锁,当你输入的密码位数达到所需要输入的密码位数后,单片机对用户输入的密码与自己内部设置保存的密码进行对比,从而判断密码是否正确,液晶显示屏提示你输入的密码是否错误,然后控制其他引脚的高低电平送到报警提示电路控制报警提示(红绿发光二极管显示),表示锁的开或者闭合,而在实际使用时只要将单片机的负载换成电子密码锁的电磁铁吸合线圈即可。
图2.1 单片机控制密码锁的原理图
2.3 方案结构框图
基于单片机控制的数字密码锁结总构框图如图2.2所示,框图由电源输入,晶振电路,单片机控制系统,键盘电路,显示电路,报警提示电路构成。电源为单片机控制器和其他芯片提供工作电源,此次设计的时候引用直流电源,但在实际应用到生活中去的时候需要通过交流电源转变为直流电源(降压、整流、滤波等过程),并且需要加个备用电源,防止停电或者其他故障而造成无法供电的时候的备用电源。单片机控制系统包括晶振电路和复位电路。
图2.2 基于单片机控制的数字密码锁总结构框图
3 硬件电路的设计
3.1 单片机及单片机最小系统
单片机选用常用的Atmel公司的51系列单片机AT89C52。AT89C52是Atmel公司生产的低电压、高性能CMOS8位单片机,AT89C52采用24MHZ或更高频率晶振,以获得较高的刷新频率,时期显示更稳定,单片机AT89C52引脚如图3.1所示。
图3.1 单片机AT89C52引脚
P0口是双向8位三态IO口,此口为地址总线(低8位)及数据总线分时复用口,可驱动8个
LS型TTL负载;P1口是8位准双向IO口,可驱动4个LS型TTL负载;P2口是8位准双向IO口,与地址总线(高8位)复用,可驱动4个LS型TTL负载;P3口是8位准双向IO口,双功能复用口,可驱动4个LS型TTL负载,并且P3口具有特殊功能。
P1口:P1口是一个内部提供上拉电阻的8位双向IO口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入“1”后,电位被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。P1口有8路10位高速AD转换器,速度可达到250KHz(25万次秒)。8路电压输入型AD,可做温度检测、电池电压检测、按键扫描、频谱检测等。上电复位后P1口为弱上拉型IO口,用户可以通过软件设置将8路中的任何一路设置为AD转换,不须作为AD使用的口可继续作为IO口使用。 在FLASH编程和校验时,P1口作为第八位地址接收;
P2口:P2口为一个内部上拉电阻的8位双向IO口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚电位被内部上拉电阻拉高,且作为输入。作为输入时,P2口的管脚电位被外部拉低,将输出电流,这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉的优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号;
P3口:P3口管脚是8个带内部上拉电阻的双向IO口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入时,由于外部下拉为低电平,P3口将输出电流(ILL),也是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口:
P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 INT0(外部中断0) P3.3 INT1(外部中断1)
P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入)
P3.6 WR (外部数据存储器写选通) P3.7 RD (外部数据存储器读选通)
同时P3口同时为闪烁编程和编程校验接收一些控制信号;
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高平时间;
ALE PROG :当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的16。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令时ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效;
PSEN:外部程序存储器的选通信号。在由外部程序存储器取址期间,每个机器周期PSEN两次有效。但在访问内部部数据存储器时,这两次有效的PSEN信号将不出现;
EAVPP:当EA保持低电平时,访问外部ROM;注意加密方式1时,EA将内部锁定为RESET;当EA端保持高电平时,访问内部ROM。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP);
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入; XTAL2:来自反向振荡器的输出; EAVPP(31引脚):“EA”为英文“External Access”的缩写,表示存取外部程序代码之意,低电平动作,也就是说当此引脚接低电平后,系统会取用外部的程序代码(存于外部EPROM中)来执行程序。因此在8031及8032中,EA引脚必须接低电平,因为其内部无程序存储器空间。
单片机最小系统如图3.2所示,其中由复位电路和晶振震荡电路组成。
复位电路:单片机上电时,当振荡器正在运行时,只要持续给出RST引脚两个机器周期的高电平,便可完成系统复位。外部复位电路是为内部复位电路提供两个机器周期以上的高电平而设计的。
其中复位电路通常有上电自动复位和按钮复位两种模式,本次采用的是按键手动复位并是电平复位方式,其中电平复位时通过RST端经电阻与电源VCC接通而实现的,电源VCC取+5V,复位电路的电阻取的10k,电容取的10uF。
晶振振荡电路:XTAL1脚和XTAL2脚分别构成片内振荡器的反相放大器的输入端和输出端,外接石英晶体或陶瓷振荡器以及补偿电容C1、C2构成并联振荡电路。当外界石英晶体时,电容C1、C2选30pF±10pF;当外接陶瓷振荡器时,电容C1、C2选47pF±10pF.AT89C52系统中晶振可在0~24MHz选择。外接电容C1、C2的大小会影响振荡器的高低、振荡频率的稳定度、起振时间及温度稳定性。在设计电路板时晶振和电容应靠近单片机芯片,以便减少寄生电容,保证振荡器稳定可靠的工作,并且在系统设计中,为保证串行通信波特率的误差,选择11.0592MHz的标准石英晶振,电容应C1、C2应选择20pF]。此次设计采用的是12MHz的晶振。
单片机最小系统如图3.2所示,其中由复位电路和晶振震荡电路组成。
图3.2 单片机最小系统图
3.2 键盘电路 3.2.1 键盘接口
常用的键盘接口分为独立键盘和行列式键盘两种。
独立键盘就是按键相互独立,每个按键各接一根输入线,通过检测输入线的电平状态可以很容易的判断哪个按键被按下。在按键数目较多的时候,独立式键盘电路需要较多的输入口线且电路结构繁杂,此种键盘适用于按键较少或操作速度较高的场合。
行列式(也称矩阵式)键盘用于按键数目较多的场合,它由行线和列线组成的按键电路,其按 键位于行、列的交叉点上,如图3.3所示,一个4×4的行、列式结构可以构成1个16个键的键盘,很明显节省了很多的IO口线。
矩阵式键盘的扫描原理主要是分为两个步骤:首先是确定是否有键闭合,然后逐一扫描以步确定哪一键闭合。
图3.3键盘电路
3.2.2 键盘的识别方式
键盘上的键按行列组成矩阵,在行列的交点上都对应有一个键。为判定有无键按下(闭合键)以及被按键的位置,可使用这种方法:扫描法(常用)。
扫描法就是首先是判定有没有键被按下,键盘的行线一端经上拉电阻接+5V电源,另一端接单片机的输入口线。各列线的一端接单片机的输出口线,另一端悬空。为判定有没有键被按下,可先经输出口向所有列线输出低电平,然后再输入各行线状态。若行线状态中有低电平,则表示有键被按下。然后再判定被按键的位置。 3.2.3 按键去抖动
当扫描表明有键被按下之后,紧接着应进行去抖动处理。因为常用键盘的键实际上就是一个机械开关结构,被按下时,由于机械接触点的弹性及电压突跳等原因,在触点闭合或断开的瞬间会出现电压抖动,如图3.4所示。抖动时间长短与键的机械特性有关,一般为5~10ms。而键的稳定的闭合时间和操作者按键动作有关,大约为十分之几到几秒不等。
图3.4键闭合和断开时的电压抖动
3.2.4 4×4行列式键盘电路
此次设计为4×4行列式键盘,由16个按键组成的行列式键盘,主要作为用户输入数字密码及
确
指令码 功能
认、取
消、修改等功能键,此次设计按键扫描方法采用的是扫描法。
4×4行列式键盘电路如图4.4所示,把芯片AT89C52中的P1.0~P1.3端口用4个10K的上拉电阻连接到4×4行列式键盘的行线上,把芯片AT89C52中的P1.4~P1.7端口直接连接4×4行列式键盘的列线。(上拉电阻的作用,就是把电位拉高,比如拉到VCC。一般就是刚上电的时候,端口电压不稳定,为了让端口稳定为高,就会用到上拉电阻。) 3.3 LCD1602显示电路 3.3.1 LCD1602的介绍
LCD1602是一种专门用来显示字母、数字、符号等的点阵型的液晶模块,它由若干个5×7或者5×11等点阵字符位组成,每个点阵字符都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用。LCD1602是指显示的内容为16×2,可以显示两行,每行16个字符的液晶模块,目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶,此次设计引用LCD1602,是因为它具有微功耗、体积小、显示内容丰富、超薄轻巧,常用在袖珍式仪表和低功耗应用系统中。
LCD1602的引脚如图3-6所示,LCD1602有16个引脚。
图3.5 LCD1602的引脚
LCD1602的引脚介绍:
第1引脚为:VSS为电源地 第2脚:VDD接5V电源正极
第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。
第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。 第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。 第6脚:E(或EN)端为使能(enable)端。 第7~14脚:D0~D7为8位双向数据端。
第15~16脚:空脚或背光电源脚。15脚背光正极,16脚背光负极。 LCD1602的基本操作时序为:
读状态:RS=L,RW=H,E=H 输出:D0~D7=状态字 写指令:RS=L,RW= L,D0~D7=指令码,E=高脉冲 输出:无
读数据:RS= H,RW=H,E=H 输出:D0~D7=数据
指令码
功能
设置1602*2显示,5*7点阵,8位数据口。
0 0 1 1 1 0 0 0
写数据:RS= H,RW= L,D0~D7=数据,E=高脉冲 输出:无
LCD1602的显示模式设置如表3.1所示:
表3.1显示模式设置
LCD1602的显示开关机光标设置如表3.2所示:
表3.2 开关机光标设置
D=1 开显示,D=0 关显示;
0
0
0
0
1
D
C
B
C=1 显示光标,C=0 不显示光标; B=1 光标闪烁,B=0 光标不显示。 N=1 当读或写一个字符后地址指针加一,且光标加一;N=0当读或
0
0
0
0
0
1
N
S
写一个字符后地址指针减一,且光标减一;S=1 当写一个字符,整屏显示左移(N=1)。
3.3.2 LCD1602显示的外围电路
LCD1602显示电路由单片机C52的P2.5、P2.6、P2.7分别于LCD的第4、5、6脚(RS、RW、E)相连,将单片机C52的P0.0~ P0.7口通过10K的上拉电阻分别与LCD的第7~14脚(D0~D7)相连来组成数字密码锁的显示电路。LCD1602显示电路如图4.2所示。
图3.6 LCD1602显示电路
3.4 报警提示电路
LED指示灯用来提示模拟锁的开闭,此次设计采用了红、绿两个LED指示灯,红灯表示输入密码正确告警(及数字密码锁开锁),绿灯表示输入密码错误,锁未打开。
报警提示电路如图3.7所示,P3.0、P3.1作普通IO口使用,P3.0控制绿色发光二极管,指示密码输入正确状态;P3.1控制红色发光二极管,指示密码输入错误状态。而在实际应用中应该接密码锁的机械部分,这些引脚将会接继电器线圈,只要在线圈两端加上一定的电压,线圈中就会流过一定的电流,从而产生电磁效应,衔铁就会在电磁力吸引的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点(常开触点)吸合用来启动密码锁的开或关的状态,此次设计用红绿指示灯来代替了机械部分,设计简化了。
其电路图如图3.7所示。
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库[精品]基于单片机的数字密码锁设计毕业论文设计(2)在线全文阅读。
相关推荐: