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

下载本文档

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

文档简介

1、黎明职业大学 机电工程系 课程设计机 电 工 程 系课 程 设 计 报 告电子密码锁班 级: 学 号: 姓 名: 指导老师: 答辩日期:_ 共 22 页 第 - 22 - 页一、 设计目的1.1 引言 随着人们的生活水平的提高,如何实现防盗、安全这一问题也变的尤其的突出,传统的机械锁由于构造的简单,被撬的事件屡见不鲜,电子锁由于保密性高,使用灵活性好,安全系数高。受到广大用户的亲昵。1.2 电子密码锁的动机和理由 密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。现在应用较广的数

2、字密码锁是以芯片为核心,通过编程来实现。密码可变,用户可以随时改密码,防止密码被盗,同时也可以避免因人员的更替而使锁的密级下降。本次报告主要内容有:1、绪论。2、对设计的原理分析。3、实现的方案及选择。4、系统电路图。5、软件设计。6、结论。7、设计中遇到的问题及解决方法。7、对本设计的心得体会二、 对本课程设计的分析2.1系统框图密码锁电路主要以单片机为核心,8位数码管显示密码或者提示输入的密码位数,还有时间的显示,它们分别接在单片机的p0和p1口,矩阵式按键扫描接在单片机的p3端口,按键有16个,其主要的功能是0.1.2.3.4.5.6.7.8.9.关门.开门.输入密码.修改密码.取消.确

3、定。LED的提示电路主要由8个LED组成,它们的提示内容分别为请输入密码(p1.0).密码正确(p1.1),密码错误(p1.2),输入新密码(p1.3),确认新密码(p1.4),设置成功(p1.5),警告(p1.6),开门关门(p1.7)。 单片机数码管显示LED控制灯P0,P2按键扫描P3P1复位电路时钟电路 2.2 复位及时钟电路复位电路产生复位信号通过复位引脚RST进入片内一个施密特触发器再与片内复位电路相连。当单片机运行出错或进入死循环时,可使其复位后重新运行。 AT89S51单片机内部有一个高增益反相放大器,用于构成振荡器,但要形成时钟,还须附加电路,XTAL1引脚为反相放大器各时钟

4、发生电路的输入端,XTAL2引脚为反相放大器的输出端。 2.3报警电路此部分是当密码输入错误3次时要执行电路,和超时次数超过2次,当错误3次时警告灯一直亮着,开门灯不亮,其他的灯在闪,亮灭各300ms,亮灭共20次(警告灯亮,关门灯不亮,其他的闪)(警告灯亮,关门灯不亮,其他的闪)2.4键盘扫描电路 键盘采用4*4行列式键盘,分为10个数字键(09)和6个功能键。其工作原理为:先令行线P3.7输出低电平0,P3.4P3.6全部输出高电平1,读列线P3.0P3.3输入电平。如读某列线为低电平0,则可确认对应于该列线与行线P3.7相交处的键被按下,否则P3.7行线无键按下。接着令行线P3.6输出低

5、电平0,其余输出高电平1,再读列线P3.0-P3.3输入电平,判断其是否有输出低电平0,有则有按键按下,无,则表示无按键按下,依次类推直到P3.0。然后将扫描的键值存入53H58H中。(按键的仿真图)2.5密码修改电路当密码输入正确,按下修改密码键,进入第一次输入密码的状态,输入新密码的指示灯亮,当输完第一次新密码按下确定,系统提示再一次输入新密码,确认新密码的灯亮。两次输入的新密码比较没有错误后,密码修改成功。(输入新密码)(确认新密码)(设置成功)三、 主要电路模块的实现方案比较及选择该部分应对第2节中的框图内容的实现方案进行对比和选择,要求对电路进行分析,才能给出结论。 3.1复位与时钟

6、电路的实现及选择 复位电路主要有上电自动复位(也称为“冷启动”)和按键手动复位(也称“热启动”)两种。按键手动复位,当按键按下复位端通过电阻与电源接通,达到复位目的。上电自动复位是利用电容充电来实现的,上电瞬间,RC电路充电,RST引脚端再出现正脉冲,只要RST引脚端保持10MS以上的高电平,就能使单片机有效的复位。 时钟电路分为内部时钟方式和外部时钟方式。本次设计选择内部时钟方式,其主要是通过XTAL1和XTAL2两端接晶振,再利用芯片内部的振荡电路构成的自激振荡器,其发出的脉直接送入内部时钟电路。外部时钟方式是利用外部振荡脉冲接入XTAL1的。本次设计选择按键手动复位。四、 系统的软件设计

7、4.1主要功能1、 密码显示。2、键盘扫描。3、报警。4、开锁。5,修改密码。6,HELLO显示。4.2主要单元分配43H48H数码管显示“”4AH密码位数5AH5FH存放初始密码4BH控制显示密码方式53H58H第一次输入密码4CH判断输入密码标志3AH3FH确认输入密码4DH判断密码正确(错误)标志59H开数码管显示个数4EH判断修改密码键标志64H66H输入密码时间4FH判断能否修改密码67H35秒操作时间38H判断是否关过门标志6AH输入密码错误次数39H判断是否开过门标志6BH判断报警信号标志6CH实现LED灯闪烁一次时间循环6DH闪烁次数6FH延时报警次数开始初始化调用HELO显示

8、有按键按下吗?设置t0.t1的中断入口地址,t0.t1赋初值No调用动态显示程序调用按键判断及处理程序判断报警信号判断倒计时时间判断35秒内是否有按键按下结束YESLED闪10秒超时是否2次6BH=16BH=0NoYESYESNo时间到No设定指针初值扫描P3.0P3.3判断p3=0FH?返回去抖动判断p3=0FH?查表找键值判断键值找到按键处理程序“09开门关门修改密码输入密码取消确定”等待按键放开是是否否五、 系统的软件设计经过努力与坚持,多次的仿真、实验、终于完成设计,达到了预期要求。各功能键的如下:1、把程序下载到实验板上会显示“HELLO”,若要把门打开,需要输入密码按键,密码正确门

9、方可打开并显示“P”;否则显示“E”。若密码输入错误三次会延时报警(用LED来代替报警)2、欲更改密码时,需要先输入正确密码在点击修改密码3、当密码输入错误的时候可以按退格键4、 确定按键、关门按键和开门按键5.1遇到的主要问题以及解决办法在程序的调试过程中,protues仿真图中用的是共阳七段数码管,因此使用高电平扫描,可是在系统板上显示乱码,后来经过观察,系统板上加了一个npn三级管作为驱动,所以要用低电平扫描,为了使仿真图跟单片机小系统板同时都能使用,所以在位码处加了一个非门。5.2心得体会在本次课程设计中,我选做的是简易密码锁,由于本次实验经过老师允许可以不用做硬件在自己的系统板上可以

10、实现其功能的前提下,因此省下了做硬件的时间。通过本次设计,了解到要完成一个这么庞大的程序,必须有计划的,分模块写程序,最后把各个模块结合在一起经过调试,完成一个完整的程序。在本次课程设计中让我体会深刻,也让我学到了查阅资料这门课程的学问,让我更深一步的了解单片机的工作原理,与其编程方法,还有就是仿真与实际硬件的差别,在老师的指导与分析以及同学的帮助下,才顺利完成了本次设计。通过本次设计反映出我的许多不足之处,让我学到很多,感触多多。六、 程序代码ORG00HJMPSTART;=中断入口地址=ORG00BHMOVTL0,#0B0HMOVTH0,#3CHJMPSUB1ORG01BHMOVTL1,#

11、0B0HMOVTH1,#3CHJMPSUB3ORG30HSTART:MOVP1,#0FFHMOV6FH,#0 ;密码延时警告次数清0MAIN:CALLHELLOMOVP3,#0FHMOVA,P3CJNEA,#0FH,MENJMPMAINMEN:CALLCLRMENXS:CALLDISPLAYCALLKEYONMOVA,6BHCJNEA,#1,BAOJ ;判断报警信号SD2:MOVA,R3 ;LED闪CPLAMOVB,#80HORLA,BMOVB,#0BFHANLA,BMOVP1,AMOVR3,A ;LED闪SD1:MOVP2,#0MOVP0,#0BFHCALLYS_1S ;延时1msCALLY

12、S_1S ;延时1msDJNZ6CH,SD1 ;延时300msMOV6CH,#150DJNZ6DH,SD2MOV6DH,#50 ;亮灭20次MOV6BH,#0 ;报警停止JMPSTARTBAOJ:MOVA,65HCJNEA,#0,BAOJ1 ;时间20s倒计时MOVP1,#0BFHINC6FHMOVA,6FH ;时间超时累计信号CJNEA,#2,MAIN ;警告2次报警MOV6FH,#0JMPSD1 ;跳到报警信号BAOJ1:MOVA,67HCJNEA,#1,XS ;比较35秒是不是变为1,(判断35内有没有按键按下)JMPSTART;=按键=KEYON:MOVP3,#0FHMOVA,P3CJ

13、NEA,#0FH,KYJMPOVERKY:CALLQUDOUMOVA,P3CJNEA,#0FH,KY1JMPOVERKY1:;SETBRS0 ;设置cpu工作寄存器为第1组MOVP3,#0F0HMOVA,P3ANLA,#0F0HMOVB,AMOVP3,#0FHMOVA,P3ANLA,#0FHORLA,BMOVB,AMOVR0,#00HMOVDPTR,#TABLOP:MOVA,R0MOVCA,A+DPTRCJNEA,B,NEXT2JMPRR0NEXT2:INCR0CJNER0,#10H,LOPJMPOVERRR0:MOVA,R0CJNEA,#12,KEY1 ;输入密码MOVA,4CHCJNEA,

14、#0,E1 ;判断按键是不是已经被按过MOVA,38HCJNEA,#0,E1 ;判断门是否已关MOV67H,#35MOVP1,#0FEH ;输入密码的灯亮MOV64H,#20 ;定时器20秒倒计时MOV65H,#20 ;定时器20秒倒计时MOV59H,#2 ;显示开两个MOV4CH,#1 ;输入密码键激活SETBTR0 ;开定时器E1:JMPKEYOFFKEY1: CJNEA,#13,KEY2 ;修改密码MOV67H,#35 ;有按键按下还原35秒MOVA,4FHCJNEA,#1,XA ;判断修改密码是不是已经被激活(密码是否正确)MOVA,4EHCJNEA,#0,XA ;判断按键是不是已经被

15、按过MOV39H,#0 ;按下修改密码,锁定开门键MOV4EH,#1 ;修改密码键激活MOV64H,#20 ;定时器20秒倒计时MOV65H,#40 ;定时器40秒倒计时MOV59H,#2 ;显示开两个MOV4BH,#1CALLCLRMMMOVP1,#0F7H ;修改密码的灯亮SETBTR0MOV4CH,#1XA:JMPKEYOFFKEY2:CJNEA,#10,KEY3 ;关门MOVA,38HCJNEA,#1,XA ;判断门有没有开,没开关门无效MOV39H,#0MOVP1,#0FFHMOV4FH,#0 ;修改密码键无效MOV4CH,#0 ;输入密码键清0MOV38H,#0 ;门已关按键解锁(

16、输入密码键有效)MOVP0,#88HMOVP2,#7FH ;显示一个“0”SETBTR1MOV67H,#35HJMPKEYOFFKEY3:CJNEA,#11,KEY4 ;开门MOVA,39HCJNEA,#1,JH ;判断开门键是否被激活MOVP1,#7FHMOV4FH,#0 ;修改密码键无效MOV4CH,#0 ;不输入MOV39H,#0 ;开门键无效MOV38H,#1 ;提示门已开(锁定所有的按键)MOVP0,#0C8HMOVP2,#7FH ;显示一个“”CLRTR1JH:JMPKEYOFFKEY4:CJNEA,#14,KEY5 ;取消MOV67H,#35 ;有按键按下还原35秒J4:MOVA

17、,4CHCJNEA,#1,JA ;判断输入密码键有没有激活CALLCLRMMMOV59H,#2 ;显示管开两位JA:JMPKEYOFFKE:JMPKEY6KEY5:CJNEA,#15,KE ;确定MOV67H,#35 ;有按键按下还原35秒J6:MOVA,4CHCJNEA,#1,JA ;判断输入密码键有没有激活MOVA,4AHCJNEA,#0,J10 ;判断有没有输入密码JMPKEYOFFJ10:MOVA,4EHCJNEA,#1,OK1 ;判断修改是不是被激活JMPGAIMIOK1:CJNEA,#2,J7JMPGAIMI2J7:CALLMIMA_BJ ;密码比较MOVA,4DHCJNEA,#1

18、,ONMOVP1,#0FDH ;密码正确CALLCLRMMMOV59H,#0MOVP0,#8CHMOVP2,#7FH ;显示一个“P”MOV39H,#1 ;密码正确开门有效MOV4FH,#1 ;密码正确修改密码有效MOV4CH,#0 ;密码重新输入清0(不输入)MOV6AH,#0 ;密码错误次数清0MOV6EH,#0 ;密码延时清0CLRTR0JMPKEYOFFON: MOVP1,#0FBH ;密码错误MOVP0,#86HMOVP2,#7FH ;显示一个“E”CALLCLRMMMOV59H,#0MOV4CH,#0 ;密码重新输入清0(不输入)MOV6EH,#0 ;密码延时清0CLRTR0INC

19、6AH ;密码错误的次数MOVA,6AHCJNEA,#3,ONOMOV6BH,#1 ;报警信号ONO:JMPKEYOFFGAIMI:CALLCUN_533A ;第一次输入的密码暂存到3a到3fCALLCLRMMMOV4BH,#1INC4EH ;激活第二次输入新密码MOV4FH,#0 ;修改密码键无效MOV59H,#2 ;显示两个数码管MOVP1,#0EFH ;显示确认新密码的灯JMPKEYOFFGAIMI2:CALLMI_BJ ;比较两次输入的密码是否一样MOVA,4DHCJNEA,#1,LAT ;4DH=1,相同,4DH=0不同MOVP1,#0DFH ;提示设置成功CALLCUN_535A

20、;存入新密码CALLCLRMMMOV4EH,#0 ;设置没密码比较模式MOV4CH,#0 ;不输入状态MOV59H,#0 ;数码管全灭MOV4BH,#0 ;显示变为密码显示"-"的模式MOV4DH,#0 ;密码比较的结果清0MOVP0,#89HMOVP2,#7FH ;显示一个“H”JMPKEYOFFLAT:CALLCLRMMMOVP1,#0FBH;提示密码错误MOV59H,#0 ;数码管全灭MOV4BH,#0 ;显示变为密码显示"-"的模式MOV4DH,#0 ;密码比较的结果清0MOV4EH,#0 ;设置没密码比较模式MOV4CH,#0 ;不输入状态MO

21、VP0,#86HMOVP2,#7FH ;显示一个“E”JMPKEYOFFKEY6:MOV67H,#35MOVA,4CHCJNEA,#1,KEYOFF;判断修改密码键是否激活J2:MOVA,4AHCJNEA,#6,J1;判断是否已经摁了6位密码(最多6位)JMPKEYOFFJ1:CALLYIWEI;数字09MOV53H,R0INC59H;显示管个数加1INC4AH ;密码个数加1JMPKEYOFFKEYOFF:CALLDISPLAY;判断按键有没有放开MOVP3,#0FH;判断按键有没有放开MOVA,P3;判断按键有没有放开CJNEA,#0FH,KEYOFFOVER:;CLRRS0;设置cpu工

22、作寄存器为第0组RET;=清0=CLRMM:MOVA,#0MOV53H,AMOV54H,AMOV55H,AMOV56H,AMOV57H,AMOV58H,AMOV4AH,ARET;=密码修改程序1=CUN_533A:MOVR0,#58HMOVR1,#3FHCUN1:MOVA,R0MOVR1,ADECR0DECR1CJNER0,#52H,CUN1RET;=密码修改程序2=CUN_535A:MOVR0,#58HMOVR1,#5FHCUN:MOVA,R0MOVR1,ADECR0DECR1CJNER0,#52H,CUNRET;=TAB:DB0EEH,0EDH,0EBH,0E7H ;0,1,2,3的键码D

23、B0DEH,0DDH,0DBH,0D7H ;4,5,6,7的键码DB0BEH,0BDH,0BBH,0B7H ;8,9,10,11的键码DB07EH,07DH,07BH,077H ;11,12,13,14,15的键码;=密码比较程序1=MI_BJ:MOVR0,#53HMOVR1,#3AHBJI:MOVA,R0CLRCSUBBA,R1MOVACC.1,CJBCACC.1,OVE2MOVA,R1CLRCSUBBA,R0MOVACC.1,CJBCACC.1,OVE2INCR0INCR1CJNER0,#59H,BJIMOV4DH,#1 ;密码正确JMPOVE4OVE2: MOV4DH,#0 ;密码错误O

24、VE4:RET;=密码比较程序2=MIMA_BJ:MOVR0,#53HMOVR1,#5AHBJ:MOVA,R0CLRCSUBBA,R1MOVACC.1,CJBCACC.1,OVER5MOVA,R1CLRCSUBBA,R0MOVACC.1,CJBCACC.1,OVER5INCR0INCR1CJNER0,#59H,BJMOV4DH,#1 ;密码正确JMPOVER4OVER5: MOV4DH,#0 ;密码错误OVER4:RET;=移 位 程 序=YIWEI:MOV50H,R0;SETBRS1;设置cpu工作寄存器为第三组MOVR0,#57HMOVR1,#58HQ1:MOVA,R0MOVR1,ADEC

25、R0DECR1CJNER0,#50H,Q1;CLRRS1;设置cpu工作寄存器为第一组MOVR0,50HRET;=去抖=QUDOU:MOVA,59HCJNEA,#1,B1MOVR3,#8B11:CALLDISPLAYDJNZR3,B11JMPMBB1:CJNEA,#2,B2MOVR3,#4B22:CALLDISPLAYDJNZR3,B22JMPMBB2:CJNEA,#3,B3MOVR3,#3B33:CALLDISPLAYDJNZR3,B33JMPMBB3:CJNEA,#4,B4MOVR3,#2B44:CALLDISPLAYDJNZR3,B44JMPMBB4:CJNEA,#5,MBMOVR3,#

26、2B55:CALLDISPLAYDJNZR3,B55JMPMBB5:CJNEA,#6,MBCALLDISPLAYMB:RET;=显示程序=DISPLAY:CALLFENLIMOVDPTR,#TABLEMOVR7,#0BFH ;数码管从第七位开始亮(时间在最高的两位)MOVR6,59HMOVA,59HCJNEA,#0,LA1JMPOVER3LA1:MOVA,4BH ;判断修改密码是否已经激活CJNEA,#1,LA2MOVR1,#51HJMPLALA2:MOVR1,#41HLA:MOVP2,R7MOVA,R1MOVCA,A+DPTRMOVP0,ACALLYS_1S ;= 调用1ms延时INCR1M

27、OVA,R7RLAMOVR7,ADJNZR6,LAOVER3:RETTABLE:DB0C0H,0F9H,0A4H,0B0HDB99H,92H,82H,0F8H,80H,90H,0BFH;=分离秒=FENLI:MOVDPTR,#TABLEMOVA,65HMOVB,#10DIVABMOV42H,AMOV52H,AMOVA,BMOV41H,AMOV51H,ARET;=延时1ms=YS_1S:MOV61H,#2LOP2:MOV62H,#0F9HLOP1:DJNZ62H,LOP1DJNZ61H,LOP2RET;=初始化=CLRMEN:MOVTL0,0B0HMOVTH0,3CHMOVTL1,0B0HMOV

28、TH1,3CHMOVTMOD,#11HSETBET0SETBET1SETBEASETBTR1MOVA,#0MOV32H,#0MOV31H,#6MOV38H,#0 ;提示门的开关状态MOV39H,#0MOV41H,AMOV42H,AMOV43H,#10 ;显示一条“-”MOV44H,#10 ;显示一条“-”MOV45H,#10 ;显示一条“-”MOV46H,#10 ;显示一条“-”MOV47H,#10 ;显示一条“-”MOV48H,#10 ;显示一条“-”MOV51H,AMOV52H,AMOV53H,AMOV54H,AMOV55H,AMOV56H,AMOV57H,AMOV58H,AMOV59H,

29、AMOV5AH,#1 ;初始密码MOV5BH,#1 ;初始密码MOV5CH,#1 ;初始密码MOV5DH,#1 ;初始密码MOV5EH,#1 ;初始密码MOV5FH,#1 ;初始密码MOV3AH,AMOV3BH,AMOV3CH,AMOV3DH,AMOV3EH,AMOV3FH,AMOV4AH,AMOV4BH,AMOV4CH,AMOV4DH,AMOV4EH,AMOV4FH,AMOV6AH,AMOV6CH,#150MOV6DH,#50MOV6EH,AMOV64H,#20MOV65H,#20MOV66H,#20MOV67H,#35MOVP1,#0FFHRET;=移动hello字样=HELLO:MOV35H,#0MOVR1,35HMOVR5,#50MOVR4,#14LB:MOVDPTR,#TABLE4MOVR7,#0FEHMOVR6,#8MOVR1,3

温馨提示

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

评论

0/150

提交评论