课程设计张庆飞.docx
《课程设计张庆飞.docx》由会员分享,可在线阅读,更多相关《课程设计张庆飞.docx(18页珍藏版)》请在冰豆网上搜索。
课程设计张庆飞
编号0814147
课程设计
(2008级本科)
题目:
一种由微机实现的多功能密码锁设计
系(部)院:
物理与机电工程学院
专业:
电气工程及其自动化
作者姓名:
张庆飞
指导教师:
张静职称:
副教授
完成日期:
2011年6月28日
二〇一一年六月
学生姓名
张庆飞
学号
0814147
专业方向
电力系统
班级
08级1班
题目名称
一种由微机实现的多功能密码锁
一、设计内容及技术要求:
密码锁在输入密码正确的条件下输出开锁电平,控制电控锁开启,同时显示00字样。
当输入密码错误时,发出错误警告声音,同时显示FF字样。
当六次误码输入的条件下,产生报警电平报警。
采用90秒定时中断,输出控制信号,防止长时间无效操作。
二、课程设计总结报告要求
1、选用8086和适当的存储器及接口芯片完成相应的功能。
2、用LED显示器显示电子锁的当前状态。
3、画出详细的硬件连接图。
4、给出程序设计思路、画出软件流程图。
5、给出所有程序清单并加上必要注释。
6、完成设计说明书(包括封面、目录、设计任务书、硬件设计思路、硬件原理图、软件设计思路、程序流程框图、程序清单、所用器件型号、总结体会、参考文献等)。
三、设计进度
第一周:
星期一上午讨论设计题目
星期一下午查资料
星期二至星期五完成对硬件电路的基本设计
第二周:
星期一至星期二完成软件流程图及软件设计
星期三至星期四软硬件统调,写说明书,画图
星期五答辩
指导教师签字:
河西学院本科生课程设计任务书
目录
一、设计目标…………………………………………………………1
二、设计要求…………………………………………………………1
三、整体功能描述……………………………………………………1
四、设计思路…………………………………………………………1
五、硬件设计功能模块………………………………………………2
1.键盘……………………………………………………………2
2.中断控制………………………………………………………2
3.计时……………………………………………………………2
4.按键响应………………………………………………………2
5.报警……………………………………………………………3
6.储存器及片选…………………………………………………3
7.整机电路………………………………………………………5
五、程序流程图………………………………………………………6
六、程序清单…………………………………………………………6
七、设计总结…………………………………………………………14
一、设计目标
1.密码锁在输入密码正确的条件下输出开锁电平,控制电控锁开启,同时显示00字样。
2.当输入密码错误时,发出错误警告声音,同时显示FF字样。
3.当六次误码输入的条件下,产生报警电平报警。
4.还可以实现对密码的修改,修改成功后,蜂鸣器发出确认音。
二、设计要求
1、选用8086和适当的存储器及接口芯片完成相应的功能。
2、用LED显示器显示电子锁的当前状态。
3、画出详细的硬件连接图。
4、给出程序设计思路、画出软件流程图。
5、给出所有程序清单并加上必要注释。
6、完成设计说明书(包括封面、目录、设计任务书、硬件设计思路、硬件原理图、软件设计思路、程序流程框图、程序清单、所用器件型号、总结体会、参考文献等)。
三、整体功能描述
本设计为多功能密码锁,使用存储器保存密码防止断电后密码丢失。
工作时按下按键蜂鸣器会发出声音提示按键有效并在数码管有“--”闪烁字样,若相隔1分钟无按键按下,则清零。
在输入密码正确的条件下输出开锁电平,控制电控锁开启,同时显示00字样。
开锁后可按下“复位/修改密码键”实现修改密码功能的转入,之后先输入密码再输入同样的密码确认才可成功修改,修改成功后蜂鸣器会发出三声,数码管“00”闪烁三次提示修改密码成功。
当输入密码错误时,发出错误警告声音,同时显示FF字样,当输入密码错误次数累积够6次后,蜂鸣器会产生90秒的报警声响进行报警。
四、设计思路
在本次设计中,因为密码锁的基本功能使可以判断密码是否正确,以及完成对密码的修改,所以需要用到输入设备以及CPU的接口电路以及相关存储设备;因为有报警提示功能,所以要用到相关的输出设备以及接口电路。
首先,因为要完成逻辑运算功能,所以必须要有CPU,CPU就选用我们最常用也最熟悉的8086,分别用一个A28F512作为外部存储设备,因为ROM只读不可断电信息不丢失,用来存储相关程序,而ram可读可写,但断电信息会丢失,故用来存储运行期间产生的相关数据。
考虑到8255的端口兼具输入输出功能,灵活方便,所以选用一片8255作为输入输出设备与8086间的借口;采用0到9数字按键以及相关功能选择的输入;输出设备方面,采用两位数码管实现题目的状态提示要求,用一个蜂鸣器作为相关的警报,提示的声音输出。
另外,为简化编程,采用8259中断控制器来触发中断实现密码锁工作模式的转换,其中的密码输入及判断功能与密码修改功能分别用两个外部中断来触发中断服务程序来实现。
本设计的密码位数为6位。
五、硬件设计功能模块
本设计使用了8086、8259A、8255、8253、A28F512、74LS138、74LS148、地址锁存器、数码管以及74系列逻辑门、蜂鸣器、开关等芯片与元器件,实现了键盘输入、中断控制、计时、按键响应、开锁及报警等功能模块。
以下一一详述。
1.键盘
本设计8255A的A口与两片级联的74LS148组合接用于输入键盘,实现对输入键号的读入。
工作时,8086通过程序扫描键盘,当无键盘按下时,74LS148工作于无输入状态,GS口输出高电平,接到PA4作为识别有无按键按下信号,PA口输入为10H;当有按键输入时,74LS148输入口接到低电平,输入有效,经编码后键号转换为相应二进制编码送到PA口,成为能为CPU识别的代表键值的有效信号。
读入的按键信号经8086判断后,根据不同的功能,输出不同的按键响应,并转移到相对应的功能服务程序。
本设计总共用到11位按键,包括10位数码输入按键及一位“复位/修改密码”按键,电路设计总共可用按键有16位,供升级功能使用。
键盘电路如下图1所示:
2.中断控制
用一片8259A芯片作为中断控制接口电路。
其中IR0与IR1中断开放,单片工作于非缓冲方式,电平触发,优先级是普通全嵌套方式。
可通过编程开中断,通过编程或者8253计时器关中断。
电路连接如图2所示:
3.计时
采用8253计时器控制中断的关断,实现单次输入密码超时则退出输入密码中断子程序、报警器响铃时间控制等功能。
电路如图2所示。
4.按键响应
8255PC0、PC1接到数码管片选、PC2接到蜂鸣器、PC3接到电子锁。
电路连接如图3所示:
5.报警功能
同时用8255A的B口控制数码管的显示,C口片PC0、PC1选数码管,PC2用来驱动SPEAK发出报警。
电路如图3所示。
6.储存器及片选电路:
存储器及片选电路采用一片A28F512和一片74LS138,连接电路如图4所示:
图1键盘连接图
图2中断控制器连接图
图3按键响应、报警、开锁功能电路
图4片选及存储器电路
7.整机电路图:
五、软件流程图:
六、程序清单:
各芯片地址:
825930H
825560H
825320H
存储器2000H
DATASSEGMENT;程序初始化
AGAINDB'0','0','0','0','0','0'
DATA2DB6DUP(?
)
DATA3DB6DUP(?
)
DATASENDS
STACKSSEGMENT
STADB100DUP(?
)
STACKSENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKS,ES:
DATAS
START:
MOVAX,DATAS
MOVDS,AX
MOVAX,STACKS
MOVSS,AX
MOVAX,0;初始化中断向量表
MOVES,AX
MOVBX,84H;IR1中断类型码21h*4=84h
MOVAX,OFFSETINPUT
MOVES:
[BX],AX
MOVAX,SEGINPUT;段地址
MOVES:
[BX+2],AX
MOVAL,90H;8255初始化,A口方式0,输入;B、c口方式0,输出
OUT63H,AL
MOVAL,36H;8253初始化,方式0
OUT23H,AL
MOVAL,13H;8259A初始化,ICW1
OUT30H,AL
MOVAL,20H;ICW2
OUT31H,AL
MOVAL,01;ICW4
OUT31H,AL
MOVAL,00;OCW1
OUT31H
MOVCX,06H;从RAM里读出密码到DATA2,密码为6位
MOVSI,2000H
MOVDI,OFFSETDATA2
LP1:
MOVAL,[SI]
MOV[DI],AL
INCSI
INCDI
LOOPLP1;读入密码结束
MOVBX,00H;输入密码次数计数器初始值
RE:
MOVAL,03H
OUT62H,AL
MOVAL,71H;未开锁,B口输出显示FF
OUT61H,AL
MOVCX,06H
MOVSI,OFFSETDATA2;定义SI、DI
MOVDI,OFFSETDATA3
HLT
STI;停机,开中断,等待密码输入
CLD
INCBX;输入密码次数加1
REPECMPSB;将输入六位数码与密码比较
CMPCX,00
JEOPEN;相等则转到开锁
CMPBX,06H;输入错误且累积未够6次,重新输入
JNERE
MOVAL,07H;若错误次数累积够6次,触发蜂鸣器报警
OUT62H,AL
MOVAL,71H;B口输出FF
OUT61H,AL
MOVAL,2048H;报警铃响计时,90秒后关断蜂鸣器,保持显示FF
OUT20H,AL
MOVAL,03H
OUT62H,AL
JMPDOON;跳到结束
OPEN:
MOVAL,0BH;开锁,并显示00
OUT62,AL
MOVAL,3FH
OUT61H
C1:
INAL,60H
CALLD20MS;去抖动
CMPAL,00H
JEC1
CMPAL,0AH;扫描键盘,是否有修改密码建(10)输入
JNEDOON;没有则结束
C0:
MOVSI,OFFSETDATA2;重新定义SI、DI
MOVDI,OFFSETDATA3
MOVCX,06H
HLT
STI;开中断,输入修改程序
C2:
MOVAL,[DI]
MOV[SI],AL
INCSI
INCDI
LOOPC2;输入密码转移到data2
INAL,60H;扫描键盘,若有修改密码键输入则重新修改
CALLD20MS
CMPAL,0AH
JEC0
C3:
MOVSI,OFFSETDATA2;再次输入密码确认
MOVDI,OFFSETDATA3
MOVCX,06H
HLT
STI
REPECMPSB
CMPCX,00;若data2与data3不相等则从新输入
JNEC3
MOVCX,06H;若相等,则从DATA2写密码到RAM
MOVSI,2000H
MOVDI,OFFSETDATA2
C4:
MOVAL,[DI]
MOV[SI],AL
INCSI
INCDI
LOOPC4;转存密码结束
CALLRING2;蜂鸣三次,表示修改好了
INAL,60H;扫描键盘,若有修改密码键输入则重新修改
CALLD20MS
CMPAL,0AH
JEC0
JMPDOON;修改完毕,转到结束
中断子程序
INPUT:
PUSHAX;保护现场
PUSHDS
PUSHBX
PUSHCX
PUSHDI
PUSHSI
MOVAL,1020H;8253开始一分钟输入限制计时
OUT20H,AL
IN1:
INAL,60H;读A口
CALLD20MS;去抖动
CMPAL,10H
JEIN1;若无按键按下,则重新扫描
CMPAL,0AH;若有按键按下,比较是否为复位键
JNEIN3
CALLRING1;为复位键则输出按键有效提示音并重新输入
MOVCX,06H
MOVDI,OFFSETDATA3
JMPIN1
IN3:
CALLRING1;若不是复位键,则把键值送到data3
MOV[DI],AL
INCDI
LOOPIN1;循环,扫描下一次按键,直到输入够6位密码
MOVAL,01
OUT30,AL
POPSI;中断结束恢复现场
POPDI
POPCX
POPBX
POPDS
POPAX
CLI;关中断
IRET;中断返回
DOON:
MOVAH,4CH
INT21H
20ms延时子程序
D20MSPROCNEAR
PUSHCX
MOVCX,0080H
D1:
DECCX
LOOPD1;循环
POPCX
RET;返回
D20MSENDP
输入按键响应子程序
RING1PROCNEAR
PUSHAX;保护AX\CX
PUSHCX
MOVCX,05H;设置提示音为0.1秒
MOVAL,07H;输出显示“--”字样
OUT62H,AL
MOVAL,40H
OUT61H,AL
R1:
CALLD20MS
LOOPR1
MOVAL,00H;数码管灭
OUT62H,AL
POPCX
POPAX
RET;返回
RING1ENDP
修改确认铃声子程序
RING2PROCNEAR
PUSHAX
PUSHCX
MOVCX,03H;三次0.1秒的提示声
R2:
MOVAL,0FH;开铃声
OUT62H,AL
MOVAL,40H
OUT61H,AL
CALLD20MS;延时0.1秒
CALLD20MS
CALLD20MS
CALLD20MS
CALLD20MS
MOVAL,00H
OUT62H,AL;关铃声
CALLD20MS;延时0.1秒
CALLD20MS
CALLD20MS
CALLD20MS
CALLD20MS
LOOPR2;循环
MOVAL,0BH;恢复开锁状态
OUT62H,AL
MOVAL,3FH
OUT61H,AL
POPCX
POPAX
RET
RING1ENDP;返回
CODESENDS
ENDSTART;结束
七、设计总结
1、遇到的问题及解决方法
2、课程设计总结
通过本次课程设计,我进一步了解8255,8253,8259等芯片的内部结构,熟悉各种基本工作模式和编程方法;
加深了对8086中断系统工作过程的了解;
学会综合应用多种微机接口与单元电路,构成满足要求的小型微机应用系统;
学会了CPU与存储器的连接方法,扩展存储空间的方法。
3、参考资料
[1]冯博琴,吴宁.微型计算机原理与接口技术.北京清华大学出版社(第二版),2007.
[2]赵国相等.微型计算机原理与汇编语言程序设计.北京科学出版社,2004.
[3]张睿,赵艳华,刘志刚.精通ProtelDXP2004电路设计.北京电子工业出版社2005.