一、实验目的:
1.了解LED点阵的基本结构。
2.学习LED点阵扫描显示程序的设计方法。
二、实验内容与要求:
编写程序,控制点阵向上卷动显示“原来如此是这样呀”。
三、实验环境:
PC机一台,TD-PITE实验装置一套。
四、实验步骤:
1.连接电路图。
2.编写实验程序,检查无误后,编译、链接并装入系统。
3.运行实验程序,观察点阵的显示,验证程序功能。
4.固化实验程序,然后脱机运行。
5.自己可以设计实验,使点阵显示不同的符号
6.字符提取方法:将HZDotReader文件拷贝到硬盘上运行程序,设置“取模字体”,设置“取模方式”,选择“输出设置”设置输出格式,点击“字”按钮输入“原来如此是这样呀”得到输入字符的点阵编码以及对应的汉字显示对点阵进行编辑,保存点阵文件为dot格式,使用word软件打开保存文件将字符复制到自己的程序中。
五、电路连接
六、代码设计
1.关于字数
BG0: MOV AX, 112MOV SI, OFFSET HZDOTht
总共有8个字,每个字需要有32个字节用来显示,由于最后一个字显示后就回重新显示,所以AX的值为32*(4-1)/2=112。
2.关于程序设计思想
首先,通过伪指令操作定义端口,其中CS1、CS2分别定义为0~7、8~15行控制端口,CS3、CS4分别定义为0~7、8~15列控制端口,再定义一个256位的字型存储空间。然后再利用包含伪指令INCLUDE来指明包含的显示符号的编码,共由176行、16列组成,这个数字矩阵可根据不同的数字而改变,这也是程序编写的关键。对各端口进行初始化,及各行各列进行初始化,最初使行为“0”,列为“1”,满足灯亮的初始条件。
其次,进入程序主体,开始进行编程。计开始外循环次数为112,利用源变址指针寄存器开始进如循环。通过调用子程序进行内部循环,把点阵显示单元分成四个模块。第一部分内循环是执行前两个模块的数字矩阵操作,从0行到7行的全部列的编写。需要考虑灯亮的条件,即行为0,列为1,就给行赋0值,使行满足条件,因此紧接着需要列的条件,如果某列能够满足条件,则此交点的灯亮。否则,灯不亮。完成一个模块的一行后,开始让指针执行加一操作,从而进入下一个模块的行操作。同理,依次执行循环操作,完成前两个模块的任务。调用子程序进行延时操作,使汉字显示的时间合理。接着进行内部外循环操作,再次进行上述语句命令完成字体在前两个模块的显示情况。然后就是执行后两个模块的语句操作。原理同前两个模块的操作命令。
我们也可以人为的控制汉字移动速度和持续时间,即改变外循环次数值,值越小移动越快。
七、实验现象
依次输入“原来如此是这样呀”之后循环
附录 代码
============================================================
; 文件名称: LED16.ASM
; 功能描述:
; 行: CS1(600H), CS2(640H) 列: CS3(680H), CS4(6C0H)
;============================================================
ROW1 EQU 0600H ;端口定义IOY0
ROW2 EQU 0640H ;端口定义IOY1
COL1 EQU 0680H ;端口定义IOY2
COL2 EQU 06C0H ;端口定义IOY3
STACK1 SEGMENT STACKDW 256 DUP(?)
STACK1 ENDS
;定义为数据段
INCLUDE HZDOTht.ASM ;数据字段为汉字点阵库, 在HZDOTht.ASM文件中
CODE SEGMENTASSUME CS:CODE, DS:DATA
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, ALBG0: MOV AX, 112MOV SI, OFFSET HZDOTht
BG1: CALL DISPADD SI, 2DEC AXJZ BG0JMP BG1
;======显示汉字子程序======
;入口参数: SI = 存放汉字起始地址
DISP: MOV CX, 000FHPUSH AX
ML0: PUSH CXMOV BL, 01HMOV CX, 0008H
ML1: MOV DX, ROW1 ;控制0--7行MOV AL, 00HOUT DX, ALMOV AL, [SI]NOT ALMOV DX, COL1 ;0--7列OUT DX, ALINC SIMOV AL, [SI]NOT ALMOV DX, COL2 ;8--15列OUT DX, ALINC SIMOV DX, ROW1 ;控制0--7行MOV AL, BLOUT DX, ALROL BL, 1CALL DELAYLOOP ML1MOV DX, ROW1MOV AL, 00HOUT DX, ALMOV CX, 0008H
ML2: MOV DX, ROW2 ;控制8--15行MOV AL, 00HOUT DX, ALMOV AL, [SI]NOT ALMOV DX, COL1 ;0--7列OUT DX, ALINC SIMOV AL, [SI]NOT ALMOV DX, COL2 ;8--15列OUT DX, ALINC SIMOV DX, ROW2 ;控制8--15行MOV AL, BLOUT DX, ALROL BL, 1CALL DELAYLOOP ML2MOV DX, ROW2MOV AL, 00HOUT DX, ALSUB SI, 32POP CXLOOP ML0POP AXRET
DELAY: PUSH CX ;延时子程序MOV CX, 0100H
DL1: PUSH AXPOP AXLOOP DL1POP CXRET CODE ENDSEND START
;本文件为16×16点阵中文字库文件,字的横向8点构成一字节,
;左边点在字节的低位,字符点阵四角按左上角→右上角→左下
;角→右下角取字
CD4AD EQU 00000H;原
CC0B4 EQU CD4AD+1;来
CC8E7 EQU CC0B4+1;如
CB4CB EQU CC8E7+1;此
CCAC7 EQU CB4CB+1;是
CD5E2 EQU CCAC7+1;这
CD1F9 EQU CD5E2+1;样
CD1BD EQU CD1F9+1;呀 DATA SEGMENT;原 CD4AD
DB 000H,000H,03FH,0FEH,020H,080H,021H,000H
DB 027H,0F0H,024H,010H,024H,010H,027H,0F0H
DB 024H,010H,024H,010H,027H,0F0H,020H,080H
DB 024H,090H,048H,088H,052H,084H,081H,000H;来 CC0B4
DB 001H,000H,001H,000H,001H,000H,07FH,0FCH
DB 001H,000H,011H,010H,009H,010H,009H,020H
DB 0FFH,0FEH,003H,080H,005H,040H,009H,020H
DB 031H,018H,0C1H,006H,001H,000H,001H,000H;如 CC8E7
DB 010H,000H,010H,000H,010H,000H,010H,07CH
DB 0FEH,044H,022H,044H,022H,044H,022H,044H
DB 042H,044H,024H,044H,014H,044H,008H,044H
DB 014H,044H,022H,07CH,042H,044H,080H,000H;此 CB4CB
DB 004H,040H,004H,040H,004H,040H,024H,044H
DB 024H,048H,027H,050H,024H,060H,024H,040H
DB 024H,040H,024H,040H,024H,040H,024H,042H
DB 02FH,042H,0F0H,042H,040H,03EH,000H,000H;是 CCAC7
DB 01FH,0F0H,010H,010H,010H,010H,01FH,0F0H
DB 010H,010H,010H,010H,01FH,0F0H,000H,000H
DB 0FFH,0FEH,001H,000H,011H,000H,011H,0F8H
DB 011H,000H,029H,000H,045H,000H,083H,0FEH;这 CD5E2
DB 000H,080H,020H,040H,010H,040H,017H,0FCH
DB 000H,010H,002H,010H,0F1H,020H,010H,0A0H
DB 010H,040H,010H,0A0H,011H,010H,012H,008H
DB 014H,008H,028H,000H,047H,0FEH,000H,000H;样 CD1F9
DB 011H,004H,010H,084H,010H,088H,010H,000H
DB 0FBH,0FEH,010H,020H,030H,020H,039H,0FCH
DB 054H,020H,050H,020H,093H,0FEH,010H,020H
DB 010H,020H,010H,020H,010H,020H,010H,020H;呀 CD1BD
DB 000H,000H,003H,0FCH,078H,010H,049H,010H
DB 049H,010H,049H,010H,04AH,010H,04BH,0FEH
DB 048H,030H,048H,050H,078H,090H,049H,010H
DB 002H,010H,004H,010H,000H,050H,000H,020HDATA ENDS