字幕机课程设计2.docx
《字幕机课程设计2.docx》由会员分享,可在线阅读,更多相关《字幕机课程设计2.docx(27页珍藏版)》请在冰豆网上搜索。
字幕机课程设计2
目录
课程设计(论文)任务书
课程设计(论文)成绩评定表
中文摘要
1设计任务描述……….……...………………….….…………………..…………….1
1.1设计题目.....................….…………….…………..……………………………1
1.2设计内容………………………………...…………………………………….1
1.2.1设计目的…………………………………...……………………………..1
1.2.2设计要求…………………………………...……………………………..1
1.2.3发挥部分…………………………….………...………………………….1
2设计思路………..….…………………………….…..……...……………………..2
2.1主要原理.………………………………………………………………………2
2.2程序调试及说明………………………………………………………………..2
2.2.1程序调试…………………………………………………………………..2
2.2.2结果说明…………………………………………………………………..3
3设计原理流程图………………….……..….……………………………...……….4
4实际硬件接线图.............………..….……..….………………………...………….5
5源程序清单及注释………..….….………………………….…..…...…………….6
6主要元器件介绍……………………………………………...………………..….11
6.18086简介………………………………………………………………...…...11
6.1.18086CPU简介………….…………………………………...………...11
6.1.28086主要特性………….…………………………………...………...11
6.1.38086CPU寄存器结构…….………………………………...………...12
6.1.18086CPU引脚图…….……………………………………...………...14
6.1.516*16LED点阵…………………….………………..…..…………...16
6.2软件介绍……………………………………………...……………………...17
7设计总结…………...…………………………….……...………………………..21
致谢…………...…………………………………….……...………………………..22
参考文献.……………………..….…..……………….……………………………...23
1设计任务描述
1.1设计题目
简单字幕机
1.2设计内容
1.2.1设计目的
通过课程设计使学生更进一步掌握微机原理及应用课程的有关知识,提高应用微机解决问题的能力,加深对微机应用的理解。
通过查阅资料,结合所学知识进行软、硬件的设计,使学生初步掌握应用微机解决问题的步骤及方法。
为以后学生结合专业从事微机应用设计奠定基础。
1.2.2设计要求
查阅可编程并行芯片8255或其他相关资料。
文字显示是通过把该文字的图形信息输出到显示器件,配合软件不同的刷新方式即可实现文字的多种方式的移动。
1.2.3发挥部分
实现字幕的多种方式的移动。
2设计思路
2.1主要原理
简单字幕机动态显示字幕移动是系统总线和LED点阵两个模块组成来实现的,通过系统总线实现数据的输入,将数据代码输入到数据段中,系统总线中的IOY0、IOY1、IOY2、IOY3分别与系统总线中的CS1、CS2、CS3、CS4相连接,IOY0、IOY1、控制16*16模块中的行输入,IOY2、IOY3控制16*16模块中的列输入,由于我的字幕是由下向上滚动显示,一行一行的输入,因此,数据段中的数据将一行中的第一模块第二模块连在一起,系统总线中的IOW#与LED中的WR相连控制写输入。
在程序段,另外在START程序中,MOVDS,AX为初始化,起到把数据存入DS中的作用,OUTDS,AL输出,BGO:
MOVAX,160为定义外循环次数,且,数值越大,速度越快,保持时间越长,MOVSL,OFFSETHZDOT为取偏移地址给SI,调用ML1,ML2可实现循环,每循环一次,内循环CX循环一次减1,直到为0为止,为了内外两个循环最终可在16*16发光二极管矩阵动态持续地循环显示“棋盘山之旅的美好回忆”。
若想改变汉字的移动速度和持续时间,我们可以改变0D0H值,数值越小,动态移动显示速度越快,持续时间越短;反之,速度越慢,持续时间越长。
2.2程序调试及说明
编写程序并非轻而易举,也需要不断的摸索与研究。
该程序也是经过了无数次的上机调试、运行才最终得以确定的。
2.2.1程序调试
1、现象:
汉字“棋盘山之旅的美好回忆”中的“好”在显示器上显示时不清晰,有疵点。
原因:
“好”字数据编码誊写时有误。
解决:
仔细检查编码的对与错。
2、现象:
汉字在显示器上移动速度过快。
原因:
外循环次数BL值过小。
解决:
将BL值改为较为合适的值0D0H。
3、现象:
16*16发光二极管矩阵显示器上该亮的地方未亮,相反不该亮的亮。
原因:
接线时有的接反了。
解决:
重新按照接线图正确接线。
4、现象:
字幕循环完之后出现乱码。
原因:
循环后程序找不到继续输出的程序。
解决:
在最后加上一组000H。
2.2.2结果说明
此简单字幕机的程序还是比较成功的,不过由于8*8模块的输出范围有限,
所以用16*16模块,要考虑到一个字由四块组成,所以输入的数据要以来输入。
我们也可以人为的控制汉字移动速度和持续时间,即改变外循环次数BL值,值越小移动越快。
另外,此次程序实现的只是让汉字上下移动,若时间允许,我们会尝试着研究让汉字左右移动的程序,以实现汉字动态显示的更多样化。
3原理流程图
4实际接线图
5源程序清单及注释
;============================================================
;文件名称:
LED16.ASM
;功能描述:
;行:
CS1(600H),CS2(640H)列:
CS3(680H),CS4(6C0H)
;============================================================
ROW1EQU0600H;端口定义
ROW2EQU0640H
COL1EQU0680H
COL2EQU06C0H
STACK1SEGMENTSTACK
DW256DUP(?
)
STACK1ENDS
DATASEGMENT
;棋
HZDOTDB000H,000H,000H,000H,00CH,005H,09EH,00FH
DB01EH,005H,00CH,005H,01EH,007H,03FH,005H
DB02DH,007H,00CH,005H,0CCH,01FH,00CH,000H
DB08CH,00DH,0CCH,018H,040H,010H,000H,000H
;盘
DB000H,000H,080H,000H,040H,000H,0E0H,003H
DB020H,002H,0A0H,002H,0F0H,007H,020H,002H
DB0A0H,002H,020H,002H,0F0H,007H,050H,005H
DB050H,005H,050H,005H,0FCH,01FH,000H,000H
;山
DB000H,000H,000H,000H,080H,001H,080H,001H
DB080H,001H,080H,001H,098H,019H,098H,019H
DB098H,019H,098H,019H,098H,019H,0F8H,01FH
DB0F8H,01FH,000H,000H,000H,000H,000H,000H
;之
DB000H,000H,080H,000H,000H,001H,000H,000H
DB0E0H,007H,0E0H,007H,000H,004H,000H,002H
DB000H,001H,080H,000H,040H,000H,020H,008H
DB0F0H,005H,000H,003H,000H,000H,000H,000H
;旅
DB000H,000H,000H,000H,018H,001H,018H,00FH
DB080H,001H,0BCH,004H,008H,002H,008H,013H
DB038H,00DH,024H,005H,024H,009H,024H,009H
DB022H,011H,032H,013H,020H,021H,000H,000H
;的
DB000H,000H,020H,004H,010H,002H,008H,01FH
DB078H,010H,048H,010H,048H,011H,078H,012H
DB078H,014H,048H,010H,048H,010H,078H,018H
DB000H,018H,000H,000H,000H,000H,000H,000H
;美
DB000H,000H,020H,004H,060H,006H,040H,002H
DB0E0H,007H,080H,000H,0C0H,001H,080H,000H
DB0E0H,007H,080H,001H,0F8H,01FH,0C0H,003H
DB060H,006H,030H,00CH,018H,018H,000H,000H
;好
DB000H,000H,030H,000H,018H,01EH,0FCH,03EH
DB0FCH,020H,008H,020H,048H,030H,04CH,018H
DB044H,07FH,02CH,010H,028H,020H,018H,020H
DB03CH,020H,024H,014H,000H,008H,000H,000H
;回
DB000H,000H,000H,000H,0FCH,03FH,0FCH,03FH
DB00CH,030H,00CH,030H,0CCH,033H,04CH,032H
DB04CH,032H,0CCH,032H,00CH,030H,00CH,030H
DB0FCH,03FH,0FCH,03FH,000H,000H,000H,000H
;忆
DB000H,000H,000H,000H,030H,07EH,030H,07EH
DB030H,040H,0B4H,060H,0B4H,030H,0B4H,018H
DB0B4H,00CH,030H,006H,030H,003H,030H,081H
DB030H,047H,030H,07CH,000H,000H,000H,000H
DB000H,000H,000H,000H,000H,000H,000H,000H
DB000H,000H,000H,000H,000H,000H,000H,000H
DB000H,000H,000H,000H,000H,000H,000H,000H
DB000H,000H,000H,000H,000H,000H,000H,000H
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVDX,ROW1
MOVAL,00H
OUTDX,AL
MOVDX,ROW2
OUTDX,AL
MOVAL,0ffH
MOVDX,COL1
OUTDX,AL
MOVDX,COL2
OUTDX,AL
BG0:
MOVAX,160
MOVSI,OFFSETHZDOT
BG1:
CALLDISP
ADDSI,2
DECAX
JZBG0
JMPBG1
;======显示汉字子程序======
;入口参数:
SI=存放汉字起始地址
DISP:
MOVCX,000FH
PUSHAX
ML0:
PUSHCX
MOVBL,01H
MOVCX,0008H
ML1:
MOVDX,ROW1;控制0--7行
MOVAL,00H
OUTDX,AL
MOVAL,[SI]
NOTAL
MOVDX,COL1;0--7列
OUTDX,AL
INCSI
MOVAL,[SI]
NOTAL
MOVDX,COL2;8--15列
OUTDX,AL
INCSI
MOVDX,ROW1;控制0--7行
MOVAL,BL
OUTDX,AL
ROLBL,1
CALLDELAY
LOOPML1
MOVDX,ROW1
MOVAL,00H
OUTDX,AL
MOVCX,0008H
ML2:
MOVDX,ROW2;控制8--15行
MOVAL,00H
OUTDX,AL
MOVAL,[SI]
NOTAL
MOVDX,COL1;0--7列
OUTDX,AL
INCSI
MOVAL,[SI]
NOTAL
MOVDX,COL2;8--15列
OUTDX,AL
INCSI
MOVDX,ROW2;控制8--15行
MOVAL,BL
OUTDX,AL
ROLBL,1
CALLDELAY
LOOPML2
MOVDX,ROW2
MOVAL,00H
OUTDX,AL
SUBSI,32
POPCX
LOOPML0
POPAX
RET
DELAY:
PUSHCX;延时子程序
MOVCX,0100H
DL1:
PUSHAX
POPAX
LOOPDL1
POPCX
RET
CODEENDS
ENDSTART
6.主要元器件介绍
6.18086简介
6.1.18086CPU简介
由于此系统最终要在西安唐都科教仪器出品的32位微机机教学实验系统TD-PITE/PITC上进行实验,故设计硬件配置时采用Intel8086,整个实验的硬件配置都以此为原则进行设计选用。
Intel8086是16位的微处理器(理论学习中为8088,其内部总线为16位,外部总线为8位,故称为准16位微处理器),它采用HMOS工艺40条引脚封装。
8086工作时使用5V电源,时钟频率5MHz(8086-1为10MHz,8086-2为8MHz)它有20根地址线,故可寻址的内存空间为1MB。
6.1.28086主要特性
Intel8086/8088CPU是Intel公司推出的高性能的微处理器,具体如下主要特性:
(1)8086CPU数据总线为16位,8088CUP数据总线为8位。
(2)地址总线都是20位,低16位用于数据总线复用,可直接寻址为1MB的存储空间。
(3)有16位的端口地址,可以寻址64KB的I/O端口。
(4)有99条基本指令,指令功能强大
(5)有9种基本寻址方式。
(6)可以处理内部和外部中断,外部中断源多达256个。
(7)兼容性好,与80*86,8085在源程序一级兼容。
(8)8086/8088标准主频为5MHz,8086/8088-2主频为8MH。
(9)支持单处理器或多处理器系统工作。
实验中是以Intel386EX微处理器为核心,来模拟8086处理器来进行系统的测试工作
AH
AL
BH
BL
CH
CL
DH
DL
SP
BP
DI
SI
CS
DS
SS
ES
IP
暂存器
外部
总线
ALU数据总线
指令预取
队列缓冲器
执行单元(EU)总线接口单元(BIU)
图1.1CPU8086内部结构图
6.1.38086CPU寄存器结构
8086CPU中有14个16位的寄存器,其中有4个16位的通用寄存器,2个16位指针寄存器,2个16位变址寄存器,1个16位指令指针及1个16位标志寄存器(仅用9位)。
●通用寄存器
通用寄存器包括累加器AX,基址寄存器BX,计数寄存器CX,数据寄存器DX四个寄存器,位于CPU的EU中,每个数据寄存器可存放16位操作数,
也可拆成两个8位寄存器,用来存放8位操作数。
表1.1通用寄存器的特殊用途和隐含属性
寄存器名称
特殊用途及隐含性质
AX
在输入输出指令中作数据寄存器,不能隐含
在乘法指令中存放被乘数或乘积,在除法指令中存放被除数或商,能隐藏
AH
在LAHF指令中,作目标寄存器,能隐藏
AL
在输入/输出指令中作数据寄存器,不能隐藏
在十进制运算指令中作累加器,能隐含
在XLAT指令中作累加器,能隐含
BX
在间接寻址中作基址寄存器,不能隐含
在XLAT指令中作基址寄存器,能隐含
CX
在串操作指令和LOOP指令中做计数器,能隐含
CL
在移位/循环移位指令中作移位次数计数器,不能隐含
DX
在字乘法/除法指令中存放乘积高位或被除数高位或余数,能隐含
在间接寻址的输入/输出指令中作地址寄存器,不能隐含
●指针和变址寄存器
指针和变址寄存器包括:
堆栈指针SP、基址指针BP、源变址寄存器SI、和目的变址寄存器DI四个16位寄存器,可以来存放数据和地址。
表1.2指针和变址寄存器的特殊用途和隐含性质
寄存器名称
特殊用途及隐含性质
SI
在字符串运算指令中作源变址寄存器,能隐含
在间接寻址中作变址寄存器,不能隐含
DI
在字符串运算指令中作目标变址寄存器,能隐含
在间接寻址中作变址寄存器,不能隐含
BP
在间接寻址中基址指针,不能隐含
SP
在堆栈操作中作堆栈指针,能隐含
●段寄存器
段寄存器包括:
代码段寄存器CS,用于存放当前代码段的段地址;数据段寄存器DS,用于存放当前数据段的段地址;附加段寄存器ES,用于存放当前附加段的地址;堆栈段寄存器SS,用于存放当前堆栈段的段地址。
这些段寄存器彼此不能互换,每个段寄存器在8086存储寻址空间中规定了64KB
的存储快。
该64KB存储快叫做段寄存器的当前段。
●专用寄存器
包括指令指针寄存器(IP)和标志寄存器(FR)。
指令指针寄存器(IP):
用来存放要取的下一条指令在当前代码段中的偏移地址,程序不能直接访问IP,在程序运行过程中,BIU可修改IP中内容。
指令指针寄存器每执行一次取操作,将自动加1,使它指向下一条要取的内存单元。
标志寄存器(FR):
尽定义了9位,其中6位用作状态标志,3位用作控制标志。
D15D12D4D2D0
OF
DF
IF
TF
SF
ZF
AF
PF
CF
●状态标志位
进位标志CF:
当前加法运算有进位,减法运算有借位时,CF=1,否则CF=0。
辅助进位标志AF:
在字节操作时,低4位向高4位有进位(加法)或有借位(减法);在字操作时,低字节向高字节有进位(加法)或有借位(减法)时,则,AF=1,否则AF=0。
奇偶校验标志PF:
当运算结果低8位“1”的个数为偶数时,PF=1,否则PF=0。
零标志ZF:
当运算结果为0时,ZF=1,否则ZF=0。
溢出标志OF:
在有符号数的算术运算时,当运算结果有溢出时,OF=1,否则0F=0。
符号标志SF:
在有符号数的算术运算时,当运算结果为负时,SF=1,否则SF=0。
●控制标志位
方向标志DF:
当DF=0时,在串操作指令中,进行自动增址操作;当DF=1时,在串操作指令中,进行自动减址操作。
中断允许标志IF:
当IF=0时,禁止响应可屏蔽中断;当IF=1时,允许响应可屏蔽中断。
单步陷阱标志TF:
当TF=1时,表示进入单步工作方式;当TF=0时,表示正
常执行。
6.1.4CPU引脚图
140
239
338
437
536
635
734
833
8086
932
1031
1130
1229
1328
1427
1526
1625
1724
1823
1922
2021
GND
AD14
AD13
AD12
AD11
AD10
AD9
AD8
AD7
AD6
AD5
AD4
AD3
AD2
AD1
AD0
NMI
INTR
CLK
GND
Vcc
AD15
AD16/S3
AD17/S4
AD18/S5
AD19/S6
BHE/S7
MN/MX
RD
HOLD(RQ0/GT0)
HLDA(RQ1/GT1)
WR(LOCK
M/IO(S2)
DT/R(S1)
DEN(S0)
ALE(QS0)
INTA(QS1)
TEST
READY
REST
图1.2CPU8086引脚图
表1.38086CPU引脚说明
AD0~AD15
分时复用的双向、三态地址/数据线
AD19/S6~AD16/S3
分时复用,输出引脚
NMI(17)
输入,非可屏蔽请求
INTR(18)
输入,可屏蔽请求
CLK(19)
输入,时钟
GND(20)
(1)
地线(两个)
REST(21)
输入,复位
READY(22)
准备就绪,输入
TEST(23)
输入,测试低电平有效
INTA(QS1)(24)
输出,中断响应
ALE(QS0)(25)
输出,地址锁存允许
DEN(S0)(26)
三态输出,数据允许信号
DT/R(S1)(27)
三态输出,数据发送/接收控制信号
M/IO(S2)(28)
三态输出,存储器/IO端口
WR(LOCK)(29)
三态输出,写
HLDA(RQ1/GT1)(30)
总线请求响应,输出
HOLD(RQ0/GT0)(31)
输入总线请求
RD(32)
三态输出,读
MN/MX(33)
决定工作模式
BHE/S7(34)
三态输出,高8位数据有效/状态复