广告灯自动控制系统的设计毕业设计内容摘要:

进行显示。 对于串行传输方式来说,列数据准备时间可能相当长,在行扫描周期确定的情况下,留给行显示的时间就太少了,以致影响到 LED 的亮度。 采用串行传输中列数据准备和列数据显示的时间矛盾,可以采用重叠处理的方法。 即在显示本行各列数据的同时,传送下一行的列数据。 为了达到重叠处理的目的,列数据的显示就需要有锁存功能。 对于列数据准备来说,它应能实现串入并出的移位功能。 这样,本行已准备好的数据打入并行锁存器进行显示时,串行移位寄存器就可以准备下一行的列数据,而不会影 响本行的显示。 LED 点阵显示模块进行的方法有两种: ( 1)水平方向( X方向)扫描,即逐列扫描的方式(简称列扫描方式):此时用一个 P 口输出列码决定哪一列能亮(相当于位码),用另一个 P口输出行码(列数据),决定该行上那哪个 LED亮(相当于段码)。 能亮的列从左到右扫描完 16列(相当于位码循环移动 16次)即显示出一个完整的图像。 ( 2)竖直方向( Y方向)扫描,即逐行扫描方式(简称行扫描方式):此时用一个 P口输出决定哪一行能亮(相当于位码),另一个 P 口输出列码(行数据,行数据为将列数据的点阵旋转 90度的数据)决定该 行上哪些 LED 灯亮(相当于段码)。 能亮的行从上向下扫描完 16 行(相当于位码循环移位 16次)即显示一帧完整的图像。 本设计应用的是第一种的扫描方法,即水平方向( X方向)扫描。 每一个字由 16 行 16 列的点阵形成显示,即每个字均由 256个点阵来表示,我们可以把每一个点理解为一个像素。 一般我们使用的 16 16 的点阵宋体字库,即所谓的 16 16,是每一个汉广告灯自动控制系统 12 字在纵横各 16 点的区域内显示的。 汉字库从该位置起的 32 字节信息记录了该字的字模信息。 事实上这个汉字屏不仅可以显示汉字,也可以显示在 256 像素范围内的任何图形。 我们 以水平方向( x 方向)扫描显示汉字的 “ 江 ” 为例来说明其扫描原理,每一个字由 16 行 16列的点阵组成显示,如图下的,如果用 8 位的 AT89S51 的单片机来控制,由于单片机的总线为 8位,一个字需要拆分成两个部分。 一般我们把它分解成上部分和下部分,上部分由 8*16 的点阵组成,下部分也由 8*16 的点阵组成。 在本例中单片机首先显示的是左上角的第一列的部分,即第 0 列的 P00~P07 口。 方向为 P00 到 P07,显示汉字 “ 江 ” 的时候, P00 到 P04 都是灭的, P05 亮,即二进制 00001000,转换为 16 进制为 08H, 如图 所 示。 上半部分第一列完成之后,继续扫描下半部分的第一列,为了接线的方便,我们仍设计成由上往下的扫描方式,即从 P27 向P20 方向扫描,从上图可以看到,这一列所有的都不亮,所以代码为 00000000, 16 进制为 00H,然后单片机转向上半部的第二列,除了 P05 亮,其他的都不亮,即为 00000100, 16进制为 04H,这一列扫描完成之后继续进行下半部分的扫描,除了 P21 亮,其他的为不亮,为二进制 00100000,即 16 进制 20H。 按照这个方法,继续进行下面的扫描,一共扫描 32个 8位,可以得出汉字 “ 城 ” 的扫描代码为 : DB 08H,20H,08H,30H,0FFH,0E0H,08H,42H,08H,4CH,1FH,0F0H,12H,10H,12H,1AH。 DB 13H,0F2H,10H,04H,0FFH,0C8H,10H,30H,50H,0CCH,37H,02H,12H,1CH,00H,00H。 城 广告灯自动控制系统 13 图 点阵显示原理图 由这个原理可以看到,无论显示何种字体或图像,都可以用这种方法来分析出它的扫描代码从而显示在屏幕上。 了解汉字的显示原理之后,那如何得到汉字的字模信息呢。 现在有一些现成的汉字字 模生成软件,可从网上下载汉字字库提取程序直接提取字库,如图 所示的为一种字模生成软件,软件打开后输入汉字,点击 “ 检取 ” 后,十六进制数据汉字代码即可以自动生成,把我们需要的竖排数据复制到我们的程序即可 图 汉字字模生成软件 广告灯自动控制系统 14 点阵的移动 以下以 16 16 点阵为例介绍点阵的移动。 要显示一个字符,该字符的点阵数据可以列向(纵向) 16 点组字,又可以行向(横向) 16 点组字。 无论哪一种组字方法,都既可以显示字符的水平方向的移动,又可以显示竖直方向的移动。 1.显示字符的左右移动 (1)列扫描方 式左移动:列向组字显示字符水平方向的移动(左滚动) 在这里有两个方法: 方法 1:延长数组法。 将原来字符点阵数组的 16个数据重复一遍延长,点阵数组的数据个数为 32 个。 每扫描仪帧取 8 个数据显示,下一帧取数要在数组中后移一个数取数。 循环一遍扫 16帧。 可以假想有两块 16 16的点阵模块(共 32帧)水平平行排列,用一个恰好能罩住 8 列点阵的中空方框去罩这个点阵,第 1(第 1 帧)罩住最左边数起第一列开始的 16 列,就扫描显示这16 列;第 2次(第 2 帧)使方框右移一列,罩住做左边数起第 2列开始的 16 列,就扫描显示这 16 列; ;这样每扫描完一帧使方框右移一列,最后第 16 次(第 16 帧)时,罩住左边数起的第 16列开始的 16列,就扫描显示这 16 列。 如此完成 16 帧画面的扫描显示,也就完成了整个一次移动循环扫描、之后反复循环,即可呈现显示字符沿水平向左移动的图像,如图 所示。 图 方框图法左右移动示意图 因为是列向组字(列扫描方式,点阵数据为行码,上边为地位下面为高位),希望显示移动的一个字符,第 1 次扫描从行码的点阵数组中取第 1~16 个数据,送行码输出口,对应于这 8 个数据,同时用列码输出口输出列码,分别控制第 1~16 列。 扫描完前 16个数据之后,第 2 次扫描从点阵数组中取第 2~14 个数据 图 字形法左右移动示意图 广告灯自动控制系统 15 (第 17 个数据与地 1 个数据同),送行码输出口,对应于这 16个数据,同时用列码输出口输出列码,仍分别控制扫地 1~16 列。 第 3次扫描从点阵数组中取第 3~18 个数据(第 18 个数据码与地2 个数据码相同)扫描 ;如此实现字符向左移动。 以上完成一个图形移动的方法,也可以看成是移动 16 个不同的字形。 如图 所示,首先扫描第一个字型,同样是 16 行,16 次扫描, 16 次显示;完成一个字型的扫描以后,再扫描 第二个字型;完成第二个字型的扫描之后,再扫描第三个字型 依此类推,即可产生该文字的左移的感觉。 假设如果原本某个汉字的字型(第一个字型),其编码为: 00H,10H,20H,30H,40H,50H,60H,70H,80H,90H,0A0H,0B0H,0C0H,0D0H0E0H,0F0H; 第二个字型的编码为: 10H,20H,30H,40H,50H,60H,70H,80H,90H,0A0H,0B0H,0C0H,0D0H0E0H,0F0H, 00H, 也就是把第一个字型的编码中,第 1行显示数据,变为第 2行显示数据;第 2 行显示数据,变成第 3行显示数据;第 3行显示数据,变成第 4 行显示数据;第 4行显示数据,变成第 5行显示数据 以此类推。 当第一个字型扫描显示完成之后,就进行这样的动作调整,广告灯自动控制系统 16 以产生第二个字型的编码。 同样的,当第二个字型扫描完成之后,就进行这样的调整动作,以产生第三个字型的编码。 这个调整动作时先将 16个编码根据序填入存储器,例如第 1行编码存入 20H,第二行编码存入 21H要进行左移调整时,则先将 20H 地址的数据转移到 36H 地址,再将 21 H 地址的数据转移到 20 H 地址,将 22 H 地址的数据转移到 21 H 地址,将 23 H 地址的数据转移到 22 H 地址,将 24 H 地址的数据转移到 23 H 地址,将 25 H 地址的数据转移到 24 H 地址,将 26 H 地址的数据转移到 25 H 地址,将 27 H 地址的数据转移到 26 H 地址,将 28 H 地址的数据转移到 27H 地址 方法 2:数组数据 “ 循环左移法 ” (适合用 C 语言编写,在此仅作了解)。 注意,不是把二进制数据按位循环左移,而是把数组中的数据按其在数组中的位置循环左移。 具体的 方法入下。 原字符点阵数组中的 16 个数据不延长,但下一帧取的 16 个数据,是把上一帧的 16个数据的位置(先后顺序) “ 循环左移 ”一次,即原来第 2 个移到第 1个,原来第 3 个移到第 2个 原来第 1个移到第 16 个。 实现数组数据循环左移的方法有:第一,遍一个 “ 数组数据循环左移子程序 ” ,该子程序每执行一次可把数组中的额数据循环左移一次,主程序中先调用一次该子程序,时数组中的数据循环左移这一次,然后再从数组中取数据显示。 当数组中的额数据个数较多时,片内 RAM 将不够大,必须将数组定义在片外 RAM 中。 第二,不用子程序,而 是用变量判断控制实现数组数据的循环左移。 (2) 行扫描方式左移:行向组字显示字符水平方向的左移。 如果是行向组字(行扫描方式,点阵数据为列码,左边为敌位右边为高位),希望显示向左移动的一个字符,第 1 次扫描从列码的点阵数组中取第 1~16 个数据,送到列码输出口,对应的 8个数据,同时用行码输出口输出行码,分别控制扫描第 1~16 行。 扫描完成这 16 个数据之后,第 2 次扫描的第 16 个数据,应将原来第 1次扫描的 16 列码每一个都循环右移一位(如果是显示右移则应循环左移),再进行扫描。 如此,每进行下一次扫描,把上一次扫描的 16 个列码都循环右移一位,再进行扫描。 数据的右移与数据的左移相似,只是取码的顺序相反而已,在此就不再赘述。 2.数据的上下移动 (1)列扫描方式向上移动 列向组字显示字符竖直方向的移动。 若是列向组字,希望显广告灯自动控制系统 17 示向上移动一个字符,第 1次扫描从行码的点阵数组中取第 1~16个数据,送行码输出口,对应于这 16 个数据,同时用列码输出口输出列码,分别控制扫描第 1~16 列。 由于是列向组字(上高下低),扫描完成这 16 个数据后,第 2 次扫描的 16 个数据,应将原来的第 1 次扫描的 16 个行码每一个都循环右移一位,使显示的点都上移一行(如 果是显示向下滚动则应循环左移),再进行扫描。 如此,每进行下一次的扫描,把上一次的 16 个行码都循环右移一位,再进行扫描就实现了数据的向上移动。 也可以用字型的方法容易理解,以下的 16 16 的 LED 显示一个字是 8个字型,首先扫描的而是第一个字型,同样是 16行,16 列扫描, 16 次显示;完成一个字型后,再扫描第二个字型;完成第二个字型后,再扫描第三个字型 以此类推,即可产生该文字向上移动的感觉 当把第一个字型编码中,每行显示的数据都右移一位,以产生第二个字型编码,即可产生字符向上滚动的感觉。 当第一个字符 扫描完成后,就进行这样的调整动作,以产生第二个字型的编码。 同样的,当第二个字型完成之后,就进行这样的调整动作,以产生第三个字型的编码。 调整的动作是先将 8个编码根据序填入储存器, 图 字形法上下移动示意图 例如第 1 行编码存入 20 地址,第 2 行编码存入 21 地址 要进行上移调整时,则从 20 地址数据开始,每笔数据都右移一位即可。 上图 仅以字型移动的方法画图。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。