电子密码锁 单片机.docx

上传人:b****7 文档编号:26641096 上传时间:2023-06-21 格式:DOCX 页数:23 大小:230.56KB
下载 相关 举报
电子密码锁 单片机.docx_第1页
第1页 / 共23页
电子密码锁 单片机.docx_第2页
第2页 / 共23页
电子密码锁 单片机.docx_第3页
第3页 / 共23页
电子密码锁 单片机.docx_第4页
第4页 / 共23页
电子密码锁 单片机.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

电子密码锁 单片机.docx

《电子密码锁 单片机.docx》由会员分享,可在线阅读,更多相关《电子密码锁 单片机.docx(23页珍藏版)》请在冰豆网上搜索。

电子密码锁 单片机.docx

电子密码锁单片机

项目六电子密码锁设计

设计说明书

任务一电子密码锁

一、任务设计要求

1、基本要求:

(1)用单片机控制查询式键盘的8个按键,当按下1-8号按键时,分别在1位数码管上依次显示数字“1”-“8”

(2)用单片机控制矩阵式键盘的16个按键,当按下1-16号按键时,分别在1位数码管上依次显示数字“0”-“9”和字符“A”-“F”。

2、技能提高:

(1)控制要求:

用单片机控制查询式键盘,输入一位密码,为0-3之间的数字,密码正确,显示字符“P”3秒,同时开锁LED亮,若错误,则显示字符“E”3秒,再继续输入;

(2)要求:

用单片机控制矩阵式键盘,矩阵式键盘采用列扫描方式,输入一位密码,为0-15之间的数字,密码正确,显示字符"P"3秒,同时开锁LED亮,若错误,则显示字符"E"3秒,再继续输入。

二、设计过程

1、设计方案确定

2、硬件电路设计

3、软件设计

(1)、绘制流程图

(2)、编写源程序:

PSDEQU21H

ORG0000H

LJMPMAIN

ORG0010H

MAIN:

MOVSP,#3FH

ST1:

MOVP0,#0FFH

MOVPSD,#02

MAIN1:

SETBP3.0

MOVP1,#0111111B

KEY:

MOVA,P0

KEY0:

JBACC.0,KEY1

LJMPERR

KEY1:

JBACC.1,KEY2

LJMPERR

KEY2:

JBACC.2,KEY3

LJMPPASS

KEY3:

JBACC.3,KEY

ERR:

SETBP3.0

MOVP1,#86H

LCALLDELAY1S

LCALLDELAY1S

LCALLDELAY1S

LJMPMAIN1

PASS:

MOVP1,#00001100B

CLRP3.0

LCALLDELAY1S

LCALLDELAY1S

LCALLDELAY1S

LJMPMAIN1

DELAY1S:

MOVR3,#250

DEL3:

MOVR5,#4

DEL2:

MOVR4,#250

DEL1:

NOP

NOP

DJNZR4,DEL1

DJNZR5,DEL2

DJNZR6,DEL3

RET

END

PSDEQU21H

ORG0000H

LJMPMAIN

ORG0010H

MAIN:

MOVSP,#3FH

ST1:

MOVP0,#0FFH

MOVPSD,#02

MAIN1:

SETBP3.0

MOVP1,#0111111B

KEY:

ACALLKS;调用按键查询子程序

JNZK1;判断是否有键按下,若A≠0,说明有键按下

AJMPKEY;无键按下,继续查询

K1:

ACALLDELAY100MS;调用延时程序去抖动

ACALLKS;再次调用按键查询子程序

JNZK2;若A≠0,说明确实有键按下

AJMPKEY;否则因为抖动引起,继续查询按键状态

K2:

MOVR3,#0FEH;设列扫描字为"0FEH",从第0列开始逐列扫描

MOVR4,#00;设置列号初始值为"00"

K3:

MOVA,R3;取列扫描字送P2口

MOVP2,A;扫描第1列

MOVA,P0;读入P0口键盘行线状态

ANLA,#0FH;屏蔽无关的高4位

JBP0.0,L1;第0行有键按下吗?

若P0.0=0,说明有键按下

MOVA,#00H

AJMPLK;将第0行首号"00"送A,转至键号计算程序

L1:

JBP0.1,L2;第1行有键按下吗?

若P0.1=0,说明有键按下

MOVA,#04H

AJMPLK;将第1行首号"04"送A,转至键号计算程序

L2:

JBP0.2,L3;第2行有键按下吗?

若P0.2=0,说明有键按下

MOVA,#08H

AJMPLK;将第2行首号"08"送A,转至键号计算程序

L3:

JBP0.3,NEXT;第3行有键按下吗?

若无键按下,则扫描下一列

MOVA,#0CH;将第3行首号"12"送A

AJMPLK

LK:

ADDA,R4;键号计算程序,按键号=行首号(A)+列号(R4)

PUSHACC;进栈暂存按键号

K4:

ACALLDELAY100MS

ACALLKS;等待按键释放

JNZK4

ACALLKS

JNZK4

POPACC;出栈取按键号给A

AJMPPR;转到密码识别与处理程序

NEXT:

INCR4;列号加1

MOVA,R3;列扫描字送A

JNBACC.3,KEY;判断4列都扫描完了吗?

RLA;未完,将列扫描字左移

MOVR3,A;列扫描字送R3,为扫描下一列做准备

AJMPK3;循环继续扫描下一列

KS:

MOVA,#00H

MOVP2,A;将列线P2.0-P2.3设置为低电平

NOP

MOVA,P0;读行线按键输入状态

CPLA;变正逻辑,高电平表示有键按下

ANLA,#0FH;屏蔽与按键无关的高4位,有任意键按下时,A≠0

RET

PR:

CJNEA,PSD,ERR;

PASS:

MOVP1,#00001100B

CLRP3.0

LCALLDELAY1S

LCALLDELAY1S

LCALLDELAY1S

LJMPMAIN1

ERR:

MOVP1,#86H

LCALLDELAY1S

LCALLDELAY1S

LCALLDELAY1S

LJMPMAIN1

DELAY1S:

MOVR3,#250

DEL3:

MOVR5,#4

DEL2:

MOVR4,#250

DEL1:

NOP

NOP

DJNZR4,DEL1

DJNZR5,DEL2

DJNZR6,DEL3

RET

DELAY100MS:

MOVR6,#200

D1:

MOVR7,#248

DJNZR7,$

DJNZR6,D1

RET

END

ORG0000H

AJMPMAIN

ORG0010H

MAIN:

MOVP2,#00H

KEY0:

MOVP3,#0FEH

JNBP3.4,K0

JNBP3.5,K1

JNBP3.6,K2

JNBP3.7,K3

MOVP3,#0FDH

JNBP3.4,K4

JNBP3.5,K5

JNBP3.6,K6

JNBP3.7,K7

MOVP3,#11111011B

JNBP3.4,K8

JNBP3.5,K9

JNBP3.6,K10

JNBP3.7,K11

MOVP3,#11110111B

JNBP3.4,K12

JNBP3.5,K13

JNBP3.6,K14

JNBP3.7,K15

K0:

MOVP2,#3FH

ACALLDELAY

LJMPMAIN

K1:

MOVP2,#06H

ACALLDELAY

LJMPMAIN

K2:

MOVP2,#5BH

ACALLDELAY

LJMPMAIN

K3:

MOVP2,#4FH

ACALLDELAY

LJMPMAIN

K4:

MOVP2,#66H

ACALLDELAY

LJMPMAIN

K5:

MOVP2,#6DH

ACALLDELAY

LJMPMAIN

K6:

MOVP2,#7DH

ACALLDELAY

LJMPMAIN

K7:

MOVP2,#07H

ACALLDELAY

LJMPMAIN

K8:

MOVP2,#7FH

ACALLDELAY

LJMPMAIN

K9:

MOVP2,#6FH

ACALLDELAY

LJMPMAIN

K10:

MOVP2,#77H

ACALLDELAY

LJMPMAIN

K11:

MOVP2,#7CH

ACALLDELAY

LJMPMAIN

K12:

MOVP2,#39H

ACALLDELAY

LJMPMAIN

K13:

MOVP2,#5EH

ACALLDELAY

LJMPMAIN

K14:

MOVP2,#79H

ACALLDELAY

LJMPMAIN

K15:

MOVP2,#71H

ACALLDELAY

LJMPMAIN

DELAY:

MOVR3,#250

DEL3:

MOVR5,#4

DEL2:

MOVR4,#250

DEL1:

NOP

NOP

DJNZR4,DEL1

DJNZR5,DEL2

DJNZR6,DEL3

RET

END

4、软、硬件调试仿真(效果图)

任务二简易计算器

一、任务设计要求

1、基本控制要求:

由16键矩阵式键盘和两个数码管构成一个1位简易四节运算计算器。

1)实现1位的加、减、乘、除四节运算;

2)如果结果为负(减法)或溢出(除数位0),数码管显示“EE”;

3)可以清零。

二、设计过程

1、设计方案确定

2、硬件电路设计

3、软件设计

(1)、绘制流程图

(2)、编写源程序:

1个程序

LOCKBITP3.0;开锁阀,用LED代表,0:

开锁

ECODE1DATA30H;存放密码值

ECODE2DATA31H;存放密码值

ECODE3DATA32H;存放密码值

ECODE4DATA33H;存放密码值

ECODE5DATA34H;存放密码值

ECODE6DATA35H;存放密码值

EKEY1DATA36H;暂存放按键值

EKEY2DATA37H;暂存放按键值

EKEY3DATA38H;暂存放按键值

EKEY4DATA39H;暂存放按键值

EKEY5DATA3AH;暂存放按键值

EKEY6DATA3BH;暂存放按键值

DISP1DATA3CH;暂存放显示码

DISP2DATA3DH;暂存放显示码

DISP3DATA3EH;暂存放显示码

DISP4DATA3FH;暂存放显示码

DISP5DATA40H;暂存放显示码

DISP6DATA41H;暂存放显示码

BUFFDATA42H;临时存储区

SEG__EQU01000000B;"-"显示码

SEG_PEQU01110011B;"P"显示码

SEG_AEQU01110111B;"A"显示码

SEG_SEQU01101101B;"S"显示码

SEG_EEQU01111001B;"E"显示码

SEG_dEQU01011110B;"d"显示码

SEG_rEQU01010000B;"r"显示码

SEG_oEQU01011100B;"o"显示码

SEG_HEQU01110110B;"H"显示码

SEG_LEQU00111000B;"L"显示码

SEG_0EQU3FH;"0"显示码

SEG_1EQU06H;"1"显示码

SEG_2EQU5BH;"2"显示码

SEG_3EQU4FH;"3"显示码

SEG_4EQU66H;"4"显示码

SEG_5EQU6DH;"5"显示码

SEG_6EQU7DH;"6"显示码

SEG_7EQU07H;"7"显示码

SEG_8EQU7FH;"8"显示码

SEG_9EQU6FH;"9"显示码

SEG_OFFEQU00000000B;熄灭显示码

ORG0000H

LJMPMAIN

ORG0030H

MAIN:

;初始化

MOVSP,#50H

MOVECODE1,#6

MOVECODE2,#5

MOVECODE3,#4

MOVECODE4,#3

MOVECODE5,#2

MOVECODE6,#1

_BEGIN:

LCALLINIT

SETBLOCK

_CHECK:

LCALLCHECK_KEY

CJNEA,#0BH,_CHECK

LCALLPSW_CHK

JC_ERROR

;密码正确:

MOVDISP1,#SEG_P

MOVDISP2,#SEG_A

MOVDISP3,#SEG_S

MOVDISP4,#SEG_S

MOVDISP5,#SEG_E

MOVDISP6,#SEG_d

CLRLOCK

LCALLDELAY5S

AJMP_BEGIN

_ERROR:

;密码错误:

MOVDISP1,#SEG_E

MOVDISP2,#SEG_r

MOVDISP3,#SEG_r

MOVDISP4,#SEG_o

MOVDISP5,#SEG_r

MOVDISP6,#SEG__

LCALLDELAY5S

AJMP_BEGIN

DELAY5S:

MOVR4,#5

_DELAY5:

ACALLDELAY1S

DJNZR4,_DELAY5

RET

DELAY1S:

MOVR5,#160;

_LP1:

ACALLDISPLAY

DJNZR5,_LP1

RET

CHECK_KEY:

LCALLSCAN_KEY

CJNEA,#0BH,_CHK_KEY1

AJMP_CHK_KEY4

_CHK_KEY1:

JNBF0,_CHK_KEY2

LCALLLED_OFF

CLRF0

_CHK_KEY2:

CJNEA,#0AH,_CHK_KEY3

MOVEKEY1,EKEY2

MOVEKEY2,EKEY3

MOVEKEY3,EKEY4

MOVEKEY4,EKEY5

MOVEKEY5,EKEY6

MOVEKEY6,#0FFH

MOVDISP1,DISP2

MOVDISP2,DISP3

MOVDISP3,DISP4

MOVDISP4,DISP5

MOVDISP5,DISP6

MOVDISP6,#SEG_OFF

AJMP_CHK_KEY4

_CHK_KEY3:

MOVEKEY6,EKEY5

MOVEKEY5,EKEY4

MOVEKEY4,EKEY3

MOVEKEY3,EKEY2

MOVEKEY2,EKEY1

MOVEKEY1,A

MOVDISP6,DISP5

MOVDISP5,DISP4

MOVDISP4,DISP3

MOVDISP3,DISP2

MOVDISP2,DISP1

MOVDISP1,#SEG__

_CHK_KEY4:

RET

SCAN_KEY:

ACALLKEY_TEST

JNZ_S_KEY1

ACALLDISPLAY

SJMPSCAN_KEY

_S_KEY1:

ACALLDISPLAY

ACALLKEY_TEST

JNZ_S_KEY2

ACALLDISPLAY

SJMPSCAN_KEY

_S_KEY2:

MOVR2,#0FEH

MOVR3,#00H

_LINE0:

MOVA,R2

MOVP2,A

MOVA,P0

JBACC.0,_LINE1

MOVA,#00H

AJMP_KEY_NO

_LINE1:

JBACC.1,_LINE2

MOVA,#01H

AJMP_KEY_NO

_LINE2:

JBACC.2,_LINE3

MOVA,#02H

AJMP_KEY_NO

_LINE3:

JBACC.3,_NEXT

MOVA,#03H

AJMP_KEY_NO

_NEXT:

INCR3

INCR3

INCR3

INCR3

MOVA,R2

JNBACC.2,_EXIT

RLA

MOVR2,A

AJMP_LINE0

_EXIT:

AJMPSCAN_KEY

_KEY_NO:

ADDA,R3

PUSHACC

_KEY_REL:

ACALLKEY_TEST

JNZ_KEY_REL

POPACC

SETBLOCK

RET

KEY_TEST:

MOVA,#00H

MOVP2,A

MOVA,P0

CPLA

ANLA,#0FH

RET

DISPLAY:

PUSHPSW

PUSHACC

SETBRS0

MOVA,#0FFH

MOVP0,A

MOVR0,#DISP1

MOVR7,#00H

MOVR6,#06H

MOVR5,#0FEH

DIS1:

MOVP0,#0FFH

MOVA,@R0

MOVP1,A

MOVA,R5

MOVP0,A

HERE:

DJNZR7,HERE

DJNZR7,$

INCR0

MOVA,R5

RLA

MOVR5,A

DJNZR6,DIS1

CLRRS0

POPACC

POPPSW

RET

PSW_CHK:

MOVR0,#ECODE1

MOVR1,#EKEY1

MOVR6,#6

_PSW_CHK1:

MOVA,@R0

MOVBUFF,@R1

CJNEA,BUFF,_PSW_ERR

INCR0

INCR1

DJNZR6,_PSW_CHK1

CLRC

RET

_PSW_ERR:

SETBC

RET

INIT:

MOVEKEY1,#0FFH

MOVEKEY2,#0FFH

MOVEKEY3,#0FFH

MOVEKEY4,#0FFH

MOVEKEY5,#0FFH

MOVEKEY6,#0FFH

MOVDISP1,#SEG_H

MOVDISP2,#SEG_E

MOVDISP3,#SEG_L

MOVDISP4,#SEG_L

MOVDISP5,#SEG_o

MOVDISP6,#SEG_1

SETBF0

RET

LED_OFF:

MOVDISP1,#SEG_OFF

MOVDISP2,#SEG_OFF

MOVDISP3,#SEG_OFF

MOVDISP4,#SEG_OFF

MOVDISP5,#SEG_OFF

MOVDISP6,#SEG_OFF

RET

END

4、软、硬件调试仿真(效果图)

三、设计总结和体会

单片机的系统扩展主要有程序存储器扩展、数据存储器扩展以及I/O口的扩展。

通过这次实验,我们了解了简易计算器和简易密码锁的设计方案

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

当前位置:首页 > 高中教育 > 其它课程

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

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