正文.docx
《正文.docx》由会员分享,可在线阅读,更多相关《正文.docx(17页珍藏版)》请在冰豆网上搜索。
正文
1设计任务描述
1.1设计题目:
简单字幕机设计
1.2设计要求
1.2.1设计目的
通过课程设计使学生更进一步掌握微机原理与应用课程的有关知识,提高用汇编语言编程的能力,加深对汇编语言的理解。
通过查阅资料,阅读程序,提高设计程序的能力及动手能力,使编程水平有一定的提高,同时也使学生通过动手进行硬件设计及程序设计从而提高解决实际问题的能力。
1.2.2设计的原始资料及依据
查阅可编程并行芯片8255或其他相关资料。
文字显示是通过把该文字的图形信息输出到显示器件,配合软件不同
的刷新方式即可实现文字的移动。
1.2.3设计的主要内容及要求
内容:
利用微机原理试验箱的16X16发光二极管矩阵,动态显示汉字及字符。
要求:
实现多种方式的字幕移动。
2设计思路
2.1主要工作原理
简单字幕机的动态显示,是通过8086系统与16X16LED点阵的连接实现的。
使用系统总线的IOY0、IOY1和IOY2、IOY3作为输出,分别与控制行输出的CS1,CS2以及控制列输出的CS3,CS4相连,以此四个端口控制16X16LED点阵字幕的行和列,因为当某一行为低电平0,而某一列为高电平1时,即可点亮相应位置的LED。
因此编写数据段程序是产生不同字型的关键,控制行和列的输出方式是实现不同滚动方式的关键。
根据此工作特性,设计程序的实现如下:
首先,是端口定义,包括定义0-7行、8-15行、0-7列、8-15列的地址。
之后定义堆栈段,定义一个256位的字型存储空间。
然后编译组成“海上生明月,天涯共此时”的笔画代码数据,并将其输入保存到汉字点阵库中,以便主程序的调用,这个数字矩阵可根据不同的数字而改变,这也是程序编写的关键之一。
其次初始化该程序,使其满足16X16发光二极管矩阵灯亮的条件:
行为“0”且列为“1”。
定义完成后,即为程序最关键的部分——循环显示字幕移动:
定义行列数为160,取汉字点阵库的偏移地址给SI,定义内循环次数为0008H次。
通过循环,最终即可在16X16发光二极管矩阵上动态、持续、循环地显示“海上生明月,天涯共此时”。
若想改变汉字的持续时间和移动速度,则可以改变0100H值:
数值越小,持续时间越短,动态移动显示速度也就越快;反之,持续时间越长,速度也就越慢。
通过以上的工作原理,就可以实现动态地显示汉字及字符,并进行多种方式的字幕移动。
2.2程序调试及说明
编写程序并非轻而易举,也需要不断的摸索与研究。
该程序也是经过了无数次的上机调试、运行才最终得以确定的。
2.2.1程序调试
2.2.1.1现象:
所要显示的“海上生明月,天涯共此时”中的汉字“明”与“月”在显示器上显示时“明”的下半部与“月”的上半部连在了一起,且“月”字间隔太远。
原因:
在文字编写的时候,“明”字写的靠下,“月”字写的靠上了,而“,”写在LED方阵的左下部分。
解决办法:
为了达到美观的效果,且考虑方便因素,可将笔画较少的“月”字整体下移。
具体做法是将“月”字的首地址做加4或加6等操作。
2.2.1.2现象:
16X16发光二极管矩阵显示器上该亮的地方未亮,相反不该亮的亮了。
原因:
接线时有的接反了。
解决办法:
重新按照接线图正确接线。
2.2.1.3现象:
汉字在显示器上移动速度过快,难以看清。
原因:
外循环次数BL值过小。
解决办法:
将BL值改为较为合适的值01H。
2.2.2结果说明
此次简单字幕机的程序还是比较成功的,能够实现动态地显示汉字及字符,同时,实现由下至上方式的字幕移动也比较理想。
但是,发挥部分——实现左右方式的字幕移动本人完成的并不理想。
字幕的形成与字幕的移动总是难以配合到最佳的状态。
此次程序还可以应用可编程并行接口8255及8X8发光二极管矩阵,而不仅仅是应用16X16发光二极管矩阵,它们的原理是有共性的。
3实际硬件接线图
4程序流程图
5源程序清单及注释
5.1主程序清单及注释
ROW1EQU0600H;端口定义
ROW2EQU0640H
COL1EQU0680H
COL2EQU06C0H
STACK1SEGMENTSTACK
DW256DUP(?
)
STACK1ENDS
DATASEGMENT
INCLUDEHZDOTth.asm;数据字段为汉字点阵库,在HZDOTth.asm文件中
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,OFFSETNAN
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
5.216X16点阵中文字库
本文件为16×16点阵中文字库文件,字的横向8点构成一个字节,左边点在字节的低位,字符点阵四角按左上角→右上角→左下角→右下角取字
CBAA3EQU00000H;海
CC9CFEQUCBAA3+1;上
CC9FDEQUCC9CF+1;升
CC3F7EQUCC9FD+1;明
CD4C2EQUCC3F7+1;月
CA3ACEQUCD4C2+1;,
CCCECEQUCA3AC+1;天
CD1C4EQUCCCEC+1;涯
CB9B2EQUCD1C4+1;共
CB4CBEQUCB9B2+1;此
CCAB1EQUCB4CB+1;时
HZDOT:
;海CBAA3
DB084H,000H,088H,000H,088H,07FH,040H,000H
DB0E9H,01FH,04AH,011H,04AH,012H,048H,010H
DB0F4H,07FH,044H,011H,047H,012H,044H,010H
DB0C4H,07FH,004H,010H,004H,014H,004H,008H
;上CC9CF
DB000H,000H,080H,000H,080H,000H,080H,000H
DB080H,000H,080H,000H,080H,01FH,080H,000H
DB080H,000H,080H,000H,080H,000H,080H,000H
DB080H,000H,080H,020H,0FEH,07FH,000H,000H
;升CC9FD
DB000H,000H,0E0H,004H,03CH,004H,020H,004H
DB020H,004H,020H,024H,0FEH,07FH,020H,004H
DB020H,004H,020H,004H,010H,004H,010H,004H
DB008H,004H,004H,004H,002H,004H,000H,000H
;明CC3F7
DB000H,03FH,03EH,021H,022H,021H,022H,021H
DB022H,03FH,03EH,021H,022H,021H,022H,021H
DB022H,03FH,03EH,021H,000H,021H,080H,020H
DB080H,020H,040H,020H,020H,028H,000H,010H
;月CD4C2
DB0E0H,00FH,020H,008H,020H,008H,020H,008H
DB0E0H,00FH,020H,008H,020H,008H,020H,008H
DB0E0H,00FH,020H,008H,010H,008H,010H,008H
DB008H,008H,004H,00AH,002H,004H,000H,000H
;,CA3AC
DB000H,000H,000H,000H,000H,000H,000H,000H
DB000H,000H,000H,000H,000H,000H,000H,000H
DB000H,000H,000H,000H,000H,000H,00CH,000H
DB00CH,000H,008H,000H,004H,000H,000H,000H
;天CCCEC
DB000H,000H,0FCH,03FH,080H,000H,080H,000H
DB080H,000H,080H,000H,0FEH,07FH,080H,000H
DB080H,000H,040H,001H,040H,002H,020H,004H
DB010H,018H,008H,070H,004H,020H,002H,000H
;涯CD1C4
DB002H,000H,0E4H,07FH,024H,002H,020H,002H
DB0A9H,01FH,02AH,002H,02AH,002H,0E4H,07FH
DB024H,002H,024H,002H,0E3H,03FH,012H,002H
DB012H,002H,00AH,002H,0E6H,07FH,002H,000H
;共CB9B2
DB000H,000H,020H,004H,020H,004H,020H,004H
DB0FEH,03FH,020H,004H,020H,004H,020H,004H
DB020H,004H,0FFH,07FH,020H,002H,060H,004H
DB030H,008H,010H,018H,008H,030H,004H,010H
;此CB4CB
DB020H,002H,020H,002H,020H,002H,020H,002H
DB024H,062H,0E4H,01AH,024H,006H,024H,002H
DB024H,002H,024H,002H,024H,002H,0E4H,042H
DB01CH,042H,007H,042H,000H,07CH,000H,000H
;时CCAB1
DB000H,008H,000H,008H,03EH,008H,022H,008H
DB0E2H,07FH,022H,008H,03EH,008H,0A2H,008H
DB022H,009H,022H,009H,03EH,008H,000H,008H
DB000H,008H,000H,008H,000H,00AH,000H,004H
6主要元器件介绍
6.1硬件介绍
6.1.18086简介
由于此系统最终要在西安唐都科教仪器出品的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处理器来进行系统的测试工作。
6.1.38086CPU寄存器结构
8086CPU中有14个16位的寄存器,其中有4个16位的通用寄存器,2个16位指针寄存器,2个16位变址寄存器,1个16位指令指针及1个16位标志寄存器(仅用9位)。
6.2软件介绍
编写程序并非轻而易举,也需要不断的摸索与研究。
首先要了解我们所设计的简单字幕机所要实现的功能和设计要求。
其主要内容是利用微机原理试验箱的16X16发光二极管矩阵,动态显示汉字及字符,并要求实现多种方式的字幕移动。
首先,是端口定义,包括定义0-7行、8-15行、0-7列、8-15列的地址。
ROW1EQU0600H;端口定义
ROW2EQU0640H
COL1EQU0680H
COL2EQU06C0H
之后定义堆栈段、数据段,定义一个256位的字型存储空间。
然后编译组成“海上升明月,天涯共此时”的笔画代码数据,并将其输入保存到汉字点阵库中,以便主程序的调用,这个数字矩阵可根据不同的数字而改变,这也是程序编写的关键之一。
所编写程序保存在C盘相应文件夹下的晶.ASM文件夹中。
然后需要编写程序初始化语句,使其满足16X16发光二极管矩阵灯亮的条件:
行为“0”且列为“1”。
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
定义完成后,即为程序最关键的部分——循环显示字幕移动:
定义行列数为160,取汉字点阵库的偏移地址(首地址)给SI,定义内循环次数为0008H次。
通过循环,最终即可在16X16发光二极管矩阵上动态、持续、循环地显示“海上升明月,天涯共此时”。
BG0:
MOVAX,160
MOVSI,OFFSETNAN
BG1:
CALLDISP
ADDSI,2
DECAX
JZBG0
JMPBG1;入口参数:
SI=存放汉字起始地址
DISP:
MOVCX,000FH
PUSHAX
ML0:
PUSHCX
MOVBL,01H
MOVCX,0008H
若想改变汉字的持续时间和移动速度,则可以改变0100H值:
数值越小,持续时间越短,动态移动显示速度也就越快;反之,持续时间越长,速度也就越慢。
通过以上的工作原理,就可以实现动态地显示汉字及字符,并进行多种方式的字幕移动。
通过以上的软件程序设计,就可以实现动态地显示汉字及字符,并进行多种方式的字幕移动。
总结
紧张而忙碌的一周课程设计生活结束了。
在这充实的一周生活里我收获了许多,除了让我更加深刻地掌握课内所学知识以外,还让我有了可以更好地去发展自我、战胜自我和检查自我的机会。
本设计的题目是“简单字幕机的设计”拿到自己的设计题目,我首先认真地将设计的要求读了一遍,试图用自己现有的知识储备来应付即将着手的任务,而事实证明,我的知识储备仅限于能让我看懂题,要想交一份满意的答卷这些是远远不够的。
于是,我老老实实本本分分的去查阅了相关资料。
通过资料的查阅以及向同学们的请教我对自己的设计有了初步的了解和基本的设计思路。
俗话说“心急吃不了热豆腐”,所以第二天我不急于求成,思路有了,框图明确了关键就是把每条语句的意思弄懂了。
于是第二天我摸索中前进,挫折使我更加的坚强。
经过这一天的上机调试与对程序的深入理解过程,我对自己的设计有了更深刻的理解和更浓后的研究兴趣。
当然问题也是蜂拥而至的。
于是我的第三天很明确,就是不断地解决问题,深入研究问题,探讨问题,再发现新问题的过程。
这一天当真是我收获最多的一天。
经过这几天我的程序基本定型了。
各项基本要求都满足了,尤其是当“海上升明月,天涯共此时”这个漂亮的字幕滚动在我眼前时,那真是一种——只可意会,难以言表的成就之感了。
可是“谦虚使人进步”,我们的研究不该止步。
于是,在老师的提示与指导下我开始了横向滚动字幕的研究。
这也是我第四天的主要任务。
但是经过一番努力,我还是没能把这部分程序研究的很透彻,最终结果是能横向滚动就难以出现完整的字型,能出现完整的字型便难以横向滚动,终究没能结合的很好。
但是通过老师的指导与帮助我对其原理有了深一步的理解,我想这比什么都重要。
最后一天我主要对这一周的设计生活做了总结。
总的来说,通过这次的课程设计,培养了我自学的能力。
并且引导一种创新的思维,把学到的知识应用到日常生活当中。
在这期末考试即将来临之际,这样的一次设计给我们带来的不仅仅是压力,更多的是动力,以及很好的培养了我们用严谨的思维去分析问题解决问题的能力。
我们感谢这样的设计,并等待着下一次设计任务的下发。
致谢
一周的课程设计转瞬即逝,看到这一周的劳动成果不禁想到本设计的顺利完成与老师同学们的帮助是分不开的。
在这里我要向给了我们极大帮助的不畏辛苦、不辞疲倦的王老师和踪老师表示衷心的感谢。
在这一周的课程设计中我遇到了许多麻烦,尤其是我的发挥部分横向滚动字幕总是做不好,但是每次当我问到老师时,他们总是耐心的为我讲解,并传授给我许多宝贵的经验。
同学们的努力与否老师都看得到,而老师您们的不辞辛苦也同时被我们记得。
再次感谢你们,老师你们辛苦了!
参考文献
[1]李伯成、侯伯亨、张毅坤.微型计算机原理及应用.西安:
西安电子科技大学出版社,1998
[2]周明德、蒋本珊.微机原理及接口技术.北京:
人民邮电出版社,2002
[3]范会敏、李晋惠.微型计算机原理与接口技术应用.北京:
科学出版社,2000
[4]朱世宏.微机系统和接口应用技术.北京:
清华大学出版社,2006.9