基于单片机的电子密码锁课程设计_第1页
基于单片机的电子密码锁课程设计_第2页
基于单片机的电子密码锁课程设计_第3页
基于单片机的电子密码锁课程设计_第4页
基于单片机的电子密码锁课程设计_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、湖南人文科技学院课程设计报告课程名称:单片机原理及应用课程设计设计题目: 电子密码锁 系 别: 通信与控制工程系 专 业: 10级自动化 班 级: 自动化一班 学生姓名: 彭俊杰 焦达富 学 号: 10421101 10421106 起止日期: 2012年12月24日2013年1月6日 指导教师: 谭周文 岳舟 教研室主任: 岳舟 1指导教师评语: 指导教师签名: 年 月 日成绩评定项 目权重成绩彭俊杰焦达富1、设计过程中出勤、学习态度等方面0.22、课程设计质量与答辩0.53、设计报告书写及图纸规范程度0.3总 成 绩 教研室审核意见:教研室主任签字: 年 月 日教学系审核意见: 主任签字:

2、 年 月 日 摘 要电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。本设计围绕电子密码锁系统的设计与开发进行研究和实践,详细介绍了电子密码锁系统的整体结构。基于在系统可编程技术和STC89C52编译器配有集成开发的新型电子密码锁的设计方案,阐述其工作原理和软硬件设计,由单片机系统、矩阵键盘、LED显示和报警系统组成的系统能完成开锁、修改用户密码、报警基本的密码锁的功能。关键词:STC89C52芯片; 8255芯片;数码管;keil软件 目 录设计要求11 方案论证与对比11.1方案一11.2方案二21.3 方案对比与选择32 硬件电路设

3、计32.1 键盘电路设计32.2 LED显示电路42.3 STC89C52芯片接口电路设计42.4 8255A芯片接口电路设计72.5 AT24C08断电存储单元的设计93 系统软件设计103.1主程序设计103.2 键盘程序设计113.3 调电存储服务程序114 系统功能测试125 详细仪器清单146 总结与致谢15参考文献16附录一:8255A与LED的连接PCB板图17附录二:8255A与键盘的连接PCB板图18附录三:程序源代码19基于89C52的电子密码锁设计要求1、密码的设定,此密码是固定在程序存储器ROM中,假设预设的密码为“12345”共5位密码。2、密码的输入: 采用两个按键

4、来完成密码的输入,其中一个按键为功能键,另一个按键为数字键。在输入过程中,首先输入密码的长度,接着根据密码的长度输入密码的位数,直到所有长度的密码都已经输入完毕;或者输入确认功能键之后,才能完成密码的输入过程。进入密码的判断比较处理状态并给出相应的处理过程。1 方案论证与对比1.1方案一系统采用一种以STC89C52为核心的单片机控制方案。利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性,不但能实现基本的密码锁功能,还能添加声光提示等功能。其原理框图如图1所示。STC89C52 单片机8255A 芯片LED键盘指示灯24C08 图1 单片机控制原理图1.2方案二系统采用数字电路控制。

5、其原理框图如图2所示。 图2 数字电路控制原理方框图采用数字密码锁电路的好处就是设计简单。用以74LS112双JK触发器构成的数字逻辑电路作为密码锁的核心控制,共设了9个用户输入键,其中只有4个是有效的密码按键,其它的都是干扰按键,若按下干扰键,键盘输入电路自动清零,原先输入的密码无效,需要重新输入;如果用户输入密码的时间超过40秒(一般情况下,用户不会超过40秒,若用户觉得不便,还可以修改)电路将报警80秒,若电路连续报警三次,电路将锁定键盘5分钟,防止他人的非法操作。电路由两大部分组成:密码锁电路和备用电源(UPS),其中设置UPS电源是为了防止因为停电造成的密码锁电路失效,使用户免遭麻烦

6、。密码锁电路包含:键盘输入、密码修改、密码检测、开锁电路、执行电路、报警电路、键盘输入次数锁定电路。 1.3方案对比与选择通过比较以上两种方案,显然单片机方案二有较大的活动空间,不但能实现所要求的功能和在很大的程度上扩展功能,而且还可以方便的对系统进行升级,所以综合考虑,我们选择第二种方案。本方案采用一种是用以89C52为核心的单片机控制方案。利用单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,实现基本的密码锁功能。设计思路如下:(1)输入密码用矩形键盘,包括数字键和功能键;(2)LED数码管显示输入密码,用8255A驱动数码管发光显示数码;(3)用发光二极管代替开锁的电路,发光表示

7、开锁;(4)打开电源后,显示器显示“1”,表示密码位数。按下功能键可选择密码位数,确认密码位数后,再按数字键打出密码; (5)密码设置为“12345”,密码正确后,发光二极管发光。若密码错误,则会显示“Error”。2 硬件电路设计2.1 键盘电路设计使用矩阵键盘,所以本设计就采用行列式键盘,同时也能减少键盘与单片机接口时所占用的I/O线的数目,每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N条行线和M条列线,即可组成具有N×M个按键的键盘。本设计使用4×4矩阵键盘,如图3所示。 图3 键盘设计电路图2.2 LED显示

8、电路本系统设计的显示电路是为了给使用者以提示而设置的。本系统的显示采用串行显示的方式,用8051单片机经8255A扩展6位八段码LED显示器,用8255A的B口作为段码(字形代码)数据口,PA作为位控制端口。逻辑电路结构如图4所示。图4 LED显示设计电路图 2.3 STC89C52芯片接口电路设计 STC89C52是MCS-51系列单片机的典型产品,以这一代表性的机型进行系统的讲解。C52单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,其内部结构如图5所示,现在分别加以说明。 图5

9、 STC89C52芯片内部结构图(1) 中央处理器中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。(2) 数据存储器(RAM)STC89C52内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM有256个,可存放读写的数据,运算的中间结果或用户定义的字型表。(3) 程序存储器(ROM):STC89C52共有4096个8位掩膜ROM,用于存放用

10、户程序、数据或表格。(4) 定时/计数器:8051有三个16位的可编程定时/计数器,以实现定时或计数产生中断,用于控制程序转向。(5) 并行输入输出(I/O)口:STC89C52共有4组8位I/O口(P0、P1、P2和P3),用于对外部数据的传输。(6) 全双工串行口:STC89C52内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。(7) 中断系统:STC89C52具备较完善的中断功能,有两个外中断、三个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。(8) 时钟电路:STC89C52内置最高频

11、率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但STC89C52单片机需外置振荡电容。单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(Harvard)结构,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即普林斯顿(Princeton)结构。INTEL的 MCS-51系列单片机采用的是哈佛结构的形式,而后续产品16位的MCS-96系列单片机则采用普林斯顿结构。图5是MCS-51系列单片机的内部结构示意图。图5(9) STC89C52的引脚说明MCS-51系列单片机中的8031、8051及8751均采用40Pin封装的双列直插DIP结构

12、,下图是它们的引脚配置,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的接口电路、内部控制逻辑电路和与外设连接的输入/输出接口电路。1 与CPU的接口电路与CPU的接口电路由数据总线缓冲器和读/写控制逻辑组成。数据总线

13、缓冲器是一个三态、双向、8位寄存器,8条数据线D7D0与系统数据总线连接,构成CPU与8255A之间信息传送的通道,CPU通过执行输出指令向8255A写入控制命令或往外设传送数据,通过执行输入指令读取外设输入的数据。2 内部控制逻辑电路内部控制逻辑包括A组控制与B组控制两部分。A组控制寄存器用来控制A口PA7PA0和C口的高4位PC7PC4;B组控制寄存器用来控制B口PB7PB0和C口的低4位PC3PC0。它们接收CPU发送来的控制命令,对A, B, C 3个端口的输入/输出方式进行控制。3 输入/输出接口电路 8255A片内有A, B, C 3个8位并行端口,A口和B口分别有1个8位的数据输

14、出锁存/缓冲器和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读取信息或数据。W

15、R:写入信号,当这个输入引脚为低电平时,即/WR=0且/CS=0时,允许CPU将数据或控制字写入8255。D0D7:三态双向数据总线,8255与CPU数据传送的通道,当CPU 执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。PA0PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入锁存器。PB0PB7:端口B输入输出线,一个8位的I/O锁存器, 一个8位的输入输出缓冲器。PC0PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入缓冲器。端口C可以通过工作方式设定而分成2个4位的端口, 每个4位的端口

16、包含一个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断电存储单元的设计断电存储单元的作用是在电源断开的时候,存储当前设定的信息。AT24C08是ATMEL公司的8KB字节的电可擦除存储芯片,采用两线串行的总线和单片机通讯,电压最低可以到2.5V,额定电流为1mA,静态电流10Ua(5.5V),芯片内的资料

17、可以在断电的情况下保存40年以上,而且采用8脚的DIP封装,使用方便。其电路如图8所示。 图8断电存储单元电路图由于AT24C08的数据线和地址线是复用的,采用串口的方式传送数据,所以只用两根线SCL(移位脉冲)和SDA(数据/地址)与单片机传送数据。每当设定一次单价,系统就自动调用存储程序,将单价信息保存在芯片内;当系统重新上电的时候,自动调用读存储器程序,将存储器内的单价等信息,读到缓存单元中,供主程序使用。3 系统软件设计 软件的设计主要包括键盘键值的读取,LED显示程序,密码比较程序和报警程序。3.1主程序设计主程序主要完成初始化、检查有无按键按下、以及调用显示等等,其流程图如9所示。

18、 图9 主程序流程图3.2 键盘程序设计 键扫程序的过程为:开始时,先判断是否有键闭合,无键闭合时,返回继续判断,有键闭合时,先去抖动,然后确定是否有键按下,若无键按下,则返回继续判断是否有键闭合,若有键按下,则判断键号,然后释放,若释放按键完毕,则返回,若没有释放按键,则返回继续释放。其流程图如图10所示。YN开始有键闭合否?去抖动确有键按下判断键号释放返回返回YNYN图10 键盘程序流程图3.3 调电存储服务程序当比较密码的时候,需要读AT24C08程序,将存储在芯片内的数据读到RAM中,然后和输入的密码相比较。当修改密码的时候,需要把输入的密码保存到AT24C08中,并实现断电保护,其流

19、程图如图11所示。 图11 24C08程序流程图4 系统功能测试用到了Keil C软件,集成调试环境,集成了编辑器、译码器、调试器,支持软件模拟,支持项目管理功能强大的观察窗口,支持所有的数据类型。树状结构显示,一目了然,支持ASM(汇编)、C语言多模块源程序混合调试,在直接修改、编译、调试源程序,错误指令定位。功能很强大,用于对程序的调试和编辑。本系统的程序的编写就是在Keil C软件中完成的,当程序完成之后,生成HEX文件。再利用Proteus软件进行仿真。经过仿真,程序符合题目的要求。下载至学习板后输入数值调试结果如表1所示。 表格 1 系统测试结果输入数值LED显示指示灯0Error

20、不亮12340Error不亮12345 12345 亮 123456 Error 不亮123Error 不亮15Error 不亮5 详细仪器清单表格 2 仪器清单名称参数和型号数量单片机STC89C521块可编程I/O8255A1块电阻1K9个10K9个数码管共阳4位数码管2个瓷片电容30PF2个晶振12M2个电解电容10uf2个开关16个单片机插座40脚1个6 总结与致谢因为前期制作学习板出现的一些问题和对于单片机知识的不熟悉导致在做课程设计中间走了很多的弯路,后面在老师的悉心指导下,以及同学之间的相互求教和讨论中,终于成功的完成了此次的课程设计。在这次的设计中,让我更加深入的懂得了汇编程序

21、该如何形成一个系统,更加熟练的运用Keil C51软件编写程序,熟悉了protues仿真软件的使用技能,丰富了各种器件常识,收获了难得的实践经验。对于在单片机设计中出现的各种问题,我们先是显得非常的茫然,哪怕是一个小小的错误,都会很难找到它错的原因,更何况去解决它。但到了最后,因为对设计的流程已经完全熟悉后,找出错误的根源是更加的容易。并且在这次的设计中我们充分的体验到了团队的力量,这还是一些小是系统,如果对于更大些的设计,那团队的作用会更大。分工合作是最好的做事原则。同时也加深了我们之间的友谊。这次设计过程中,体现出自己设计程序的能力以及综合运用知识的能力,体会了学以致用、突出自己劳动成果的

22、喜悦心情,从中发现自己平时学习的不足和薄弱环节,从而加以弥补。在此感谢我们的指导老师.,老师的严谨细致、一丝不苟将是我工作、学习中的榜样;老师教导和不拘一格的思路给了我很多新的启发;这次设计的每个细节和每个数据,都离不开老师您的细心指导。而您开朗的个性和宽容的态度,帮助我能够很顺利的完成了这次课程设计。同时感谢帮助过我的同学们,谢谢你们对我的帮助和支持,让我感受到同学之间纯真的友谊。 由于我的设计能力有限,在设计过程中难免出现错误,恳请老师们多多指教,我十分乐意接受你们的批评与指正。参考文献1 康华光.电子技术基础数字部分(第五版).华中科技电子技术组,2007 2 华成英.模拟电子技术基础(

23、第四版).清华大学电子学教研组,2006 3 李光弟.单片机基础(第三版).北京航空航天大学出版社,2007 4 李凤霞.C语言程序设计(第二版).北京理工大学出版社,20085 楼然苗.单片机课程设计指导.北京航空航天大学出版,2007附录一:8255A与LED的连接PCB板图 附录二:8255A与键盘的连接PCB板图 附录三:程序源代码#include <reg52.h>#define uchar unsigned char#define uint unsigned int#define NO_KEY_DOWN 0XFF#define SET 0X28#define UP 0X

24、18uchar xdata PA _at_ 0xD9FF, PB _at_ 0XDBFF, PC _at_ 0XDDFF,/定义外部变量,强制分配地址EX_PORT_CON _at_ 0XDFFF;uchar code LED_CODE=0XA0,0XBB,0X62,0X2A,0X39,0X2C,0X24,0XBA,/LED段码(09) 0X20,0X28; uchar code SECRATE3=12,34,56;uchar data INPUT_NUM3=0,0,0;uchar data DISPLAY_BUF6;uchar code ERROR6=0X64,0X77,0X77,0X27,

25、0X77,0XFF;uchar *PP;uchar BIT_PLACE=0,COUNT=0,KEY,S=0,LENGH=1;bit X=0,Y=0;void Input_Secret();void Display();void Delay(uint A);uchar Key_Scan();void Num2_Buf();void main() EX_PORT_CON=0X81; PA=0XFE; PB=0XFF; EA=ET0=TMOD=1; TR0=1; TH0=0X3C; TL0=0XB2; PP=DISPLAY_BUF; BIT_PLACE=0; goto START;while(1)D

26、isplay();if(Key_Scan()=SET)START:while(1) Y=0;KEY=Key_Scan();Display();if(KEY=UP)if(LENGH>=6)LENGH=1;else LENGH+;if(KEY=SET)Y=1;break; PP=DISPLAY_BUF;X=1;S=0;while(1) Num2_Buf();KEY=Key_Scan();Display();if(KEY=SET)|(S>=4)&&X)if(PP=ERROR)PP=DISPLAY_BUF; / if(BIT_PLACE=0XFF)BIT_PLACE=0;/

27、elseif(BIT_PLACE<LENGH)BIT_PLACE+;X=1;S=0;COUNT=0;else BIT_PLACE=0;X=0;if(SECRATE0=INPUT_NUM0)&&(SECRATE1=INPUT_NUM1)&&(SECRATE2=INPUT_NUM2)P1=0;elsePP=ERROR;P1=0XFF;BIT_PLACE=0; INPUT_NUM0=INPUT_NUM1=INPUT_NUM2=0; break; if(KEY=UP)Input_Secret();S=0;void Input_Secret() if(BIT_PLACE%2)/在GE位 if(INPUT_NUMBIT_PLACE/

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论