第一篇:微机原理课程设计++多功能密码锁
微机原理课程设计报告
学院:
专业: 班级: 姓名:
指导老师:
设计任务:多功能密码锁
目录
一、设计目标
二、设计要求
三、整体功能描述
四、硬件设计功能模块 1.键盘 2.中断控制 3.计时 4.按键响应 5.报警 6.储存器及片选 7.整机电路
五、程序流程图
六、程序清单
七、设计总结
一、设计目标
1.密码锁在输入密码正确的条件下输出开锁电平,控制电控锁开启,同 显示O字样。
2.当输入密码错误时,发出错误警告声音,同时显示C字样。3.当六次误码输入的条件下,产生报警电平报警。
4.还可以实现对密码的修改,修改成功后,蜂鸣器发出确认音。
二、设计要求
1、选用8088和适当的存储器及接口芯片完成相应的功能。
2、用LED显示器显示电子锁的当前状态。
3、画出详细的硬件连接图。
4、给出程序设计思路、画出软件流程图。
5、给出地址分配表。
6、给出所有程序清单并加上必要注释。
7、完成设计说明书(列出参考文献,所用器件型号)。
三、整体功能描述
本设计为多功能密码锁,使用存储器保存密码防止断电后密码丢失。工作时按下按键蜂鸣器会发出声音提示按键有效并在数码管有“--”闪烁字样,若相隔1分钟无按键按下,则清零。在输入密码正确的条件下输出开锁电平,控制电控锁开启,同时显示O字样。开锁后可按下“复位/修改密码键”实现修改密码功能的转入,之后先输入密码再输入同样的密码确认才可成功修改,修改成功后蜂鸣器会发出三声,数码管“O”闪烁三次提示修改密码成功。当输入密码错误时,发出错误警告声音,同时显示FF字样,当输入密码错误次数累积够6次后,蜂鸣器会产生90秒的报警声响进行报警。
四、硬件设计功能模块
本设计使用了8088、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.中断控制
用一片8259芯片作为中断控制接口电路。可通过编程开中断,通过编程或者8253计时器关中断。电路连接如下:
图2 中断控制器连接图 3.计时
采用8253计时器控制中断的关断,实现单次输入密码超时则退出输入密码中断子程序、报警器响铃时间控制等功能。电路如图2所示。
4.按键响应
8255PC0、PC1接到数码管片选、PC2接到蜂鸣器、PC3接到电子锁。电路连接如图3所示:
图3 按键响应、报警、开锁功能电路 5.报警功能
同时用8255A的B口控制数码管的显示,C口片PC0、PC1选数码管,PC2用来驱动SPEAK发出报警。电路如图3所示。
6.储存器及片选电路:
图4 片选及存储器电路
7.整机电路图:
五、软件流程图:
六、程序清单:
各芯片地址:8259 30H
8255 60H
8253 20H
存储器
2000H
DATAS SEGMENT
;程序初始化
DATA1 DB '0','0','0','0','0','0'
DATA2 DB 6 DUP(?)
DATA3 DB 6 DUP(?)
DATA4 DB 6 DUP(?)DATAS ENDS
STACKS SEGMENT PARA STACK'STACK' STA DB 100 DUP(?)TOP EQU LENGTH STA STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS,ES:DATAS START:
MOV AX,DATAS
MOV DS,AX
MOV AX,STACKS
MOV SS,AX
MOV SP,TOP
MOV AX,0
;初始化中断向量表
MOV ES,AX
MOV BX,84H
;IR1中断类型码21h*4=84h
MOV AX,OFFSET INPUT
MOV ES:[BX],AX
MOV AX,SEG INPUT
;段地址
MOV ES:[BX+2],AX
MOV AL,90H
;8255初始化,A口方式0,输入;B、c口方式0,输出
OUT 63H,AL MOV AL,36H
;8253初始化,方式0 OUT 23H,AL
MOV AL,13H
;8259A初始化,ICW1
OUT 30H,AL
MOV AL,20H
;ICW2
OUT 31H,AL
MOV AL,01
;ICW4
OUT 31H,AL
MOV AL,00
;OCW1
OUT 31H
MOV CX,06H
;从RAM里读出密码到DATA2,密码为6位
MOV SI,2000H
MOV DI,OFFSET DATA2 LP1:MOV AL,[SI]
MOV [DI],AL
INC SI
INC DI
LOOP LP1
;读入密码结束
MOV BX,00
;输入密码次数计数器初始值 RE: MOV AL,03H
OUT 62H,AL
MOV AL,71H
;未开锁,B口输出显示FF
OUT 61H,AL
MOV CX,06H
MOV SI,OFFSET DATA2
;定义SI、DI
MOV DI,OFFSET DATA3
HLT
STI
;停机,开中断,等待密码输入
CLD
INC BX
;输入密码次数加1
REPE CMPSB
;将输入六位数码与密码比较
CMP CX,00
JE OPEN
;相等则转到开锁
CMP BX,06H
;输入错误且累积未够6次,重新输入
JNE RE
MOV AL,07H
;若错误次数累积够6次,触发蜂鸣器报警
OUT 62H,AL
MOV AL,71H
;B口输出FF
OUT 61H,AL MOV AL,2048H
;报警铃响计时,90秒后关断蜂鸣器,保持显示FF
OUT 20H,AL MOV AL,03H OUT 62H,AL
JMP DOON
;跳到结束
OPEN:MOV AL,0BH
;开锁,并显示00
OUT 62,AL
MOV AL,3FH
OUT 61H C1: IN AL,60H
CALL D20MS
;去抖动
CMP AL,00H
JE C1
CMP AL,0AH
;扫描键盘,是否有修改密码建(10)输入
JNE DOON
;没有则结束
C0: MOV SI,OFFSET DATA2
;重新定义SI、DI
MOV DI,OFFSET DATA3
MOV CX,06H
HLT
STI
;开中断,输入修改程序 C2: MOV AL,[DI]
MOV [SI],AL
INC SI
INC DI
LOOP C2
;输入密码转移到data2
IN AL,60H
;扫描键盘,若有修改密码键输入则重新修改
CALL D20MS
CMP AL,0AH
JE C0 C3: MOV SI,OFFSET DATA2;再次输入密码确认
MOV DI,OFFSET DATA3
MOV CX,06H
HLT
STI
REPE CMPSB
CMP CX,00
;若data2与data3不相等则从新输入
JNE C3
MOV CX,06H
;若相等,则从DATA2写密码到RAM
MOV SI,2000H
MOV DI,OFFSET DATA2 C4: MOV AL,[DI]
MOV [SI],AL
INC SI
INC DI
LOOP C4
;转存密码结束
CALL RING2
;蜂鸣三次,表示修改好了
IN AL,60H
;扫描键盘,若有修改密码键输入则重新修改
CALL D20MS
CMP AL,0AH
JE C0
JMP DOON
;修改完毕,转到结束
;中断子程序
INPUT: PUSH AX
;保护现场
PUSH DS
PUSH BX
PUSH CX
PUSH DI
PUSH SI
MOV AL,1020H
;8253开始一分钟输入限制计时
OUT 20H,AL IN1:
IN AL,60H
;读A口
CALL D20MS
;去抖动
CMP AL,10H
JE IN1
;若无按键按下,则重新扫描
CMP AL,0AH
;若有按键按下,比较是否为复位键
JNE IN3
CALL RING1
;为复位键则输出按键有效提示音并重新输入
MOV CX,06H
MOV DI,OFFSET DATA3
JMP IN1 IN3:
CALL RING1
;若不是复位键,则把键值送到data3
MOV [DI],AL
INC DI
LOOP IN1
;循环,扫描下一次按键,直到输入够6位密码
MOV AL,01
OUT 30,AL
POP SI
;中断结束恢复现场
POP DI
POP CX
POP BX
POP DS
POP AX
CLI
;关中断
IRET
;中断返回
DOON: MOV AH,4CH
INT 21H
;20ms延时子程序
D20MS PROC NEAR
PUSH CX
MOV CX,0080H D1: DEC CX
LOOP D1
;循环
POP CX
RET
;返回 D20MS ENDP
;输入按键响应子程序
RING1 PROC NEAR
PUSH AX
;保护AXCX
PUSH CX
MOV CX,05H
;设置提示音为0.1秒
MOV AL,07H
;输出显示“--”字样
OUT 62H,AL
MOV AL,40H
OUT 61H,AL R1: CALL D20MS
LOOP R1
MOV AL,00H
OUT 62H,AL
POP CX
POP AX
RET
RING1 ENDP
;修改确认铃声子程序
RING2 PROC NEAR
PUSH AX
PUSH CX
MOV CX,03H
R2: MOV AL,0FH
OUT 62H,AL
MOV AL,40H
OUT 61H,AL
CALL D20MS
CALL D20MS
CALL D20MS
CALL D20MS
CALL D20MS
MOV AL,00H
OUT 62H,AL
CALL D20MS
CALL D20MS
CALL D20MS
CALL D20MS
CALL D20MS
LOOP R2
MOV AL,0BH
OUT 62H,AL
;数码管灭
;三次0.1秒的提示声
;开铃声
;延时0.1秒
;关铃声
;延时0.1秒
;循环
;恢复开锁状态
;返回
MOV AL,3FH
OUT 61H,AL
POP CX
POP AX
RET RING1 ENDP
;返回 CODES ENDS END START
;结束
七、设计总结
1、遇到的问题及解决方法
首先遇到的问题是键盘的设计,刚开始想用8279,但是对8279不够熟悉,研究了一下就放弃了,再而想到用8255的A、B口组合64位矩阵键盘或者用C口低4位与高4位组合的16位键盘,但最后还是使用了开关与编码器组合的形式组成16位键盘,简单明了,但是还没有解决双键同时按下的问题。
再而由于学8259的时候不够认真,所以开始写8259初始化的时候也显的力不从心,最终参考了书本和其他资料,还是写了出来。
设计中接触到的另一个问题是密码的储存的问题,刚开始没有想到cpu关机后密码消失的问题,后来加了一篇存储器实现了密码的保存。
遇到的其他问题都跟同学们讨论而得到了一定的解决。
2、课程设计总结
通过本次课程设计,我进一步了解 8255,8253,8259等芯片的内部结构,熟悉各种基本工作模式和编程方法;
加深了对 8086中断系统工作过程的了解;
学会综合应用多种微机接口与单元电路,构成满足要求的小型微机应用系统; 学会了CPU与存储器的连接方法,扩展存储空间的方法。
3、参考资料
《微型计算机原理及应用》 吴荣光 吕钧星 编著,华南理工大学出版社 《微型计算机原理与汇编语言程序设计》 赵国相等编著,科学出版社 《精通Protel DXP 2004电路设计》张睿 赵艳华 刘志刚 编著,电子工业出版社
第二篇:微机原理课程设计(电子密码锁)
一、设计目的
通过课程设计掌握控制系统设计的一般步骤,掌握系统总体控制方案的设计方法、8086微型计算机的应用方法、控制算法的设计及硬件设计方法。复习并学习用软件编程控制硬件。了解和掌握8086微机应用系统的软硬件设计过程、方法及实现,为以后设计实现8086微机应用系统打下良好的基础。
二、设计任务与要求
(1)密码锁在输入密码正确时控制电控锁开启,同时显示00字样;当输入密码错误时,发出错误警告,并显示FF字样;当3次误码输入时,产生报警;具有密码修改的功能。
(2)选用8086和适当的存储器及接口芯片完成相应的功能,用LED显示器显示电子锁的当前状态;画出详细的硬件连接图;给出程序设计思路、画出软件流程图;给出所有程序清单并加上必要注释;完成设计说明书(包括封面、目录、设计任务书、硬件设计思路、硬件原理图、软件设计思路、程序流程框图、程序清单、所用器件型号、总结体会、参考文献等)。
三、整体功能描述
本设计为多功能密码锁,使用存储器保存密码防止断电后密码丢失。工作时按下按键蜂鸣器会发出声音提示按键有效并在数码管有“--”闪烁字样,若相隔1分钟无按键按下,则清零。在输入密码正确的条件下输出开锁电平,控制电控锁开启,同时显示OPEN字样。开锁后可按下“复位/修改密码键”实现修改密码功能的转入,之后先输入密码再输入同样的密码确认才可成功修改,修改成功后蜂鸣器会发出三声,数码管“00”闪烁三次提示修改密码成功。当输入密码错误时,发出错误警告声音,同时显示CLOSE字样,当输入密码错误次数累积够3次后,蜂鸣器会产生90秒的报警声响进行报警。
四、总体设计方案
根据本次设计的设计目的及设计要求,可有下列两种方案: 4.1 方案一
在本次设计中,因为密码锁的基本功能使可以判断密码是否正确,以及完成对密码的修改,所以需要用到输入设备以及CPU的接口电路以及相关存储设备;因为有报警提示功能,所以要用到相关的输出设备以及接口电路。因为要完成逻辑运算功能,所以必须要有CPU,CPU就选用我们最常用也最熟悉的8086,考虑到8255的端口兼具输入输出功能,灵活方便,所以选用一片8255作为输入输出设备与8086间的借口;采用0到9数字按键以及相关功能选择的输入;输出设备方面,采用两位数码管实现题目的状态提示要求,用一个蜂鸣器作为相关的警报,提示的声音输出。另外,为简化编程,采用8259中断控制器来触发中断实现密码锁工作模式的转换,其中的密码输入及判断功能与密码修改功能分别用两个外部中断来触发中断服务程序来实现。本设计的密码位数为6位。4.2 方案二
第1页
用汇编语言编写程序实现应用程序的功能,从而实现简易计算器汇编程序的设计与实现。4.2.1使用设备
含有Windows汇编编译环境的MASM软件及Office 2003软件的计算机一台。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判断后,根据不同的功能,输出不同的按键响
第2页
应,并转移到相对应的功能服务程序。
本设计总共用到11位按键,包括10位数码输入按键及一位“复位/修改密码”按键,电路设计总共可用按键有16位,供升级功能使用。键盘电路如下图2所示:
5.2 中断控制
用一片8259A芯片作为中断控制接口电路。其中IR0与IR1中断开放,单片工作于非缓冲方式,电平触发,优先级是普通全嵌套方式。可通过编程开中断,通过编程或者8253计时器关中断。电路连接如图3所示:
图2 键盘连接图
5.3 计时
采用8253计时器控制中断的关断,实现单次输入密码超时则退出输入密码中断子程序、报警器响铃时间控制等功能。电路如图3所示。
第3页
图3 中断控制器连接图
5.4 输入输出接口
输入输出接口采用可编程的8255A,8255A是Intel系列的并行接口芯片,常作为微机系统与外部设备接口。在连接电路时8255 的PC0、PC1接到数码管片选,电路连接如图3所示。同时用8255A的B口控制数码管的显示,C口片PC0、PC1选数码管,PC2用来驱动SPEAK发出报警电路如图4所示。
图4 按键响应、报警、开锁功能电路
第4页
5.5.储存器及片选电路
存储器及片选电路采用一片2764存储器和一片74LS138,连接电路如图5所示:
图5 片选及存储器电路
5.6 整机电路图:见附录一
六、软件设计
6.1 程序流程图
第5页
开始程序初始化8255.8259初始化从RAM存储器中读出密码 定义DI.SI指针开中断data2与data3数据串比较相等?N错误计数器加1开锁,并显示00扫描键盘,有修改密码键?Y定义SI,DI指针开中断,实现密码输入转存到data2有修改密码键输入?开中断,重新输入密码比较是否为首次输入密码?N转存密码到RAM 铃声确认修改密码成功扫描键盘是否有修改密码键输入Y保持开锁状态结束错误累积超过6次?YN报警响铃,输出显示FF保持关锁N结束Y
图6 程序流程图
6.2 程序清单:见附录二
七、设计总结与体会
通过本次课程设计,我对 8255,8253,8259等芯片的各引脚的功能、名称、第6页
工作方式、内部结构有了更深层次的掌握,对这三种芯片的编程从陌生转向熟练。通过这次的微机课程设计,对书本所学的知识有了进一步的巩固,并且对三种芯片各自的功能、工作方式有了明确性的区分。在设计过程中遇到问题时,遇到含糊不清或者看不懂的地方及时翻阅相关课本知识。有时看课本也没有结果时就和组员互相探讨。在设计过程中,才发现自己遗漏许多课本的相关知识,对各芯片的功能及其工作方式掌握的不够清楚。这说明在实践中才能真正的掌握从课本中所学的知识。这次的课程设计让我为一年后的毕业设计打下了基础。
八、参考资料
九、附录
附录一:电路基本连接图
第7页
附录二:程序清单
(一)DATA SEGMENT;以下代码写入RAM
第8页
CODEIN DB 6 DUP(?);输入的密码保存的地址 CODECH DB 6 DUP(?);修改后的密码的保存地址 CODEOR DB 0,0,0,0,0,0;初始密码
ORG 01000H;下面的代码写入ROM DTABLE DB 80H,02H,10H,3FH,79H,71H,60H,5BH DATA ENDS
STACKS SEGMENT STA DB 20 DUP(?)STACKS ENDS
CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKS START: MOV SI,OFFSET CODEIN MOV DI,OFFSET CODEOR MOV BP,OFFSET DTABLE
MOV AL,09H;(键盘输入中断)设定密码输入的中断向量(即IR0的中断向量)MOV AH,25H INT 21H PUSH BX PUSH DS MOV DX,SEG INPUT MOV DS,DX MOV DX,OFFSET INPUT INT 21H
MOV AL,09H;(键盘输入中断)设定密码修改的中断向量(即IR1的中断向量)MOV AH,25H INT 21H PUSH BX PUSH DS MOV DX,SEG CHANGE MOV DS,DX MOV DX,OFFSET CHANGE INT 21H
MOV AL,1BH;初始化8259 OUT 10H,AL;单片工作,高电平有效 MOV AL,08H OUT 11H,AL MOV AL,03H OUT 11H,AL
第9页
MOV AL,0FCH OUT 11H,AL;开放IR0,IR1 MOV AL,20H OUT 10H,AL MOV AL,68H OUT 10H,AL
MOV AL,82H;初始化8255 A口方式0输出,B口方式0输入,C口输出 OUT 06H,AL AA: STI MOV AL,00H OUT 04H,AL;
INPUT:;CLI MOV DL,00H IN1: CMP DL,06H;JNZ IN2;
MOV CX,03FFH;R1: MOV DH,3FH MOV AL,02H OUT 00H,AL;R2: DEC DH CMP DH,00H JNZ R2 LOOP R1
JMP IN4;IN2:;MOV AL,[BP+4] OUT 04H,AL;MOV BX,0H MOV CX,03H;IN3: MOV BP,OFFSET DTABLE MOV AL,[BP] OUT 04H,AL;输出低电平使数码管熄灭 密码输入程序 判断是否连续6次输入错误密码 若不是这继续输入 使蜂鸣器长鸣报警(通过延时实现)输出高电平使蜂鸣器发声 报警完毕,跳至中断返回 输入密码 数码管显示‘--’提示输入密码 设置循环次数 数码管提示输入位数
第10页
CALL CCSCAN;调用键盘扫描程序 CMP AL,0BH;判断是否按下返回键 JZ IN4 MOV [BX+SI],AL;保存输入密码 INC BX INC BP LOOP IN3
MOV BP,OFFSET DTABLE;判断密码是否正确 CLD MOV CX,03 MOV SI,OFFSET CODEIN MOV DI,OFFSET CODEOR REPZ CMPSB;JNZ WRO;MOV AL,[BP+3] OUT 04H,AL;MOV AL,04H OUT 00H,AL;XOR DL,AL JMP IN4
WRO:;INC DL MOV AL,[BP+5];OUT 04H,AL MOV CX,03H;W1: MOV AL,02H;OUT 00H,AL
W2:;MOV BL,3FH DEC BL CMP BL,00H JNZ W2 XOR AL,AL;OUT 00H,AL
W3:;MOV BL,3FH DEC BL CMP BL,00H JNZ W3
判断密码是否正确 若错误就报警 若正确数码管就显示‘00‘且给LED高电平使其点亮 出错报警部分 数码管显示’FF‘提示错误设定蜂鸣器响的次数 使蜂鸣器发声 延时 输出低电平关蜂鸣器 延时 第11页
LOOP W1 JMP IN1;中断返回 IN4: STI IRET
CHANGE:;密码修改程序 CLI MOV DL,00H INP1: CMP DL,06H JNZ INP2 MOV CX,03FFH RR1: MOV DH,3FH MOV AL,02H OUT 00H,AL RR2: DEC DH
CMP DH,00H JNZ RR2 LOOP RR1 JMP C4 INP2: MOV AL,[BP+4] OUT 04H,AL MOV BX,0000H MOV CX,03H INP3: MOV BP,OFFSET DTABLE MOV AL,[BP] OUT 04H,AL CALL CCSCAN CMP AL,0BH JZ IN4 MOV [BX+SI],AL INC BX INC BP LOOP INP3 MOV BP,OFFSET DTABLE CLD MOV CX,03
第12页
MOV SI,OFFSET CODEIN MOV DI,OFFSET CODEOR REPZ CMPSB JNZ WRRO MOV AL,[BP+3] OUT 04H,AL XOR DL,DL JMP CHANGE WRRO: INC DL MOV AL,[BP+5] OUT 04H,AL MOV CX,03H WW1: MOV AL,02H OUT 00H,AL WW2: MOV BL,3FH DEC BL CMP BL,00H JNZ WW2 XOR AL,AL OUT 00H,AL WW3: MOV BL,3FH DEC BL CMP BL,00H JNZ WW3 LOOP WW1 JMP INP1;
CHAN:;MOV SI,OFFSET CODEIN MOV DI,OFFSET CODECH
MOV AL,[BP+6];OUT 04H,AL MOV CX,03FFH Y1: LOOP Y1
MOV BP,OFFSET DTABLE MOV BX,0H MOV CX,03H
当密码输入正确时,转入密码修改部分修改密码部分 数码管提示第一次输入 第13页
C1: MOV AL,[BP] OUT 04H,AL CALL CCSCAN CMP AL,0BH JZ C4 MOV [BX+SI],AL;存放在输入密码缓冲区 INC BX INC BP LOOP C1
MOV BP,OFFSET DTABLE MOV AL,[BP+7] OUT 04H,AL;MOV CX,03FFH Y2: LOOP Y2 MOV BP,OFFSET DTABLE MOV BX,0H MOV CX,03H C2: MOV AL,[BP] OUT 04H,AL CALL CCSCAN CMP AL,0BH JZ C4 MOV [BX+DI],AL;INC BX INC BP LOOP C2
MOV BP,OFFSET DTABLE REPZ CMPSB JNZ CHAN;MOV DI,OFFSET CODEOR MOV CX,03H CLD REP MOVSB;MOV AL,02H;OUT 00H,AL MOV CX,03FFH C3: LOOP C3 XOR AL,AL OUT 00H,AL;数码管提示第二次输入 存放在修改密码缓冲区 判断两次输入的密码是否一致若是相等那就保存密码 且蜂鸣器响一下提示修改成功中断返回
第14页
C4: STI IRET
CCSCAN PROC NEAR;键盘扫描子程序 MOV AL,00H OUT 00H,AL IN AL,02H NOT AL AND AL,0FH CMP AL,00H;JNZ K1 JMP CCSCAN K1: MOV CX,0EFFH;LOOP K1
IN AL,02H CMP AL,00H JZ CCSCAN MOV AH,60H;K2: MOV AL,AH OUT 00H,AL IN AL,02H NOT AL AND AL,0FH CMP AL,00H;JNZ K3 OR AH,01H ROR AH,1;AND AH,0FH JMP K2 K3: ADD AL,AH RET CCSCAN ENDP CODE ENDS END START
程序清单
(二)利用DOS调用显示DATA SEGMENT TABLE DB '888'
判断是否有键按下延时 扫描第一列 判断是否有键按下扫描下一列 第15页
STRING1 DB 'Please enter a passward:',0DH,0AH,'$' STRING2 DB 'Wrong!',0DH,0AH,'$' STRING3 DB 'OPEN!','$' STRING4 DB 'CLOSE!','$' BUFFER DB 40,?,40 DUP(0)TAB_LEN EQU 26 DATA ENDS;STACK SEGMENT DB 100 DUP(0)STACK ENDS;CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK
START:MOV AX,DATA MOV DS,AX MOV ES,AX LEA DX,STRING1 MOV AH,09H INT 21H LEA DX,BUFFER
MOV AH,0AH INT 21H MOV SI,DX INC SI MOV BL,[SI] MOV BH,0 INC SI LEA DI,TABLE MOV CX,TAB_LEN CMP CX,BX JNC GOON LEA DX,STRING2 JMP EXIT GOON: CLD MOV AL,[SI] SCAN:REPNZ SCASB JZ MATCH ERROR: LEA DX,STRING4 JMP EXIT MATCH: INC CX CMP CX,BX
第16页
JC ERROR PUSH CX PUSH SI PUSH DI MOV CX,BX DEC DI REPZ CMPSB POP DI POP SI POP CX JZ FOUND JCXZ ERROR JMP SCAN FOUND: DEC DI LEA DX,STRING3 EXIT:MOV AH,09H INT 21H MOV AH,4CH INT 21H CODE ENDS END START
第17页
第三篇:微机原理课程设计
电子信息科学与技术《微机原理》课程设计
一、本次课程设计的目的和意义
学习和掌握计算机中常用接口电路的应用和设计技术,充分认识理论知识对应用技术的指导性作用,进一步加强理论知识与应用相结合的实践和锻炼。通过这次设计实践能够进一步加深对专业知识和理论知识学习的认识和理解,使自己的设计水平和对所学的知识的应用能力以及分析问题解决问题的能力得到全面提高。
二、设计时间、基本要求
(一)、设计时间:二周(二)、基本要求:
a.每题2人;b.设计出完整的接口电路;c.编写出全部程序;d.在实验系统上调试通过。
三、设计选题与要求
选题一:多路模拟数据采集系统设计
要求:设计一个2路以上的模拟数据采集系统。
1、用按键选择那一路;
2、用LED显示转换结果(十进制数);
3、将每一路采集的100个数据存放到各自的存储区中。
选题二:温度测控系统的设计
要求:利用ADC0809设计一个温度测控系统,在LED数码显示器上显示温度值,并对温度进行测试和控制,当检测温度到达温度上限60℃时开风扇(即开启电动机,或以一个灯的亮灭表示),低于下限30℃时关闭风扇,LED上的显示内容为:XX ℃(采用十进制显示)。
选题三:函数发生器的设计(一)要求:利用DAC0832设计一个函数发生器,并利用按键选择输出波形,能分别产生三角波、阶梯波(每阶梯1V)、正向锯齿波、负向锯齿波和方波。并利用按键(自行定义)进行输出波形选择,同时将当前输出波形代号显示在LED上(左边位):0为方波、1为正向锯齿波、2为负向锯齿波、3 为三角波、4为阶梯波。
选题四:函数发生器的设计(二)要求:设计一个三角波发生器,可利用键盘改变其输出波形的幅值。例如,可利用1-5这5个数字键改变其输出波形的幅值,当按下1-5数字键时使D/A输出幅值从1V增加到5V。
选题五:电子音乐播放器
要求:设计要求:利用8253作为音阶频率发生器,应先对“2008年奥运会主题歌”进行编码后存入音符表,并建立好音阶表(只建立一个8度即可),音符长度不能少于60个,连续播放3遍后停止。
选题六:键盘电子乐器
要求:利用并行接口8155作为键盘接口,设计一个具有2个八度音阶的键盘乐器,音阶键不少于16个,采用扫描方式管理键盘,音域范围自行定义。
选题七:电子时钟设计
要求:利用8253定时器设计一个具有时、分、秒显示的电子时钟,并定义一个启动键,当按下该
键时时钟从当前设定值(可在显示缓冲区中予置)开始走时。
选题八:压力测控系统的设计(一)要求:对压力传感器的信号进行检测并在LED数码显示器上显示压力值,当压力低于30pa时,黄灯闪烁,闪烁周期为1秒。当压力高于150pa时,红灯闪烁。LED的显示内容为P=XXX。X为测试值。
选题九:可变输出频率方波发生器设计
要求:设计一个输出方波频率可利用按键改变的方波信号发生器(可以使用D/A也可以直接使用8253产生方波),利用键盘选择方波发生器的输出频率并驱动喇叭。输出频率=键号*100HZ
选题十:直流电机速度控制器设计
要求:利用D/A转换器和按键设计一个直流电动机转速控制器。按键定义如下:0 停止,1-1/10转速,2-2/10转速„„ 9 最高速(D/A输出满量程),键号每加1,D/A输出增加0.5V
选题十一:可任意启动/停止的电子秒表设计
要求:6位LED数码显示,计时单位为1/100秒。利用功能键进行启/停控制。其功能为:上电后计时器清0,当第一次(或奇数次)按下启/停键时开始计数。第2次(或偶数次)按下该键时停止计时,再一次按启/停键时清零后重新开始计时„„
选题十二:温度测试系统设计
要求:利用温度传感器和ADC0809设计一个温度测试系统,将测试结果(十进制)在LED上显示出来,并定义一个保持按键,当按下该键时,将当前测试值保持不变(按键不动作时为正常测量显示)。温度显示格式为:XXX ℃。(可以每隔0.3秒测量一次)
选题十三:压力测试系统设计(二)要求:利用压力传感器和ADC0809设计一个压力测试系统,并将测试结果(十进制)在LED上显示出来,并定义一个测试最大值按键,当按下该键时,可进行最大值测量(按键不动作时为正常测量显示),即:只有当当前测量值大于上次测量值时才刷新显示,显示格式为:P=XXX。可以每隔0.3秒测量一次。
选题十四:简易计算器系统设计
要求:设计一个可以进行2位数四则运算的计算器。
1、用按键输入数和运算符号;
2、用LED显示运算过程和结果(十进制数);
3、可以表示出当前的运算类型;
4、具有清零和复位功能;
5、具有连续运算功能。
选题十五:交通灯控制系统
要求:按照时间控制原则,利用并行接口和定时器,设计一套十字路口的交通灯管理系统,通行时间(或禁止时间)30秒,准备时间3秒,在准备时间里黄灯闪烁3次,闪烁频率为0.5秒,周而复始。可利用8255、8253等接口电路。
选题十六:计件系统设计
要求:利用8253计数,对外界脉冲技术,并将计数值在数码管上显示,可通过键盘控制重新计数。
四、设计任务及要求
1、接口设计:根据所选题目和所用的接口电路芯片设计出完整的接口电路,并在实验系统上完成电路的连接和调试通过。
2、程序设计:要求画出程序框图,设计出全部程序并给出程序设计说明和程序注释。
3、课程设计报告:(1)设计题目;
(2)系统的主要功能、作用以及主要技术性能指标;
(3)总体设计方案、工作和组成原理(框图)或设计说明、采用的技术路线等;
(4)系统设计:接口电路设计,程序设计(程序框图和程序清单及注释)其他有关的理论分析和计算;
(5)设计总结:对整个设计工作过程进行归纳和综合,对设计中所存在的问题和不足进行分析和总结,提出解决的方法、措施、建议和对这次设计实践的认识、收获和提高。
第四篇:微机原理课程设计
汇编程序设计题
题目一 密码设置模拟
该程序可以进行密码的设置(第一次)和修改(已设置密码)。要求输入的密码不显示。题目二 计算器
编辑程序可以实现键盘输入数据与运算符,进行“加减乘除”运算。(提示:先输入数据与运算符,保存,再按照运算符选择对应的子程序;输入的数据是用字符表示的,需要转换;要有良好的界面(提示信息))
题目三工作周期判断程序
输入年、月、日,能够判断当日的星期数,并进行输出。(以校历为依照,可设某日为起点,根据相差的天数与7的关系进行判断)。
题目四 PC扬声器发声
利用8253驱动PC机内扬声器发声,PC结构参考相关文献资料。题目五 乐曲播放
利用PC机内8253实现乐曲播放。题目六 按键选择乐曲播放
利用按键选择播放不同乐曲。(★)(自制交互界面实现按键选择★★)题目七 实现闪烁文字效果 编程提示:
提示信息于屏幕中央显示出来,用光标定位子程序将光标定位于80*25显示方式的第8行第10列,然后输出一条提示信息,接着调用屏幕上卷子程序上卷一行,接着再定位光标,然后显示下一条提示信息,直到所有信息显示完毕,对于闪烁的信息,同样是定位光标,然后用BIOS功能调用13H来显示闪烁信息,当BL的高位为1时,字符闪烁。mov ah,00h mov al,03h ;设置显示方式为80*25,16色文本 int 10h 题目八
数字秒表
设计可以显示1~60秒的无存储功能的秒表,最小单位为毫秒。题目九
倒计时牌
设计日期倒计时牌界面,可输入设定日期,显示当前日期的统计天数,如奥运计时牌。题目十
数字时钟
编程实现时钟功能,按秒刷新,要求定位在屏幕右上角。
硬件设计题
总体要求:根据题意自行设计电路,编写相关汇编程序。题目一
交通灯控制系统
1.利用8253定时,8259中断及8255设计电路,实现十字路口交通灯模拟控制。2.实现能自动控制和手动应急控制。
3.实现能随时可以调整自动模式的绿灯和红灯时间。题目二 实现特定功能的键盘及LED显示
了解键盘及LED显示接口原理,设计实验电路图完成以下功能: 1.按1键显示年; 2.按2键显示月日; 3.按3键显示GOOD ;
4.按4键数码管由左到右字符“0”循环显示。5.自行设计特效显示功能。题目三
LED七段数码管数字钟
设计并完成LED七段数码管数字钟电路,数字钟显示格式为:HH:MM:SS。要求:具有通过键盘能够调整时、分、秒的功能。题目四
闪烁灯
利用8253和LED灯相结合实现闪烁灯效果。题目五
电子钟
利用8253定时器设计一个电子钟,并定义一个启动键。当按下该键时电子时钟从当前设定值开始走时。
附录:实验箱功能模块电路图
第五篇:2008微机原理课程设计
《微机原理及接口》课程设计任务书
适用专业:05电子信息工程 通信工程
一、本次课程设计的目的和意义
学习和掌握计算机中常用接口电路的应用和设计技术,充分认识理论知识对应用技术的指导性作用,进一步加强理论知识与应用相结合的实践和锻炼。通过这次设计实践能够进一步加深对专业知识和理论知识学习的认识和理解,使自己的设计水平和对所学的知识的应用能力以及分析问题解决问题的能力得到全面提高。
二、设计时间和设计题目
(一)、设计时间:一周(二)、设计题目:可从以下题目中任选一题,原则上每班每题不超过5人。每题的设计要求:a、设计出完整的接口电路。B、编写出全部程序。
1、交通灯控制系统:按照时间控制原则,利用并行接口和定时器,采用时间中断方式设计一套十字路口的交通灯管理系统,通行时间(或禁止时间)30秒,准备时间3秒,在准备时间里黄灯闪烁3次,闪烁频率为0.5秒,周而复始。可利用8255、8253、8259等接口电路。
2、温度测控系统的设计:利用ADC0809采用中断式设计一个温度测控系统,在LED数码显示器上显示温度值,并对温度进行测试和控制,当检测温度到达温度上限60℃时开风扇(即开启电动机),低于下限30℃时关闭风扇,LED上的显示内容为:XX ℃(采用十进制显示)。
3、函数发生器1的设计:利用D/A设计一个函数发生器,并利用按键选择输出波形,能分别产生三角波、阶梯波(每阶梯1V)、正向锯齿波、负向锯齿波和方波。并利用按键(自行定义)进行输出波形选择,同时将当前输出波形代号显示在LED上(左边位):0为方波、1为正向锯齿波、2为负向锯齿波、3 为三角波、4为阶梯波。
4、函数发生器2的设计:设计一个三角波发生器,可利用键盘改变其输出波形的幅值。例如,可利用1---5这5个数字键改变其输出波形的幅值,当按下1---5数字键时使D/A输出幅值从1V增加到5V。
5、电子音乐播放器:设计要求:利用8253作为音阶频率发生器,应先对一段音乐进行编码后存入音符表,并建立好音阶表(只建立一个8度即可,音阶表见附录),音符长度不能少于60个,连续播放3遍后停止。
6、键盘电子乐器:利用并行接口8255作为键盘接口,设计一个具有2个八度音阶的键盘乐器,音阶键不少于16个,采用扫描方式管理键盘,音域范围自行定义。
7、电子时钟设计:利用8253定时器设计一个具有时、分、秒显示的电子时钟,并定义一个启动键,当按下该键时电子时钟从当前设定值开始走时。
8、压力测控系统的设计:对压力传感器的信号进行检测并在LED数码显示器上显示压力值,当压力低于30pa时,黄灯闪烁,闪烁周期为1秒。当压力高于150pa时,红灯闪烁。LED的显示内容为P=XXX为测试值。
9、可变输出频率方波发生器设计:设计一个输出方波频率可利用按键改变的方波信号发生器(可以使用D/A也可以直接使用8253产生方波),利用键盘选择方波发生器的输出频率并驱动喇叭。输出频率=键号*100HZ。
10、直流电机速度控制器设计:利用按键控制直流电动机的转速。按键定义如下:0 停止,1 1/10转速,2 2/10转速…… 9 最高速(D/A输出满量程),键号每加1,D/A输出增加0.5V。
11、可任意启动/停止的电子秒表设计:6位LED数码显示,计时单位为1/100秒。利用功能键进行启/停控制。其功能为:上电后计时器清0,当第一次(或奇数次)按下启/停键时开始计数。第2次(或偶数次)按下该键时停止计时,再一次按启/停键时清零后重新开始计时……。12简易计算器系统设计:设计一个可以进行2位数四则运算的计算器,要求:1,用按键输入数和运算符号;2,用LED显示运算过程和结果(十进制数);3,可以表示出当前的运算类型;4,具有清零和复位功能;5,具有连续运算功能。
13点阵LED显示系统设计:设计一个点阵式LED显示系统。要求:1,每次显示一个文字和图形;2,每隔一固定时间更变需要显示的文字或图形;3,可以现实循环显示几个文字或图形;4,可以根据按键来控制显示的文字的替换时间的长短;5,具有复位功能。
三、设计任务及要求:
1、接口电路设计:根据所选题目和所用的接口电路芯片设计出完整的接口电路,并进行电路连接和调试。
2、程序设计:要求画出程序框图,设计出全部程序并给出程序设计说明和程序注释。
3、设计文件:a、设计图纸(接口电路原理图);b、使用或操作说明;c、设计报告:字数约3000~4000字,内容包括:(1)设计题目;(2)系统的主要功能作用及主要技术性能和指标;(3)总体设计方案及组成原理(框图)或设计说明及技术路线;(4)系统设计:接口电路设计,程序设计(程序框图和程序清单及注释)其他有关的理论分析和计算;(5)设计总结:对设计中所存在的问题和不足进行分析和总结,提出解决的方法、措施、建议和对这次设计实践的认识、收获和提高。
4、设计要求:
不允许抄袭和复印,否则取消设计成绩。
四、设计时间和成绩分配:
(一)设计时间:一周(二)设计成绩分配:
1、接口电路设计占30%(包括电路图设计、电路连接和调试通过)。
2、设计文件占30%
3、答辩占40%