基于单片机的电子密码锁课程设计

  • 格式:doc
  • 大小:2.00 MB
  • 文档页数:27

湖南人文科技学院课程设计报告课程名称:单片机原理及应用课程设计设计题目:电子密码锁系别:通信与控制工程系专业:10级自动化班级:自动化一班学生姓名: 彭俊杰焦达富学号: 10421101 10421106起止日期:2012年12月24日~2013年1月6日指导教师:谭周文岳舟教研室主任:岳舟摘要电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。

本设计围绕电子密码锁系统的设计与开发进行研究和实践,详细介绍了电子密码锁系统的整体结构。

基于在系统可编程技术和STC89C52编译器配有集成开发的新型电子密码锁的设计方案,阐述其工作原理和软硬件设计,由单片机系统、矩阵键盘、LED显示和报警系统组成的系统能完成开锁、修改用户密码、报警基本的密码锁的功能。

关键词:STC89C52芯片; 8255芯片;数码管;keil软件目录设计要求 (1)1 方案论证与对比 (1)1.1方案一 (1)1.2方案二 (2)1.3 方案对比与选择 (3)2 硬件电路设计 (3)2.1 键盘电路设计 (3)2.2 LED显示电路 (4)2.3 STC89C52芯片接口电路设计 (4)2.4 8255A芯片接口电路设计 (7)2.5 AT24C08断电存储单元的设计 (9)3 系统软件设计 (10)3.1主程序设计 (10)3.2 键盘程序设计 (11)3.3 调电存储服务程序 (11)4 系统功能测试 (12)5 详细仪器清单 (14)6 总结与致谢 (15)参考文献 (16)附录一:8255A与LED的连接PCB板图 (17)附录二:8255A与键盘的连接PCB板图 (18)附录三:程序源代码 (19)基于89C52的电子密码锁设计要求1、密码的设定,此密码是固定在程序存储器ROM中,假设预设的密码为“12345”共5位密码。

2、密码的输入:采用两个按键来完成密码的输入,其中一个按键为功能键,另一个按键为数字键。

在输入过程中,首先输入密码的长度,接着根据密码的长度输入密码的位数,直到所有长度的密码都已经输入完毕;或者输入确认功能键之后,才能完成密码的输入过程。

进入密码的判断比较处理状态并给出相应的处理过程。

1 方案论证与对比1.1方案一系统采用一种以STC89C52为核心的单片机控制方案。

利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性,不但能实现基本的密码锁功能,还能添加声光提示等功能。

其原理框图如图1所示。

图1 单片机控制原理图1.2方案二系统采用数字电路控制。

其原理框图如图2所示。

图2 数字电路控制原理方框图采用数字密码锁电路的好处就是设计简单。

用以74LS112双JK触发器构成的数字逻辑电路作为密码锁的核心控制,共设了9个用户输入键,其中只有4个是有效的密码按键,其它的都是干扰按键,若按下干扰键,键盘输入电路自动清零,原先输入的密码无效,需要重新输入;如果用户输入密码的时间超过40秒(一般情况下,用户不会超过40秒,若用户觉得不便,还可以修改)电路将报警80秒,若电路连续报警三次,电路将锁定键盘5分钟,防止他人的非法操作。

电路由两大部分组成:密码锁电路和备用电源(UPS),其中设置UPS电源是为了防止因为停电造成的密码锁电路失效,使用户免遭麻烦。

密码锁电路包含:键盘输入、密码修改、密码检测、开锁电路、执行电路、报警电路、键盘输入次数锁定电路。

1.3方案对比与选择通过比较以上两种方案,显然单片机方案二有较大的活动空间,不但能实现所要求的功能和在很大的程度上扩展功能,而且还可以方便的对系统进行升级,所以综合考虑,我们选择第二种方案。

本方案采用一种是用以89C52为核心的单片机控制方案。

利用单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,实现基本的密码锁功能。

设计思路如下:(1)输入密码用矩形键盘,包括数字键和功能键;(2)LED数码管显示输入密码,用8255A驱动数码管发光显示数码;(3)用发光二极管代替开锁的电路,发光表示开锁;(4)打开电源后,显示器显示“1”,表示密码位数。

按下功能键可选择密码位数,确认密码位数后,再按数字键打出密码;(5)密码设置为“12345”,密码正确后,发光二极管发光。

若密码错误,则会显示“Error”。

2 硬件电路设计2.1 键盘电路设计使用矩阵键盘,所以本设计就采用行列式键盘,同时也能减少键盘与单片机接口时所占用的I/O线的数目,每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N条行线和M条列线,即可组成具有N×M个按键的键盘。

本设计使用4×4矩阵键盘,如图3所示。

图3 键盘设计电路图2.2 LED显示电路本系统设计的显示电路是为了给使用者以提示而设置的。

本系统的显示采用串行显示的方式,用8051单片机经8255A扩展6位八段码LED显示器,用8255A 的B口作为段码(字形代码)数据口,PA作为位控制端口。

逻辑电路结构如图4所示。

图4 LED显示设计电路图2.3 STC89C52芯片接口电路设计STC89C52是MCS-51系列单片机的典型产品,以这一代表性的机型进行系统的讲解。

C52单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,其内部结构如图5所示,现在分别加以说明。

图5 STC89C52芯片内部结构图(1) 中央处理器中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。

(2) 数据存储器(RAM)STC89C52内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM有256个,可存放读写的数据,运算的中间结果或用户定义的字型表。

(3) 程序存储器(ROM):STC89C52共有4096个8位掩膜ROM,用于存放用户程序、数据或表格。

(4) 定时/计数器:8051有三个16位的可编程定时/计数器,以实现定时或计数产生中断,用于控制程序转向。

(5) 并行输入输出(I/O)口:STC89C52共有4组8位I/O口(P0、P1、P2和P3),用于对外部数据的传输。

(6) 全双工串行口:STC89C52内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。

(7) 中断系统:STC89C52具备较完善的中断功能,有两个外中断、三个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。

(8) 时钟电路:STC89C52内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但STC89C52单片机需外置振荡电容。

单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(Harvard)结构,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即普林斯顿(Princeton)结构。

INTEL的MCS-51系列单片机采用的是哈佛结构的形式,而后续产品16位的MCS-96系列单片机则采用普林斯顿结构。

图5是MCS-51系列单片机的内部结构示意图。

图5(9) STC89C52的引脚说明MCS-51系列单片机中的8031、8051及8751均采用40Pin封装的双列直插DIP结构,下图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。

引脚图如图6所示。

图6 STC89C52的引脚图2.4 8255A芯片接口电路设计8255A是40引脚双列直插式芯片,片内有A, B, C 3个8位I/O端口,可提供24条可编程输入/输出端口线。

内部结构及引脚信号如图7所示。

图7 8255A引脚信号图(1) 内部结构8255A的内部结构由三部分电路组成:与CPU的接口电路、内部控制逻辑电路和与外设连接的输入/输出接口电路。

①与CPU的接口电路与CPU的接口电路由数据总线缓冲器和读/写控制逻辑组成。

数据总线缓冲器是一个三态、双向、8位寄存器,8条数据线D7~D0与系统数据总线连接,构成CPU与8255A之间信息传送的通道,CPU通过执行输出指令向8255A写入控制命令或往外设传送数据,通过执行输入指令读取外设输入的数据。

②内部控制逻辑电路内部控制逻辑包括A组控制与B组控制两部分。

A组控制寄存器用来控制A口PA7~PA0和C口的高4位PC7~PC4;B组控制寄存器用来控制B口PB7~PB0和C口的低4位PC3~PC0。

它们接收CPU发送来的控制命令,对A, B, C 3个端口的输入/输出方式进行控制。

③输入/输出接口电路8255A片内有A, B, C 3个8位并行端口,A口和B口分别有1个8位的数据输出锁存/缓冲器和1个8位数据输入锁存器,C口有1个8位数据输出锁存/缓冲器和1个8位数据输入缓冲器,用于存放CPU与外部设备交换的数据。

(2) 引脚信号RESET:复位输入线,当该输入端处于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。

CS:芯片选择信号线,当这个输入引脚为低电平时,即/CS=0时,表示芯片被选中,允许8255与CPU进行通讯;/CS=1时,8255无法与CPU做数据传输.RD:读信号线,当这个输入引脚为低电平时,即/RD=0且/CS=0时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。

WR:写入信号,当这个输入引脚为低电平时,即/WR=0且/CS=0时,允许CPU将数据或控制字写入8255。

D0~D7:三态双向数据总线,8255与CPU数据传送的通道,当CPU执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。

PA0~PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入锁存器。

PB0~PB7:端口B输入输出线,一个8位的I/O锁存器,一个8位的输入输出缓冲器。

PC0~PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器。

端口C可以通过工作方式设定而分成2个4位的端口,每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。

A0,A1:地址选择线,用来选择8255的PA口,PB口,PC口和控制寄存器.当A0=0,A1=0时,PA口被选择;当A0=0,A1=1时,PB口被选择;当A0=1,A1=0时,PC口被选择;当A0=1.A1=1时,控制寄存器被选;2.5 AT24C08断电存储单元的设计断电存储单元的作用是在电源断开的时候,存储当前设定的信息。