ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:177.64KB ,
资源ID:9520704      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9520704.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(燕山大学单片机课程设计密码锁.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

燕山大学单片机课程设计密码锁.docx

1、燕山大学单片机课程设计密码锁第一章 引言 4第二章 设计总说明 4 2.1 设计说明4 2.2 设计总结构图6第3章 系统硬件设计 6 3.1 矩阵键盘接口电路6 3.2 LED显示8 3.3 报警系统9第四章 系统软件设计 94.1软件设计思路 94.2键盘扫描子程序设计 104.3 LED显示子程序说明 114.4密码修改比较和报警子程序设计 13第五章 总体设计图17第六章 设计程序 18第七章 系统调试 26第八章 心得体会26参考文献 27第一章 引言 单片机也被称微控器,是因为它最早被用在工业控制领域。单片机是靠程序运行的,并且可以修改。通过不同的程序实现不同的功能。这是别的器件需

2、要费很大力气才能做到的,有些则是花大力气也很难做到的。单片机对成本是敏感的,所以目前占统治地位的软件还是最低级汇编语言,它是除了二进制机器码最低级的语言了,既然这么低级为什么还要用呢?很多高级的语言已经达到了可视化编程的水平为什么不用呢?原因很简单,就是单片机没有家用计算机那样的CPU,也没有像硬盘那样的海量存储设备。单片机在硬件资源方面的利用率必须很高才行。本设计是基于单片机的密码锁设计方案,根据要求,给出单片机密码锁的硬件电路和软件程序,同时给出单片机型号的选择,硬件设计,软件流程图等内容。第2章 设计总说明2.1 设计说明 随着人们对安全的重视和科技的发展,许多电子智能锁(指纹识别、IC

3、卡辨认)已在国内外相继面世。但是这些产品的特点是针对特定的指纹和有效卡,只能适用于保密要求的箱、柜、门等。而且指纹识识别器若在公共场所使用存在容易机械损坏,IC卡还存在容易丢失、损坏等特点。加上其成本较高,一定程度上限制了这类产品的普及和推广。鉴于目前的技术水平与市场的接收程度,电子密码锁是这类电子防盗产品的主流。本次基于8051单片机电子密码锁的设计,其主要具有如下功能:(1)设置6位密码,密码通过键盘输入,若密码正确,则将锁打开。(2)密码可以由用户自己修改设定(只支持6位密码),锁打开后才能改密码。修改密码之前必须再次输入密码。 (3)报警、锁定键盘功能。密码输入用发光管显示,当连续3次

4、输入错误密码,系统声光报警。电子密码锁的设计主要由三部分组成:44矩阵键盘接口电路、密码锁的控制电路、输出八段显示电路。另外系统还有LED提示灯等。密码锁设计的关键问题是实现密码的输入、清除、更改、开锁等功能:(1)密码输入功能:按下一个数字键,一个数字就显示在右边的数码管上,同时将先前输入的所有数字向左移动一位。(2)密码清除功能:当按下清除键时,清除前面输入的所有值,并清除所有显示(3)密码更改功能:将输入的值作为新的密码。(4)开锁功能:当按下开锁键,系统将输入与密码进行检查核对,如果确锁打开,否则不打开。主要的设计实施过程:首先,选用8051单片机,以及其他电子元器件。第二步,设计硬件

5、电路。第三步,编写单片机语言实现功能。第四部,分别进行软件和硬件的调试。最后,联合软、硬件调试整个系统,完成本次课程设计。关键词:44矩阵键盘;8051单片机;密码锁;密码二次确认2.1 设计总结构图第三章 系统硬件设计此次课程设计基于单片机控制的电子密码锁,接到课题后,根据老师布置的任务和相关要求,结合主要设计条件,我设计了如下方案,其总体方案设计如下: 本系统由单片机系统、矩阵键盘、LED显示和报警系统组成。系统能完成开锁、超时报警功能。3.1矩阵键盘接口电路: 此次课程设计采用4*4矩阵键盘,与P1口相连,采用扫描法。设有09十个数字密码,一个修改密码键,一个清除键和一个确认键。开机显示

6、,等待密码输入,输入6个密码,按确认键后,密码比较。 矩阵式键盘的识别方法:确定矩阵式键盘上何键被按下介绍一种“行扫描法”。行扫描法行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法,如上图所示键盘,介绍过程如下。判断键盘中有无键按下:(1) 先将行线p1.7-p1.4置0111,然后检测列线的状态。如果p1.3-p1.0为0111,则k0被按下;如果p1.3-p1.0为1011,则k1被按下;如果p1.3-p1.0为1101,则k2被按下;如果p1.3-p1.0为1110,则k3被按下;(2) 将行线p1.7-p1.4置1011,然后检测列线的状态,方法同(1);(3) 将行线

7、p1.7-p1.4置1101,然后检测列线的状态,方法同(1);(4) 将行线p1.7-p1.4置1110,然后检测列线的状态,方法同(1). 3.2 LED显示:此次课程设计6密码6显示器,按键后即显示,动态显示。根据按键次数,第一位显示器显示第一次按的密码,第二位显示器显示第二次按的密码,第三位显示器显示第三次按的密码,依此第六位显示器显示第六次按的密码,按键完成后按确认键后,密码对则执行相关动作,不同则显示器清零,等待重新输入。LED数码显示字形(段)码表如下:显示字形字形码(共阳极)字形码(共阴极)0C0H3FH1F9H06H2A4H5BH3B0H4FH499H66H592H6DH68

8、2H7DH7F8H07H880H7FH990H6FHA88H77HB83H7CHCC6H39HDA1H5EHE86H79HF8EH71H 3.3 报警系统:此次课程设计,当按键三次错误后,系统报警,报警装置由一扬声器实现,从P1.2口输出脉冲,使扬声器鸣报警。第四章 系统软件设计4.1软件设计思路电子密码锁工作的主要过程是通过键盘输入密码,同时LED显示密码输入情况,按下确认键后判断密码的正确性,做出开锁或报警处理。当输入密码连续三次错误时,系统报警。密码的的设定在此程序中密码是固定40H45H中,假设预定密码为“”六位。在正常状态时,可以进行重新设置密码、上锁等操作。重新设置密码时,首先验证

9、原始密码,如相同则可进行密码更改,然后将新密码保存至AT24C01中。按键按其功能分为两种,其中一种为功能键另一种为数字键。输入密码后,直到所有密码输入完毕按下确认功能键之后,才完成密码输入过程。进入密码的判断比较处理状态并给出相应的处理过程。4.2键盘扫描子程序设计键盘扫描流程如图键盘扫描子程序如下:L2:MOV R3,#0F7HMOV R1,#00HL3: MOV A,R3 MOV P1,A MOV A,P1 MOV R4,ASETB CMOV R5,#04HL4:RLC A JNC KEYIN INC R1 DJNZ R5,L4 CALL DISP MOV A,R3 SETB C RRC

10、 MOV R3,A JC L3 JMP L24.3 LED显示子程序 LED显示子程序流程图如下图4-3LED显示子程序如下:DISP:MOV R0,#45HDISP1:MOV A,R0 ADD A,350H MOV P0,A CALL DELY DEC R0 MOV AR0 ADD A,#40H MOV P0,A CALL DELY DEC R0 MOV A,R0 ADD A,#30H MOV P0,A CALL DELAY DEC RO MOV A,R0 ADD A,10HMOV P0,ACALL DELAYDEC R0MOV A,R0ADD A,#00HMOV P0,ACALL DELA

11、YRET4.4密码修改比较和报警程序密码比较流程图如下图4-4密码修改与比较程序SET0: MOV R1,#65H MOV R0,#35H MOV R2,#06HE1: MOV A,R1 MOV R0,A DEC R1 DEC R0 DJNZ R2,E1 lcall delay lcall delay lcall delay E2:LJMP START COMP: MOV R1,#65H MOV R0,#35H MOV R2,#06HC1: MOV A,R1 XRL A,R0 JNZ C3 DEC R1 DEC R0 DJNZ R2,C1 setb P1.0 lcall delay lcall

12、 delay lcall delay clr p1.0 MOV R2,#200C2: MOV R6,#248 DJNZ R6,$ DJNZ R2,C2 ljmp START C3: setb P1.1 lcall delay lcall delay lcall delay clr p1.1 INC R5 MOV A,R5 MOV R5,A CJNE R5 ,#03H,C4 setb P1.2 lcall delay lcall delay lcall delay clr p1.2 lcall S C4: lJMP START end第五章 系统总设计图系统总图第6章 设计程序OUTBIT eq

13、u 08002hOUTSEG equ 08004hIN equ 08001hLEDBuf equ 60h MOV R7,#10H MOV R6,#06H MOV R1,#35HL1: MOV A,R7 MOV DPTR,#LEDMAP MOVC A,A+DPTR MOV R1,A DEC R1 INC R7 DJNZ R6,L1 ljmp READYLEDMAP: db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h db 06h, 5bh, 4fh, 66h, 6dh, 7dhD

14、elay: mov r7, #0DelayLoop: djnz r7, DelayLoop djnz r6, DelayLoop RetDisplayLED: mov r0, #LEDBuf mov r1, #6 mov r2, #01hLoop: mov dptr, #OUTBIT mov a, #0 movx dptr, a mov a, r0 mov dptr, #OUTSEG movx dptr, a mov dptr, #OUTBIT mov a, r2 movx dptr, a mov r6, #1 call Delay mov a, r2 rl a mov r2, a inc r

15、0 djnz r1, Loop retTestKey: mov dptr, #OUTBIT mov a, #0 movx dptr, a mov dptr, #IN movx a, dptr cpl a anl a, #0fh retKeyTable: db 16h, 15h, 14h, 0ffh db 13h, 12h, 11h, 10h db 0dh, 0ch, 0bh, 0ah db 0eh, 03h, 06h, 09h db 0fh, 02h, 05h, 08h db 00h, 01h, 04h, 07hGetKey: mov dptr, #OUTBIT mov P2, dph mov

16、 r0, #Low(IN) mov r1, #b mov r2, #6KLoop: mov a, r1 cpl a movx dptr, a cpl a rr a mov r1, a movx a, r0 cpl a anl a, #0fh jnz Goon1 djnz r2, KLoop mov r2, #0ffh sjmp ExitGoon1: mov r1, a mov a, r2 dec a rl a rl a mov r2, a mov a, r1 mov r1, #4LoopC: rrc a jc Exit inc r2 djnz r1, LoopCExit:mov a, r2 m

17、ov dptr, #KeyTable movc a, a+dptr mov r2,a mov a,r2 XRL A,#0eH jz COMPARE MOV A,r2 XRL A,#0cH jz CLEAN MOV A,r2 XRL A,#0aH jz SET1 MOV A,r2 XRL A,#0fH jz SET2WaitRelease: mov dptr, #OUTBIT clr a movx dptr, a mov r6, #10 call Delay call TestKey jnz WaitRelease mov a, r2 retREADY: anl p1,#00Hs: MOV R5

18、,#00HABC: CLR PSW.5START: MOV R4,#06H MOV R0,#60HCLEAR: MOV R0,#00H INC R0 DJNZ R4,CLEAR mov sp, #40h mov LEDBuf+0, #3fh mov LEDBuf+1, #3fh mov LEDBuf+2, #3fh mov LEDBuf+3, #3fh mov LEDBuf+4, #3fh mov LEDBuf+5, #3fhMLoop: call DisplayLED call TestKey jz MLoop call GetKey anl a, #0fh mov dptr, #LEDMa

19、p movc a, a+dptr XCH A,60H XCH A,61H XCH A,62H XCH A,63H XCH A,64H XCH A,65H ljmp MLoopCLEAN: ljmp STARTCOMPARE:LJMP COMPSET1:MOV A,PSW ANL A,#20H JZ START MOV R1,#65H MOV R0,#6FH MOV R2,#06HE1: MOV A,R1 MOV R0,A DEC R1 DEC R0 DJNZ R2,E1 SETB P1.3 lcall delay LJMP STARTSET2:MOV R2,#06H MOV R1,#60H M

20、OV R0,#6AH S1:MOV A,R1 XRL A,R0 JNZ S3 INC R0 INC R1 DJNZ R2,S1 MOV R2,#06H MOV R1,#30H MOV R0,#6AH S2: MOV A,R0 MOV R1,A INC R0 INC R1 DJNZ R2,S2 CLR P1.3 SETB P1.0 MOV R6,#250 LCALL DELAY CLR P1.0 ljmp START S3: setb P1.1 lcall delay lcall delay lcall delay clr p1.1 LJMP STARTCOMP: MOV R1,#65H MOV

21、 R0,#35H MOV R2,#06HC1: MOV A,R1 XRL A,R0 JNZ C2 DEC R1 DEC R0 DJNZ R2,C1 setb P1.0 lcall delay lcall delay lcall delay clr p1.0 SETB PSW.5 ljmp STARTC2: setb P1.1 CLR PSW.5 lcall delay lcall delay lcall delay clr p1.1 INC R5 MOV A,R5 MOV R5,A CJNE R5 ,#03H,C3 setb P1.2 lcall delay lcall delay lcall

22、 delay clr p1.2 lcall SC3: lJMP START End第七章 系统调试电子密码锁主要由矩阵键盘,LED数码显示器,提示灯,报警电路和单片机程序组成。调试部分主要是数码显示和程序细节的调试。数码管调试主要是看其能否完整显示6位数字。不可以显示只能重新换过。程序的调试是比较复杂的部分,它又可以分为比较部分和键盘部分。首先在输入程序时,应该先输入键盘部分,然后单独运行键盘程序看键盘输入时数码管能否显示出与键盘输入的数字相对应的数字。然后以键盘程序为主程序,把比较部分的程序作为子程序输入。那是由于键盘程序中我们所输入的数字存在60H-65H显示缓存中只能在键盘程序中被调用,

23、如果把键盘程序作为子程序,那我们在比较部分中要调用显示缓存中的数据便不可行。密码放在30H-35H,当输入六个数时,程序把数据与密码进行比较,当输入与密码完全匹配时,输入正确,密码锁打开,否则显示红灯,连续三次错误时,蜂鸣器报警。 第八章 心得体会 时间过得真快,转眼间,一周的单片机课程设计就结束了。这是我的第一次课程设计,接到课题后,开始几天我主要看书,跑图书馆,上网查资料。在图书馆找到了类似的资料,我就开始看程序,然后自己试着去改,但是很不幸在Keil中编译时有一处错误,可是我花了一天多的时间查资料和问同学也没找出哪里出错了。于是我就另外找其他有关的程序,终于在星期天找到了,接着我边看书边

24、看程序,目的是把程序看懂,然后自己再尝试着去改,经过一天左右的时间,程序差不多看懂了,电路图也画出来了,程序编译也没问题,于是我就把程序下到硬件里面,可是就是不显示,主要是按键不起作用。我又重新看程序,反复的改,到晚上的时候还是没搞好,就再看书,请教同学,大概又花了两天时间,在同学的提醒下,我终于发现了问题。主要是按键接的总线没有设定相对应的引脚。当天晚上,我就改了,终于问题解决了,仿真也成功了!当时真的很高兴,毕竟我花了这么多的时间,终于有用了。然而在生成PCB图时,我又遇到了问题,就是有些元件没封装(如按键),不知道怎么加进去,我又再网上查资料,终于找到怎么加进去的方法,我自己试着弄了一下

25、,成功了,当时真的很兴奋,这样一来,我的课程设计就差不多好了。我在整个设计过程中懂得了许多东西,当遇到解决不了的问题,跟同伴一起商量、合作,向掌握的好的同学请教,或许能收到事半功倍的效果。不管学什么,一定要打好基础,并将其学好、学精,但空有知识也不一定就能说明什么,还得能为己所用;还有更重要的是培养了独立思考和设计的能力,树立了对知识应用的信心,相信会对今后的学习工作和生活有非常大的帮助,使自己充分体会到了在设计过程中的成功喜悦。做课程设计不只是对我们知识的考察,也是对学习态度的测验。经过这段时间的课程设计后,我感觉我学到了不少东西,特别是一些课外的知识,这样的课程设计很有意义,我觉得我们要多做一些这样的课程设计。唯一的遗憾就是没有亲自动手把实物图做出来。希望今后能多有这样的课程设计。参考文献1周润景 张丽娜 丁莉.基于PROTEUS的电路及单片机设计与仿真(第二版).北京航天航空大学出版社2009.122 李朝清.单片机原理及接口技术(第三版). 北京航天航空大学出版社.2006.123 周兴华.手把手教你学单片机. 北京航天航空大学出版社.2006.124 张文利.微机原理及单片机接口技术.中国科学技术大学出版社2007.7

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1