单片机课程设计报告2.docx

上传人:b****5 文档编号:6736902 上传时间:2023-01-09 格式:DOCX 页数:15 大小:1.10MB
下载 相关 举报
单片机课程设计报告2.docx_第1页
第1页 / 共15页
单片机课程设计报告2.docx_第2页
第2页 / 共15页
单片机课程设计报告2.docx_第3页
第3页 / 共15页
单片机课程设计报告2.docx_第4页
第4页 / 共15页
单片机课程设计报告2.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

单片机课程设计报告2.docx

《单片机课程设计报告2.docx》由会员分享,可在线阅读,更多相关《单片机课程设计报告2.docx(15页珍藏版)》请在冰豆网上搜索。

单片机课程设计报告2.docx

单片机课程设计报告2

一、设计内容:

数字密码锁

二、设计要求:

(一)基本要求

1、利用889C51作为控制器组成一数字型码锁。

2、开锁动作用LED管模拟。

3、开锁代码由小健盘输入,且同时有4位LED显示器上显出来,当你输入的四位数字与原存的密码完全相同时,则将锁打开。

4、密码可由小键盘输入进行改写。

5、修改密码,必须在30秒内完成,否则将发出报警号。

6、锁门与否,可由一开关控制,每次按Enter键时,89C51根据此开关的状态决定锁住或打开。

(二)扩展功能

1、键盘增加退格键、清除键和复位键。

2、三次输入密码不正确,系统将锁定,输入代码将无效。

按复位键后,将解除锁定。

三、设计所需硬件及结构图:

(一)硬件:

AT69C52,8255A,MAX232,2803,按钮键盘,电容,排阻若干

(二)硬件结构图:

 

四、程序流程图

 

五、软件软程序代码

PAEQU7CFFH;A口地址

PBEQU7DFFH;B口地址

CTREQU7FFFH;控制字地址

YR1EQU30H;密码存储单元

YR2EQU31H;

YR3EQU32H

YR4EQU33H

NEW1EQU45H;用户输入密码存储单元

NEW2EQU46H

NEW3EQU47H

NEW4EQU48H

LOCK_TIMESEQU35H

ORG0000H

JMPSTART_00

ORG0100H;

START_00:

MOVYR1,#1H;初始密码为1234

MOVYR2,#2H

MOVYR3,#3H

CLR02H

MOVYR4,#4H;修改

MAIN:

MOVIE,#86H;开定时器0和外部中断1的中断

SETBIT1

LCALLKEY

JB02H,START;已经开始计时就不要再开始了

MOV50H,#08H;若是12mhz来算则R7应为0FFH,R3应为0F4H

MOV51H,#06H

MOVTMOD,#01H;定时器定时工作方式1

MOVTH0,#15H

MOVTL0,#0AH

SETB02H;开始计时标志置1

SJMPSTART

START:

MOVDPTR,#CTR

MOVA,#80H

MOVX@DPTR,A

CLRPSW.1;PSW.1是是否进入重设密码功能的标志位,为0则没进入;反之则进入。

Bydefault,PSW.1=0

CLRF0;F0为重设密码时,输入原始密码正确与否标志:

F0=0,wrong;F0=1,correct.Default=0

MOVB,#1H;最初数码管不显示,B=当前要显示的数码管位数-1

MOVLOCK_TIMES,#0H;错误,移至START_00处

SETBP3.0;Bydefault,LED=off

SETBP3.1

MOVNEW1,#00H;清除用户上次输入密码

MOVNEW2,#00H

MOVNEW3,#00H

MOVNEW4,#00H

SCAN:

LCALLDISP

MOVP1,#0FFH

MOVR0,#0F7H

MOVR1,#00H;存储按键号

LP1:

MOVA,R0;扫描行

MOVP1,A

NOP;延时读取键盘状态

MOVA,P1

MOVR2,A;存储键盘扫描状态,为判断抖动做准备

SETBC;为左移作准备

MOVR3,#04H;判断四列是否扫描结束

LP2:

RLCA;将A左移,检测该列中是否0所在位置

JNCKEY;找到零,转去进行延时消抖

LP3:

INCR1;扫描下一列

DJNZR3,LP2

MOVA,R0

SETBC

RRCA

MOVR0,A

JCLP1;CY=1,行扫描未结束,因为是带进位的右移

LJMPSCAN;扫描完毕,无有效键值

KEY:

LCALLDS10MS;延时消抖

MOVA,P1

XRLA,R2

JNZLP3;A=1,说明是干扰,继续转去扫描下一行

LP4:

MOVA,P1;waitforthebuttontobounceback

XRLA,R2

JZLP4

MOVA,R1

MOVDPTR,#TAB

MOVCA,@A+DPTR

KEYIN:

MOVR3,A;判断输入的键义

XRLA,#0EH

JZENTER;按下确定键

MOVA,R3

XRLA,#0FH

JZMODIFY;按下修改键

MOVA,R3

XRLA,#0DH

JZBUT_CHG;按下重设密码键

BUT_N:

MOVA,B;是正常数字键

CJNEA,#5,INP_NUM;判断输入密码的位数:

达到四位则对键值不予理睬-->ignore,否则-->INP_NUM

JMPIgnore;输入密码位数达到四位后,对后续输入的数字不做处理

BUT_CHG:

SETBTR0

SETB02H

SETBPSW.1;setPSW.1,enterprocessofresettingpassword

LCALLALL_LIGHT;showthisentering

SETBP3.0

SETBP3.1

JMPSCAN;返回接收新设定的密码

MODIFY:

;修改输入密码,则显示的位数减一

MOVA,B

CJNEA,#1H,MOD_EN;输入密码删除完,对键值不作处理

JMPSCAN;返回接收新键值

MOD_EN:

;

DECB;显示位数减一

JBF0,MOD_SYS;F0=0,修改刚输入的用户密码;F0=1,修改输入的重设密码

MOD_USER:

MOV48H,47H

MOV47H,46H

MOV46H,45H

MOV45H,#0H

JMPSCAN

MOD_SYS:

MOV33H,32H

MOV32H,31H

MOV31H,30H

MOV30H,#0H

JMPSCAN

INP_NUM:

INCB;输入密码位数增加,显示位数也随之增加

MOVA,R3

JBF0,SET_PW;F0=0,可以输入重设的新密码,转去接受新密码进入密码存储单元

USER_PW:

;inputuser'spassword

XCHA,48H

XCHA,47H

XCHA,46H

XCHA,45H

LJMPSCAN

SET_PW:

;inputnewpassword

XCHA,33H

XCHA,32H

XCHA,31H

XCHA,30H

Ignore:

LJMPSCAN

ENTER:

JBF0,set_OK;定义按下ENTER键的功能

COMP1:

MOVR7,#04H;comparepasswordinputtedwiththecorrectone

MOVR0,#45H

MOVR1,#30H

L1:

MOVA,@R0

XRLA,@R1

JNZWRONG

INCR0

INCR1

DJNZR7,L1

RIGHT:

CLRP3.0

CALLLIGHT_DEL

SETBP3.0

JBPSW.1,CHG_PW

JMPBACK_START

CHG_PW:

SETBF0;原始密码输入正确,可以重设密码,将重设密码允许的标志位置位

MOVB,#1H

LJMPSCAN

set_OK:

INC51H

DJNZ51H,LOCK;

CLREA

CLRTR0

CLRP3.0

WRONG:

CLRP3.1

CALLLIGHT_DEL

JNBPSW.1,BACK_START

JBF0,BACK_START

MOVA,LOCK_TIMES

CJNEA,#2H,TRY_AGAIN

CALLLOCK

TRY_AGAIN:

INCLOCK_TIMES

MOVB,#1H

SETBP3.1

LCALLSCAN

BACK_START:

LJMPSTART;返回后先将存放输入密码的地址全部清零,后进行键盘扫描

ALL_LIGHT:

CLRP3.0

CLRP3.1

LIGHT_DEL:

LCALLDELAY2

RET

LOCK:

MOVDPTR,#PB;位选

MOVA,#0FH

MOVX@DPTR,A

MOVDPTR,#PA

MOVA,#0H

MOVX@DPTR,A;送段码

LCALLDELAY3;延时

JMP$

RET

ORG000BH

T0IRS:

DJNZ50H,T01

DJNZ51H,T01

T01:

MOVTMOD,#01H

MOVTH0,#15H

MOVTL0,#0AH

SETBTR0

RETI

;************显示子程序**************;

DISP:

MOVR2,#08H

MOV49H,B

JNBF0,DEFAULT

MOVR0,#33H;显示用户输入的新密码

JMPDS2

DEFAULT:

;正确密码为默认密码,显示输入的密码

MOVR0,#48H

DS2:

DJNZB,AA

MOVDPTR,#PB;位选

MOVA,#0H

MOVX@DPTR,A

MOVB,49H

JMPJJ

AA:

MOVDPTR,#PB;位选

MOVA,R2

MOVX@DPTR,A

MOVDPTR,#PA

MOVA,@R0

LCALLTABLE

MOVX@DPTR,A;送段码

LCALLDELAY1;延时

DECR0

CLRC

MOVA,R2

RRCA

MOVR2,A

JMPDS2

;***********BCD码转化成段码子程序****************;

TABLE:

INCA

MOVCA,@A+PC

JJ:

RET

DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH

;***********延时4ms子程序***************************;

DELAY1:

MOVR4,#10;4ms延时

DEL11:

MOVR5,#0AH

DEL12:

MOVR3,#14H

DEL13:

DJNZR3,DEL13

DJNZR5,DEL12

DJNZR4,DEL11

RET

;***********延时21ms子程序**************************;

DS10MS:

MOVR5,#42

LOOP2:

MOVR6,#248

DJNZR6,$

DJNZR5,LOOP2

RET

;***********延时1s子程序**************************;

DELAY2:

MOVR5,#50

LOOP3:

LCALLDS10MS

DJNZR5,LOOP3

RET

;***********延时30s子程序**************************;

DELAY3:

MOVR5,#10

LOOP4:

LCALLDELAY2

DJNZR5,LOOP4

RET

TAB:

DB01H,02H,03H,0AH

DB04H,05H,06H,0BH

DB07H,08H,09H,0CH

DB0EH,00H,0FH,0DH

END

六、PROTUES和KEIL联调仿真

1、仿真原理图

2、仿真上电

3、输入正确密码1234数码D1管亮

4、输入错误密码数码D2管亮

 

5、修改密码成功,两个灯都亮

6、三次输入错误密码,led提示灯亮,系统锁定

6、课程设计经验感受

整个设计通过软件和硬件上的调试。

我想这对于自己以后的学习和工作都会有很大的帮助。

在这次设计中遇到了很多实际性的问题,在实际设计中才发现,书本上理论性的东西与在实际运用中的还是有一定的出入的,所以有些问题不但要深入地理解,而且要不断地更正以前的错误思维。

一切问题必须要靠自己一点一滴的解决,而在解决的过程当中你会发现自己在飞速的提升。

我觉得课程设计反映的是一个从理论到实际应用的过程,但是更远一点可以联系到以后毕业之后从学校转到踏上社会的一个过程。

与其他同学的的配合﹑相处,以及自身的动脑和努力,都是以后工作中需要的。

所以我认为这次的课程设计意义很深,和其他同学的共同学习﹑配合﹑努力的过程也很愉快,另外还要感谢老师的耐心辅导。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

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

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