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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

单片机密码锁设计.docx

1、单片机密码锁设计单片机密码锁设计什么是密码锁电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。硬件设计基于AT89C51为核心的单片机控制的电子密码锁设计。本设计能完成开锁,修改密码,密码错误报警,LCD显示密码等基本的密码锁功能。设计的电路框如图1。报警控制电路LCD显示电路AT89C51单片机矩阵键盘控制指示电路 图一 电路的功能单元设计1.单片机AT89C51组成基本框图 单片机引脚介绍P0:P0口是一个漏极开路的8位双向I/O口。在访问片外存储器时P0分时提供低8位地址线和8位双向数据线。当不接片外存储器或不扩展I/O口时,P0可

2、作为一个通用输入/输出口。P0口作输入口使用时,应先向口锁存器写“1”,P0口作输出口时,需接上拉电阻。P1:P1口是一个内部提供上拉电阻的8位双向I/O口,因此它作为输出口使用时,无需再外接上拉电阻,当作为输入口使用时,同样也需先向其锁存器写“1”。P2:P2口也是一个内部提供上拉电阻的8位双向I/O口,在访问片外存储器时,输出高8位地址。P3:P3口除了一般的准双向通用I/O口外,还有第二功能。VCC:+5V电源VSS:接地 ALE:地址锁存器控制信号。在系统扩展时,ALE用于控制把P0口输出的低8位地址锁存起来,以实现低位地址和数据的隔离。此外,由于ALE是以晶振1/6的固定频率输出的正

3、脉冲,因此,可作为外部时钟或外部定时脉冲使用。 /PSEN:外部程序存储器读选通信号。在读外部ROM时,/PSEN有效(低电平),以实现外部ROM单元的读操作。 /EA:访问程序存储控制信号。当/EA信号为低电平时,对ROM的读操作限定在外部程序存储器;当/EA信号为高电平时,对ROM的读操作是从内部程序存储器开始,并可延至外部程序存储器。 RST:复位信号。当输入的复位信号延续两个机器周期以上的高电平时即为有效,用完成单片机的复位初始化操作。XTAL1和XTAL2:外接晶体引线端。当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。2.单片机

4、外围电路设计(1)单片机复位电路: 采用按键手动复位方式中的电平复位方式,复位电平是通过使RST端经电阻与VCC电源接通而实现的。(2)单片机时钟电路:AT89C51内部有时钟电路,需外接石英晶体和微调电容,本设计的晶振频率为11.0592MHz。3.矩阵键盘的设计本设计中用到4*4的键盘。键盘扫描方式,键盘的列线与P1口的低4位相接,行线与P1口的高3位相接。首先使P1.0为低电平“0”,其余三根列线为高电平“1”,读行线状态。如果行线都为高电平状态,则P1.0这列上没键按下,如果读出的行线不全为高电平状态,则为低电平的行线与P1.0相交的键处于闭合状态。如果P1.0上没有键闭合,接着使P1

5、.1为低电平,其余列线为高电平,用同样的方法检查P1.1这列上有没有按键闭合。一直到使P1.3为低电平扫描完成。这一过程称为一次扫描过程。由于按键是利用机械触电的合、断原理,存在弹性的影响,机械触点在闭合及断开瞬间均有抖动过程,从而使电压信号波动,为了保证CPU对键的稳定闭合仅作一次键输入处理,必须采用消除抖动影响。本设计采用软件办法,在检测到有键按下时,执行一个延时程序后,确认该键是否保持闭合状态电平。若仍保持闭合状态电平,则确认该键处于闭合状态,从而消除抖动影响。若有按键被按下时,就将该按键译码出来,本设计采用双重循环做计数编号,当某一按键按下时,其按键编号便是计数编号,有关按键编号,扫描

6、信号及读取按键数据返回码整理如表1。编号按键数据输入码P1.7 P1.6 P1.5 P1.4扫描输出信号P1.3 P1.2 P1.1 P1.0所侦测的按键01 1 1 01 1 1 0K0 键11 1 0 11 1 1 0K1 键21 0 1 11 1 1 0K2 键30 1 1 11 1 1 0K3 键41 1 1 01 1 0 1K4 键51 1 0 11 1 0 1K5 键61 0 1 11 1 0 1K6 键70 1 1 11 1 0 1K7 键81 1 1 01 0 1 1K8 键91 1 0 11 0 1 1K9 键101 0 1 11 0 1 1K10 键110 1 1 11 0

7、 1 1K11 键 表14.电路总体设计下面是本次实验的程序;*;以下8个字节存放8位数码管的段码LED_BIT_1 EQU 30HLED_BIT_2 EQU 31HLED_BIT_3 EQU 32HLED_BIT_4 EQU 33HLED_BIT_5 EQU 34HLED_BIT_6 EQU 35HLED_BIT_7 EQU 36HLED_BIT_8 EQU 37H;以下6个字节存放初始密码WORD_1 EQU 38HWORD_2 EQU 39HWORD_3 EQU 3AHWORD_4 EQU 3BHWORD_5 EQU 3CHWORD_6 EQU 3DH;以下6个字节存放用户输入的6位密码

8、KEY_1 EQU 3EHKEY_2 EQU 3FHKEY_3 EQU 40HKEY_4 EQU 41HKEY_5 EQU 42HKEY_6 EQU 43H;*CNT_A EQU 44HCNT_B EQU 45HKEY_CNT EQU 46H ;已输出的密码位数LINE EQU 47H ;按键行号ROW EQU 48H ;按键列号VAL EQU 49H ;键值;*;以下为初始化程序,包括数据存储空间初始化,设置初始密码 ORG 00H SJMP START ORG 0BH LJMP INT_T0START: MOV CNT_A,#00H ;程序初始化 MOV CNT_B,#00H MOV KE

9、Y_CNT,#00H MOV LINE,#00H MOV ROW,#00H MOV VAL,#00H SETB P1.0 MOV LED_BIT_1,#00H ;段码存储区清0 MOV LED_BIT_2,#00H MOV LED_BIT_3,#00H MOV LED_BIT_4,#00H MOV LED_BIT_5,#00H MOV LED_BIT_6,#00H MOV LED_BIT_7,#79H MOV LED_BIT_8,#73H MOV KEY_1,#00H ;输入密码存储区清0 MOV KEY_2,#00H MOV KEY_3,#00H MOV KEY_4,#00H MOV KEY

10、_5,#00H MOV KEY_6,#00H MOV WORD_1,#6 ;设置初始密码为 MOV WORD_2,#5 MOV WORD_3,#4 MOV WORD_4,#3 MOV WORD_5,#2 MOV WORD_6,#1 MOV TMOD,#01H MOV TH0,#(65536-700)/256 MOV TL0,#(65536-700)/256 MOV IE,#82HA0: LCALL DISP;*;以下为键盘扫描程序,计算键值并存入VALLSCAN: MOV P3,#0F0H ;扫描行码 L1: JNB P3.0,L2 LCALL DLY_S JNB P3.0,L2 MOV LI

11、NE,#00H LJMP RSCAN L2: JNB P3.1,L3 LCALL DLY_S JNB P3.1,L3 MOV LINE,#01H LJMP RSCAN L3: JNB P3.2,L4 LCALL DLY_S JNB P3.2,L4 MOV LINE,#02H LJMP RSCAN L4: JNB P3.3,A0 LCALL DLY_S JNB P3.3,A0 MOV LINE,#03HRSCAN: MOV P3,#0FH ;扫描列码 C1: JNB P3.4,C2 MOV ROW,#00H LJMP CALCU C2: JNB P3.5,C3 MOV ROW,#01H LJMP

12、 CALCU C3: JNB P3.6,C1 MOV ROW,#02HCALCU: MOV A,LINE ;计算键值 MOV B,#03H MUL AB ADD A,ROW MOV VAL,A;*;以下为按键处理程序,对不同的按键作出响应 CJNE A,#0AH,J1 ;是否为CLR键 MOV R1,KEY_CNT CJNE R1,#00H,J2 LCALL ALARM_1 LJMP START J2: LCALL SHIFTR DEC KEY_CNT W00:LCALL DISP ;等待按键抬起 MOV A,P3 CJNE A,#0FH,W01 LJMP A0 W01:MOV A,P3 CJ

13、NE A,#0F0H,W02 LJMP A0 W02:SJMP W00 J1: MOV A,VAL CJNE A,#0BH,J3 ;判断是否为ENTER键 MOV R1,KEY_CNT CJNE R1,#06H,J4 MOV A,WORD_1 ;比较密码 CJNE A,3EH,J5 MOV A,WORD_2 CJNE A,3FH,J5 MOV A,WORD_3 CJNE A,40H,J5 MOV A,WORD_4 CJNE A,41H,J5 MOV A,WORD_5 CJNE A,42H,J5 MOV A,WORD_6 CJNE A,43H,J5 CLR P1.0 LCALL DLY_L LJ

14、MP FINI J5: LCALL ALARM_2 LJMP START J4: LCALL ALARM_1 LJMP START J3: INC KEY_CNT ;按下数字键 MOV A,KEY_CNT CJNE A,#07H,K1 LCALL ALARM_1 W10:LCALL DISP ;等待按键抬起 MOV A,P3 CJNE A,#0FH,W11 LJMP START W11:MOV A,P3 CJNE A,#0F0H,W12 LJMP START W12:SJMP W10 LJMP START LJMP START K1: LCALL SHIFTL W20:LCALL DISP ;

15、等待按键抬起 MOV A,P3 CJNE A,#0FH,W21 LJMP A0 W21:MOV A,P3 CJNE A,#0F0H,W22 LJMP A0 W22:SJMP W20 LJMP A0ALARM_1:SETB TR0 ;操作错误报警 JB TR0,$ RETALARM_2:SETB TR0 ;密码错误报警 JB TR0,$ LCALL DLY_L RET;*;定时器中断服务程序,用于声音报警INT_T0: CPL P1.7 MOV TH0,#(65536-700)/256 MOV TL0,#(65536-700)/256 INC CNT_A MOV R1,CNT_A CJNE R1

16、,#30,RETUNE MOV CNT_A,#00H INC CNT_B MOV R1,CNT_B CJNE R1,#20,RETUNE MOV CNT_A,#00H MOV CNT_B,#00H CLR TR0RETUNE: RETI;*;段码,输入密码左移子程序SHIFTL: MOV LED_BIT_6,LED_BIT_5 MOV LED_BIT_5,LED_BIT_4 MOV LED_BIT_4,LED_BIT_3 MOV LED_BIT_3,LED_BIT_2 MOV LED_BIT_2,LED_BIT_1 MOV LED_BIT_1,#40H MOV KEY_6,KEY_5 MOV

17、KEY_5,KEY_4 MOV KEY_4,KEY_3 MOV KEY_3,KEY_2 MOV KEY_2,KEY_1 MOV KEY_1,VAL RET;*;段码,输入密码右移子程序SHIFTR: MOV LED_BIT_1,LED_BIT_2 MOV LED_BIT_2,LED_BIT_3 MOV LED_BIT_3,LED_BIT_4 MOV LED_BIT_4,LED_BIT_5 MOV LED_BIT_5,LED_BIT_6 MOV LED_BIT_6,#00H MOV KEY_1,KEY_2 MOV KEY_2,KEY_3 MOV KEY_3,KEY_4 MOV KEY_4,KEY

18、_5 MOV KEY_5,KEY_6 MOV KEY_6,#00H RET;*;以下为数码显示子程序DISP: CLR P2.7 MOV P0,LED_BIT_8 LCALL DLY_S SETB P2.7 CLR P2.6 MOV P0,LED_BIT_7 LCALL DLY_S SETB P2.6 CLR P2.5 MOV P0,LED_BIT_6 LCALL DLY_S SETB P2.5 CLR P2.4 MOV P0,LED_BIT_5 LCALL DLY_S SETB P2.4 CLR P2.3 MOV P0,LED_BIT_4 LCALL DLY_S SETB P2.3 CLR

19、P2.2 MOV P0,LED_BIT_3 LCALL DLY_S SETB P2.2 CLR P2.1 MOV P0,LED_BIT_2 LCALL DLY_S SETB P2.1 CLR P2.0 MOV P0,LED_BIT_1 LCALL DLY_S SETB P2.0 RET;*DLY_S: MOV R6,#10D1: MOV R7,#250 DJNZ R7,$ DJNZ R6,D1 RETDLY_L: MOV R5,#100D2: MOV R6,#100D3: MOV R7,#248 DJNZ R7,$ DJNZ R6,D3 DJNZ R5,D2 RETFINI: NOP END 程序流程图

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

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