计算机控制系统课程设计.docx

上传人:b****8 文档编号:11149034 上传时间:2023-02-25 格式:DOCX 页数:26 大小:210.67KB
下载 相关 举报
计算机控制系统课程设计.docx_第1页
第1页 / 共26页
计算机控制系统课程设计.docx_第2页
第2页 / 共26页
计算机控制系统课程设计.docx_第3页
第3页 / 共26页
计算机控制系统课程设计.docx_第4页
第4页 / 共26页
计算机控制系统课程设计.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

计算机控制系统课程设计.docx

《计算机控制系统课程设计.docx》由会员分享,可在线阅读,更多相关《计算机控制系统课程设计.docx(26页珍藏版)》请在冰豆网上搜索。

计算机控制系统课程设计.docx

计算机控制系统课程设计

基于单片机实现的电子密码锁

一:

电子密码锁的特点

电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。

它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。

现在应用较广的电子密码锁是以芯片为核心,通过编程来实现的。

其性能和安全性已大大超过了机械锁,主要特点如下:

1.保密性好,编码量多,远远大于弹子锁。

随机开锁成功率几乎为零。

2.密码可变。

用户可以经常更改密码,防止密码被盗,同时也可。

3.以避免因人员的更替而使锁的密级下降。

4.误码输入保护。

当输入密码多次错误时,报警系统自动启动,防止试探密码。

二.设计目标

本次设计使用ATMEL公司的AT89C51实现一基于单片机的电子密码锁的设计,其主要具有如下功能:

1.设置6位密码,密码通过键盘输入,若密码正确,则将锁打开。

2.密码可以由用户自己修改设定(只支持6位密码),锁打开后才能修改密码。

修改密

3.码之前必须再次输入旧密码,在输入新密码。

4.报警、锁定键盘功能。

密码输入错误数码显示器会出现错误提示,若密码输入错误次数超过3次,蜂鸣器报警并且锁定键盘。

三.设计的具体体现

1.系统概述

电子密码锁的设计主要由三部分组成:

4×4矩阵键盘接口电路、密码锁的控制电路、输出八段显示电路。

另外系统还有LED提示灯,报警蜂鸣器等。

密码锁设计的关键问题

1.密码输入功能:

按下一个数字键,一个“-”就显示在最右边的数码管上,同时将先前输入的所有“-”向左移动一位。

2.密码清除功能:

当按下清除键时,清除前面输入的最后一位值,并清对应显示。

3.密码更改功能:

将输入的值作为新的密码。

4.开锁功能:

当按下开锁键,系统将输入与密码进行检查核对,如果正确锁打开,否则不打开。

系统结构

 

图一

系统组成

如图二所示系统主要由AT89C51(51系列)、六位位数码管、蜂鸣器、LED、4×4矩阵键盘、复位电路等组成。

系统可行性分析

系统工作原理分析:

使用AT59C51单片机、4×4矩阵键盘、LED、蜂鸣器等。

矩阵键盘分别为0、1、2、3、4、5、6、7、8、9、BACK、ENTER、SZ、CLOSE、TCSZ。

输入密码时,LED显示电路显示为“—”,当密码输入完毕按下ENTER键时,对输入密码与设定的密码进行比较,若密码正确则LED显示电路显示为“开锁指示灯亮”提示锁打开;若密码不正确,LED显示电路显示提示“密码错误指示灯亮”,若连续3次输入不正确,则发出警报声同时锁定键盘。

在输入正确密码后,按下修改键时,输入旧密码,此时输入正确的旧密码,则显示“—”电路会有提示输入新密码在输入新密码后,输入新密码后按“ENTER”在修改密码的过程中,如果一开始输入的旧密码错误显示电路会显示提示。

系统中CEL键用于退格,在输入密码时,若输入错误且未按下Enter键,按下CLE可以删除刚输入的密码,然后再次输入。

为了防止恶意尝试,系统才用若连续输入3次错误密码则发出报警声,且锁定键盘,可以提高系统的安全系数,同时也能够保护合法用户的正常使用。

2.单元电路设计、仿真与分析

(1)AT89C51主要特性

 8031CPU与MCS-51兼容

4K字节可编程FLASH存储器(寿命:

1000写/擦循环)

全静态工作:

0Hz-24KHz

三级程序存储器保密锁定

128*8位内部RAM

32条可编程I/O线

两个16位定时器/计数器

 6个中断源

可编程串行通道

低功耗的闲置和掉电模式

片内振荡器和时钟电路

管脚说明

VCC:

供电电压。

 GND:

接地。

图二

    P0口:

P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P1口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

 P1口:

P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收。

 P2口:

P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

  P3口:

P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口也可作为AT89C51的一些特殊功能口,如下表所示:

管脚备选功能:

P3.0RXD(串行输入口)

P3.1TXD(串行输出口)

P3.2/INT0(外部中断0)

P3.3/INT1(外部中断1)

P3.4T0(记时器0外部输入)

P3.5T1(记时器1外部输入)

P3.6/WR(外部数据存储器写选通)

P3.7/RD(外部数据存储器读选通)

P3口同时为闪烁编程和编程校验接收一些控制信号。

RST:

复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:

当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。

在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。

因此它可用作对外部输出的脉冲或用于定时目的。

然而要注意的是:

每当用作外部数据存储器时,将跳过一个ALE脉冲。

如想禁止ALE的输出可在SFR8EH地址上置0。

此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。

另外,该引脚被略微拉高。

如果微处理器在外部执行状态ALE禁止,置位无效

 /PSEN:

外部程序存储器的选通信号。

在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。

但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

 /EA/VPP:

当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。

注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。

在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

    XTAL1:

反向振荡放大器的输入及内部时钟工作电路的输入

    XTAL2:

来自反向振荡器的输出。

(2)4×4矩阵键盘

 

图三

如图所示,本系统采用4×4矩阵键盘,16个按键分为输入数字键:

0、1、2、3、4、5、6、7、8、9;功能键BACK、ENTER、SZ、CLOSE、TCSZ。

矩阵键盘。

(3)复位电路

 

图四

单片机的复位电路非常重要,一般单片机刚开始工作时需要复位以完成内部的初始化,而当程序出错误,程序跑飞,死机等非正常状态时,更需要使单片机重新工作。

时钟电路工作后,在REST管脚上加两个机器周期的高电平,芯片内部开始进行初始复位如图四。

该复位电路还兼有手动复位,在通电的瞬间,在RC微分过程中,RST端出现正脉冲,从而使单片机复位。

C3和R6的值随时钟频率的变化而变化,当采用6MHz时钟频率时,C3=22uF,R6=2K

(一般常取C3=10uF,R6=10K

)当采用12MHz时钟频率时,一般常取C3=0.47uF,R6=1K

.

(4)振荡电路

 

图五

时钟电路用于产生单片机工作所需的时钟信号,而时序是指令执行中各个信号的相互关系。

单片机本身就如一个复杂的同步时钟电路,为了保证单片机同步工作的实现,电路应在唯一的时钟信号控制下严格的按时序进行工作。

所以时钟电路的质量会直接形象单片机的工作稳定性和可靠性。

本设计晶振选择频率为12MHZ,电容选择30pF如图(3-4)。

经计算得单片机工作胡机器周期为:

12×(1÷12M)=1us。

(5)数码管

 

图六

本设计采用两个4位8段共阴极数码管。

由于由单片机直接驱动的直流电流不够,数码管亮度显得不足,所以加上74LS373用以放大电流。

(6)发光二极管LED

 

图七

由于LED使用P3口驱动

3.元器件列表

元器件

规格/型号

数量

四位八段共阴数码管

3461AFR1-B10

2

电阻

4.7k

8

电阻

510

8

电阻

1k

2

电解电容

0.47uF/50V

1

瓷片电容

30pF

2

单片机

AT89C51

1

驱动芯片

74LS373

1

 

三.系统软件设计

1.主程序流程图

 

N

Y

N

Y

 

图八

2.键功能程序流程图如图

 

Y

N

Y

N

Y

N

Y

N

图九

 

3.存储单元分配

30H--35H显示缓冲区

41H--45H输入暂存区

50H--55H原始密码存储单元

36H临时单元,存储位码内容

37H、39H在按键子程序中用于内外循环计数

38H按键子程序存放查表后得到的编码

3AH临时单元,存放逐行开的编码

3BH密码错误次数计数器

40H在按键子程序中存放键盘的值

R0在显示子程序中作显示缓冲区的指针

R2数字键输入次数计数器

R4在中断中作计数器

R5、R6延时子程序循环计数器

R7显示子程序六个数码管逐个显示计数器

20H.0=1密码正确标志位

20H.1=1设置键按下标志位

20H.2=1当前输入的是新密码标志位

20H.3=1密码三次错误报警开启标志位

源程序

;—————————————主程序——————————————

ORG0000H

AJMPSTART

ORG000BH

AJMPDIST

ORG0030H

START:

MOVTMOD,#01H

MOVTH0,#3CH

MOVTL0,#0B0H

SETBEA

SETBET0

ACALLXSCSH;显示缓冲区初始化显示6个横线

ACALLCSH

MOV3BH,#0

MOV50H,#1

MOV51H,#2

MOV52H,#3

MOV53H,#4

MOV54H,#5

MOV55H,#6;原始密码设置为123456

LOOP:

ACALLDISP

ACALLAJ

AJMPLOOP

;——————————————显示子程序—————————————

DISP:

MOVR7,#6

MOVR0,#30H

MOVDPTR,#TAB

MOV36H,#01H

LOOP1:

MOVA,@R0

MOVCA,@A+DPTR

MOVP0,A

MOVP2,36H

ACALLDELAY

INCR0

MOVA,36H

RLA

MOV36H,A

DJNZR7,LOOP1

RET

;—————————按键判断子程序,4*4循环————————————

AJ:

MOVP1,#0F0H

MOVA,P1

CJNEA,#0F0H,D1

AJMPD16

D1:

ACALLDISP

MOVA,P1

CJNEA,#0F0H,D2

AJMPD16

D2:

MOV3AH,#0FEH

MOV40H,#0

MOVDPTR,#DAB

MOV39H,#4

D3:

MOV37H,#4

MOVP1,3AH

D4:

MOVA,40H

MOVCA,@A+DPTR

MOV38H,A

MOVA,P1

CJNEA,38H,D5

AJMPD14

D5:

INC40H

DJNZ37H,D4

MOVA,3AH

RLA

MOV3AH,A

DJNZ39H,D3

SJMPD16

D14:

ACALLPD

D15:

ACALLDISP

MOVP1,#0F0H

MOVA,P1

CJNEA,#0F0H,D15

D16:

RET

;———————————按键功能子程序——————————————

PD:

MOVA,40H

CJNEA,#0,F1

ACALLDIN

AJMPF16

F1:

CJNEA,#1,F2

ACALLDIN

AJMPF16

F2:

CJNEA,#2,F3

ACALLDIN

AJMPF16

F3:

CJNEA,#3,F4

ACALLDIN

AJMPF16

F4:

CJNEA,#4,F5

ACALLDIN

AJMPF16

F5:

CJNEA,#5,F6

ACALLDIN

AJMPF16

F6:

CJNEA,#6,F7

ACALLDIN

AJMPF16

F7:

CJNEA,#7,F8

ACALLDIN

AJMPF16

F8:

CJNEA,#8,F9

ACALLDIN

AJMPF16

F9:

CJNEA,#9,F10

ACALLDIN

AJMPF16

F10:

CJNEA,#10,F11

ACALLBACK

AJMPF16

F11:

CJNEA,#11,F12

ACALLENTER

AJMPF16

F12:

CJNEA,#12,F13

ACALLSZ

AJMPF16

F13:

CJNEA,#13,F14

ACALLCLOSE

AJMPF16

F14:

CJNEA,#14,F15

ACALLTSZ

AJMPF16

F15:

CJNEA,#15,F16

F16:

RET

;————————————数字键输入子程序————————————

DIN:

JB20H.3,F21;定时开始,按键不起作用

CJNER2,#6,F20;已输入六个数,数字键无效

AJMPF21

F20:

INCR2;输入数字个数+1

MOV35H,34H

MOV34H,33H

MOV33H,32H

MOV32H,31H

MOV31H,30H

MOV30H,40H

F21:

RET

;————————————退格键子程序————————————

BACK:

JB20H.3,L1;定时开始,按键不起作用

CJNER2,#0,L0;有数字输入,按键起作用

AJMPL1

L0:

DECR2

MOV30H,31H

MOV31H,32H

MOV32H,33H

MOV33H,34H

MOV34H,35H

MOV35H,#17

L1:

RET

;————————————确定键输入子程序————————————

ENTER:

JB20H.3,L5;定时开始,按键不起作用

CJNER2,#6,L5;数字输入不满6个,按键无效MOVR2,#0;可以重新输入数字

MOV41H,30H;输入数字存入输入暂存区

MOV42H,31H

MOV43H,32H

MOV44H,33H

MOV45H,34H

MOV46H,35H

ACALLXSCSH

JNB20H.2,D6;判断当前是否为新密码输入

ACALLXMM

AJMPL5

D6:

MOVA,41H;输入暂存区与密码比较

CJNEA,50H,L3

MOVA,42H

CJNEA,51H,L3

MOVA,43H

CJNEA,52H,L3

MOVA,44H

CJNEA,53H,L3

MOVA,45H

CJNEA,54H,L3

MOVA,46H

CJNEA,55H,L3

MOVR2,#6;锁开状态,不允许输入数字

CLRP3.1

SETBP3.0

SETBP3.4

SETB20H.0;密码正确标志位

JB20H.1,L2;判断设置键是否按下

CLR20H.2

AJMPL5

L2:

SETB20H.2;输入新密码状态标志位

MOVR2,#0;允许输入数字AJMPL5

L3:

INC3BH;密码错误次数+1

MOVA,3BH

CJNEA,#3,L4;判断密码输入错误几次

CLRP3.3

SETBTR0;密码输入错误3次,启动定时

SETB20H.3;定时开始标志位

AJMPL5

L4:

CLRP3.5

CLRP3.4

L5:

RET

;—————————————关门键子程序—————————————

CLOSE:

JB20H.3,L6;定时开始,按键不起作用

JNB20H.0,L6;该按键只在开门状态有效

ACALLXSCSH

ACALLCSH

L6:

RET

;————————————设置键输入子程序————————————

SZ:

JB20H.3,L7;定时开始,按键不起作用

JNB20H.0,L7;该按键只在开门状态有效

SETB20H.1;设置键有效标志位

MOVR2,#0;按下设置键,允许数字输入

CLRP3.2

L7:

RET

;————————————退出设置键子程序———————————

TSZ:

JB20H.3,L8;定时开始,按键不起作用

JNB20H.1,L8;该按键在设置状态有效

ACALLXSCSH

SETBP3.2

SETBP3.3

SETBP3.4

CLR20H.1;退出设置状态

MOVR2,#6;回到开门状态,不允许数字输入

L8:

RET

;————————————新密码输入子程序————————————

XMM:

MOV50H,41H

MOV51H,42H

MOV52H,43H

MOV53H,44H

MOV54H,45H

MOV55H,46H;

CLRP3.1

SETBP3.0

SETBP3.2

CLR20H.2

MOVR2,#6;开门状态,不允许数字输入RET

;——————————显示缓冲区初始化子程序——————————

XSCSH:

MOV30H,#17

MOV31H,#17

MOV32H,#17

MOV33H,#17

MOV34H,#17

MOV35H,#17

RET

;——————————密码锁基本功能初始化———————————

CSH:

MOVR2,#0

MOVR4,#200

CLR20H.0

CLR20H.1

CLR20H.2

CLR20H.3

CLRP3.0

SETBP3.1

SETBP3.2

SETBP3.3

SETBP3.4

RET

;—————————————中断子程序——————————————

DIST:

MOVTH0,#3CH

MOVTL0,#0B0H;初值重装

DJNZR4,L9

ACALLXSCSH

ACALLCSH

CLRTR0;关中断

L9:

RETI

;——————————延时子程序,延时2ms————————————

DELAY:

MOVR6,#5

D17:

MOVR5,#200

D18:

DJNZR5,D18

DJNZR6,D17

RET

TAB:

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,

DB77H,7CH,39H,5EH,79H,71H,08H,40H,0BFH,086H,

DB0DBH,0CFH,0E6H,0EDH,0FDH,087H,0FFH,0EFH

DAB:

DB0EEH,0DEH,0BEH,7EH,0EDH,0DDH,0BDH,7DH,

DB0EBH,0DBH,0BBH,7BH,0E7H,0D7H,0B7H,77H

END

四.心得体会及建议

对于本次课程设计基本上达到了课题的要求。

因为在该电路中用到了AT89C51单片机,74LS373,数码管作为密码显示,LED作为状态指示灯,单片机的震荡电路和复位电路均为常用的电路模型。

系统在这但是我们对每一个模块的分析还是分析的非常的透彻的。

其中有4×4矩阵键盘接口电路、密码锁的控制

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

当前位置:首页 > 初中教育 > 语文

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

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