微机原理课程设计.docx
- 文档编号:3974019
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:21
- 大小:229.71KB
微机原理课程设计.docx
《微机原理课程设计.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计.docx(21页珍藏版)》请在冰点文库上搜索。
微机原理课程设计
1.需求分析
1.1设计目的
通过一个学期对《微机原理及接口技术》学习,掌握的知识还停留在理论的上。
但是这是一门实践性较强的课程,让学生在学完该课程之后,进行一次课程设计,使学生将课堂所学的知识和实践有机结合起来,初步掌握计算机应用系统设计的步骤和接口设计的方法,提高分析和解决实际问题的能力。
通过设计实践,培养学生查阅专业资料,工具书或参考书,了解有关工业标准,掌握现代设计手段和软件工具,并能以图纸和说明书表达设计思想和结果的能力。
通过设计,不但要培养和提高学生解决工程具体问题,动脑动手的技术工作能力,而且还要逐步建立科学正确的设计和科研思想,培养良好的设计习惯,牢固树立实事求是和严肃认真的工作态度。
1.2在课程设计报告中实现
在实际的实验当中,由于实验设备上的差异,所以很难实现时、分等较为完美的显示,但在课程设计的报告中则没有这些限制。
所以在课程设计报告中必须实现的功能有:
用4个数码管实验0分0秒到59分59秒的显示。
2)将数码管上的信息同时显示在显示器上。
2.概要设计
2.1设计内容
本次课程设计的内容为电子时钟的设计与实现,利用定时器从0开始进行计时,将计时的结果显示在数码管上。
每隔1秒,秒钟计时一次,到60秒,分钟加1,到60分小时加1。
根据需要,需选择的芯片有8254,8259,8255,系统时钟频率1.041667MHz;
由于实验箱上的数码管一次只能用一个,设计者可考虑先完成下面实验要求:
利用8254计时,计时从0秒到9秒,到9秒后又从0秒重新开始计时,同时将0秒~9秒的数字变动信息通过8255送数码管显示。
由系统时钟频率1.041667MHz,同学们考虑如何利用8254计数器实现1秒的计时。
2.3电路原理与主要芯片功能
其中主要用8259A的IR7中断服务程序完成秒、分、时的运算即计时功能,IR6的中断服务程序完成调时、调分功能。
8253用来产生50ms的脉冲作为IR7的中断请求信号。
8255A负责将内存里的时位、分位和秒位数值输出到数码管。
8279A用来控制显示器显示时钟。
按键K1+和K2+分别作为IR2和IR6的中断请求信号。
按键K1+启动/关闭对时功能,它决定是否屏蔽IR7和IR6中断源。
2.48255主要功能
8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。
CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位、32位等。
用+5V单电源供电,能在以下三种方式下工作:
方式0--基本输入/出方式、方式1--选通输入/出方式、方式2--双向选通工作方式。
8255的内部结构及引脚如图2.1所示:
图2.1内部结构及引脚
8255工作方式控制字和C口按位置位/复位控制字格式如图3-7-2所示:
图2.2置位/复位控制字格式
3详细设计
3.1计时的实现
秒定时模块负责提供中断信号,由于CPU运算模块中的指令消耗一定的时间,所以中断信号最好通过硬件来实现,可以选择实验箱中的8253或8254定时/计数器来提供,但又因为8254所能提供的信号的周期是毫秒级的,因此必须通过软件的方法在运算模块中设置一个统计中断次数的变量,并且这一变量必须事先在内存里开辟存储单元。
中断信号是8254的通道2工作方式3时,产生一个30HZ的脉冲信号。
运算模块负责时、分、秒的计算,该模块主要通过8259的IR7号中断来实现,但由于每30HZ一次中断请求,所以在中断服务程序必须利用已申请内存单元COUNT来统计中断请求的次数,只有当COUNT的值为30时,才能让秒单元内的数值加1。
另外,在中断服务程序里,必须对秒、分和时的单元内的数值进行判断,当秒加到60时,分必须加1,秒清零;当分加到60时,时加1,分清零;当时加到24时,直接清零,然后转到调用处。
运算模块流程图如下图所示:
N
Y
Y
图3.2运算模块流程图
3.3主程序流程图
图3.3系统实现流程图
主程序的流程图是对整个程序的逻辑的图象表示。
首先是设置8254、8255、8259的各个端口地址。
接着初始化各个芯片,开始计时,并通过8259中断控制时间的正确显示。
在整个过程中都在检测是否有铵键响应。
有则停止,没有则返回继续执行。
4.编码
这是计时的基本代码,为是实现准确的计时1秒。
利用了8254的OUTO30HZ输出一个脉冲。
即1/30秒产生一次中断。
所以count自加到30则记数1秒。
其他以次类推。
INCCOUNT
CMPCOUNT,30
JNZOVER
MOVCOUNT,0
INCSEC
CMPSEC,10;计时值自增,到10即归0
JNEDIS
MOVSEC,0MOVAX,HOUR
MOVDX,0;完成时计时值的显示
MOVBX,10
DIVBX
5.调试分析
中断控制器8259A是Intel公司专为控制优先级中断而设计开发的芯片。
它将中断源优先级排队、辨别中断源以及提供中断矢量的电路集于一片中,因此无需附加任何电路,只需对8259A进行编程,就可以管理8级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。
同时,在不需增加其他电路的情况下,通过多片8259A的级连,能构成多达64级的矢量中断系统。
它的管理功能包括:
1)记录各级中断源请求,2)判别优先级,确定是否响应和响应哪一级中断,3)响应中断时,向CPU传送中断类型号。
8259A的内部结构和引脚如图2.3所示:
图2.3内部结构和引脚
8259A的命令共有7个,一类是初始化命令字,另一类是操作命令。
8259A的编程就是根据应用需要将初始化命令字ICW1-ICW4和操作命令字OCW1-OCW3分别写入初始化命令寄存器组和操作命令寄存器组。
OCW1-OCW3各命令字格式如图2.4所示,其中OCW1用于设置中断屏蔽操作字,OCW2用于设置优先级循环方式和中断结束方式的操作命令字,OCW3用于设置和撤销特殊屏蔽方式、设置中断查询方式以及设置对8259内部寄存器的读出命令。
图2.4OCW1-OCW3各命令字格
6.测试结果及运行效果
使用8259控制,用数码管的显示功能来设计,显示部分用八只LED为显示管,这些LED发光二极管的阴极是互相连接在一起的,所以称为共阴极数码管。
通过在这八只发光二极管的阳极加+5V或0V的电压使不同的二极管发光,形成不同的字符和数字。
电子时钟用到的是0-9十个数字,它们所对应的字符表依次是3FH、06H、5BH、4FH、66H、6DH、7DH、07H、7FH、6FH。
图3.1显示模块流程图
该模块主要是将运算模块和对时模块运算出来并存放在内存单元里的十八进制时位、分位和秒位数值转化为十进制,并通过八只数码管显示出来。
此模块实现的硬件是使用实验箱中的LED单元,采用软件译码,即在程序中设置一个段选码表。
CPU直接往LED输出八段代码,省去了硬件译码器。
8259输出B0-B3,A0-A3作为八段数据输出口,经74LS07驱动后到达各LED。
只要做到每次送一次段选码时也送一次扫描码,并且每送一次位扫描码后,位码中的0右移一位作为下一次的位扫描码,即可实现从右向右使八只LED依次出现数字显示,这里位扫描码的送出和右移是由8259自动实现的。
7.系统开发所用到的技术
本次设计实现的电子时钟的功能,电子时钟主要采用可编程并行接口芯片8255A、中断控制器2859A、定时/计数器8253、LED数码显示管和两个按键来设置一个控制灯的开关来组合设计。
参考文献
[1]陈忠强.现代微机原理与接口技术.冶金工业出版社.2006年
[2]郭兰英.微机原理与接口技术.清华大学出版社.2006年
[3]西安唐都科教仪器公司.32位微机原理与接口技术实验教程.2005年
[4]西安唐都科教仪器公司.32位微机原理与接口技术用户手册.2005年
[5]胡汉才.微机原理与接口技术课程设计[M].北京:
清华大学出版,1996
附录全部代码
INTR_IVADDEQU01CCH;INTR对应的中断矢量地址
INTR_OCW1EQU0A1H;INTR对应PC机内部8259的OCW1地址
INTR_OCW2EQU0A0H;INTR对应PC机内部8259的OCW2地址
INTR_IMEQU0F7H;INTR对应的中断屏蔽字
PCI_INTCSREQU0DF38H;PCI卡中断控制寄存器地址
IOY0EQU0DA00H
IOY1EQU0DA40H
;*****************************************************************
MY8254_COUNT0EQUIOY0+00H*4;8254计数器0端口地址
MY8254_COUNT1EQUIOY0+01H*4;8254计数器1端口地址
MY8254_COUNT2EQUIOY0+02H*4;8254计数器2端口地址
MY8254_MODEEQUIOY0+03H*4;8254控制寄存器端口地址
MY8255_AEQUIOY1+00H*4;8255的A口地址
MY8255_BEQUIOY1+01H*4;8255的B口地址
MY8255_CEQUIOY1+02H*4;8255的C口地址
MY8255_MODEEQUIOY1+03H*4;8255的控制寄存器地址
STACK1SEGMENTSTACK
DW256DUP(?
)
STACK1ENDS
DATASEGMENT
CS_BAKDW?
;保存INTR原中断处理程序入口段地址的变量
IP_BAKDW?
;保存INTR原中断处理程序入口偏移地址的变量
IM_BAKDB?
;保存INTR原中断屏蔽字的变量
SECDW0;秒计时变量
MINDW9
HOURDW0
COUNTDB0
DATAENDS
DATA1SEGMENT
VALUEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H
DATA1ENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,ES:
DATA1
START:
MOVAX,DATA
MOVDS,AX
CLI
MOVDX,PCI_INTCSR
SUBDX,19H
INAL,DX
MOVDX,PCI_INTCSR;初始化PCI卡中断控制寄存器
MOVAX,1F00H;向PCI_INTCSR中写入003F1F00H
OUTDX,AX
ADDDX,2
MOVAX,003FH
OUTDX,AX
MOVAX,0000H;替换INTR的中断矢量
MOVES,AX
MOVDI,INTR_IVADD
MOVAX,ES:
[DI]
MOVIP_BAK,AX;保存INTR原中断处理程序入口偏移地址
MOVAX,OFFSETMYISR
MOVES:
[DI],AX;设置当前中断处理程序入口偏移地址
ADDDI,2
MOVAX,ES:
[DI]
MOVCS_BAK,AX;保存INTR原中断处理程序入口段地址
MOVAX,SEGMYISR
MOVES:
[DI],AX;设置当前中断处理程序入口段地址
MOVDX,INTR_OCW1;设置中断屏蔽寄存器,打开INTR的屏蔽位
INAL,DX
MOVIM_BAK,AL;保存INTR原中断屏蔽字
ANDAL,INTR_IM
OUTDX,AL
MOVDX,MY8255_MODE;初始化8255工作方式
MOVAL,80H;工作方式0,A口输出
OUTDX,AL
MOVDX,MY8255_A;写A口发出的起始数据
MOVAL,3FH
OUTDX,AL
STI
MOVSEC,0
MOVAX,SEC
CALLDECSHOW
MOVAX,0E0DH;回车,置光标到行首
INT10H
MOVDX,MY8254_MODE;初始化8254工作方式
MOVAL,34H;计数器0,方式2
OUTDX,AL
MOVDX,MY8254_COUNT0;装入计数初值
MOVAL,0A2H
OUTDX,AL
MOVAL,87H
OUTDX,AL
WAIT1:
MOVAH,1;判断是否有按键按下
INT16H
JZWAIT1;无按键则跳回继续等待,有则退出
QUIT:
CLI
MOVDX,PCI_INTCSR;恢复PCI卡中断控制寄存器
MOVAX,0000H
OUTDX,AX
MOVAX,0000H;恢复INTR原中断矢量
MOVES,AX
MOVDI,INTR_IVADD
MOVAX,IP_BAK;恢复INTR原中断处理程序入口偏移地址
MOVES:
[DI],AX
ADDDI,2
MOVAX,CS_BAK;恢复INTR原中断处理程序入口段地址
MOVES:
[DI],AX
MOVDX,INTR_OCW1;恢复INTR原中断屏蔽寄存器的屏蔽字
MOVAL,IM_BAK
OUTDX,AL
STI
MOVAX,4C00H;返回到DOS
INT21H
MYISRPROCNEAR;中断处理程序MYISR
MOVAX,DATA
MOVDS,AX
INCCOUNT
CMPCOUNT,30
JNZOVER
MOVCOUNT,0
INCSEC
CMPSEC,10;计时值自增,到10即归0
JNEDIS
MOVSEC,0
addMIN,1
CMPMIN,10
JNEDIS
MOVMIN,0
addHOUR,1
DIS:
MOVAX,SEC;完成秒计时值的显示
CALLDECSHOW
MOVAX,0E0DH;回车,置光标到行首
INT10H
OVER:
MOVDX,PCI_INTCSR
SUBDX,19H
INAL,DX
MOVDX,PCI_INTCSR;清PCI卡中断控制寄存器标志位
ADDDX,2
MOVAX,003FH
OUTDX,AX
MOVDX,INTR_OCW2;向PC机内部8259发送中断结束命令
MOVAL,20H
OUTDX,AL
MOVAL,20H
OUT20H,AL
IRET
MYISRENDP
DECSHOWPROCNEAR
MOVAX,DATA
MOVDS,AX
MOVAX,HOUR
MOVDX,0;完成时计时值的显示
MOVBX,10
DIVBX
ADDAL,30H;显示计时值十位
MOVAH,0EH
INT10H
ADDDL,30H;显示计时值个位
MOVAL,DL
MOVAH,0EH
INT10H
moval,3ah
movah,0eh
int10h
MOVAX,MIN
MOVDX,0;完成分计时值的显示
MOVBX,10
DIVBX
ADDAL,30H;显示计时值十位
MOVAH,0EH
INT10H
ADDDL,30H;显示计时值个位
MOVAL,DL
MOVAH,0EH
INT10H
moval,3ah
movah,0eh
int10h
MOVAX,SEC
MOVDX,0;完成秒计时值的显示
MOVBX,10
DIVBX
ADDAL,30H;显示计时值十位
MOVAH,0EH
INT10H
XORBX,BX
MOVBL,DL
ADDDL,30H;显示计时值个位
MOVAL,DL
MOVAH,0EH
INT10H
MOVDX,MY8255_A;写A口
MOVAX,DATA1
MOVES,AX
LEADI,VALUE;ES:
DATA1,DI:
VALUE
MOVAL,ES:
[DI+BX]
OUTDX,AL
RET
DECSHOWENDP
CODEENDS
ENDSTART
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 课程设计