点阵 LED 显示设计实验

一、实验目的:

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        

  • 9
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
英文字库生成工具 C51格式 A51格式 HZDotReader3.0: 新增从文本文件输入字符功能,可以为您所要显示的文件生成专用小字库,免除字符一个个输入的麻烦。 新增HEX文件输出功能,解决二进制输出时保留区域的填充所带来的问题。 把2.0版的重码自动删除功能改为该功能可选,以适应某些特殊应用。要允许重码输入请在设置菜单,文件输出设定中去除重码自动去除项。 新增中英文混合输出功能,该功能把二个半角字符作为一个汉字取模,如半角字符为单个,在其后自动插入一个空格。在混合输出状态下,不能去除重码。如从文本文件输入,则自动去除回车和换行控制符。需要混合输出请点击设置,取模字体菜单,在弹出的对话框中选中中英文混合输出项。该项功能使软件所取的字模文件用二进制输出后可直接用于大屏的显示。 新增对英文字模的常量定义,解决少量字符的大点阵专用字库字符定位问题,英文字符常量格式为:字头“CHAR_”加ASII十六进制内码,如字母“Z”为 “CHAR_5A”。 新增码表生成功能,可从菜单“输出设定”项中设定使用码表或使用汉字常量检索字符在点阵中的位置,在选中生成字符码表后,系统输出时生成字库的内码列表,应用时,先检索字符在码表中的位置,再根据字符的位置计算该字符在点阵中的位置,可解决在C51中汉字常量无法应用于字符串的问题(C51语法把汉字常量认定是西文字符串)。产生的内码列表在汉字取模状态下A51格式为标号:HZ_INDEX,C51格式为常量数组:hzIndex[];在英文取模状态下A51格式为标号:CHAR_INDEX,C51格式为常量数组:charIndex[]。在产生字符码表的同时A51模式下生产一个代表字符总数的常量HZ_NUM或CHAR_NUM,而在C51输出模式下相应的常量则为:hzNum或charNum。 更改菜单名,更好地体现菜单的功能,原“字体设定”改为“取模字体”,原“字符取点设定”改为“取模方式”,原“文件输出设定”改为“输出设置”。 更正2.0版在点阵不为8的倍数,且纵向点取字时,对点阵进行编辑产生错误,更改某些状态下生成的字库不能重新打开编辑的错误。 如发现新的错误,敬请与作者联系

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

钻仰弥坚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值