关于动态方向箭头控制及显示接口设计微机原理课程设计说明书.docx
《关于动态方向箭头控制及显示接口设计微机原理课程设计说明书.docx》由会员分享,可在线阅读,更多相关《关于动态方向箭头控制及显示接口设计微机原理课程设计说明书.docx(14页珍藏版)》请在冰豆网上搜索。
![关于动态方向箭头控制及显示接口设计微机原理课程设计说明书.docx](https://file1.bdocx.com/fileroot1/2022-12/13/f71f5c14-885d-47f9-a7d5-fb3a82bccb42/f71f5c14-885d-47f9-a7d5-fb3a82bccb421.gif)
关于动态方向箭头控制及显示接口设计微机原理课程设计说明书
天津商业大学通信专业2010级
微机原理及接口技术
课程设计说明书
设计题目:
动态方向箭头控制及显示接口设计
学号:
20104253
姓名:
范吟雪
完成时间:
2013.1.5
总评成绩:
指导教师签章:
设计题目:
一、设计任务要求:
利用试验箱上的小键盘控制8×8点阵LED显示箭头向上或向下移动。
画出8255连接4×4小键盘(参考附录1)和8×8点阵LED显示接口电路图。
画出8255的地址译码电路,8255的端口地址为A口0E860H、B口0E861、C口0E862H、命令寄存器0E863H
二、电路设计
8255A由数据端口,组控制电路,数据总线缓冲器,读写逻辑部件几部分组成。
三个8位的I/O端口A,B,C,三个端口都可以作为数据I/O口使用,其中,A口和B口都可以既作为输出端口又作为输入端口,只有C口可以作为控制端口实用,并实现8位中的任何一位的置位和复位功能。
有时,A,B口作为数据I/O,而C口作为控制或状态端口,分为上、下两部分,配合A,B口工作。
(1)静态箭头显示原理我们选择将A,B口都作为输出,分别控制8行8列的发光二极管的行和列的电平,经试验得知,PA口口控制的列是低电平有效,即给列低电平0时,该列的发光二极管亮1则灭,而PB口控制的行为高电平有效,给行1时,该行所在的发光二极管亮0灭。
当某二极管所对应的行和列的电平均有效时,该二极管亮。
依据上部分内容,可以写出上下两种箭头的静态初始化控制字。
C口的高四位做输出,低四位做输入,分别控制4行4列的键盘。
同样可以写出初始化程序来选择第一行的2个键有效,以此控制两种箭头的切换。
然后设置8255A的工作方式控制字,各口工作方式均为0,确定为1000001B,写入其控制端口。
完善程序后,再加入时间延时程序,每个初始化都调用该程序,选择合适的时间,并在每次子程序(如向上的箭头)结尾加上循环跳转到程序开头,不断地重复每一个初始化过程,这样,不停地运行,看起来就是连接起来的似乎是不变的静态的两种箭头
(2)动态箭头显示原理接下来考虑实现动态两种箭头显示。
本环节主要是改变程序,应用程序控制来实现动态。
在子程序中加入循环,使每一行或列的同样的初始字在不同的循环次数时显示在不同的行或列,并保证所有的同步循环,以保持箭头的形状,再一次加入延时程序,使完成每次移动的时间适中,不要太快也不要太慢。
这样就实现了各行各列同步移动的现象,也就是动态显示的过程。
(3)键控功能实现原理最后要实现键控功能。
同样是修改汇编程序,首先写入初始字,是第一行的两个键有效,不断地扫描两个键的电平,并从端口中读入信息,由于每次仅有一个键按下去,因此读入的两位码中只有一个是高电平,如是1000的时候,我们将其分别于1,2,4,8进行比较,当相等时则转到相应的箭头程序,判断后等于8,可确定是3键按下,因此转去执行向上的箭头程序,直到下一次的比较成立,则转去相应的程序,以此实现了键控的功能。
三、设计调试总结(包括对设计的目的和意义的认识、本人完成情况、设计中的主要收获和不足)
通过本次微机原理与接口技术的课程设计,进行程序设计编程和技能的基本训练,巩固在课堂上学到的有关软件程序设计的基本知识和方法,通过动手能力的培养,进一步熟练汇编语言的结构和使用方法,达到能独立阅读、编制和调试一定规模的汇编语言程序的水平。
但是,在课程设计过程中也遇到了很多问题,充分了解了自己对课程掌握的不足,不过后来也通过自己的进一步学习和老师同学的帮助解决了问题,最后完成了动态方向箭头控制及显示接口设计,掌握了试验箱上小键盘控制点矩阵的原理,也进一步掌握了8255的工作原理。
二、程序清单
(注:
程序清单使用5号字体,单倍行距排版)
STACK1SEGMENTSTACK
DB256DUP(?
)
STACK1ENDS
DATASEGMENT
DIS0DB'PRESSANYOFTHEKEYSTOQUIT!
$';提示信息
I8255TYPEDW0003H;8255控制字的地址
I8255ADDADW0000H;8255的A口地址
I8255ADDBDW0001H;8255的B口地址
I8255ADDCDW0002H;8255的C口地址
KEY_SVDB0,0,1,0,2,0,0,0,3
KEY_V_BUFDB?
SCAN_VDB?
KEY_HVDB?
DIS1DB'PCIADDRESS0$';
DIS2DB'PCIADDRESS1$'
DIS3DB'PCIMEMORYADDRESS$'
DIS4DB'PCIINTERRUPTLINE$'
DIS5DB'BIOSNOTSUPPER!
$'
DIS6DB'READPCIBOARDFAIL!
$'
;-------PCIConfigurationSpaceRegisters-------------------------------
PCI_CS_VENDOR_IDEQU0
PCI_CS_DEVICE_IDEQU2
PCI_CS_COMMANDEQU4
PCI_CS_STATUSEQU6
PCI_CS_REVISIONEQU8
PCI_CS_CLASS_CODEEQU9
PCI_CS_CACHE_LINE_SIZEEQU0CH
PCI_CS_MASTER_LATENCYEQU0DH
PCI_CS_HEADER_TYPEEQU0EH
PCI_CS_BISTEQU0FH
PCI_CS_BASE_ADDRESS_0EQU10H
PCI_CS_BASE_ADDRESS_1EQU14H
PCI_CS_BASE_ADDRESS_2EQU18H
PCI_CS_BASE_ADDRESS_3EQU1CH
PCI_CS_BASE_ADDRESS_4EQU20H
PCI_CS_BASE_ADDRESS_5EQU24H
PCI_CS_EXPANSIONEQU30H
PCI_CS_INTERRUPT_LINEEQU3CH
PCI_CS_INTERRUPT_PINEQU3DH
PCI_CS_MIN_GNTEQU3EH
PCI_CS_MAX_LATEQU3FH
;---------------------END-------------------------
ADDRESS_IO_0DW?
ADDRESS_IO_1DW?
DATAENDS
CODESEGMENT'CODE'
ASSUMECS:
CODE,SS:
STACK1,DS:
DATA
START:
PUSHDS
XORAX,AX
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVAH,0B1H;读配置资源
MOVAL,1H
INT1AH
CMPAH,0
JZSTAR1
MOVDX,OFFSETDIS5
JMPM_EXIT
STAR1:
MOVAH,0B1H
MOVAL,02H
MOVCX,8376H
MOVDX,10EBH
MOVSI,0
INT1AH
JNCAA
MOVDX,OFFSETDIS6
MOVAH,9
INT21H
JMPM_EXIT
AA:
MOVAH,0B1H
MOVAL,09H
MOVDI,PCI_CS_BASE_ADDRESS_1
INT1AH
CMPAH,0
JZSTAR2
MOVDX,OFFSETDIS1
MOVAH,9
INT21H
JMPM_EXIT
STAR2:
ANDCX,0FFFCH
MOVAX,CX
MOVADDRESS_IO_0,AX
MOVAH,0B1H
MOVAL,09H
MOVDI,PCI_CS_BASE_ADDRESS_3
INT1AH
CMPAH,0
JZSTAR3
MOVDX,OFFSETDIS1
MOVAH,9
INT21H
JMPM_EXIT
STAR3:
ANDCX,0FFFCH
MOVAX,CX
MOVADDRESS_IO_1,AX
ADDI8255TYPE,AX
ADDI8255ADDA,AX
ADDI8255ADDB,AX
ADDI8255ADDC,AX
MOVAL,3
MOVAH,0
INT10H
MOVDX,OFFSETDIS0;显示提示
MOVAH,9
INT21H
MOVAH,0FFH
MOVDX,I8255TYPE;初始8255的C口pc4~pc7为输出,pc0~3为输入
MOVAL,81H
OUTDX,AL
MOVKEY_V_BUF,0FFH
MAIN_LP:
CALLKEYSCAN
CMPAL,KEY_V_BUF
JZMNLP1
CMPAL,0FFH
JZMNLP1
MOVKEY_V_BUF,AL
CALLDISPLAY1
MNLP1:
CALLTIME
CALLPCKEY
JMPMAIN_LP
M_EXIT:
MOVAX,4C00H
INT21H
DISPHPROCNEAR
PUSHBX
PUSHCX
MOVCX,4
MOVCH,4
DISPH1:
ROLAX,CL
PUSHAX
ANDAL,0FH
ANDAL,30H
CMPAL,'9'
JBEDISPH2
ADDAL,7
DISPH2:
MOVAH,2
MOVDL,AL
INT21H
POPAX
DECCH
JNZDISPH1
POPCX
POPBX
RET
DISPHENDP
DISPLAY1PROCNEAR
CMPAL,10H
JLDSPLY1
RET
DSPLY1:
ADDAL,30H
CMPAL,'9'
JBEDISP_H
ADDAL,7
DISP_H:
MOVAH,2
MOVDL,AL
INT21H
RET
DISPLAY1ENDP
KEYSCANPROCNEAR
MOVKEY_HV,0
MOVSCAN_V,80H
SCAN_LP:
MOVAL,SCAN_V
MOVDX,I8255ADDC
OUTDX,AL
INAL,DX
MOVBL,AL
ANDBL,0FH
MOVAL,BL;;得c口0-3位数据
CMPAL,2
JZCCP1
CMPAL,8
JZCCP41
MOVBX,OFFSETKEY_SV
MOVAH,0
MOVSI,AX
MOVAL,[BX+SI]
ADDAL,KEY_HV
RET
CCP1:
;CALLDISPLAY1
MOVDX,I8255ADDA
MOVAL,0F7H
OUTDX,AL
MOVDX,I8255ADDB
MOVAL,10H;显示个位
ROLAL,CL
OUTDX,AL
CALLTIME1
MOVDX,I8255ADDA
MOVAL,0E3H
OUTDX,AL
MOVDX,I8255ADDB
MOVAL,08H;显示个位
ROLAL,CL
OUTDX,AL
CALLTIME1
MOVDX,I8255ADDA
MOVAL,0D5H
OUTDX,AL
MOVDX,I8255ADDB
MOVAL,04H;显示个位
ROLAL,CL
OUTDX,AL
CALLTIME1
MOVDX,I8255ADDA
MOVAL,0F7H
OUTDX,AL
MOVDX,I8255ADDB
MOVAL,02H;显示个位
ROLAL,CL
OUTDX,AL
CALLTIME1
INCCL
CALLPCKEY
DECAL
MOVDX,I8255ADDC
OUTDX,AL
INAL,DX
MOVBL,AL
ANDBL,0FH
MOVAL,BL;;得c口0-3位数据
CMPAL,0
JZCCP1
JMPKEYSCAN
CCP41:
JMPCCP42
CCP42:
JMPCCP4
CCP4:
;CALLDISPLAY1
MOVDX,I8255ADDA
MOVAL,0F7H
OUTDX,AL
MOVDX,I8255ADDB
MOVAL,08H;显示个位
RORAL,CL
OUTDX,AL
CALLTIME3
MOVDX,I8255ADDA
MOVAL,0E3H
OUTDX,AL
MOVDX,I8255ADDB
MOVAL,10H;显示个位
RORAL,CL
OUTDX,AL
CALLTIME3
MOVDX,I8255ADDA
MOVAL,0D5H
OUTDX,AL
MOVDX,I8255ADDB
MOVAL,20H;显示个位
RORAL,CL
OUTDX,AL
CALLTIME3
MOVDX,I8255ADDA
MOVAL,0F7H
OUTDX,AL
MOVDX,I8255ADDB
MOVAL,40H;显示个位
RORAL,CL
OUTDX,AL
CALLTIME3
INCCL
CALLPCKEY
DECAL
MOVDX,I8255ADDC
OUTDX,AL
INAL,DX
MOVBL,AL
ANDBL,0FH
MOVAL,BL;;得c口0-3位数据
CMPAL,0
JZCCP4
JMPKEYSCAN
TIME1PROCNEAR
MOVAX,0EFH
T4:
DECAX
MOVBX,0FFFFH
T3:
DECBX
JNZT3
CMPAX,0
JNZT4
RET
TIME1ENDP
TIME2PROCNEAR
MOVAX,0FFFFH
T6:
DECAX
MOVBX,01EFH
T5:
DECBX
JNZT5
CMPAX,0
JNZT6
RET
TIME2ENDP
TIME3PROCNEAR
MOVAX,01EFH
T8:
DECAX
MOVBX,0FFFFH
T7:
DECBX
JNZT7
CMPAX,0
JNZT8
RET
TIME3ENDP
TIME4PROCNEAR
MOVAX,0FFFFH
T10:
DECAX
MOVBX,01EFH
T9:
DECBX
JNZT9
CMPAX,0
JNZT10
RET
TIME4ENDP
KYSC1:
ADDKEY_HV,4
ROLSCAN_V,1
CMPSCAN_V,1
JNZKYSC2
MOVAL,0FFH
RET
KYSC2:
JMPSCAN_LP
KEYSCANENDP
PCKEYPROCNEAR
MOVAH,6
MOVDL,0FFH
INT21H
JEP1
MOVAX,4C00H
INT21H
P1:
RET
PCKEYENDP
TIMEPROCNEAR
MOVAX,0FFH
T2:
DECAX
MOVBX,0FFFH
T1:
DECBX
JNZT1
CMPAL,0
JZT2
RET
TIMEENDP
CODEENDS
ENDSTART