《微型计算机原理与接口技术》课程设计一种由微机实现的多功能密码锁设计Word格式文档下载.docx
《《微型计算机原理与接口技术》课程设计一种由微机实现的多功能密码锁设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《《微型计算机原理与接口技术》课程设计一种由微机实现的多功能密码锁设计Word格式文档下载.docx(24页珍藏版)》请在冰豆网上搜索。
一、设计目的………………………………………………………………1
二、设计任务与要求………………………………………………………1
三、整体功能描述…………………………………………………………1
四、总体设计方案论证……………………………………………………1
4.1方案一………………………………………………………………1
4.2方案二………………………………………………………………2
五、硬件设计………………………………………………………………2
5.1键盘…………………………………………………………………3
5.2中断控制……………………………………………………………3
5.3计时…………………………………………………………………4
5.4输入输出接口………………………………………………………4
5.5储存器及片选………………………………………………………5
5.6整机电路图…………………………………………………………5
六、软件设计………………………………………………………………6
6.1程序流程图…………………………………………………………6
6.2程序清单……………………………………………………………7
6.3程序调试运行………………………………………………………7
七、设计总结………………………………………………………………9
八、参考资料………………………………………………………………10
九、附录……………………………………………………………………11
微机原理与接口技术课程设计成绩评定表………………………………21
一、设计目的
通过课程设计掌握控制系统设计的一般步骤,掌握系统总体控制方案的设计方法、8086微型计算机的应用方法、控制算法的设计及硬件设计方法。
复习并学习用软件编程控制硬件。
了解和掌握8086微机应用系统的软硬件设计过程、方法及实现,为以后设计实现8086微机应用系统打下良好的基础。
二、设计任务与要求
(1)密码锁在输入密码正确时控制电控锁开启,同时显示00字样;
当输入密码错误时,发出错误警告,并显示FF字样;
当六次误码输入时,产生报警;
具有密码修改的功能。
(2)选用8086和适当的存储器及接口芯片完成相应的功能,用LED显示器显示电子锁的当前状态;
画出详细的硬件连接图;
给出程序设计思路、画出软件流程图;
给出所有程序清单并加上必要注释;
完成设计说明书(包括封面、目录、设计任务书、硬件设计思路、硬件原理图、软件设计思路、程序流程框图、程序清单、所用器件型号、总结体会、参考文献等)。
三、整体功能描述
本设计为多功能密码锁,使用存储器保存密码防止断电后密码丢失。
工作时按下按键蜂鸣器会发出声音提示按键有效并在数码管有“--”闪烁字样,若相隔1分钟无按键按下,则清零。
在输入密码正确的条件下输出开锁电平,控制电控锁开启,同时显示OPEN字样。
开锁后可按下“复位/修改密码键”实现修改密码功能的转入,之后先输入密码再输入同样的密码确认才可成功修改,修改成功后蜂鸣器会发出三声,数码管“00”闪烁三次提示修改密码成功。
当输入密码错误时,发出错误警告声音,同时显示CLOSE字样,当输入密码错误次数累积够6次后,蜂鸣器会产生90秒的报警声响进行报警。
四、总体设计方案
根据本次设计的设计目的及设计要求,可有下列两种方案:
4.1方案一
在本次设计中,因为密码锁的基本功能使可以判断密码是否正确,以及完成对密码的修改,所以需要用到输入设备以及CPU的接口电路以及相关存储设备;
因为有报警提示功能,所以要用到相关的输出设备以及接口电路。
因为要完成逻辑运算功能,所以必须要有CPU,CPU就选用我们最常用也最熟悉的8086,考虑到8255的端口兼具输入输出功能,灵活方便,所以选用一片8255作为输入输出设备与8086间的借口;
采用0到9数字按键以及相关功能选择的输入;
输出设备方面,采用两位数码管实现题目的状态提示要求,用一个蜂鸣器作为相关的警报,提示的声音输出。
另外,为简化编程,采用8259中断控制器来触发中断实现密码锁工作模式的转换,其中的密码输入及判断功能与密码修改功能分别用两个外部中断来触发中断服务程序来实现。
本设计的密码位数为6位。
4.2方案二
用汇编语言编写程序实现应用程序的功能,从而实现简易计算器汇编程序的设计与实现。
4.2.1使用设备
含有Windows汇编编译环境的MASM软件及Office2003软件的计算机一台。
4.2.2汇编程序编写
汇编程序编写,根据设计要求编写实现该功能的源程序代码。
4.2.3使用方法
在masm环境下运行本程序,按提示输入正确密码,则在屏幕上显示00字样,否则显示FF字样。
五、硬件设计
本设计使用了8086、8259A、8255、8253、2764、74LS138、74LS148、地址锁存器、数码管以及74系列逻辑门、蜂鸣器、开关等芯片与元器件,实现了键盘输入、中断控制、计时、按键响应、开锁及报警等功能模块,其硬件连接框图如图1所示。
图1硬件连接框图
5.1键盘
本设计8255A的A口与两片级联的74LS148组合接用于输入键盘,实现对输入键号的读入。
工作时,8086通过程序扫描键盘,当无键盘按下时,74LS148工作于无输入状态,GS口输出高电平,接到PA4作为识别有无按键按下信号,PA口输入为10H;
当有按键输入时,74LS148输入口接到低电平,输入有效,经编码后键号转换为相应二进制编码送到PA口,成为能为CPU识别的代表键值的有效信号。
读入的按键信号经8086判断后,根据不同的功能,输出不同的按键响应,并转移到相对应的功能服务程序。
本设计总共用到11位按键,包括10位数码输入按键及一位“复位/修改密码”按键,电路设计总共可用按键有16位,供升级功能使用。
键盘电路如下图2所示:
5.2中断控制
用一片8259A芯片作为中断控制接口电路。
其中IR0与IR1中断开放,单片工作于非缓冲方式,电平触发,优先级是普通全嵌套方式。
可通过编程开中断,通过编程或者8253计时器关中断。
电路连接如图3所示:
图2键盘连接图
5.3计时
采用8253计时器控制中断的关断,实现单次输入密码超时则退出输入密码中断子程序、报警器响铃时间控制等功能。
电路如图3所示。
图3中断控制器连接图
5.4输入输出接口
输入输出接口采用可编程的8255A,8255A是Intel系列的并行接口芯片,常作为微机系统与外部设备接口。
在连接电路时8255的PC0、PC1接到数码管片选,电路连接如图3所示。
同时用8255A的B口控制数码管的显示,C口片PC0、PC1选数码管,PC2用来驱动SPEAK发出报警电路如图4所示。
图4按键响应、报警、开锁功能电路
5.5.储存器及片选电路
存储器及片选电路采用一片2764存储器和一片74LS138,连接电路如图5所示:
图5片选及存储器电路
5.6整机电路图:
见附录一
六、软件设计
6.1程序流程图
图6程序流程图
6.2程序清单:
见附录二
6.3程序调试运行
6.3.1程序编写
第一步:
对要实现的功能进行大体分析,画出程序的总流程图,如图6所示:
第二步:
将这些功能的实现分别编写程序来实现。
第三步;
编写代码,上机调试和运行程序。
6.3.2上机编译与调试
编辑源程序:
即建立.ASM文件。
汇编源程序。
源文件建立后,要用汇编程序对源文件进行汇编,以便产生二进制的目标文件(.OBJ文件),如图7所示:
第三步:
用LINK程序产生.EXE文件。
汇编程序已产生出二进制的代码文件(.OBJ),但.OBJ文件并不是可执行文件,还必须使用(LINK)把.OBJ文件转换为可执行的.EXE文件。
用LINK.EXE连接为可执行文件界面如图8所示。
第四步:
程序的调试及运行
图7程序汇编
图8生成可执行文件
图9程序运行
七、设计总结与体会
通过本次课程设计,我对8255,8253,8259等芯片的各引脚的功能、名称、工作方式、内部结构有了更深层次的掌握,对这三种芯片的编程从陌生转向熟练。
通过这次的微机课程设计,对书本所学的知识有了进一步的巩固,并且对三种芯片各自的功能、工作方式有了明确性的区分。
在设计过程中遇到问题时,遇到含糊不清或者看不懂的地方及时翻阅相关课本知识。
有时看课本也没有结果时就和组员互相探讨。
在设计过程中,才发现自己遗漏许多课本的相关知识,对各芯片的功能及其工作方式掌握的不够清楚。
这说明在实践中才能真正的掌握从课本中所学的知识。
这次的课程设计让我为一年后的毕业设计打下了基础。
八、参考资料
[1]冯博琴,吴宁.微型计算机原理与接口技术.北京清华大学出版社(第二版),2007.
[2]赵国相等.微型计算机原理与汇编语言程序设计.北京科学出版社,2004.
[3]吴荣光,吕钧星.微型计算机原理及应用.广州华南理工大学出版社,2006.
[4]张睿,赵艳华,刘志刚.精通ProtelDXP2004电路设计.北京电子工业出版社2005.
[5]耿丹,梁佑斌.32位微型计算机原理及应用实验指导书.广州华南理工大学教材供应中心,2001.
[6]王爽.汇编语言(第2版).北京清华大学出版社,2008.
[7]康华光等.电子技术基础(数字部分)第五版.华中科技大学电子技术课程组编.北京高等教育出版社,2006
九、附录
附录一:
电路基本连接图
附录二:
程序清单
(一)
DATASEGMENT;
以下代码写入RAM
CODEINDB6DUP(?
);
输入的密码保存的地址
CODECHDB6DUP(?
修改后的密码的保存地址
CODEORDB0,0,0,0,0,0;
初始密码
ORG01000H;
下面的代码写入ROM
DTABLEDB80H,02H,10H,3FH,79H,71H,60H,5BH
DATAENDS
STACKSSEGMENT
STADB20DUP(?
)
STACKSENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACKS
START:
MOVSI,OFFSETCODEIN
MOVDI,OFFSETCODEOR
MOVBP,OFFSETDTABLE
MOVAL,09H;
(键盘输入中断)设定密码输入的中断向量(即IR0的中断向量)
MOVAH,25H
INT21H
PUSHBX
PUSHDS
MOVDX,SEGINPUT
MOVDS,DX
MOVDX,OFFSETINPUT
(键盘输入中断)设定密码修改的中断向量(即IR1的中断向量)
MOVDX,SEGCHANGE
MOVDX,OFFSETCHANGE
MOVAL,1BH;
初始化8259
OUT10H,AL;
单片工作,高电平有效
MOVAL,08H
OUT11H,AL
MOVAL,03H
MOVAL,0FCH
OUT11H,AL;
开放IR0,IR1
MOVAL,20H
OUT10H,AL
MOVAL,68H
MOVAL,82H;
初始化8255A口方式0输出,B口方式0输入,C口输出
OUT06H,AL
AA:
STI
MOVAL,00H
OUT04H,AL;
输出低电平使数码管熄灭
INPUT:
;
密码输入程序
CLI
MOVDL,00H
IN1:
CMPDL,06H;
判断是否连续6次输入错误密码
JNZIN2;
若不是这继续输入
MOVCX,03FFH;
使蜂鸣器长鸣报警(通过延时实现)
R1:
MOVDH,3FH
MOVAL,02H
OUT00H,AL;
输出高电平使蜂鸣器发声
R2:
DECDH
CMPDH,00H
JNZR2
LOOPR1
JMPIN4;
报警完毕,跳至中断返回
IN2:
输入密码
MOVAL,[BP+4]
数码管显示‘--’提示输入密码
MOVBX,0H
MOVCX,03H;
设置循环次数
IN3:
MOVAL,[BP]
数码管提示输入位数
CALLCCSCAN;
调用键盘扫描程序
CMPAL,0BH;
判断是否按下返回键
JZIN4
MOV[BX+SI],AL;
保存输入密码
INCBX
INCBP
LOOPIN3
MOVBP,OFFSETDTABLE;
判断密码是否正确
CLD
MOVCX,03
REPZCMPSB;
JNZWRO;
若错误就报警
MOVAL,[BP+3]
若正确数码管就显示‘00‘
MOVAL,04H
且给LED高电平使其点亮
XORDL,AL
JMPIN4
WRO:
出错报警部分
INCDL
MOVAL,[BP+5];
数码管显示’FF‘提示错误
OUT04H,AL
设定蜂鸣器响的次数
W1:
MOVAL,02H;
使蜂鸣器发声
OUT00H,AL
W2:
延时
MOVBL,3FH
DECBL
CMPBL,00H
JNZW2
XORAL,AL;
输出低电平关蜂鸣器
W3:
JNZW3
LOOPW1
JMPIN1;
中断返回
IN4:
IRET
CHANGE:
密码修改程序
INP1:
CMPDL,06H
JNZINP2
MOVCX,03FFH
RR1:
RR2:
JNZRR2
LOOPRR1
JMPC4
INP2:
MOVBX,0000H
MOVCX,03H
INP3:
CALLCCSCAN
CMPAL,0BH
MOV[BX+SI],AL
LOOPINP3
REPZCMPSB
JNZWRRO
XORDL,DL
JMPCHANGE
WRRO:
MOVAL,[BP+5]
WW1:
WW2:
JNZWW2
XORAL,AL
WW3:
JNZWW3
LOOPWW1
JMPINP1;
当密码输入正确时,转入密码修改部分
CHAN:
修改密码部分
MOVDI,OFFSETCODECH
MOVAL,[BP+6];
数码管提示第一次输入
Y1:
LOOPY1
C1:
JZC4
存放在输入密码缓冲区
LOOPC1
MOVAL,[BP+7]
数码管提示第二次输入
Y2:
LOOPY2
C2:
MOV[BX+DI],AL;
存放在修改密码缓冲区
LOOPC2
JNZCHAN;
判断两次输入的密码是否一致
REPMOVSB;
若是相等那就保存密码
且蜂鸣器响一下提示修改成功
C3:
LOOPC3
C4:
CCSCANPROCNEAR;
键盘扫描子程序
INAL,02H
NOTAL
ANDAL,0FH
CMPAL,00H;
判断是否有键按下
JNZK1
JMPCCSCAN
K1:
MOVCX,0EFFH;
LOOPK1
CMPAL,00H
JZCCSCAN
MOVAH,60H;
扫描第一列
K2:
MOVAL,AH
JNZK3
ORAH,01H
RORAH,1;
扫描下一列
ANDAH,0FH
JMPK2
K3:
ADDAL,AH
RET
CCSCANENDP
CODEENDS
ENDSTART
程序清单
(二)利用DOS调用显示
DATASEGMENT
TABLEDB'
888'
STRING1DB'
Pleaseenterapassward:
'
0DH,0AH,'
$'
STRING2DB'
Wrong!
STRING3DB'
OPEN!
'
STRING4DB'
CLOSE!
BUFFERDB40,?
40DUP(0)
TAB_LENEQU26
;
STACKSEGMENT
DB100DUP(0)
STACKENDS
ASSUMECS:
DATA,ES:
STACK
MOVAX,DATA
MOVDS,AX
MOVES,AX
LEADX,STRING1
MOVAH,09H
INT21H
LEADX,BUFFER
MOVAH,0AH
MOVSI,DX
INCSI
MOVBL,[SI]
MOVBH,0
LEADI,TABLE
MOVCX,TAB_LEN
CMPCX,BX
JNCGOON
LEADX,STRING2
JMPEXIT
GOON:
CLD
MOVAL,[SI]
SCAN:
REPNZSCASB
JZMATCH
ERROR:
LEADX,STRING4
MATCH:
INCCX
JCERROR
PUSHCX
PUSHSI
PUSHDI
MOVCX,BX
DECDI
REPZCMPSB
POPDI
POPSI
POPCX
JZFOUND
JCXZERROR
JMPSCAN
FOUND:
LEADX,STRING3
EXIT:
MOVAH,09H
MOVAH,4CH
ENDSTART
微机原理与接口技术课程设计成绩评定表
姓名
马健
学号
0814119
专业班级
电气工程08及1班
课程设计题目:
一种由微机实现的多功能密码锁设计
课程设计答辩或质疑记录:
成绩评定依据:
评定项目
评分成绩
1.选题合理、目的明确(10分)
2.设计方案可行性、创新性(20分)
3.设计结果(系统原理图、源程序、调试运行结果)(30分)
4.平时成绩(态度认真、遵守纪律)(10分)
5.设计报告的规范性、参考文献充分(不少于5篇)(10分)