一、实验目的:
1.了解LED点阵的基本结构。
2.学习LED点阵扫描显示程序的设计方法。
二、实验内容与要求:
编写程序,控制点阵向上卷动显示“原来如此是这样呀”。
实验系统中的16×16 LED点阵由四块8×8LED点阵组成,如图1所示,8×8点阵内部结构图如图2所示。由图2可知,当行为“0”,列为“1”,则对应行、列上的LED点亮。图3为点阵外部引脚图。
图1 16*16点阵示意图
图2 点阵内部结构图
图3 点阵显示实验接线图
点阵实验单元电路图如图4所示。由于2803输出反向,所以行为1,列为О时对于点的LED点亮。
图4 点阵实验单元电路图
点阵实验接线图如图5所示。
图5 点阵显示实验接线图
三、实验环境:
PC机一台,TD-PITE实验装置一套。
四、实验步骤:
1.按图5连接实验电路图。
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值,使行满足条件,因此紧接着需要列的条件,如果某列能够满足条件,则此交点的灯亮。否则,灯不亮。完成一个模块的一行后,开始让指针执行加一操作,从而进入下一个模块的行操作。同理,依次执行循环操作,完成前两个模块的任务。调用子程序进行延时操作,使汉字显示的时间合理。接着进行内部外循环操作,再次进行上述语句命令完成字体在前两个模块的显示情况。然后就是执行后两个模块的语句操作。原理同前两个模块的操作命令。
我们也可以人为的控制汉字移动速度和持续时间,即改变外循环次数值,值越小移动越快。
七、实验现象
依次输入“原来如此是这样呀”之后循环