一、实验目的:
1.了解LED点阵的基本结构。
2.学习LED点阵扫描显示程序的设计方法。
二、实验内容与要求:
编写程序,控制点阵向上卷动显示“原来如此是这样呀”。
三、实验环境:
PC机一台,TD-PITE实验装置一套。
四、实验步骤:
1.连接电路图。
2.编写实验程序,检查无误后,编译、链接并装入系统。
3.运行实验程序,观察点阵的显示,验证程序功能。
4.固化实验程序,然后脱机运行。
5.自己可以设计实验,使点阵显示不同的符号
6.字符提取方法:将HZDotReader文件拷贝到硬盘上运行程序,设置“取模字体”,设置“取模方式”,选择“输出设置”设置输出格式,点击“字”按钮输入“原来如此是这样呀”得到输入字符的点阵编码以及对应的汉字显示对点阵进行编辑,保存点阵文件为dot格式,使用word软件打开保存文件将字符复制到自己的程序中。
五、电路连接
六、代码设计
1.关于字数
- BG0: MOV AX, 112
-
- MOV 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 STACK
- DW 256 DUP(?)
- STACK1 ENDS
- ;定义为数据段
- INCLUDE HZDOTht.ASM ;数据字段为汉字点阵库, 在HZDOTht.ASM文件中
- CODE SEGMENT
- ASSUME CS:CODE, DS:DATA
- START: MOV AX, DATA
- MOV DS, AX
- MOV DX, ROW1
- MOV AL, 00H
- OUT DX, AL
- MOV DX, ROW2
- OUT DX, AL
- MOV AL, 0ffH
- MOV DX, COL1
- OUT DX, AL
- MOV DX, COL2
- OUT DX, AL
-
- BG0: MOV AX, 112
- MOV SI, OFFSET HZDOTht
- BG1: CALL DISP
- ADD SI, 2
- DEC AX
- JZ BG0
- JMP BG1
- ;======显示汉字子程序======
- ;入口参数: SI = 存放汉字起始地址
- DISP: MOV CX, 000FH
- PUSH AX
- ML0: PUSH CX
- MOV BL, 01H
- MOV CX, 0008H
- ML1: MOV DX, ROW1 ;控制0--7行
- MOV AL, 00H
- OUT DX, AL
- MOV AL, [SI]
- NOT AL
- MOV DX, COL1 ;0--7列
- OUT DX, AL
- INC SI
- MOV AL, [SI]
- NOT AL
- MOV DX, COL2 ;8--15列
- OUT DX, AL
- INC SI
- MOV DX, ROW1 ;控制0--7行
- MOV AL, BL
- OUT DX, AL
- ROL BL, 1
-
- CALL DELAY
- LOOP ML1
- MOV DX, ROW1
- MOV AL, 00H
- OUT DX, AL
- MOV CX, 0008H
- ML2: MOV DX, ROW2 ;控制8--15行
- MOV AL, 00H
- OUT DX, AL
- MOV AL, [SI]
- NOT AL
- MOV DX, COL1 ;0--7列
- OUT DX, AL
- INC SI
- MOV AL, [SI]
- NOT AL
- MOV DX, COL2 ;8--15列
- OUT DX, AL
- INC SI
- MOV DX, ROW2 ;控制8--15行
- MOV AL, BL
- OUT DX, AL
- ROL BL, 1
- CALL DELAY
- LOOP ML2
- MOV DX, ROW2
- MOV AL, 00H
- OUT DX, AL
- SUB SI, 32
- POP CX
- LOOP ML0
- POP AX
- RET
- DELAY: PUSH CX ;延时子程序
- MOV CX, 0100H
- DL1: PUSH AX
- POP AX
- LOOP DL1
- POP CX
- RET
-
- CODE ENDS
- END 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,020H
-
- DATA ENDS