ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:480.62KB ,
资源ID:7973939      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7973939.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(汉字显示器.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

汉字显示器.docx

1、汉字显示器一.题义分析及解决方案 1.题义需求分析:(1)设计内容:该题目要求使用LED 8*8显示矩阵设计接口显示汉字。使用8255把cpu与显示外设LED联系起来。8*8LED是8列阴极连在一起,8列阳极连在一起的64个二极管矩阵,当阳极为高电平,阴极为低电平时,二极管发光。通过8255的A口接每一行,低电平有效,b口接每一列,高电平有效。由于每次只可显示一行,LED矩阵一共要显示8次才可以显示完一个汉字。则可以取汉字的点阵码。把二极管看成点,通过发光显示出很多点,由这些点连接起来便可以组成一个汉字。根据人肉眼所具有的暂留效应,保证二极管的闪烁频率足够高,达到人肉眼无法辨别的程度(人眼分辨

2、时间的能力是25毫秒),即使8行显示的时间小于25毫秒,则人眼会认为这是一个汉字而不是单独的8行。(2)内容分析:当某一个二极管阳极为高电平,阴极为低电平的时候,此时二极管发光。8*8矩阵是有8行8列组成的,分别与A口和B口、c口相连,于是一次可以是一行或是一列同时有效。每一次只可显示一行,8*8矩阵一共要显示8次才可以显示完一次。汉字是有笔画组成的,而笔画可以看成是很多点连接起来所组成的,这就给我们提供了方法。把发光的二极管看成是一个点,由8*8矩阵同时显示,通过发光显示出很多点,由这些点连接起来便可以组成一个汉字。这里所说的同时是指在人的肉眼看来是这样的,因为某一时刻内只有一行可以发光。由

3、上可知,只要使b口的8个接线为高电平有效,是a口的其中一个接线为低电平有效,就可以显示8*8矩阵的某一行。同理,根据以上的原理,分别显示其他的行,一共显示8次。(3)提出问题:1、接口问题。2、选用何种芯片,为何选用该芯片。3、汉字如何显示4、汉字如何输入。5、如何设计控制程序2.解决问题方法及思路 (1)硬件部分8255是一个多功能,多通道的可编程接口,使用它与8086cpu和LED 8*8矩阵相连,实现数据的输出。其中8255的a口与8*8矩阵的八行相连,低电平有效,8255的b口与8*8矩阵的八列相连,低电平有效,通过高低电平决定二极管是否发光。LED8*8矩阵是由64个发光二极管所组成

4、的,其中每一列共阳极,每一行共阴极,分别与8255A的a口、b口相接,实现数据的输入输出。8086的引脚具有地址复用的功能,使用74L373实现地址的锁存,使用74L245实现数据的收发,使用74L138实现地址译码。74Ls244是一种三态输出的八缓冲器和线驱动器,使用它可以驱动LED 8*8矩阵,使它可以正常的工作。1主芯片选择选择8255作为输入输出设备,它是一个多功能,多通道的可编程接口,通过8255的a口接每一行,低电平有效,b口接每一列,高电平有效。2汉字显示方法汉字是有笔画组成的,而笔画可以看成是很多点连接起来所组成的,这就给我们提供了方法。把发光的二极管看成是一个点,由8*8矩

5、阵同时显示,通过发光显示出很多点,由这些点连接起来便可以组成一个汉字。3二极管亮灭选择用0、1编码来表示汉字,通过8255来输入这些编码,用1来表示二极管发光,用0来表示二极管不发光,用这些发光的二极管来显示出汉字。(2)软件部分汉字是由笔画组成的,笔画可以看成是由点组成的,由发光二极管的发光代表一个点,通过连线,把每个发光点连起来,从而形成一个汉字。这样就是说,笔画中的每个点代表一个发光二极管发光,通过行编码,使每一次显示都是显示一行,分8次显示,那么每个汉字都有8个编码,则所要显示的汉字的编码就要通过代码段定义,其中二极管发光,表示为1,二极管不发光,表示为0,通过对代码段的不同定义来显示

6、不同的汉字。要使人肉眼可以看到所显示的汉字,就要使汉字的显示次数满足一定的条件,也即循环次数要选择好,实验中选择循环显示2秒,为了使字显示不抖动和有较高的亮度,要使用延时程序,实验中采用延时2ms。要有序的显示每个汉字,且显示中间要延时,首先要把汉字的编码按顺序定义,通过一个固定的寄存器存储汉字编码的有效地址,每一个汉字显示,都是先取汉字的有效地址到寄存器中,然后再对寄存器中的内容进行操作。要循环显示每一个汉字,可以使用无条件转移指令,是显示可以无限循环。此实验要求滚动的显示汉字,通过汉字的编码来控制列选码,行选码用二进制编码来制,这样来控制二极管的发光与否,从而显示不同汉字3.硬件设计1.选

7、择芯片8255A(1) 芯片在本设计中的作用用于连接8086cpu和8*8 LED发光二极管矩阵,实现端口数据的输出和控制功能。(2) 芯片的功能分析8255A是一种通用的可编程的并行I/O接口芯片,可用与连接cpu与外设,实现数据的的输入输出功能,可以对输入/输出的数据进行数据锁存和数据缓冲,有中断请求信号,可以向cpu发出中断请求,能进行单向和双向通信。8255A有三个8位端口,其中A口具有数据输入锁存和数据输出锁存和缓冲功能,B口具有数据输入缓冲和数据输入/输出锁存/缓冲功能,C口具有数据出入缓冲和数据输出锁存/缓冲功能。各口中含有控制电路,它还具有读写控制逻辑。共有三种工作方式,通过初

8、始化控制字的不同设置,决定8255A的工作方式和3个端口所具有的功能。实验中的初始化控制字是80H,它使用C口的高位和低位作为输入,使用A口和B口都作为输出口,且A口和B口都工作于工作方式0,在该方式下,每一个口都作为基本的输入/输出口,C口的高4位和低4位以及A口.B口都可以独立地设置为输入/输出口,所以4个口作为输入/输出一共可以有16种组合。方式0下,cpu可以采用无条件读/写方式与8255A交换数据,C口的二部分如果用作控制可状态口,与外设的控制和状态口相连,cpu可以通过C口的读/写,实现A口与B口的查询方式工作。其中初始化控制端口的地址为00F3H,A端口的地址为00F0H,B端口

9、的地址为00F1H。(3)芯片8255A的技术参数表3-1 8255a技术参数参数名称符号测试条件最大最小输入低电平电压Vol0.8-0.5V输入高电平电压VihVcc2.0V输出低电平电压(数据端口)VolIol=2.5mA0.45输出低电平电压(外部端口)VolIol=1.7mA0.45输出高电平电压(数据端口)VohIoh=-400mA2.4V输出高电平电压(外部端口)VohIoh=-200mA2.4V达林顿驱动电流IdarRrxt=750v-4.0mA-1.0mA电源电流IccVrxt=1.5V120mA输入负载电流IllVin+10/-10mA输出浮动电流IoflVofl+10/-1

10、0mA参数分析:达林顿驱动电流最大为4.0mA,LED工作电流为20mA,8255A的工作电流为低时,最大为0.45V,工作电流为高时,最小为2.4V,而LED为5V,因此需要一个驱动器来驱动,使工作电流和电压相匹配。74Ls244的工作电流高电平为15mA,低电平为24mA,因此,244可以作为驱动器在8255A和LED之间起驱动作用。2.选择芯片8*8LED矩阵(1)芯片在本设计中的作用通过发光二极管的明和暗区分笔画中的点,其中发光表示一个笔画中的点。通过连续发光和延时来显示汉字和图形等。 (2)芯片的功能分析图3-2 LED引脚图把每一列的阳极连在一起,每一行的阴极连在一起,通过高低电平

11、的有效电平差,确定二极管是否发光,通过64个二极管连续发光,使人眼看起来好象是一起发光来显示汉字和图形。图3-3逻辑结构图3.选择芯片74Ls244(1)芯片在本设计中的作用用于在8255A和LED 8*8矩阵之间起驱动的作用,使其工作在正常的电压电流内。(2)芯片的功能分析它主要用于三态输出,作为地址驱动器,时钟驱动器和总线驱动器,定向发送器等。其真值表如下:最小典型最大VCC4.25V5V5.25V高电平输出电流-15mA低电平输出电流24mA工作温度070参数分析:低电平输出电流为24mA,高电平输出电流为-15mA,工作电压典型的为5V,介于8255A和LED 8*8矩阵的工作电流和工

12、作电压之间,它可以给LED工作提供足够的电压和电流,使LED可以正常的工作。图4-3 硬件总逻辑图说明:8255A口与B口分别与LED的行和列相连,同时使用74LS244作为驱动器,在A口和B口以及LED之间起驱动的作用。8086的数据和地址线分别与8255的数据线相连,译码器与8255的CS8255片选相连三.控制程序设计1.控制程序设计思路说明首先要解决的是汉字的编码问题,汉字是通过发光二极管的发光表示一个点,然后把这些点连接起来就构成了一个汉字,那么我们要解决的是设计汉字的线和点,就是确定我们要显示的汉字对应二极管矩阵的哪些二极管发光,其中编码中的”1”表示的是发光,”0”表示的是不发光

13、.那么就把每一个汉字的编码在一起组成程序的数据段.要对芯片进行操作之前需要对其控制字和端口,以及工作方式的设定,这是完成正常工作所必须要做的,其中8255A的控制端口地址是00F3H,A端口的地址为00F0H,B端口的地址为00F1H。设置的工作方式为A口基本输入, B口基本输出,而且A口和B口都是工作与方式0.对子程序的编写是整个程序的重点,按照要求要使每个汉字显示2秒,就要在子程序最外面使用一个循环,其循环的次数是有循环里面的指令执行的时间决定的,指令越少,循环的次数就越大.汉字的显示是根据动态扫描原理来实现的,把一个汉字的编码分为8*8矩阵,每一时刻只显示一行,一个汉字分八次显示,则从第

14、一行显示,利用循环左移,每循环一次就移动一次,共循环8次,这样就完成了一个汉字的一次显示.但是由于显示的频率太高,人的肉眼更本就看不见,所以一个汉字要重复的显示多次才可以使人的肉眼看到,还要增加延时程序,除了上述的作用外,还具有使汉字之间的显示过度平滑.2.程序流程图如下 流程图3.控制程序.MODEL TINY PCIBAR3 EQU 1CH ;8位I/O空间基地址(它就是实验仪的基地址,也为DMA&32 BIT RAM板卡上的8237提供基地址)Vendor_ID EQU 10EBH ;厂商ID号Device_ID EQU 8376 ;设备ID号 .STACK 100 .DATA IO_B

15、it8_BaseAddress DW ? msg0 DB BIOS不支持访问PCI$msg1 DB 找不到Star PCI9052板卡$msg2 DB 读8位I/O空间基地址时出错$ COM_ADD DW 00F3H ;控制口偏移量PA_ADD DW 00F0H ;PA口偏移量PB_ADD DW 00F1H ;PB口偏移量PC_ADD DW 00F2H ;PC口偏移量shun db 04h,044h,0eeh,024h,024h,024h,34h,024h;计db 08h,01ch,07fh,3eh,1ch,024h,42h,00h;db 00h,042h,0e7h,42h,0e7h,0e7h

16、,0e7h,42h;算db 08h,01ch,07fh,3eh,1ch,024h,42h,00h;db 020h,020h,7eh,02ah,7ah,2ah,02bh,020h;机db 08h,01ch,07fh,3eh,1ch,024h,42h,00h;db 08h,0ch,3eh,08h,0eh,02h,0ch,1ch;专db 08h,01ch,07fh,3eh,1ch,024h,42h,00h;db 00h,024h,24h,0a5h,066h,024h,0ffh,00h;业db 08h,01ch,07fh,3eh,1ch,024h,42h,00h;db 04h,044h,0eeh,02

17、4h,024h,024h,34h,024h;计 .CODE START: MOV AX,DATA MOV DS,AX NOP CALL InitPCI CALL ModifyAddress ;根据PCI提供的基地址,将偏移地址转化为实地址 START1:mov dx,COM_ADD;控制端口地址mov al,10000000b;初试化8255的A口和B口out dx,alloop1:mov di,offset shun;汉字代码偏移地址loop2:mov bh,99hadd di,7loop6:add di,1loop3:sub di,8mov cx,8mov al,11111110b;首行行

18、码loop4:mov dx,PA_ADD;a口地址out dx,alpush axmov al,di;获得shun表中的数值mov dx,PB_ADD;b口地址out dx,al;把AL中的值传到DX中pop axrol al,1inc di;指向下一行对应的列码push cxmov cx,800h;控制每一行的执行时间loop5:loop loop5pop cxloop loop4;显示8行dec bhcmp bh,0jnz loop3;上面的99H是否已经循环完毕cmp di,offsetshun+58h;因为表的长度11*8=88即它的长度是58hjnz loop6;未完继续显示mov

19、di,offsetshun+1jmp loop2InitPCI PROC NEAR MOV AH,00H MOV AL,03H INT 10H ;清屏 MOV AH,0B1H MOV AL,01H INT 1AH CMP AH,0 JZ InitPCI2 LEA DX,msg0 InitPCI1: MOV AH,09H INT 21H JMP Exit InitPCI2: MOV AH,0B1H MOV AL,02H MOV CX,Device_ID MOV DX,Vendor_ID MOV di,0 INT 1AH JNC InitPCI3 ;是否存在Star PCI9052板卡 LEA D

20、X,msg1 JMP InitPCI1 InitPCI3: MOV DI,PCIBAR3 MOV AH,0B1H MOV AL,09H INT 1AH ;读取该卡PCI9052基地址 JNC InitPCI4 LEA DX,msg2 JMP InitPCI1 InitPCI4: AND CX,0FFFCH MOV IO_Bit8_BaseAddress,CX RET InitPCI ENDPModifyAddress PROC NEAR ADD COM_ADD,CX ADD PA_ADD,CX ADD PB_ADD,CX ADD PC_ADD,CX RET ModifyAddress ENDP

21、Exit: MOV AH,4CH INT 21H END START 四.上机调试过程(1)硬件调试8255A是一个可编程的接口,共有三个口,其中A口和B口作为输出数据端口,分别与LED矩阵相连,用于输出汉字的编码,PCI地址数据线通过锁存器和收发器与8255相连,同时通过译码器同8255的片选CS0相连。调试的时候,由A口在开关处置数,然后观察发光二极管显示的数据是否与所置的数相同,或者是否有数据显示,如果数据显示正确的话,表示所接的硬件连线是正确的,可以正常使用了;否则则需要更换连线和硬件设备,直到能正确显示为止。对于LED的调试是通过编写简单的显示程序来判断。引用程序中显示汉字的一部分程

22、序段,通过LED显示,首先确定的是有没有正确显示,其次是汉字显示的方式是否正确,通过对LED的调试,发现要把B口的B0到B7与LED的第七列到第一列相连,才可以使汉字按照书写习惯那样的显示。(2)软件调试设计的程序是使用汇编语言编写的,程序写完成后就可以对它进行编译和链接,如果发现有错误,则返回程序中修改,完成后再次编译和链接,就这样周而复始的重复进行,知道没有出现编译错误之后就可以运行了。运行的时候也有问题出现。程序的结构有问题,对于寄存器的使用不合法,或者是对于寄存器的重复使用导致数据混乱,循环不能正常的结束等问题。要解决这些问题就要对汇编用深入的理解,画清楚流程图,使用结构简单的循环,分

23、布编写程序,同时注意对程序的注释可以减少问题。对于循环,注意结束循环的条件,避免在程序中产生无限循环的情况。注意一些寄存器的隐含用法要对于控制端口地址的写入,数据的输出,都有特定的寄存器提供使用。在软件和硬件独自调试后,就要把二者连接起来一起调试,调试正确所得的结果就是程序设计的最终结果了。由于各个部件都单独调试正常,如果出现的结果和理论的有所不同,那么就要分析是硬件的问题还是软件的问题,并对相应的地方做出改动。实验中显示的汉字出现过模糊不清的现象,所有的汉字都是这样的显示,通过对硬件和软件的调试,发现是程序延时的问题,导致每个汉字的刷新次数不够多,把程序中的刷新次数设置合理就看到了正确的结果

24、。对于显示汉字的亮度,速度和闪动问题的解决是通过改变循环次数和延时子程序的延时时间来改变的,延时时间大,亮度就大,一个汉字的显示时间就长,同时汉字与汉字之间的过度就相对平滑。对于汉字的编码,要使显示看起来是那样的一个汉字,要看的出来是这样一个汉字,这样就要求对汉字的编码要精益求精,务求达到使人一眼就可以识别这个汉字的程度。(3)调试结果及问题的提出问题:显示的字体看不清,还出现很严重的抖动现象。字体显示的并不是很清晰,只有仔细观看才可以看的见。循环滚动显示的时候,一个字体会显示二次显示字体的跳度太大不平滑。程序的代码太繁琐,需要优化处理。五.设计结果分析及问题讨论(1)课程设计结果及分析设计结

25、果:在LED上循环显示“计算机专业”,每个汉字或是图形都显示2秒。结果分析:显示汉字和字符,图形等,都是通过循环扫描汉字编码和循环显示实现的。它们都是由发光二极管发光所表示的点通过连线连接起来的。每个汉字和图形都有自己对应的编码。LED每次显示一行,一个汉字或是字符要显示8次才可以显示完毕。通过对汉字编码的循环调用,以及适当的延时,就出现了以上的设计结果。显示的时间是有循环显示的次数决定的,显示的清晰度是有延时子程序决定的。实验中循环显示的次数设置为200次,延时子程序的延时时间为2ms,这样设置就可以使汉字很清晰的显示出来,同时就使得每个汉字的显示时间为2s。汉字的编码的有效地址是放在寄存器

26、中的,汉字显示程序所需要的数据只要从寄存器中取出即可使用。由一个汉字的显示转到另一个汉字或图形的显示是通过循环次数来决定的。(2)问题讨论解决方法: 最重要的环节是解决一个汉字的显示问题,其次是汉字的编码问题,这个将直接影响实验的结果,对于每个汉字和图形之间的切换也是需要解决的一个问题之一。汉字显示的问题的重点是解决一个汉字的显示问题,一个汉字显示的问题解决了,那么显示其他汉字就很容易了,其次是汉字的编码问题,这个将直接影响实验的结果。 实验的一开始,出现了很多程序上的问题,解决后才发现显示的字体好象和实际的字体是反过来的,于是就把原来的B端口的线全部反接过来,然后在实验中调试,就得到了正面显

27、示的字体了。关于代码的优化问题是,采用的是按字符串的形式进行编码,用少许内存空间换取直接进行地址映射,方便每显示一个汉字都要使用取有效地址。采用指针解决的好处是,如果要增加显示的字体很方便,不需要对代码进行大幅度修改。运行中字体的显示很快,而且还有明显的抖动现象?解决方法: 这一问题的关键是循环显示的次数设定和延时子程序的延时时间,循环次数要设置的适中,太大则显示的时间长,太短则显示太快看不见,同是延时是一个很重要的环节,也是消除抖动的关键,它可以使显示时间长汉字更清晰,消除抖动,在循环滚动显示中还可使显示的过渡更为平滑。如何解决滚动的速度和是否平滑的问题?解决方法: 当完成基本的实验要求是,

28、就对实验提出了更高的要求,就是循环滚动显示汉字。一开始也是从一个汉字开始。这些可以通过改变延时时间和循环滚动显示时间来解决。多个汉字显示的问题更多,字体之间的衔接问题,程序代码的重用和优化问题。改进设想: 原来我的程序当中汉字的显示是一直往上滚动显示的,为了让汉字在LED上显示得更人性化,就是让汉字滚动一边结束后,接下来是往上滚动,然后一边滚动玩后接着再往下滚动,反复的如此循环,达到滚动显示汉字的目的.改进的方法是,在程序中添加了一段和往上滚动大体上相同的代码,只不过设置的起始点和采用递减的方法来实现.在这两端基本相同的代码显示完了之后,我们会看到汉字是经过了往上滚动后再往下滚动的.把循环的最

29、后的语句放在程序的最后,以便跳到程序的开头.实现程序的反复循环.(3)收获和体会整个的课程设计最大的体会是在设计过程中我的思考问题、解决问题的能力和动手能力到得到了提高。设计结束在编写实验报告的过程中有可以锻炼运用办公软件的能力。在设计的准备阶段,为了得到更多的专业资料,我查看了很多的专业书,甚至是通过网络检索,这在以前是没有过的。我认为这次课程设计锻炼了我获取知识的能力。在考虑逻辑图的具体设计方案时几经权衡取舍才定稿,我认为这方面锻炼了我思考问题的能力和知识的应用能力。在写控制程序时,因为很多指令不熟悉所以要从头看起,对着汇编课本逐条的看,形成思路,画流程图,写程序,编译运行,最终应用。根据结果忧化再执行。这不但提高了我汇编语言的水平,还第一次把所写的程序应用到了具体的设计中,并且实现里预期的效果,加深了对汇编语言的理解。在编写实验报告的过程中,运用了不同的工具,以及其中更多

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1