东南大学《微机实验及课程设计》实验报告实验四双列点阵发光二极管显示实验姓名:董元学号:22011207专业:测控技术与仪器实验室:计算机硬件技术实验时间:2013年05月15 日报告时间:2013年05月18日评定成绩:审阅教师:一. 实验目的与内容(概述)实验目的:1)进一步掌握TPC实验装置的基本原理和组成结构;2)了解双色点阵LED显示器的基本原理3)掌握PC机控制双色点阵LED显示程序的设计方法实验内容:4-1、在双色点阵发光二极管上显示一个黄色或红色的“年”字。
4-2、在双色点阵发光二极管上显示你的姓的汉字或拼音的第一个字母。
要求该字符红色和黄色相间。
要求:1、正确设置退出条件:可以按任意键退出,或者显示一定的次数退出2、注意尽量清晰地显示字符,消除重影问题4-3、利用双色点阵发光二极管任意设计一款霓虹灯动态图案,要求二极管阵列可以间或发两种颜色的光,并能看清动态变换的效果。
二. 基本实验原理(或基本原理)点阵LED显示器是将许多LED类似矩阵一样排列在一起组成的显示器件,双色点阵LED是在每一个点阵的位置上有红绿或红黄或红白两种不同颜色的发光二极管。
当微机输出的控制信号使得点阵中有些LED 发光,有些不发光,即可显示出特定的信息,包括汉字、图形等。
车站广场由微机控制的点阵LED大屏幕广告宣传牌随处可见。
实验仪上设有一个共阳极8×8点阵的红黄两色LED显示器,其点阵结构如图所示。
该点阵对外引出24条线,其中8条行线,8条红色列线,8条黄色列线。
若使某一种颜色、某一个LED发光,只要将与其相连的行线加高电平,列线加低电平即可。
1、硬件连接:(1)行代码、红色列代码、黄色列代码各用一片74LS273锁存。
(2)行代码输出的数据通过行驱动器7407加至点阵的8条行线上,(3)红和黄列代码的输出数据通过驱动器DS75452反相后分别加至红和黄的列线上。
(4)行锁存器片选信号为CS1,红色列锁存器片选信号为CS2,黄色列锁存器片选信号为CS3。
2、流程图:3、程序简述:(1)红色年字显示ioport equ 0b800h-0280hproth equ ioport+280hprotlr equ ioport+288hprotly equ ioport+290hDATA SEGMENTMESS DB 'Strike any key,return to DOS!',0AH,0DH,'$'min1 DB 00h,01h,02h,03h,04h,05h,06h,07hcount db 0BUFF DB 44h,54h,54h,7fh,54h,0dch,44h,24hDATA ENDS;----------------------------------------------------------- CODE SEGMENTASSUME CS:CODE,DS:DATA;------------------------------------------------------------START: MOV AX,DATAMOV DS,AXMOV DX,OFFSET MESSMOV AH,09INT 21H ;显示提示信息;------------------------------------------------------------ agn: mov cx,80hd2: mov ah,01hpush cxmov cx,0008hmov si,offset min1next: mov al,[si]mov bx,offset buffxlat ;得到第一行码mov dx,prothout dx,almov al,ahmov dx,protlrout dx,al ;显示第一行红mov al,0out dx,alshl ah,01inc sipush cxmov cx,0ffh;ffhdelay2: loop delay2 ;延时pop cxloop nextpop cxcall delayloop d2mov al,00mov dx,protlrout dx,almov ah,01 ;有无键按下int 16hjnz a2agn1: mov cx,80h ;agn1为显示黄色d1: mov si,offset min1mov ah,01push cxmov cx,0008hnext1: mov al,[si]mov bx,offset buffxlatmov dx,prothout dx,almov al,ahmov dx,protlyout dx,almov al,0out dx,alshl ah,01inc sipush cxmov cx,0ffh;ffhdelay1: loop delay1mov cx,0ffh;ffhdelay3: loop delay3pop cxloop next1pop cxcall delayloop d1mov al,00mov dx,protlyout dx,almov ah,01int 16hjnz a2jmp agn ;黄色红色交替显示;---------------------------------------------------------------- DELAY PROC NEAR ;延迟子程序push cxmov cx,0ffh;ffhccc: loop cccpop cxretDELAY ENDP;---------------------------------------------------------------------a2: MOV AH,4CH ;返回INT 21HCODE ENDSEND START(2)显示姓名首字母Dprot equ 0b800h-280hproth equ prot+280h ;???protlr equ prot+288h ;????protly equ prot+290h ;????DATA SEGMENTMESS DB 'Strike any key,return to DOS!',0AH,0DH,'$'min1 DB 00h,01h,02h,03h,04h,05h,06h,07hcount db 0BUFF DB 44h,54h,54h,7fh,54h,0dch,44h,24hDATA ENDS;----------------------------------------------------------- CODE SEGMENTASSUME CS:CODE,DS:DATA;------------------------------------------------------------ START: MOV AX,DATAMOV DS,AXMOV DX,OFFSET MESSMOV AH,09INT 21H ;??????;------------------------------------------------------------ mov cx, 0ffffhMOV AL,01HMOV DX,prothOUT DX,ALbegin:MOV AL,00HMOV DX,prothOUT DX,ALMOV AL,01HMOV DX,protlrOUT DX,ALMOV CX, 0ffffhDELAY1: LOOP DELAY1MOV AL,3cHMOV DX,prothOUT DX,ALMOV AL,02HMOV DX,protlyOUT DX,ALMOV CX, 0ffffhDELAY2: LOOP DELAY2MOV AL,42HMOV DX,prothOUT DX,ALMOV AL,04HMOV DX,protlrOUT DX,ALMOV CX, 0ffffhDELAY3: LOOP DELAY3MOV AL,81HMOV DX,prothOUT DX,ALMOV AL,08HMOV DX,protlyOUT DX,ALMOV CX, 0ffffhDELAY4: LOOP DELAY4MOV AL,81HMOV DX,prothOUT DX,ALMOV AL,10HMOV DX,protlrOUT DX,ALMOV CX, 0ffffhDELAY5: LOOP DELAY5MOV AL,81HMOV DX,prothOUT DX,ALMOV AL,20HMOV DX,protlyOUT DX,ALMOV CX, 0ffffhDELAY6: LOOP DELAY6MOV AL,0ffHMOV DX,prothOUT DX,ALMOV AL,40HMOV DX,protlrOUT DX,ALMOV CX,0ffffhDELAY7: LOOP DELAY7MOV AL,00HMOV DX,prothOUT DX,ALMOV AL,80HMOV DX,protlyOUT DX,ALMOV CX, 0ffffhDELAY8: LOOP DELAY8CALL BEGINmov ah,01 int 16hjnz a2a2: MOV AH,4CH ;??INT 21HCODE ENDSEND START;---------------------------------------------------------- (3)动态显示红黄双色“元”字prot equ 0b800h-280hproth equ prot+280h ;选择列protlr equ prot+288h ;红色地址protly equ prot+290h ;黄色地址DATA SEGMENTMESS DB 'Strike any key,return to DOS!',0AH,0DH,'$'min1 DB 00h,01h,02h,03h,04h,05h,06h,07hcount db 0BUFF DB 16h,12h,5eh,50h,5ch,52h,12h,00hDATA ENDS;----------------------------------------------------------- CODE SEGMENTASSUME CS:CODE,DS:DATA;------------------------------------------------------------ START: MOV AX,DATAMOV DS,AXMOV DX,OFFSET MESSMOV AH,09INT 21H ;显示提示信息;------------------------------------------------------------ agn: mov cx,80hd2: mov ah,01hpush cxmov cx,0008hmov si,offset min1next: mov al,[si] ;把min的内容放入al mov bx,offset buffxlat ;得到第一行码mov dx,proth ;选择列out dx,almov al,ah ;列的内容mov dx,protlrout dx,al ;显示第一行红shl ah,01inc sipush cxmov cx,0ffffhdelay2: loop delay2 ;延时 pop cxloop nextpop cxcall delayloop d2mov al,00mov dx,protlrout dx,almov ah,01 ;有无键按下int 16hjnz a2agn1: mov cx,80h ;agn1为显示黄色d1: mov si,offset min1mov ah,01push cxmov cx,0008hnext1: mov al,[si]mov bx,offset buffxlatmov dx,prothout dx,almov al,ahmov dx,protlyout dx,alshl ah,01inc sipush cxmov cx,0ffffhdelay1: loop delay1mov cx,0ffffhdelay3: loop delay3pop cxloop next1pop cxcall delayloop d1mov al,00mov dx,protlyout dx,almov ah,01int 16hjnz a2jmp agn ;黄色红色交替显示;----------------------------------------------------------------DELAY PROC NEAR ;延迟子程序push cxmov cx,0ffffhccc: loop cccpop cxretDELAY ENDP;---------------------------------------------------------------------a2: MOV AH,4CH ;返回INT 21HCODE ENDSEND START;----------------------------------------------------------三. 方案实现与测试(或调试)实验步骤:(1) 动态调试程序DEBUG/TD 的直接I/O 操作方法(Input)。