微机原理课程设计(电子密码锁)

时间:2019-05-13 23:56:38下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《微机原理课程设计(电子密码锁)》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《微机原理课程设计(电子密码锁)》。

第一篇:微机原理课程设计(电子密码锁)

一、设计目的

通过课程设计掌握控制系统设计的一般步骤,掌握系统总体控制方案的设计方法、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页

第二篇:微机原理课程设计++多功能密码锁

微机原理课程设计报告

学院:

专业: 班级: 姓名:

指导老师:

设计任务:多功能密码锁

目录

一、设计目标

二、设计要求

三、整体功能描述

四、硬件设计功能模块 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电路设计》张睿 赵艳华 刘志刚 编著,电子工业出版社

第三篇:微机原理课程设计电子闹钟

电子钟设计

1任务要求

1.1显示位置:屏幕中央.1.2日期显示格式“时:分:秒.1.312/24时制可调.1.4在显示屏上显示提示语“CURRENT TIME IS:”和当前时间.2工作原理

1时钟起始时间的设置

先调用DOS操作系统模块9,在显示屏上显示提示语“TIME SYSTEM IS:”,输入时制12或24后,显示“CURRENT TIME IS:”,再调用DOS操作系统模块10,提示要输入时钟的起始时间,输入时间的格式是“时:分:秒”。输入的时间以字符串形式存放在已定义的存储器缓存区内,继而调用TRAN1转换子程序和MUL10乘10子程序,将存放在存储器缓存区内的ASCII字符转换为压缩BCD码,并将时、分、秒的值放在寄存器CH、DH、DL中。

2延时程序

调用延时TIME延时中断服务程序,累加到存放秒值的寄存器DL中,并进行十进制调整。在累加的过程中,不断地对时、分、秒值进行比较,秒不能等于60,分不能等于60,时不能等于24。秒等于限制值时,则使秒值为0分值加1;分等于限制值时,则使分值为0时值加1;时等于限制值时,则使时值为0;时、分、秒值都不超过限制值时,就转显示屏输出。

3时间显示

调用DOS操作系统模块9,可用来显示存储器内字符串。由于显示的字符必须为ASCII码,因为要调用TRAN2转换子程序将寄存器CH、DH、DL内压缩BCD码字符串转换成ASCII字符串,字符串最后以字符“$”结束,并按时、分、秒的顺序送存储器缓冲区内。调用DOS操作系统模块9,(DS:DX)应指向字符串首址。程序一旦进入运行,就将不间断地在显示屏显示时间,要想程序停止运行,可同时在键盘按下CTRL和BREAK二键。

4程序堆图 5程序清单

DATA SEGMENT BUFFER DB 10;设置输入字符串用缓冲区 DB ? DB 10 DUP(?)TS DB 'TIME SYSTEM IS:$' CT DB 'CURRENT TIME IS:$' PM DB 'PM $' AM DB 'AM $' KEEPIP DW 0 KEEPCS DW 0 SR DB ? HOUR DB ? DAT ENDS STA SEGMENT PARA STACK 'STACK' STAPN DB 100 DUP(?)TOP EQU LENGTH STAPN STA ENDS COD SEGMENT START PROC FAR ASSUME CS:COD,DS:DAT,SS:STA MOV AX,DATA MOV DS,AX MOV AX,STA MOV SS,AX MOV AX,TOP MOV SP,AX MOV AH,35H;设置1CH中断

MOV AL,1CH

INT 21H

;段地址放入ES,偏移地址放入BX

MOV KEEPIP,BX

;保偏移地址存

MOV KEEPCS,ES

;保存段地址

PUSH DS

MOV DX,OFFSET TIME

MOV AX,SEG TIME

MOV DS,AX

MOV AL,1CH

MOV AH,25H

;设置中断功能调用

INT 21H

POP DS

MOV DX,OFFSET TS

;DOS功能模块,显示字符串

MOV AH,9

INT 21H

MOV AH,1

;DOS功能模块,从键盘输入字符

INT 21H

MOV AH,1

INT 21H

MOV SR,AL

MOV DL,0AH

;”换行“

MOV AH,2

INT 21H

MOV DL,0DH

;”回车“

MOV AH,2

INT 21H

MOV DX,OFFSET CT

;DOS功能模块,显示字符串,提示从键盘输入

MOV AH,9

INT 21H

MOV DX,OFFSET BUFFER

MOV AH,10

;DOS功能模块,从键盘输入字符串到缓冲区

INT 21H

MOV BX,OFFSET BUFFER+2

CALL TRAN1

;将输入的ASCII码转换为BCD码

INC BX

INC BX

CALL TRAN1

INC BX

INC BX

CALL TRAN1

MOV BX,OFFSET BUFFER+2

MOV AL,[BX]

CALL MUL10

;将BCD码转换为压缩的BCD码

MOV CH,AL

INC BX

INC BX

MOV AL,[BX]

CALL MUL10

MOV DH,AL

INC BX

INC BX

MOV AL,[BX]

CALL MUL10

MOV DL,AL AGAIN: PUSH CX

MOV CX,18

STI

;开中断 W:

CMP CX,0

JNE W

CLI

POP CX

MOV AL,DL

ADD AL,1

;”秒“加1

DAA

MOV DL,AL

CMP AL,60H

;”秒“与60比较

JNE DISPY

;小于60S,转显示程序

MOV DL,0

;等于60S, ”秒“值为0,”分“+1

MOV AL,DH

ADD AL,1

DAA

MOV DH,AL

CMP AL,60H

;”分“于60比较

JNE DISPY

MOV DH,0

MOV AL,CH

ADD AL,1

DAA

MOV CH,AL

MOV AL, SR

CMP AL,32H

JNE NEXT

JMP DISPY NEXT: MOV AL,CH

MOV HOUR,CH

CMP AL,24H

JNE DISPY

MOV CH,0

DISPY: CALL IOCLR

CALL IOSET1

CALL STAR

CALL IOSET2

CALL STAR

CALL IOSET

MOV BX,OFFSET BUFFER

MOV AL,SR

CMP AL,32H

JNE NEXT2

CALL AD12

MOV AL,HOUR

JMP NEXT1 NEXT2: MOV AL,CH

;”时“值转换成ASCII码

NEXT1: CALL TRAN2

;将压缩BCD码转换成ASCII码

INC BX

MOV AL,':'

MOV [BX],AL

INC BX

MOV AL,DH

;”分“值转换成ASCII码

CALL TRAN2

INC BX

MOV AL,':'

MOV [BX],AL

INC BX

MOV AL,DL

;”秒“值转换成ASCII码

CALL TRAN2

INC BX

MOV AL,'$'

;显示字符串结束码

MOV [BX],AL

PUSH BX

PUSH CX

PUSH DX

MOV DX,OFFSET BUFFER

MOV AH,9

;DOS功能模块,显示字符串

INT 21H

POP DX

POP CX

POP BX

JMP AGAIN

CLI

PUSH DS

MOV DX,KEEPIP

MOV AX,KEEPCS

MOV DS,AX

MOV AH,25H

MOV AL,1CH

INT 21H

POP DS

STI

RET START ENDP MUL10 PROC

;将BCD码转换为压缩的BCD码

ADD AL,AL

DAA

MOV CL,AL

ADD AL,AL

DAA

ADD AL,AL

DAA

ADD AL,CL

DAA

MOV CL,AL

INC BX

MOV AL,[BX]

ADD AL,CL

RET MUL10 ENDP TRAN1 PROC

MOV AL,[BX]

AND AL,0FH

MOV [BX],AL

INC BX

MOV AL,[BX]

AND AL,0FH

MOV [BX],AL

RET TRAN1 ENDP TRAN2 PROC

MOV CL,AL

SHR AL,1

SHR AL,1

SHR AL,1

SHR AL,1

OR AL,30H

MOV [BX],AL

INC BX

MOV AL,CL

AND AL,0FH

OR AL,30H

MOV [BX],AL

RET TRAN2 ENDP IOCLR PROC

PUSH CX

PUSH DX

PUSH BX

PUSH AX

MOV AX,0600H

MOV BH,02

SUB CX,CX

MOV DX,184FH

INT 10H

;ASCII码转换成BCD码

;将压缩BCD码转换成ASCII码;调用BIOS,清除全屏幕

POP AX

POP BX

POP DX

POP CX

RET IOCLR ENDP TIME

PROC

DEC CX

IRET TIME

ENDP

PUSH DX PUSH BX PUSH AX MOV AH,02 SUB BH,BH MOV DX, 0C23H INT 10H POP AX POP BX POP DX RET IOSET ENDP IOSET1 PROC PUSH AX PUSH BX PUSH DX MOV DX,0A1AH MOV BH,00 MOV AH,02 INT 10H POP DX POP BX POP AX RET IOSET1 ENDP IOSET2 PROC PUSH AX PUSH BX PUSH DX MOV DX,0E1AH MOV BH,00 MOV AH,02 INT 10H

调用BIOS,设置屏幕光标在中央

;POP DX POP BX POP AX RET IOSET2 ENDP STAR PROC PUSH AX PUSH BX PUSH CX PUSH DX MOV AL,3DH MOV BH,0 MOV BL,0CH CMP HOUR,24H JNZ X MOV HOUR,0H X: MOV CX,WORD PTR HOUR INT 10H POP DX POP CX POP BX POP AX RET STAR ENDP AD12 PROC PUSH DX MOV HOUR,CH MOV AL,SR CMP AL,32H JNE ZH MOV AL,HOUR CMP AL,24H JNE NEXT3 MOV CH,0 MOV HOUR,CH JMP S12 NEXT3: CMP AL,12H JBE S12 MOV DX,OFFSET PM MOV AH,9 INT 21H MOV AL,HOUR MOV DH,12H SUB AL,DH DAS MOV HOUR,AL JMP ZH S12: CMP AL,12H JNE Z MOV DX,OFFSET PM MOV AH,9 INT 21H JMP ZH Z: MOV DX,OFFSET AM MOV AH,9 INT 21H ZH: POP DX RET AD12 ENDP COD ENDS END STAR

6设计时遇到的问题及解决方法

在课程设计中遇到的最大的困难是如何利用软、硬件配合的方式产生中断,对中断向量表的装载还比较模糊,对中断的初始化、具体设置、中断返回还不是很清楚,程序设计一度陷入停滞状态,不知如何是好.于是我又重新翻阅了我们的学习课本,也就是电子工业出版社的《微机原理与接口技术(基于16位机)》,重点研究了第9章《中断》,通过对这一章的学习,我终于对中断有了详细的认识,在设计程序时也容易了很多。

设中断服务程序入口地址为TIME,则相应的程序如下:

„„

KEEPIP DW 0

;设置内存缓冲区,用于暂存 KEEPCS DW 0

;DOS的中断矢量

„„

;在主程序的初始化部分,先取出DOS的中断矢量并加以保存,然后装入需要的中断矢量

MOV AH,35H

;取出DOS的中断矢量,并送ES:BX

MOV AL,1CH

INT 21H

MOV KEEPIP,BX

;保存DOS的中断矢量

MOV KEEPCS,ES

PUSH DS;保护DS

MOV DX,OFFSET TIME

;将中断矢量取代

MOV AX,SEG TIME

;DOS的中断矢量

MOV DS,AX

MOV AL,1CH

MOV AH,25H

;设置中断功能调用

INT 21H

POP DS

;恢复DS „„

AGAIN: PUSH CX

MOV CX,18

STI

;开中断 W:

CMP CX,0

JNE W

CLI „„

TIME

PROC

DEC CX

IRET TIME

ENDP „„

;在程序结尾处,用以下程序恢复DOS的中断矢量 CLI

PUSH DS

MOV DX,KEEPIP

MOV AX,KEEPCS

MOV DS,AX

MOV AH,25H

MOV AL,1CH

INT 21H

POP DS

STI 7新增功能及实现方法

7.112时制时显示AM或PM

„„

AD12 PROC PUSH DX MOV HOUR,CH MOV AL,SR CMP AL,32H JNE ZH MOV AL,HOUR CMP AL,24H JNE NEXT3 MOV CH,0 MOV HOUR,CH JMP S12 NEXT3: CMP AL,12H JBE S12 MOV DX,OFFSET PM MOV AH,9 INT 21H MOV AL,HOUR MOV DH,12H SUB AL,DH DAS MOV HOUR,AL JMP ZH S12: CMP AL,12H JNE Z MOV DX,OFFSET PM MOV AH,9 INT 21H JMP ZH Z: MOV DX,OFFSET AM MOV AH,9 INT 21H ZH: POP DX RET AD12 ENDP „„

7.2绿色显示时间

„„

IOSET PROC PUSH DX PUSH BX PUSH AX MOV AH,02 SUB BH,BH MOV DX,0C23H INT 10H POP AX POP BX POP DX RET IOSET ENDP „„

7.3在数字上下方各显示一行个数同小时数的”=“ „„

IOSET1 PROC PUSH AX PUSH BX PUSH DX MOV DX,0A1AH MOV BH,00 MOV AH,02 INT 10H POP DX POP BX POP AX RET IOSET1 ENDP IOSET2 PROC PUSH AX PUSH BX PUSH DX MOV DX,0E1AH MOV BH,00 MOV AH,02 INT 10H POP DX POP BX POP AX RET IOSET2 ENDP STAR PROC PUSH AX PUSH BX PUSH CX PUSH DX MOV AL,3DH MOV BH,0 MOV BL,0CH CMP HOUR,24H JNZ X MOV HOUR,0H X: MOV CX,WORD PTR HOUR INT 10H POP DX POP CX POP BX POP AX RET STAR ENDP „„ 8心得体会

这是我第一次用汇编语言来设计一个小程序,历时一周终于完成,其间有不少感触。首先就是借鉴.鲁迅先生曾说过要”拿来“,对,在这次课程设计中,就要”拿来"不少子程序,比如将ASCII码转换成BCD码,将BCD码转换成压缩BCD码,将压缩BCD码转换成ASCII码等,这些子程序的设计是固定的,因此可以直接从指导资料中调用,至于设置光标的子程序,只需要修改几个参数就可以,这大大方便了我的设计,为我节省了很多的时间。还有就是指导老师提供的资料很重要.这次课程设计的大部分程序,都可以在李老师提供的资料中找到,这对我的程序设计很有帮助,从这些资料中,我可以看出这个时钟程序的基本流程,修改一些程序就可以实现这个时钟的基本功能,添加一些程序就可以实现这个时钟的附加功能,可以说,如果没有李老师提供的源程序,我将面临很大的困难。文章引用自:

第四篇:微机原理课程设计(电子时钟)

电子时钟课程设计

一:设计背景

电子数字钟的应用十分广泛,通过计时精度很高的石英晶振(也可采用卫星传递的时钟标准信号),采用相应进制的计数器,转化为二进制数,经过译码和显示电路准确地将时间“时”“分”“秒”用数字的方式显示出来。与传统的机械钟相比,它具有走时准确,显示直观,无机械传动,无需人的经常调整等优点。它广泛用于电子表、车站、码头、广场等公共场所的大型远距离时间显示电子钟。

二:数字钟电路设计思路

1.选用8253计数器2进行1s的定时,其输出OUT1与8259的IRQ0相连,当定时到1s时产生一个中断服务程序进行时、分、秒的计数,并送入相应的存储单元;8255的A口接七段数码管的位选信号,B口接数码管的段选信号。时、分、秒的数值通过对8255的编程可送到七段数码管上显示。2.此程序主要由四部分组成:

第一部分为最主要的部分定义显示界面;

第二部分为利用延时程序,并将调用的二进制表示的时间数转换成ASCII码,并将时间数存入内存区;

第三部分将存在系统内存区的时间数用七段数码管显示出来; 第四部分利用循环程序分别对秒个位、秒十位、分个位、分十位与相应的规定值进行比较,结合延时程序来实现电子钟数字的跳变,从而形成走时准确的电子钟。

该程序实现了准确显示秒和分,读数准确,走时精准。此电子钟能准确的从0时0分0秒走时到23时59分59秒,然后能自动回复到0时0分0秒循环走时。

3.基本工作原理:系统设计的电子时钟主要由显示模块、时钟控制模块和时钟运算模块三大部分组成。以8086微处理器作CPU,用8253做定时器产生时钟频率提供一个频率为10kHz的时钟信号,要求每隔10ms完成一次扫描键盘的工作。在写入控制字与计数初值后,每到10ms定时器就启动工作,即当计数器减到1时,输出端OUT0输出一个CLK周期的低电平,向CPU申请中断,当达到100次时,则输出端OUT1输出1s,向CPU申请中断,由8255控制一个数码管显示,当计数到60s时,则输出端OUT2向CPU申请中断,由另一数码管显示1min,同理由数码管显示1h.CPU处理,使数码管的显示发生变化。

电子时钟的显示格式HH:MM:SS由左到右分别为时、分、秒,并依次对秒、分、小时寄存器的内容加一,六个数码管动态显示时、分、秒的当前值。最大记时23:59:59超过这个时间时分秒位都清零从00:00:00重新开始。8253芯片介绍

8253是NMOS工艺制成的可编程计数器/定时器,有几种芯片型号,外形引脚及功能都是兼容的,只是工作的最高计数速率有所差异,例如8253(2.6MHz),8253-5(5MHz)8253内部有三个计数器,分别成为计数器0、计数器1和计数器2,他们的机构完全相同。每个计数器的输入和输出都决定于设置在控制寄存器中的控制 字,互相之间工作完全独立。每个计数器通过三个引脚和外部联系,一个为时钟输入端CLK,一个为门控信号输入端GATE,另一个为输出端OUT。每个计数 器内部有一个8位的控制寄存器,还有一个16位的计数初值寄存器CR、一个计数执行部件CE和一个输出锁存器OL。

8255芯片介绍 8255特性:

①一个并行输入/输出的LSI芯片,多功能的I/O器件,可作为CPU总线与外围的接口.②具有24个可编程设置的I/O口,即使3组8位的I/O口为PA口,PB口和PC口.它们又可分为两组12位的I/O口,A组包括A口及C口(高4位,PC4~PC7),B组包括B口及C口(低4位,PC0~PC3).A组可设置为基本的I/O口,闪控(STROBE)的I/O闪控式,双向I /O3种模式;B组只能设置为基本I/O或闪控式I/O两种模

8255芯片

8253芯片

式,而这些操作模式完全由控制寄存器的控制字决定.8255引脚功能:

RESET:复位输入线 , CS:芯片选择信号线 , RD:读信号线 , WR:写入信号 , D0~D7:三态双向数据总线 ,PA0~PA7:端口A输入输出线 ,PB0~PB7:端口B输入输出线, PC0~PC7:端口C输入输出线, A0,A1:地址选择线 三:程序流程图

三、电

四:程序代码

D8279 equ 200H C8279 equ 202H C8253 equ 20bH D82530 equ 208H D82531 equ 209H C82590 equ 210H

C82591 equ 211H data segment HOUR

db 00 MINUTE

db 00 SECOND

db 008 STAT

db 00 LED

db 31H,06H,5bH,4fH,66H,6dH,7dH,27H,7fH,6fH,00H,00H DISBUF db 8 dup(0)data ends stack segment stack

dw 100 dup(?)stack ends code segment

assume cs:code,ds:data START:

MOV AX,DATA

MOV DS,AX

CLI

MOV AL,13H

MOV DX,C82590

OUT DX,AL

MOV AL,8

MOV DX,C82591

OUT DX,AL

MOV AL,1

OUT DX,AL

MOV AX,0

MOV ES,AX

LEA AX,INT0

MOV AX,CS

MOV ES:[4*8+2],AX

MOV DX,C8253

MOV AL,36H

OUT DX,AL

MOV DX,D82530

MOV AX,10000

OUT DX,AL

MOV AL,AH

OUT DX,AL

MOV DX,C8253

MOV AL,36H

OUT DX,AL

MOV DX,D82531

MOV AX,100

OUT DX,AL

MOV AL,AH

OUT DX,AL

MOV DX,C8279

MOV AL,00H

OUT DX,AL

MOV AL,34H

OUT DX,AL

MOV AL,0D2H

OUT DX,AL

MOV STAT,0

MOV DX,C82591

MOV AL,0FEH

OUT DX,AL

WAIT1:

MOV DX,C8279

IN AL,DX

MOV AH,AL

AND AL,80H

JNE WAIT1

MOV AL,AH

AND AL,0FH

CMP AL,00H

JE WAIT1

MOV AL,40H

OUT DX,AL CHK: MOV DX,D8279

IN AL,DX

CMP AL,33H

JNE BBB

MOV DX,C82591

MOV AL,0FFH

OUT DX,AL

MOV AL,STAT

INC AL

MOV STAT,AL

CMP AL,1

JNZ AA1

MOV SI,OFFSET DISPBUF

MOV CX,4

MOV AL,00 BB0: MOV [SI],AL

INC SI

LOOP BB0

CALL DISP

JMP CHK AA1: CMP AL,2

JNZ AA2

MOV SI,OFFSET DISPBUF

MOV AL,00

MOV [SI],AL

INC SI

MOV [SI],AL

ADD SI,2

MOV [SI],AL

INC SI

MOV [SI],AL

CALL DISP

JMP CHK AA2: CMP AL,3

JNZ AA3

MOV SI,OFFSET DISPBUF+2

MOV CX,4

MOV AL,00 BB1: MOV [SI],AL

INC SI

LOOP BB1

CALL DISP

JMP CHK AA3: MOV STAT,00

MOV AL,0FEH

MOV DX,C82591

OUT DX,AL

CALL FULLSFM

CALL DISP

JMP CHK BBB: CMP AL,3BH

JE BBB0

JMP CCC BB0: MOV AL,STAT

CMP AL,1

JNZ BBB1

MOV AL,HOUR

ADD AL,1

DAA

MOV HOUR,AL

CALL FULLSH1

CALL DISP

JMP BBB BBB1: MOV AL,STAT

CMP AL,2

JNZ BBB3

MOV AL,MINUTE

ADD AL,1

DAA

MOV MINUTE,AL

CALL FULLFEN

CALL DISP

JMP BBB BBB3:

MOV AL,STAT

CMP AL,3

JZ

BBB4

JMP

DDD BBB4:

MOV AL,SECOND

ADD AL,1

DAA

MOV SECOND,AL

CALL FULLMIAO

CALL DISP

JMP BBB

CCC:

CMP AL,3AH

JE CC0

JMP DDD CC0:

MOV AL,STAT

CMP AL,1

JNZ CCC1

MOV AL,HOUR

SUB AL,1

DAS

MOV AL,HOUR

SUB AL,1

ADD AL,1

DAA

MOV SECOND,AL

CMP AL,60H

JNZ FANHUI

MOV SECOND,0

MOV AL,MINUTE

ADD AL,1

DAA

MOV MINUTE,AL

CMP AL,60H

JNZ FANHUI

MOV MINUTE,0

MOV AL,HOUR

ADD AL,1

DAA

MOV HOUR,AL

CMP AL,24H

JNZ FANHUI

MOV HOUR,0

CALL FULLSFM

CALL DISP

POP SI

POP DI

POP BX

POP AX

IRET FULL

SFM PROC NEAR

LEA DI,DISBUF

LEA BX,LED

LEA SI,SECOND

MOV CX,3 AA4:

MOV AL,[SI]

AND AL,0FH

XLAT

MOV [DI],AL

INC DI

MOV AL,[SI]

PUSH CX

MOV CL,4

SHR AL,CL

AND AL,0FH

XLAT

MOV [DI],AL

INC DI

POP CX

INC SI

LOOP AA4

RET FULL

SFM ENDP FULL

SHI PROC NEAR

LEA SI,DISBUF

MOV AL,0

MOV CX,4 CCC0:

MOV [SI],AL

INC SI

LOOP CCC0

LEA BX,LED

MOV AL,HOUR

AND AL,0FH

XLAT

MOV [SI],AL

XLAT

MOV [SI],AL

MOV AL,HOUR

MOV CL,4

SHR

AL,CL

AND AL,0FH

XLAT

INC

SI

MOV

[SI],AL

RET FULL

SHI ENDP FULL

FEN PROC NEAR

LEA SI,DISBUF

MOV AL,0

MOV [SI],AL

INC SI

MOV [SI],AL

INC SI

LEA BX,LED

MOV

AL,MINUTE

AND AL,0FH

XLAT

MOV

[SI],AL

MOV AL,MINUTE

MOV

CL,4

SHR AL,CL

AND AL,0FH

XLAT

INC SI

MOV

[SI],AL

RET FULL

FEN ENDP FULL

MIAO PROC NEAR

LEA SI,DISBUF

LEA BX,LED

MOV AL,SECOND

AND AL,0FH

XLAT

MOV [SI],AL

MOV AL,SECOND

MOV CL,4

SHR AL,CL

AND AL,0FH

XLAT

INC SI

MOV [SI],AL

MOV AL,0

INC SI

MOV [SI],AL

INC SI

MOV [SI],AL

INC SI

MOV [SI],AL

INC SI

MOV [SI],AL

RET FULL MIAO ENDP DISP

PROC NEAR

MOV CX,8

MOV DX,D8279

LEA SI,DISBUF DISI

MOV AL,[SI]

OUT DX,AL

INC SI

LOOP DISI

RET CODE ENDS

END START

第五篇:微机原理课程设计

电子信息科学与技术《微机原理》课程设计

一、本次课程设计的目的和意义

学习和掌握计算机中常用接口电路的应用和设计技术,充分认识理论知识对应用技术的指导性作用,进一步加强理论知识与应用相结合的实践和锻炼。通过这次设计实践能够进一步加深对专业知识和理论知识学习的认识和理解,使自己的设计水平和对所学的知识的应用能力以及分析问题解决问题的能力得到全面提高。

二、设计时间、基本要求

(一)、设计时间:二周(二)、基本要求:

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)设计总结:对整个设计工作过程进行归纳和综合,对设计中所存在的问题和不足进行分析和总结,提出解决的方法、措施、建议和对这次设计实践的认识、收获和提高。

下载微机原理课程设计(电子密码锁)word格式文档
下载微机原理课程设计(电子密码锁).doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    微机原理课程设计

    汇编程序设计题 题目一 密码设置模拟 该程序可以进行密码的设置(第一次)和修改(已设置密码)。要求输入的密码不显示。 题目二 计算器 编辑程序可以实现键盘输入数据与运算符......

    2008微机原理课程设计

    《微机原理及接口》课程设计任务书 适用专业:05电子信息工程 通信工程 一、 本次课程设计的目的和意义 学习和掌握计算机中常用接口电路的应用和设计技术,充分认识理论知识对......

    微机原理课程设计

    接口技术课程设计 一、 设计内容 设计一个投票统计器,完成投票、计票统计和票数显示等功能。 二、设计原理及方案 在8086最小工作模式下,连接一块8255A芯片。在 8255A的C端口......

    微机原理课程设计

    《微机原理》课程设计报告 时间 学 院 专业班级 姓 名 学 号 合 作 者 指导教师 成 绩 2013 年 11 月摘要 本文针对可燃气体检测模块MQ—K1,综合运用《微机原理》所学知识......

    微机原理课程设计

    合肥工业大学 计算机与信息学院 课程设计 课程:微机原理与接口技术设计 专业班级:计算机科学与技术班 学号:2 姓名: 一、设计题目及要求: 利用 8259A中断,实现对8253多种计数......

    微机原理课程设计

    一、设计题目 单片机综合试验仪——计数/中断模块 二、功能及性能指标 显示计数,记到15就重新开始计数 三、设计目的 1 了解单片机综合实验仪基本构成和分模块设计方法。掌......

    2012微机原理课程设计指导书

    微机原理课程设计 指 导 书 南通大学计算机科学与技术学院计算机科学与技术系 二零一二年五月 目 录 1 课程设计的目的和任务 ....................................... 1......

    微机原理课程设计题目

    1. 汇编绘图1 屏幕上出现随机(随机颜色,随机边长,随机线宽)的正方形 2. 汇编绘图2 屏幕上出现随机(随机颜色,随机边长,随机线宽)的三角形 3. 汇编绘图3 屏幕上出现随机(随机颜色,随机......