六位数电子号码锁的设计.doc
贵 州 大 学
设计
目:六位数电子号码锁的设计
系 别:_________________________
班 级:_________________________
学 号:_________________________
姓 名:__________________________
指 导 教 师:_________________________
2011年7月8 日
单片机技术课程设计任务
系 专业 班 姓名 学号
课程设计时间: 2011 年 7 月 4 日 至 2011 年 7 月 15 日
课程设计题目:六位数电子号码锁的设计
课程设计任务与要求
一、设计目的
《单片微机技术》是一门实践性很强的课程,通过本次课程设计使学生在掌握基础知识的同时,熟悉单片机系统的设计方法。
二、设计任务
利用MCS-51单片机及相应元器件设计一台六位数电子号码锁。
三、设计要求
1、六位数电子号码锁应具有以下功能:
(1)、 (1)、电源打开后,显示器显示“000000”,内定密码“221582”由存储器中读取,只要输入此密码便可开门。以便停电后再送电时密码不丢失。
(2)、按“#”,清除显示器为“000000”。
(3)、欲更改密码时,先输入新密码再按“*”,即可建立新密码。键盘采用4×4键盘。
(4)、输入新密码,再按“D”开门建。若号码与密码相符,则门会打开。否则显示器会清除为“000000”。
(5)、要显示密码,按住“C”即可显示密码,放开则显示“000000”。
2、根据设计要求及参数在规定时间内完成设计任务。要求设计
以及电路原理图必须用Word和相关的制图软件完成。
课程设计进度
安排
2011年7月4日~5日:查阅文资料,确定设计
2011年7月6日~8日:硬件原理图设计
2011年7月11日~13日:软件编程及调试
2009年1月14日~15日:编写设计说明书,绘制设计电路原理图 指导教师(签名): 日期: 年 月 日
目 录
摘要 ......................................................................................................... 1 引言 ......................................................................................................... 1 一、系统概述 ......................................................................................... 2 二. 电子密码锁硬件电路设计 .............................................................. 2
1.实验所需元器件:.................................... 2
2.原理框图 ........................................... 3
3. 8051单片机介绍 ................................... 4
4.主控部分硬件设计.................................... 8
5.键盘部分硬件设计.................................... 9
6.显示部分硬件设计................................... 10
7.电子锁部分硬件设计 ................................. 11
三. 电子密码锁软件设计.................................................................... 12
四.单元电路调试 ................................................................................. 13 五.心得体会 ......................................................................................... 13 六.参考文献 ......................................................................................... 14 附录 ....................................................................................................... 15
源程序: ............................................ 15
系统整体硬件电路图................................... 19
摘要
随着电子技术的发展,具有防盗报警、语音提示等功能的电子密码锁代替安全性差的机械式密码锁已必然趋势。目前大部分密码锁采用单片机进行设计,其主要特点是:1.电路较简单,小巧灵活,成本低,易于产品化。2.面向控制,能针对性地解决从简单到复杂的各类控制任务,因而有较高的性价比。3.抗干扰能力强,适应温度范围宽,在各种恶劣的环境条件下都能可靠的工作,这是其他机种无法比拟的。4.可以方便的实现多机和分布控制,使整个系统的效率和可靠性大为提高。
本设计以8051单片机为核心器件,结合按键电路、LED数码管显示电路和开锁机构,利用单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性通过软件程序来控制整个系统实现电子密码锁的基本功能。系统能实现密码的输入、清除、显示,密码正确开锁,系统设定初始密码和用户修改密码功能。系统功能实用,成本较低,具有一定的实用价值。
引言
随着人们对安全的重视和科技的发展,对日常生活中的安全保险器件的要求越来越高。为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。电子密码锁保密性高,使用灵活性好,安全系数高,密码锁设计方法合理,简单易行,成本低,符合住
1
宅、办公室用锁要求,具有推广价值。电子密码锁采取电子电路控制,通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务。这种应用以单片机芯片为核心,通过编程来实现整体基本功能和安全性要求。
一、系统概述
电子密码锁主要由显示电路、单片机控制电路、键盘电路等三部分组成。用户通过键盘输入密码,确认后系统调用密码比较判断函数,如果密码输入正确,再按“D”键单片机输出开门信号开锁,否则显示器会清除为“000000”。用户发现输入错误时,可以清除重输,按“#”,清除显示器为“000000”。初始密码由系统设定,设定为221582,用户可根据自己的要求设定密码,修改密码时先输入新密码再按“*”,即可建立新密码。要显示密码,按住“C”即可显示密码,放开则显示“000000”。
二. 电子密码锁硬件电路设计
1.实验所需元器件:
?8051芯片 1块
?74LS138芯片 1块
?7447芯片 1块
2
?R2003芯片 1块
?6位一体数码 1个
?按键开关 16个 ?400Ω电阻 1个
?4.7KΩ电阻 1个 ?电磁锁 1个 ?导线 若干
2.原理框图
显示电路
8051矩阵键盘控制单片机
开锁电路
图2.1 电子密码锁原理图
3
3. 8051单片机介绍
图2.2 8051引脚图
下面按其引脚功能分为四部分叙述这40条引脚的功能。 (1)、主电源引脚VCC和VSS
VCC——(40脚)接+5V电压;
VSS——(20脚)接地。
(2)、外接晶体引脚XTAL1和XTAL2
XTAL1(19脚)接外部晶体的一个引脚。在单片机内部,它是一个反相放大器的输入端,这个放大器构成了片内振荡器。当采用外部振荡器时,对HMOS单片机,此引脚应接地;对CHMOS单片机,此引脚作为驱动端。
XTAL2(18脚)接外晶体的另一端。在单片机内部,接至上述振荡器的反相放大器的输出端。采用外部振荡器时,对HMOS单片机,该引脚接外部振荡器的信号,即把外部振荡器的信号直接接到内部时
4
钟发生器的输入端;对XHMOS,此引脚应悬浮。
(3)、控制或与其它电源复用引脚RST/VPD、ALE/PROG、PSEN和EA/VPP
?RST/VPD(9脚)当振荡器运行时,在此脚上出现两个机器周期的高电平将使单片机复位。推荐在此引脚与VSS引脚之间连接一个约8.2k的下拉电阻,与VCC引脚之间连接一个约10μF的电容,以保证可靠地复位。
VCC掉电期间,此引脚可接上备用电源,以保证内部RAM的数据不丢失。当VCC主电源下掉到低于规定的电平,而VPD在其规定的电压范围(5?0.5V)内,VPD就向内部RAM提供备用电源。
?ALE/PROG(30脚):当访问外部存贮器时,ALE(允许地址锁存)的输出用于锁存地址的低位字节。即使不访问外部存储器,ALE端仍以不变的频率周期性地出现正脉冲信号,此频率为振荡器频率的1/6。因此,它可用作对外输出的时钟,或用于定时目的。然而要注意的是,每当访问外部数据存储器时,将跳过一个ALE脉冲。ALE端可以驱动(吸收或输出电流)8个LS型的TTL输入电路。
对于EPROM单片机(如8751),在EPROM编程期间,此引脚用于输入编程脉冲(PROG)。
?PSEN(29脚):此脚的输出是外部程序存储器的读选通信号。在从外部程序存储器取指令(或常数)期间,每个机器周期两次PSEN有效。但在此期间,每当访问外部数据存储器时,这两次有效的PSEN信号将不出现。PSEN同样可以驱动(吸收或输出)8个LS型的TTL输入。
5
?EA/VPP(引脚):当EA端保持高电平时,访问内部程序存储器,但在PC(程序计数器)值超过0FFFH(对851/8751/80C51)或1FFFH(对8052)时,将自动转向执行外部程序存储器内的程序。当EA保持低电平时,则只访问外部程序存储器,不管是否有内部程序存储器。对于常用的8031来说,无内部程序存储器,所以EA脚必须常接地,这样才能只选择外部程序存储器。
对于EPROM型的单片机(如8751),在EPROM编程期间,此引脚也用于施加21V的编程电源(VPP)。
(4)、输入/输出(I/O)引脚P0、P1、P2、P3(共32根)
?P0口(39脚至32脚):是双向8位三态I/O口,在外接存储器时,与地址总线的低8位及数据总线复用,能以吸收电流的方式驱动8个LS型的TTL负载。
?P1口(1脚至8脚):是准双向8位I/O口。由于这种接口输出没有高阻状态,输入也不能锁存,故不是真正的双向I/O口。P1口能驱动(吸收或输出电流)4个LS型的TTL负载。对8052、8032,P1.0引脚的第二功能为T2定时/计数器的外部输入,P1.1引脚的第二功能为T2EX捕捉、重装触发,即T2的外部控制端。对EPROM编程和程序验证时,它接收低8位地址。
?P2口(21脚至28脚):是准双向8位I/O口。在访问外部存储器时,它可以作为扩展电路高8位地址总线送出高8位地址。在对EPROM编程和程序验证期间,它接收高8位地址。P2可以驱动(吸收或输出电流)4个LS型的TTL负载。
6
?P3口(10脚至17脚):是准双向8位I/O口,在MCS-51中,这8个引脚还用于专门功能,是复用双功能口。P3能驱动(吸收或输出电流)4个LS型的TTL负载。
作为第一功能使用时,就作为普通I/O口用,功能和操作方法与P1口相同。
作为第二功能使用时,各引脚的定义如表1所示。值得强调的是,P3口的每一条引脚均可独立定义为第一功能的输入输出或第二功能。
表1 P3各口线的第二功能定义
口线 引脚 第二功能
P3.0 10 RXD(串行输入口)
P3.1 11 TXD(串行输出口)
P3.2 12 INT0(外部中断0)
P3.3 13 INT1(外部中断1)
P3.4 14 T0(定时器0外部输入)
P3.5 15 T1(定时器1外部输入)
P3.6 16 WR(外部数据存储器写脉冲)
P3.7 17 RD(外部数据存储器读脉冲)
7
4.主控部分硬件设计
C1U1
1939XTAL1P0.0/AD038P0.1/AD13720pP0.2/AD21836X1XTAL2P0.3/AD33512MHZP0.4/AD4C234P0.5/AD533P0.6/AD6932RSTP0.7/AD7C320p
21P2.0/A822P2.1/A9VCC2310uP2.2/A102924PSENP2.3/A11VCC3025ALEP2.4/A123126EAP2.5/A1327P2.6/A1428P2.7/A15
110P1.0P3.0/RXD211P1.1P3.1/TXD312P1.2P3.2/INT0413P1.3P3.3/INT1514P1.4P3.4/T0615P1.5P3.5/T1716P1.6P3.6/WR817P1.7P3.7/RD
80C51
VCC:40PINGND:20PIN
图4.1 8051单片机主控部分硬件电路图
如图4.1所示,为8051单片机主控部分电路。单片机为整个系统的核心,要保证系统的稳定和出错后的恢复,一定要考虑设置复位电路和合理的振荡电路。由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊的要求,最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。在振荡电路中采用12M石英晶体和20PF电容做振荡电路。
8
单片机作为主控芯片,其主要作用是控制各个外围电路的协调工作,其主要功能是通过软件实现的,该部分内容在软件设计中详细讲解。
5.键盘部分硬件设计
P1.7P1.6P1.5P1.4
A123
P1.3
B456
P1.2
C789
P1.1
D#0
P1.0
图5.1 键盘部分硬件电路图
键盘的硬件设计采用4×4的矩阵式键盘,如图5.1所示。图5.1中P1.3,P1.0作为行线,P1.4,P1.7作为列线,按键0,F的两端分别跨在行线和列线上,行线定义为输出,列线定义为输入。没有键按下是,P1.7,P1.4输入高电平。当按键闭合时,行线和列线被短接,P1.7,P1.4输入的电平取决于行线平P1.3,P1.0输出的电平
A 1 2 3
B 4 5 6
C 7 8 9
D # * 0
整体键盘设计及编码设计如图5.2和图5.3所示
9
图5.2 键盘设计图
0C 01 02 03
0D 04 05 06
0E 07 08 09
0F 0B 0A 00
图5.3 键盘编码设计图
6.显示部分硬件设计
D6D4D3D2D1D5
U1U4VCC:16GND:8ABCDEFKMNPRSTUDP123456400*71939713XTAL1P0.0/AD0AQA38112P0.1/AD1BQB37211P0.2/AD2CQC1836610XTAL2P0.3/AD3DQD3549P0.4/AD4BI/RBOQE34515P0.5/AD5RBIQF33314P0.6/AD6LTQG932RSTP0.7/AD7Q1Q2Q3Q4Q5Q6744721P2.0/A8U3224.7K*6P2.1/A9VCC23115P2.2/A10AY02924214PSENP2.3/A11BY13025313ALEP2.4/A12CY2312612EAP2.5/A13Y3272N29052N29052N29052N29052N29052N290511P2.6/A14Y428610P2.7/A15E1Y5VCC49E2Y611057P1.0P3.0/RXDE3Y7211P1.1P3.1/TXDY5Y4Y3Y2Y1Y031274LS138P1.2P3.2/INT0VCC:16GND:8413P1.3P3.3/INT1514P1.4P3.4/T0615P1.5P3.5/T1716P1.6P3.6/WR817P1.7P3.7/RD80C51VCC:40PINGND:20PIN
图6.1 显示部分硬件电路图
显示部分硬件电路如图6.1所示,采用6位集成LED数码管,属于共阳型。由于每个显示字段显示通常需要十到几十毫安的驱动电路,故而采用了驱动电路。8051单片机通过芯片74LS138实现对数码管的选中;通过芯片7447实现对字段的显示的控制。由图 可看出本设计将采用动态显示方式。各个数码管的公共端作为显示位的位选线,由74LS138控制。虽然采用动态显示方式其亮度不如静态显示
10
方式,也比较占用CPU时间,但是动态显示方式比较节省I/O口,硬件电路也简单的多,成本低,故而本设计采用动态显示方式。 7.电子锁部分硬件设计
GND:8
D41N914
Q10MMBT918
图7.1 电子锁部分硬件电路图
电子锁电路中最重要的部分就是开锁机构电路,通过单片机送给开锁执行机构电路,电路驱动电磁锁吸合,从而达到开锁的目的。其原理如图7.2所示。
图7.2 电子锁原理图
当用户输入的密码正确按下键盘中的D键时,单片机便输出开门信号,送到开锁驱动电路,驱动电磁锁,达到开门的目的。其实际电路如图7.1所示。单片机通过六反向器7404及芯片R2003,实现对电子锁的控制。
11
三. 电子密码锁软件设计
开始
初始化
扫描键盘
N
有键按下
Y
Y 显示子程序 按C,
N
N Y 按#, 按D,
Y N
Y 密码比较 设定新密码 按*,
N
N 载入键值 正确,
Y
开锁 保存键值
图8 系统软件流程图
系统软件流程图如图8所示,在整个软件设计流程中,键盘扫描及识别,密码校验和显示部分程序比较重要。键盘扫描电路中,扫描键盘时采用逐列扫描的方式,依次对1、2、3、4列按键循环扫描(P1
12
口低四位连接键盘的行线,高四位连接键盘的列线)。扫描时先对单片机P1口赋07FH(P1.3=0),如果按键被按下则与被按下那个按键相连接的单片机端口的电平将被拉到低电平,通过判断P1口的值就可以判断出是哪个按键被按下。键盘识别是通过比较键盘扫描时对不同按键赋不同的值来执行相应的操作的。
密码校验的设立主要是从安全性的角度考虑的,密码存储后,只要在密码判定过程中找到存储密码的相应地址并读出改地址对应的内容,再加以比较就可以开锁了。
显示部分则采用动态扫描法实现六位数码管的数值显示。通过地址指针载入需要显示的值,加上74LS138DE 扫描值,输出给P0口,进行显示。
四.单元电路调试
按照电原理图连接好硬件电路,接通电源后看通过按键是否显示该有的内容,以及各个按键的功能是否得到实现。测试内容:如果密码输入正确,再按“D”键是否能够开锁,若不正确,显示器是否会清除为“000000”。,按“#”,显示器是否清除为“000000”。初始密码是否设定为221582;输入新密码后按 “*”,是否可建立新密码。四方可实现按住“C”显示密码,放开则显示“000000”。 五.心得体会
这的六位数电子号码锁的设计设计让对我们对单片机的有了更
13
深刻的了解。由于我们的水平有限,手头资料也不是很多,课程设计还并不十分完善,文中难免有不妥和疏漏之处,恳请老师批评指正。 六.参考文献
[1]单片机原理及应用.北京:中国林业出版社,刘刚,秦永左. 2006.9 [2]单片机控制实习与专题制作.北京:北京航空航天大学出版社,蔡朝洋.2006.11
[3] 51系列单片机设计实例.北京:北京航空航天大学出版社,楼然苗.2006.2 [4] 单片机原理及应用 机械工业出版
[5]单片机应用技术:系西安电子科技大学出版社,刘守义,2007.
14
附录
源程序:
ORG 00H
MOV R7,#00H ;延时
DJNZ R7,$
MOV R7,#10H ;内定密码在TABLE的起始地址
MOV R6,#06 ;内定6个密码
MOV R1, #35H ;6个密码分别存入30H~35H L1: MOV A, R7 ;内定密码取码指针
MOV DPTR, #TABLE ;数据指针指到TABLE
MOV A, @A+DPTR ;至TABLE取码
MOV @R1, A ;存入35H~30H地址
DEC R1 ;存下一个地址
INC R7 ;取码指针加1
DJNZ R6, L1
START: ORL P2,#0FFH ;清除P2
MOV R4, #06 ;清除显示器存放地址40H~45H的地址
MOV R0, #40H
CLEAR: MOV @R0,#00H
INC R0
DJNZ R4,CLEAR
L2: MOV R3, #0F7H ;扫描指针初值(P1.3=0)
MOV R1, #00H ;键盘取码指针 L3: MOV A, R3 ;扫描指针载入累加器
MOV P1, A ;输出至P1扫描
MOV A, P1 ;读入P1值
MOV R4, A ;存入R4,以判断按钮是否放开,
SETB C ;C=1
MOV R5,#04H ;扫描P1.4~P1.7 L4: RLC A
JNC KEYIN ;有键按下则C=0
INC R1 ;无键按下则指针加1
DJNZ R5, L4
CALL DISP ;调用显示子程序
MOV A, R3 ;载入扫描指针
15
SETB C ;C=1
RRC A ;扫描下一行
MOV R3, A ;存入扫描指针寄存器
JC L3
JMP L2
KEYIN; MOV A, R1 ;是否按“C”
XRL A, #0BH
JZ X3 ;是则显示密码
MOV A, R1 ;是否按“D”
XRL A, #0FH
JZ X4 ;是则比较密码,正确则开门
MOV R7,#10 ;消除抖动
D1: MOV R6,#248
DJNZ R6,$
DJNZ R7,D1
D2: MOV A,P1
XRL A,R4 ;按钮放开否?
JZ D2
MOV A,R1 ;载入按键指针
MOV DPTR, #TABLE ;数据指针指到TABLE
MOVC A, @A+DPTR ;至TABLE取码
MOV R7,A ;取到按键值暂存入R7
XRL A, #0AH ;是否按“*”
JZ SET0 ;是则设定新密码
MOV A, R7 ;载入按键值
XRL A, #0BH ;是否按“#”
JZ START ;是则清除
MOV A, R7
XRL A, #OCH ;“A”未设定键
JZ L2
MOV A, R7
XRL A, #0DH ;“B”未设定键
JZ L2
MOV A, R7 ;不是则载入按键值
XCH A, 40H ;现按键值存入(40H)
XCH A, 41H ;旧(40H)值存入(41H)
XCH A, 42H ;旧(41H)值存入(42H)
XCH A, 43H ;旧(42H)值存入(43H)
16
XCH A, 44H ;旧(43H)值存入(44H)
XCH A, 45H ;旧(44H)值存入(45H)
CALL DISP ;调用显示子程序
JMP L2
X3: JMP DISP2
X4: JMP COMP
DISP: MOV R0,#45H ;显示指针地址45H DISP1: MOV A, @R0 ;载入D6显示值
ADD A, #50H ;加上D6 74138的扫描值
MOV P0, A ;输出至P0显示D6
CALL DELAY ;扫描延时
DEC R0 ;载入D5显示值
MOV A, @R0
ADD A, #40H ;加上D5 74138的扫描值
MOV P0, A ;输出至P0显示D5
CALL DELAY ;扫描延时
DEC R0 ;载入D4显示值
MOV A, @R0
ADD A, #30H ;加上D4 74138的扫描值
MOV P0, A ;输出至P0显示D4
CALL DELAY ;扫描延时
DEC R0 ;载入D3显示值
MOV A, @R0
ADD A, #20H ;加上D3 74138的扫描值
MOV P0, A ;输出至P0显示D3
CALL DELAY ;扫描延时
DEC R0 ;载入D2显示值
MOV A, @R0
ADD A, #10H ;加上D2 74138的扫描值
MOV P0, A ;输出至P0显示D2
CALL DELAY ;扫描延时
DEC R0 ;载入D1显示值
MOV A, @R0
ADD A, #00H ;加上D1 74138的扫描值
MOV P0, A ;输出至P0显示D1
CALL DELAY ;扫描延时
RET
SET0: MOV R2, #06H ;6个密码
17
MOV R0, #40H ;按键显示地址
MOV R1, #30H ;密码存放地址 E1: MOV A, @R0 ;40H存入30H……45H存入35H
XCH A, @R1
INC R0
INC R1
DJNZ R2, E1
CALL DELAY ;延时 E2: JMP START
COMP: MOV R1,#45H ;按键显示地址
MOV R0,#35H ;密码存放地址
MOV R2,#06H ;6个码 C1: MOV A, @R1 ;按键值与密码值比较
XRL A, @R0
JNZ C3 ;不同则清除
DEC R1 ;相同则比较下一个码
DEC R0
DJNZ R2,C1
CLR P2.0 ;令电锁动作
MOV R2, #200 ;延时0.1秒 C2: MOV R6, #248
DJNZ R6,$
DJNZ R2,C2
C3: JMP START
DISP2: ;欲显示密码值
MOV R0,#35H ;密码存放地址
CALL DISP1 ;调用显示子程序
MOV A, P1 ;“C”放开否,没有则继续显示
XRL A, R4
JZ DISP2
CALL DELAY ;是则清除
JMP START DEALY: MOV R7, #03 ;显示扫描的时间 D3: MOV R6, #248
DJNZ R6, $
DJNZ R7, D3
RET
ORG 300H
18
TABLE: DB 0CH, 01H, 02H, 03H ;键盘值
DB 0DH, 04H, 05H, 06H
DB 0EH, 07H, 08H, 09H
DB 0FH, 0BH, 0AH, 00H
DB 02H, 02H, 01H, 05H, 08H, 02H ;内定密码值
END
系统整体硬件电路图
19
20