版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 1设计任务描述1.1设计题目 简单字幕机1.2设计内容1.2.1设计目的 通过课程设计使学生更进一步掌握微机原理及应用课程的有关知识,提高用汇编语言编程的能力,加深对汇编语言的理解。通过查阅资料,阅读程序,提高设计程序的能力及动手能力,使编程水平有一定的提高,同时也使学生通过动手进行硬件设计及程序设计从而提高解决实际问题的能力。1.2.2设计的原始资料及依据 查阅可编程并行芯片8255或其他相关资料。文字显示是通过把该文字的图形信息输出到显示器件,配合软件不同的刷新方式即可实现文字的多种方式的移动。 1.2.3设计的主要内容及要求 内容:利用微机原理试验箱的8255单元和8×8发光
2、二极管矩阵,动态显示汉字及字符。要求:实现字幕的多种方式的移动。2设计思路2.1主要原理 简单字幕机动态显示字幕移动是由可编程的并行接口器件点阵led显示单元的四个口来实现的,包括点阵led显示单元的cs1口、cs2口、cs3口、cs4口。整个设计程序是这样实现的:首先,通过伪指令操作定义端口,其中cs1、cs2分别定义为07、 815行控制端口,cs3、cs4分别定义为07、 815列控制端口,再定义一个256位的字型存储空间。然后再利用包含伪指令include来指明包含的红豆生南国,春来发几枝显示符号的编码,共由176行、16列组成,这个数字矩阵可根据不同的数字而改变,这也是程序编写的关键
3、。对各端口进行初始化,及各行各列进行初始化,最初使行为“0”,列为“1”,满足灯亮的初始条件。其次,进入程序主体,开始进行编程。计开始外循环次数为160,利用源变址指针寄存器开始进如循环。通过调用子程序进行内部循环,把点阵显示单元分成四个模块。第一部分内循环是执行前两个模块的数字矩阵操作,从0行到7行的全部列的编写。需要考虑灯亮的条件,即行为0,列为1,就给行赋0值,使行满足条件,因此紧接着需要列的条件,如果某列能够满足条件,则此交点的灯亮。否则,灯不亮。完成一个模块的一行后,开始让指针执行加一操作,从而进入下一个模块的行操作。同理,依次执行循环操作,完成前两个模块的任务。调用子程序进行延时操
4、作,使汉字显示的时间合理。接着进行内部外循环操作,再次进行上述语句命令完成字体在前两个模块的显示情况。然后就是执行后两个模块的语句操作。原理同前两个模块的操作命令。2.2程序调试及说明编写程序并非轻而易举,也需要不断的摸索与研究。该程序也是经过了无数次的上机调试、运行才最终得以确定的。2.2.1 程序调试 1、 现象:汉字“国”在显示器上显示时不清晰,给人混乱的感觉。原因:“国”字笔画太多,而显示器不够大。 解决:将国字重新编码,笔画改细。 2、 现象:汉字在显示器上移动速度过快。原因:外循环次数bl值过小。解决:将bl值改大。3、 现象:16×16发光二极管矩阵显示器上该亮的地方未
5、亮,相反不该亮的 亮了。 原因:数字矩阵计算错误,求反操作出现错误。解决:重新计算数字矩阵直到满足汉字要求。2.2.2 结果说明 此简单字幕机的程序还是比较成功的,由于16x16发光二极管矩阵显示器不够大,有些笔画复杂的汉字就无法清晰的显示了。我们可以人为的控制汉字移动速度和持续时间,即改变外循环次数值,值越小移动越快。另外,此次程序实现的只是让汉字上下移动,若时间允许,我们会尝试着研究让汉字左右移动的程序,以实现汉字动态显示的更多样化。 3 设计原理流程图初 始 化工 作 部 分内 循 环外循环修改与控制外 循 环外循环修改与控制外 循 环 4 实际硬件接线图d0 点 阵l e dd7 显
6、示cs1 单 元cs2 cs3 cs4wr 系 xd0 统 xd7 ioy0总 ioy1ioy2线 ioy3iow# 5源程序清单及注释=;=; 文件名称: led16.asm ; 功能描述: ; 行: cs1(600h), cs2(640h) 列: cs3(680h), cs4(6c0h);=row1equ 0600h;端口定义row2equ 0640hcol1equ 0680hcol2equ 06c0hstack1segment stackdw 256 dup(?)stack1endsdata segmenthzdot:;红 cbaecdb 008h,008h,004h,0a4h,022h
7、,01fh,010h,008hdb 004h,03fh,002h,000h,038h,007h,0e2h,000hdb 000h,000h,020h,07fh,004h,004h,004h,004hdb 004h,004h,004h,004h,004h,024h,07fh,000h;豆 cb6b9db 000h,0feh,000h,000h,0f8h,008h,008h,008hdb 0f8h,000h,008h,010h,020h,0ffh,000h,000hdb 000h,07fh,000h,000h,00fh,008h,008h,008hdb 00fh,004h,00ch,004h,00
8、2h,07fh,000h,000h;生 cc9fadb 000h,008h,008h,008h,0f8h,004h,004h,002hdb 0f9h,000h,000h,000h,000h,000h,0feh,000hdb 001h,003h,001h,011h,03fh,001h,001h,011hdb 03fh,001h,001h,001h,001h,021h,07fh,000h;南 cc4cfdb 080h,080h,0ffh,080h,040h,0fch,024h,044hdb 0f4h,084h,0fch,084h,084h,084h,084h,000hdb 000h,020h,07
9、fh,000h,000h,03fh,024h,022hdb 02fh,020h,03fh,020h,020h,028h,010h,000h ;国 cb9fadb 000h,0feh,002h,0fah,082h,082h,082h,0f2hdb 082h,082h,082h,0fah,002h,002h,0feh,002hdb 000h,03fh,020h,02fh,020h,020h,020h,027hdb 022h,024h,024h,02fh,020h,020h,03fh,020h;, ca3acdb 000h,000h,000h,000h,000h,000h,000h,000hdb 0
10、00h,000h,000h,00ch,00ch,008h,004h,000hdb 000h,000h,000h,000h,000h,000h,000h,000hdb 000h,000h,000h,000h,000h,000h,000h,000h;春 cb4badb 080h,080h,0fch,080h,0f8h,040h,0ffh,020hdb 010h,0fch,013h,0f0h,010h,010h,0f0h,000hdb 000h,000h,03fh,000h,01fh,000h,07fh,004hdb 018h,077h,024h,007h,004h,004h,007h,000h;来
11、 cc0b4db 080h,080h,0fch,080h,090h,0a0h,0c0h,0fehdb 080h,0c0h,0a0h,090h,08ch,083h,080h,080hdb 000h,000h,03fh,000h,00ch,004h,002h,07fhdb 001h,002h,004h,018h,070h,020h,000h,000h;发 cb7a2db 040h,044h,044h,044h,0feh,024h,020h,0e0hdb 030h,050h,050h,088h,004h,082h,061h,018hdb 000h,002h,00ch,008h,07fh,000h,0
12、00h,007hdb 004h,004h,004h,002h,001h,006h,038h,010h;几 cbcb8db 000h,0f0h,010h,010h,010h,010h,010h,010hdb 010h,010h,010h,008h,008h,004h,002h,000hdb 000h,007h,004h,004h,004h,004h,004h,004hdb 004h,004h,044h,044h,044h,078h,000h,000h;枝 cd6a6 db 008h,008h,008h,0bfh,008h,008h,09ch,02chdb 02ah,00ah,009h,008h,
13、008h,088h,068h,008hdb 004h,004h,004h,07fh,004h,004h,03fh,011hdb 011h,00ah,00ah,004h,00eh,011h,070h,020hdata endscodesegmentassumecs:code, ds:datastart:mov ax, datamov ds, axmov dx, row1mov al, 00hout dx, almov dx, row2out dx, almov al, 0ffhmov dx, col1out dx, almov dx, col2out dx, albg0:mov ax, 160m
14、ov si, offset hzdotbg1:call dispadd si, 2dec axjz bg0jmp bg1;=显示汉字子程序=;入口参数: si = 存放汉字起始地址disp:mov cx, 000fhpush axml0:push cxmov bl, 01hmov cx, 0008hml1:mov dx, row1;控制0-7行mov al, 00hout dx, almov al, sinot almov dx, col1;0-7列out dx, alinc simov al, sinot almov dx, col2;8-15列out dx, alinc simov dx,
15、 row1;控制0-7行mov al, blout dx, alrol bl, 1call delayloop ml1mov dx, row1mov al, 00hout dx, almov cx, 0008hml2:mov dx, row2;控制8-15行mov al, 00hout dx, almov al, sinot almov dx, col1;0-7列out dx, alinc simov al, sinot almov dx, col2;8-15列out dx, alinc simov dx, row2;控制8-15行mov al, blout dx, alrol bl, 1ca
16、ll delayloop ml2mov dx, row2 mov al, 00hout dx, alsub si, 32pop cxloop ml0pop axretdelay:push cx;延时子程序mov cx, 0100hdl1:push axpop axloop dl1pop cxretcodeendsend start 6.主要元器件介绍6.1 8086简介6.1.1 8086 cpu简介由于此系统最终要在西安唐都科教仪器出品的32位微机机教学实验系统td-pite/pitc上进行实验,故设计硬件配置时采用intel8086,整个实验的硬件配置都以此为原则进行设计选用。intel8
17、086是16位的微处理器(理论学习中为8088,其内部总线为16位,外部总线为8位,故称为准16位微处理器),它采用hmos工艺40条引脚封装。8086工作时使用5v电源,时钟频率5mhz(8086-1为10mhz,8086-2为8mhz)它有20根地址线,故可寻址的内存空间为1mb。6.1.2 8086主要特性intel8086/8088cpu是intel公司推出的高性能的微处理器,具体如下主要特性: (1) 8086cpu数据总线为16位,8088cup数据总线为8位。 (2) 地址总线都是20位,低16位用于数据总线复用,可直接寻址为1mb的存储空间。 (3) 有16位的端口地址,可以寻
18、址64kb的i/o端口。 (4) 有99条基本指令,指令功能强大 (5) 有9种基本寻址方式。 (6) 可以处理内部和外部中断,外部中断源多达256个。 (7) 兼容性好,与80*86,8085在源程序一级兼容。 (8) 8086/8088标准主频为5mhz,8086/8088-2主频为8mh。 (9)支持单处理器或多处理器系统工作。实验中是以intel386ex微处理器为核心,来模拟8086处理器来进行系统的测队列总线数据总线地址总线暂存器t标志寄存器fralueu控制器地址加法器总线逻辑控制axbxcxdx通用寄存器ahalbhblchcldhdlspbpdisicsdsssesip暂存器
19、外部总线alu数据总线指令预取队列缓冲器执行单元(eu) 总线接口单元(biu)图1.1 cpu8086内部结构图 6.1.3 8086cpu寄存器结构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在输入输出指令中
20、作数据寄存器,不能隐含在乘法指令中存放被乘数或乘积,在除法指令中存放被除数或商,能隐藏ah在lahf指令中,作目标寄存器,能隐藏al在输入/输出指令中作数据寄存器,不能隐藏在十进制运算指令中作累加器,能隐含在xlat指令中作累加器,能隐含bx在间接寻址中作基址寄存器,不能隐含在xlat指令中作基址寄存器,能隐含cx在串操作指令和loop指令中做计数器,能隐含cl在移位/循环移位指令中作移位次数计数器,不能隐含dx在字乘法/除法指令中存放乘积高位或被除数高位或余数,能隐含在间接寻址的输入/输出指令中作地址寄存器,不能隐含 指针和变址寄存器指针和变址寄存器包括:堆栈指针sp、基址指针bp、源变址寄
21、存器si、和目的变址寄存器di四个16位寄存器,可以来存放数据和地址。表1.2 指针和变址寄存器的特殊用途和隐含性质寄存器名称特殊用途及隐含性质si在字符串运算指令中作源变址寄存器,能隐含在间接寻址中作变址寄存器,不能隐含di在字符串运算指令中作目标变址寄存器,能隐含在间接寻址中作变址寄存器,不能隐含bp在间接寻址中基址指针,不能隐含sp在堆栈操作中作堆栈指针,能隐含 段寄存器段寄存器包括:代码段寄存器cs,用于存放当前代码段的段地址;数据段寄存器ds,用于存放当前数据段的段地址;附加段寄存器es,用于存放当前附加段的地址;堆栈段寄存器ss,用于存放当前堆栈段的段地址。这些段寄存器彼此不能互换
22、,每个段寄存器在8086存储寻址空间中规定了64kb的存储快。该64kb存储快叫做段寄存器的当前段。 专用寄存器包括指令指针寄存器(ip)和标志寄存器(fr)。 指令指针寄存器(ip):用来存放要取的下一条指令在当前代码段中的偏移地址,程序不能直接访问ip,在程序运行过程中,biu可修改ip中内容。指令指针寄存器每执行一次取操作,将自动加1,使它指向下一条要取的内存单元。标志寄存器(fr):尽定义了9位,其中6位用作状态标志,3位用作控制标志。 d15 d12 d4 d2 d0ofdfiftfsfzfafpfcf状态标志位进位标志cf:当前加法运算有进位,减法运算有借位时,cf=1,否则cf=
23、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时,在串操作指令中,进行自动减址操作。中断允许标志i
24、f:当if=0时,禁止响应可屏蔽中断;当if=1时,允许响应可屏蔽中断。单步陷阱标志tf:当tf=1时,表示进入单步工作方式;当tf=0时,表示正常执行。6.1.4 cpu引脚图1 402 393 384 375 366 357 348 3380869 3210 3111 3012 2913 2814 2715 2616 2517 2418 2319 2220 21gndad14ad13ad12ad11ad10ad9ad8ad7ad6ad5ad4ad3ad2ad1ad0nmiintrclkgndvccad15ad16/s3ad17/s4ad18/s5ad19/s6bhe/s7mn/mxrdho
25、ld(rq0/gt0)hlda(rq1/gt1)wr(lockm/io(s2)dt/r(s1)den(s0)ale(qs0)inta(qs1)testreadyrest图1.2 cpu8086引脚图表1.3 8086cpu引脚说明ad0ad15分时复用的双向、三态地址/数据线ad19/s6ad16/s3分时复用,输出引脚nmi(17)输入,非可屏蔽请求intr(18)输入,可屏蔽请求clk(19)输入,时钟gnd(20)(1)地线(两个)rest(21)输入,复位ready(22)准备就绪,输入test(23)输入,测试低电平有效inta(qs1)(24)输出,中断响应ale(qs0)(25)
26、输出,地址锁存允许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位数据有效/状态复用6.1.5 16*16 led点阵 16*16 led点是将4个8行8列的led以矩阵方式排列成为一个器件。本次设计所使用的led点阵是使每列led的阴极连接在一起,每行led的阳极连接在一
27、起,再经过驱动电路分别引出2个行引角和2个列引角,若要点亮其中的led,则列为低电平0,行为高电平1。led点阵的显示采用扫描的方式,首先将所要显示的字按每行拆解成多组显示信号。若让led点阵显示出所需要的“红”,则可列出数字“红”的显示编码,如下表:扫描顺序显示数据第1行008h,008h第2行004h,0a4h第3行022h,01fh第4行010h,008h第5行004h,03fh第6行002h,000h第7行038h,007h第8行0e2h,000h第9行000h,000h第10行020h,07fh第11行004h,004h第12行004h,004h第13行004h,004h第14行00
28、4h,004h第15行004h,024h第16行07fh,000h 当列为0行为1的时候该点灯亮,将第一行赋值为1其余行为0,当每一行扫描时发现交点有1的点则led灯亮,其余的则不予相应不亮。行的显示要有一定时间,若反复执行从第一行到最后一行的扫描,由于人类视觉瞬时现象,将会感觉到8行led同时显示的样子。若显示时间太短,则亮度不够,若显示时间太长,则会感觉闪烁。在以上基础上,若间隔一定时间,再使每次显示不同的字型,即可实现不同的动态显示效果。62 软件介绍编写程序并非轻而易举,也需要不断的摸索与研究。首先要了解我们所设计的简单字幕机所要实现的功能和设计要求。其主功能是:利用微机原理试验箱的系
29、统总线单元和16*16发光二极管矩阵,动态显示汉字及字符,实现字幕移动。首先,是定义端口 row1equ 0600h;端口定义row2equ 0640hcol1equ 0680hcol2equ 06c0hstack1segment stackdw 256 dup(?)stack1ends 然后输入组成“红豆生南国,春来发几枝”十个字的笔画代码数据,每个字都是由共由16行、16列组成,这是程序编写的关键之一。;红 cbaecdb 008h,008h,004h,0a4h,022h,01fh,010h,008hdb 004h,03fh,002h,000h,038h,007h,0e2h,000hdb
30、000h,000h,020h,07fh,004h,004h,004h,004hdb 004h,004h,004h,004h,004h,024h,07fh,000h;豆 cb6b9db 000h,0feh,000h,000h,0f8h,008h,008h,008hdb 0f8h,000h,008h,010h,020h,0ffh,000h,000hdb 000h,07fh,000h,000h,00fh,008h,008h,008hdb 00fh,004h,00ch,004h,002h,07fh,000h,000h;生 cc9fadb 000h,008h,008h,008h,0f8h,004h,00
31、4h,002hdb 0f9h,000h,000h,000h,000h,000h,0feh,000hdb 001h,003h,001h,011h,03fh,001h,001h,011hdb 03fh,001h,001h,001h,001h,021h,07fh,000h;南 cc4cfdb 080h,080h,0ffh,080h,040h,0fch,024h,044hdb 0f4h,084h,0fch,084h,084h,084h,084h,000hdb 000h,020h,07fh,000h,000h,03fh,024h,022hdb 02fh,020h,03fh,020h,020h,028h,
32、010h,000h ;国 cb9fadb 000h,0feh,002h,0fah,082h,082h,082h,0f2hdb 082h,082h,082h,0fah,002h,002h,0feh,002hdb 000h,03fh,020h,02fh,020h,020h,020h,027hdb 022h,024h,024h,02fh,020h,020h,03fh,020h;, ca3acdb 000h,000h,000h,000h,000h,000h,000h,000hdb 000h,000h,000h,00ch,00ch,008h,004h,000hdb 000h,000h,000h,000h
33、,000h,000h,000h,000hdb 000h,000h,000h,000h,000h,000h,000h,000h;春 cb4badb 080h,080h,0fch,080h,0f8h,040h,0ffh,020hdb 010h,0fch,013h,0f0h,010h,010h,0f0h,000hdb 000h,000h,03fh,000h,01fh,000h,07fh,004hdb 018h,077h,024h,007h,004h,004h,007h,000h;来 cc0b4db 080h,080h,0fch,080h,090h,0a0h,0c0h,0fehdb 080h,0c0h
34、,0a0h,090h,08ch,083h,080h,080hdb 000h,000h,03fh,000h,00ch,004h,002h,07fhdb 001h,002h,004h,018h,070h,020h,000h,000h;发 cb7a2db 040h,044h,044h,044h,0feh,024h,020h,0e0hdb 030h,050h,050h,088h,004h,082h,061h,018hdb 000h,002h,00ch,008h,07fh,000h,000h,007hdb 004h,004h,004h,002h,001h,006h,038h,010h;几 cbcb8db
35、 000h,0f0h,010h,010h,010h,010h,010h,010hdb 010h,010h,010h,008h,008h,004h,002h,000hdb 000h,007h,004h,004h,004h,004h,004h,004hdb 004h,004h,044h,044h,044h,078h,000h,000h;枝 cd6a6 db 008h,008h,008h,0bfh,008h,008h,09ch,02chdb 02ah,00ah,009h,008h,008h,088h,068h,008hdb 004h,004h,004h,07fh,004h,004h,03fh,011hdb 011h,00ah,00ah,004h,00eh,011h,070h,020h然后,编写程序初始化语句。start:mov ax, datamov ds, axmov dx, row1mov al, 00hout dx, almov dx, row2out dx, almov al, 0ffhmov dx, col1out dx, almov dx, col2out dx, al定义完成后,即为程序最关键的部分循环显示字幕移动。外循环,并取偏移地址给si:bg0:mov ax
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论