《16*16点阵图文显示屏 毕业论文.doc》由会员分享,可在线阅读,更多相关《16*16点阵图文显示屏 毕业论文.doc(32页珍藏版)》请在三一文库上搜索。
1、1 1616 点阵图文显示屏 第一章 绪 论 1.1 设计课题背景知识 单片微型计算机(single chip microcomputer)简称单片机,它是为各类专用控制器而设 计的通用或专用微型计算机系统,高密度集成了普通计算机微处理器,一定容量的 RAM 和 ROM 以及输入 /输出接口,定时器等电路于一块芯片上构成的。 单片机自 20 世纪 70 年代问世以来,以极其高的性价比受到人们的重视和关注,所以应 用很广,发展很快。单片机的优点是体积小、重量轻、抗干扰能力强,对环境要求不高,价 格低廉,可靠性高,灵活性好,开发较为容易。在现代工业控制和一些智能化仪器仪表中, 越来越多的场所需要用
2、点阵图形显示器显示汉字,汉字显示屏也广泛应用到汽车报站器,广 告屏等。所以研究 LED 显示有实用的意义。 LED 显示屏分为图文显示屏和视频显示屏,均由 LED 矩阵块组成。图文显示屏可与计 算机同步显示汉字、英文文本和图形;视频显示屏采用微型计算机进行控制,图文、图像并 茂,以实时、同步、清晰的信息传播方式播放各种信息,还可显示二维、三维动画、录像、 电视、VCD 节目以及现场实况。LED 显示屏显示画面色彩鲜艳,立体感强,静如油画,动 如电影,广泛应用于交通运输、车站、商场、医院、宾馆、证券市场、工业企业管理等公共 场所。 LED 显示屏可以显示变化的数字、文字、图形图像;不仅可以用于室
3、内环境还可以用 于室外环境,具有投影仪、电视墙、液晶显示屏无法比拟的优点。 LED 之所以受到广泛重视而得到迅速发展,是与它本身所具有的优点分不开的。这些 优点概括起来是:亮度高、工作电压低、功耗小、小型化、寿命长、耐冲击和性能稳定。 LED 的发展前景极为广阔,目前正朝着更高亮度、更高耐气候性、更高的发光密度、更高 的发光均匀性,可靠性、全色化方向发展。 现代 LED 的发展很快,很多研究领域非常已经深刻,实际情况是:很多相关的知识已 经远远超出我们在校学生的能力范围,所以在此只是简单的研究一下用单片机驱动的 LED 显示移动的汉字。目的有三:一是亲手制作一个简单实用的显示文字的 LED 点
4、阵;二是通 过制作 LED 点阵增强对 LED 点阵的了解和应用,以及复习巩固单片机知识;三是通过团队 合作,增强团队合作的意识,为以后走向社会工作打下基础,并且增强了同学之间的友谊。 2 汉字显示方式是先根据所需要的汉字提取汉字点阵(如 1616 点阵),将点阵文件存 入 ROM,形成新的汉字编码;而在使用时则需要先根据新的汉字编码组成语句,再由 MCU 根据新编码提取相应的点阵进行汉字显示。不论显示图形还是文字,都是控制与组成这些图 形或文字的各个点所在位置相对应的 LED 器件发光。通常事先把需要显示的图形文字转换 成点阵图形,在按照显示控制的要求以一定的格式形成显示数据。对于只控制通断
5、的图文显 示屏来说,每个 LED 发光器件占据数据中的 1 位( 1bit),在需要该 LE D 器件发光的数据 中相应的位填 1,否则填 0。当然,根据控制电路的安排,相反的定义同样时可行的。这样 依照所需显示的图形文字,按显示屏的各行各列逐点填写显示数据,就可以构成一个显示数 据文件。显示图形的数据文件,其格式相对自由,只要能够满足显示控制的要求即可。文字 的点阵格式比较规范,可以采用现行计算机通用的字库字模。组成一个字的点阵,其大小也 可以有 1616、2424 、3232、4848 等不同规格。 用点阵方式构成图形或文字,是非常灵活的,可以根据需要任意组合和变化,只要设计 好合适的数据
6、文件,就可以得到满意的显示效果。因而采用点阵式图文显示屏显示经常需要 变化的信息,是非常有效的。 图文显示屏的颜色,有单色、双色、和多色几种。最常用的是单色图文屏。单色屏多使 用红色或橘红色或橙色 LED 点阵单元。双色图文屏和多色图文屏,在 LED 点阵的每一个 “点”上布置有两个或多个不同颜色的 LED 发光器件。换句话说,对应于每种颜色都有自己 的显示矩阵。显示的时候,各颜色的显示点阵是分开控制的。事先设计好各种颜色的显示数 据,显示时分别送到各自的显示点阵,即可实现预期效果。每一种颜色的控制方法和单色的 完全相同,因此掌握了单色图文显示屏的原理,双色屏和多色屏就不难理解了。 为了吸引观
7、众增强显示效果,可以有多种显示模式。最简单的显示模式是静态显示。与 静态显示模式相对应,就有各种动态显示模式,它们所显示的图文都是能够动的。按照图文 运动的特点又可以分为闪烁、平移、旋转、缩放等多种显示模式。产生不同显示模式的方法, 并不意味着一定要重新编写显示数据,可以通过一定的算法从原来的显示数据直接生成。例 如,按顺序调整行号,可以使显示图文产生上下平移;而顺序调整列显示数据的位置,就可 以达到左右平移的目的;刷新的时间控制,要考虑运动图形文字的显示效果。刷新太慢,动 感不显著;刷新太快了,中间过程看不清。一般刷新周期可控制在几十毫秒范围之内。 本次毕业设计中,由本人和钟桂,张维平组成一
8、组,我负责硬件部分电路图的设计和软 件部分程序的设计和调试,目的是应用简单方便的电路连接和程序完成汉字的换色与移动。 钟桂负责用设计好的点阵电路制作 PCB 电路板,包括完成 PCB 板的制作,张维平负责制作 另外一块在面包板上连的点阵线连板子的焊接与调试,各人的分工不同只是工作侧重点的不 同,大家是在一起互相学习互相帮助,共同完成设计任务。 3 第二章 硬件设计 2.1 设计框图及介绍 LED 点阵总体框图如图 1.1 所示,点阵电路大体上可以分成微机本身的硬件、显示驱 动电路、控制信号电路三部分。控制电路部分包括一个 51CUP 和一些外围电路。在整个电 路当中此控制电路部分相当于一个上位
9、机,它负责控制整个电路以及相应的程序的运行、与 PC 机的串行通讯、以及给屏体电路部分发送命令。点阵显示屏体、以及它的行和列的各个 驱动电路。由于两部分的电路在制板时可以放到一起,所以可以将其字库放到控制电路部分 使用串行通讯方式来与屏体电路部分进行数据和命令的传送。 此显示电路采用扫描方式进行显示时,每行有一个行驱动器,各行的同名列共用一个列 驱动器。由行译码器给出的行选通信号,从第一行开始,按顺序依次对各行进行扫描(把该 行与电源的一端接通)。另一方而,根据各列锁存的数据,确定相应的列驱动器是否将该列 与电源的另一端接通。接通的列,就在该行该列点燃相应的 LED;未接通的列所对应的 LED
10、 熄灭。可通过扫描输出口的控制实现颜色的转换。 图 2.1 点阵显示的总体框图 2.2 51 系列单片机简介 单片机(Microcontroller,又称微处理器)是在一块硅片上集成了各种部件的微型机, 这些部件包括中央处理器 CPU、数据存储器 RAM、程序存储器 ROM、定时器/计数器和多 种 I/O 接口电路。 4 8051 单片机的基本结构见图 2.2。 图 2.2 8051 单片机的基本结构 8051 是 MCS-51 系列单片机的一个产品。MCS-51 系列单片机是 Intel 公司推出的通用 型单片机,8051 单片机系列指的是 MCS-51 系列和其他公司的 8051 衍生产品
11、。这些衍生品 是在基本型基础上增强了各种功能的产品。这些产品给 8 位单片机注入了新的活力,给它的 开发应用开拓了更广泛的前景。 8051 系列的内部结构可以划分为 CPU、存储器、并行口、串行口、定时器/计数器、中 断逻辑几部分。 (1)中央处理器 8051 的中央处理器由运算器和控制逻辑构成,其中包括若干特殊功能寄存器(SFR) 。 算术逻辑单元 ALU 能对数据进行加、减、乘、除等算术运算;“与” 、 “或” 、 “异或”等逻 辑运算以及位操作运算。 ALU 只能进行运算,运算的操作数可以事先存放到累加器 ACC 或寄存器 TMP 中,运算结 果可以送回 ACC 或通用寄存器或存储单元中
12、,累加器 ACC 也可以写为 A。B 寄存器在乘法 指令中用来存放一个乘数,在除法指令中用来存放除数,运算后 B 中为部分运算结果。 程序状态字 PSW 是个 8 位寄存器,用来寄存本次运算的特征信息,用到其中七位。PSW 的 格式如下所示,其各位的含义是: CY:进位标志。有进位/错位时 CY=1,否则 CY=0。 AC:半进位标志。当 D3 位向 D4 位产生进位/错位时,AC=1,否则 AC=0,常用于十 进制调整运算中。 F0:用户可设定的标志位,可置位/复位,也可供测试。 5 RS1、RS0 :四个通用寄存器组选择位,该两位的四种组合状态用来选择 03 寄存器组。 。 OV:溢出标志
13、。当带符号数运算结果超出-128+127 范围时 OV=1,否则 OV=0。当无 符号数乘法结果超过 255 时,或当无符号数除法的除数为 0 时 OV=1,否则 OV=0。 P:奇偶校验标志。每条指令执行完,若 A 中 1 的个数为奇数时 P=1,否则 P=0,即偶 校验方式。 控制逻辑主要包括定时和控制逻辑、指令寄存器 、译码器以及地址指针 DPTR 和程序 寄存器 PC 等。 单片机是程序控制式计算机,即它的运行过程是在程序控制下逐条执行程序指令的过程: 从程序存储器中取出指令送指令存储器 IR,然后指令译码器 ID 进行译码,译码产生一系列 符合定时要求的微操作信号,用以控制单片机的各
14、部分动作。8051 的控制器在单片机内部 协调各功能部件之间的数据传送、数据运算等操作,并对单片机发出若干控制信息。这些控 制信息的使用专门的控制线,诸如 PSEN、ALE、 EA 以及 RST,也有一些是和 P3 口的某些 端子合用,如 WR 和 RD 就是 P3.6 和 P3.7,他们的具体功能在介绍 8051 引脚是一起叙述。 (2)存储器组织 8051 单片机的存储器结构特点之一是将程序存储器和数据存储器分开,并有各自的寻 址机构和寻址方式,这种结构称为哈佛结构单片机。这种结构与通用微机的存储器结构不同, 一般微机只有一个存储器逻辑空间,可随意安排 ROM 或 RAM,访存时用同一种指
15、令,这 种结构称为普林斯顿型。 8051 单片机在物理上有四个存储空间:片内程序存储器和片外程序存储器、片内数据 存储器和片外数据存储器。 8051 片内有 256K 数据存储器 RAM 和 4KB 的程序存储器 ROM。除此之外,还可以在 片外扩展 RAM 和 ROM,并且各有 64KB 的寻址范围。也就是最多可以在外部扩展 2*64KB 存储器。 8051 的存储器组织结构如图 2.3 所示。 图 2-3 8051 存储器组织结构 6 64K 字节的程序存储器(ROM)空间中,有 4K 字节地址区对于片内 ROM 和片外 ROM 是公用的,这 4K 字节地址是 0000HFFFH。而 10
16、00HFFFFH 地址区为外部 ROM 专 用。CPU 的控制器专门提供一个控制信号 EA 用来区分内部 ROM 和外部 ROM 的公用地址 区:当 EA 接高电平时,单片机从片内 ROM 的 4K 字节存储器区取指令,而当指令地址超 过 0FFFH 后,就自动的转向片外 ROM 取指令。当 EA 接低电平时,CPU 只从片外 ROM 取 指令。 程序存储器的某些单元是保留给系统使用的:0000H0002H 单元是所有执行程序的入 口地址,复位以后,CPU 总是丛 0000H 单元开始执行程序。0003H002AH 单元均匀地分为 五段,用做五个中断服务程序的入口。用户程序不应进入上述区域。
17、8051 的 RAM 虽然字节数不很多,但却起着十分重要的作用。256 个字节被分为两个区 域:00H7FH 时真正的 RAM 区,可以读写各种数据。而 80HFFH 是专门用于特殊功能寄 存器(SFR )的区域。对于 8051 安排了 21 个特殊功能寄存器,每个寄存器为 8 位,所以实 际上 128 个字节并没有全部利用。 内部 RAM 的各个单元,都可以通过直接地址来寻找,对于工作寄存器,则一般都直接 用 R0R7,对特殊功能寄存器,也是直接使用其名字较为方便。8051 内部特殊功能寄存器 都是可以位寻址的,并可用“寄存器名.位”来表示,如 ACC.0,B.7 等。 2.3 单片机最小应
18、用系统电路设计 C130P C230P Y112M R1 R310K C3 10u S1VCC P1.0P1.1 P1.2P1.3 S2 S3 S4 P101 P112 P123 P134 P145 P156 P167 P178 RESET9 P30/RXD10 P31/TXD11 P3212 P3313 P3414 P3515 P3616 P3717 X218 X119 Vss20 P20 21P21 22P22 23 P23 24P24 25P25 26 P26 27P27 28 PSEN 29 ALE/P 30 EA 31 P07 32P06 33P05 34 P04 35P03 36P
19、02 37 P01 38P00 39VCC 40 U1 AT89C51 VCC P2.7P2.6 P2.5P2.4 P0.1P0.2 P0.3P0.4P1.4P1.5 P1.6P1.7 P2.0P2.1 P2.2 VCC 4.7K*4 图 2.4 单片机最小应用系统原理图 注: 该最小系统由按键复位 RESET 电路、晶体振荡电路以及 I/O 接口电路组成。 复位的实现通常用 2 种方式: 开机上电复位和外部手动复位,本设计用的是外部手动 7 复位。电路图 2.5 如下: 图 2.5 单片机复位图 AT89C51 工作电压 VCC=5V,其 EA 引脚需接高电平,5V 电源电路如图 2.6 所
20、示。 T1 AC 1 V+ 2 AC 3 V-4 D6 C4 100u/16V C6 100u/16v VCC Vin1 GN D 3 +5V 2 U2 7805C5104 C7104 图 2.6 单片机电源原理图 注: 该电源电路主要模块为 IC7805,它能输出稳定的 5V 电源,图中整流桥是将市电转变 为直流电,电容起到虑波作用由 7805 的 OUT 引脚输出 5V 电压。 2.4 LED 点阵介绍 88 单色点阵共需要 64 个发光二极管组成,且每个二极管是放置在行线与列线的叉点 上。本设计是一种实用的汉字显示屏的制作,制作的是单色点阵。直接使用了 51 单片机实 验箱 256 个高
21、亮度发光管,组成了 16 行 16 列的发光点阵。实际使用时可以根据这个原理自 行扩充显示的字数。 对比下面的 88 单色点阵和 88 双色点阵可以看出,其实 88 双色点阵就是两块 88 单色点阵组合在一起的。要实现用两种颜色显示,只要在电路的设计中适当的连线就 可以了。 88 单色和双色点阵 LED 结构分别如下图 2.8 和 2.9 所示。 8 图 2.7 88 点阵外观及引脚图 图 2.8 88 单色点阵内部图 图 2.9 88 双色点阵内部图 2.5 LED 显示方式 汉字显示屏用于显示汉字、字符及图像信息,在公共汽车、银行、医院及户外广告等 地方都有广泛的应用。下面是简单的汉字显示
22、屏的制作,由单片机控制汉字的显示内容。为 了降低成本,使用了四块 88 的 LED 点阵发光管的模块,组成了一个 1616 的 LED 点阵 显示屏,如图 2.10 所示。在这里仅做了四个汉字的显示,在实际的使用中可以根据这个原 理自行的扩展显示的汉字,下面是介绍汉字显示的原理。 图 2.10 四块 88 的 LED 点阵组成 1616 的 LED 点阵 LED 驱动显示采用动态扫描方法,动态扫描方式是逐行轮流点亮,这样扫描驱动电路 就可以实现多行的同名列共用一套列驱动器。以 1616 点阵为例,把所有同一行的发光管 的阳极连在一起,把所有同一列的发光管的阴极连在一起(共阳的接法) ,先送出对
23、应第 1 行发光管亮灭的数据并锁存,然后选通第 1 行使其燃亮一定的时间,然后熄灭;再送出第 2 行的数据并锁存,然后选通第 2 行使其燃亮相同的时间,然后熄灭;.第 16 行之后,又重 新燃亮第 1 行,反复轮回。当这样轮回的速度足够快(每秒 24 次以上) ,由于人眼的视觉暂 9 留现象,就能看到显示屏上稳定的图形。该方法能驱动较多的 LED,控制方式较灵活,而 且节省单片机的资源。 显示数据传输采用串行传输的方法,控制电路可以只用一根信号线,将列数据一位一位 传往列驱动器,在硬件方面无疑是十分经济的。但串行传输过程较长,数据按顺序一位一位 地输出给列驱动器,只有当一行的各列数据都已传输到
24、位之后,这一行的各列才能并行地进 行显示。对于串行传输方式来说,列数据准备时间可能相当长,在行扫描周期确定的情况下, 留给行显示的时间就太少了,以致影响到 LED 的亮度。 采用串行传输中列数据准备和列数据显示的时间矛盾,可以采用重叠处理的方法。即在 显示本行各列数据的同时,传送下一行的列数据。为了达到重叠处理的目的,列数据的显示 就需要有锁存功能。对于列数据准备来说,它应能实现串入并出的移位功能。这样,本行已 准备好的数据打入并行锁存器进行显示时,串行移位寄存器就可以准备下一行的列数据,而 不会影响本行的显示。 LED 点阵显示模块进行的方法有两种: (1)水平方向(X 方向)扫描,即逐列扫
25、描的方式(简称列扫描方式):此时用一个 P 口输出列码决定哪一列能亮(相当于位码) ,用另一个 P 口输出行码(列数据) ,决定该行 上那哪个 LED 亮(相当于段码) 。能亮的列从左到右扫描完 16 列(相当于位码循环移动 16 次)即显示出一个完整的图像。 (2)竖直方向(Y 方向)扫描,即逐行扫描方式(简称行扫描方式):此时用一个 P 口输出决定哪一行能亮(相当于位码) ,另一个 P 口输出列码(行数据,行数据为将列数据 的点阵旋转 90 度的数据)决定该行上哪些 LED 灯亮(相当于段码) 。能亮的行从上向下扫 描完 16 行(相当于位码循环移位 16 次)即显示一帧完整的图像。 本设
26、计应用的是第一种的扫描方法,即水平方向(X 方向)扫描。 每一个字由 16 行 16 列的点阵形成显示,即每个字均由 256 个点阵来表示,我们可以把 每一个点理解为一个像素。一般我们使用的 1616 的点阵宋体字库,即所谓的 1616,是 每一个汉字在纵横各 16 点的区域内显示的。汉字库从该位置起的 32 字节信息记录了该字的 字模信息。事实上这个汉字屏不仅可以显示汉字,也可以显示在 256 像素范围内的任何图形。 我们以水平方向(x 方向)扫描显示汉字的“江”为例来说明其扫描原理,每一个字由 16 行 16 列的点阵组成显示,如图下的,如果用 8 位的 AT89S51 的单片机来控制,由
27、于单片 机的总线为 8 位,一个字需要拆分成两个部分。一般我们把它分解成上部分和下部分,上部 分由 8*16 的点阵组成,下部分也由 8*16 的点阵组成。在本例中单片机首先显示的是左上角 的第一列的部分,即第 0 列的 P00P07 口。方向为 P00 到 P07,显示汉字“江”的时候, P00 到 P04 都是灭的,P05 亮,即二进制 00001000,转换为 16 进制为 08H,如图 2.11 所示。 上半部分第一列完成之后,继续扫描下半部分的第一列,为了接线的方便,我们仍设 10 计成由上往下的扫描方式,即从 P27 向 P20 方向扫描,从上图可以看到,这一列所有的都不 亮,所以
28、代码为 00000000,16 进制为 00H,然后单片机转向上半部的第二列,除了 P05 亮, 其他的都不亮,即为 00000100,16 进制为 04H,这一列扫描完成之后继续进行下半部分的 扫描,除了 P21 亮,其他的为不亮,为二进制 00100000,即 16 进制 20H。 按照这个方法,继续进行下面的扫描,一共扫描 32 个 8 位,可以得出汉字“江”的扫 描代码为 :08H,20H,06H,20H,80H,7EH,63H,80H 0CH,04H,00H,04H,20H,04H,20H,04H 20H,04H,3FH,FCH,20H,04H,20H,04H 20H,04H,20H
29、,04H,00H,04H,00H,00H 图 2.11 点阵显示原理图 由这个原理可以看到,无论显示何种字体或图像,都可以用这种方法来分析出它的扫 描代码从而显示在屏幕上。了解汉字的显示原理之后,那如何得到汉字的字模信息呢?现在 有一些现成的汉字字模生成软件,可从网上下载汉字字库提取程序直接提取字库,如图 2.12 所示的为一种字模生成软件,软件打开后输入汉字,点击“检取”后,十六进制数据汉字代 码即可以自动生成,把我们需要的竖排数据复制到我们的程序即可。 11 图 2.12 汉字字模生成软件 2.6 点阵的移动 以下以 1616 点阵为例介绍点阵的移动。要显示一个字符,该字符的点阵数据可以列
30、 向(纵向)16 点组字,又可以行向(横向)16 点组字。无论哪一种组字方法,都既可以显 示字符的水平方向的移动,又可以显示竖直方向的移动。 1显示字符的左右移动 (1)列扫描方式左移动:列向组字显示字符水平方向的移动(左滚动) 在这里有两个方法: 方法 1:延长数组法。将原来字符点阵数组的 16 个数据重复一遍延长,点阵数组的数 据个数为 32 个。每扫描仪帧取 8 个数据显示,下一帧取数要在数组中后移一个数取数。循 环一遍扫 16 帧。可以假想有两块 1616 的点阵模块(共 32 帧)水平平行排列,用一个恰 好能罩住 8 列点阵的中空方框去罩这个点阵,第 1(第 1 帧)罩住最左边数起第
31、一列开始的 16 列,就扫描显示这 16 列;第 2 次(第 2 帧)使方框右移一列,罩住做左边数起第 2 列开 始的 16 列,就扫描显示这 16 列;这样每扫描完一帧使方框右移一列,最后 第 16 次(第 16 帧)时,罩住左边数起的第 16 列开始的 16 列,就扫描显示这 16 列。如此 完成 16 帧画面的扫描显示,也就完成了整个一次移动循环扫描、之后反复循环,即可呈现 显示字符沿水平向左移动的图像,如图 2.13 所示。 12 图 2.13 方框图法左右移动示意图 因为是列向组字(列扫描方式,点阵数据为行码,上边为地位下面为高位) ,希望显示 移动的一个字符,第 1 次扫描从行码的
32、点阵数组中取第 116 个数据,送行码输出口,对应 于这 8 个数据,同时用列码输出口输出列码,分别控制第 116 列。扫描完前 16 个数据之后, 第 2 次扫描从点阵数组中取第 214 个数据(第 17 个数据与地 1 个数据同) ,送行码输出口, 对应于这 16 个数据,同时用列码输出口输出列码,仍分别控制扫地 116 列。第 3 次扫描从 点阵数组中取第 318 个数据(第 18 个数据码与地 2 个数据码相同)扫描;如 此实现字符向左移动。 以上完成一个图形移动的方法,也可以看成是移动 16 个不同的字形。如图 2.13 所示, 首先扫描第一个字型,同样是 16 行,16 次扫描,1
33、6 次显示;完成一个字型的扫描以后,再 扫描第二个字型;完成第二个字型的扫描之后,再扫描第三个字型依此类推, 即可产生该文字的左移的感觉。 图 2.13 字形法左右移动示意图 假设如果原本某个汉字的字型(第一个字型) ,其编码为: 00H,10H,20H,30H,40H,50H,60H,70H,80H,90H,0A0H,0B0H,0C0H,0D0H0E0H,0F0H; 13 第二个字型的编码为: 10H,20H,30H,40H,50H,60H,70H,80H,90H,0A0H,0B0H,0C0H,0D0H0E0H,0F0H, 00H, 也就是把第一个字型的编码中,第 1 行显示数据,变为第 2
34、 行显示数据;第 2 行显示数据, 变成第 3 行显示数据;第 3 行显示数据,变成第 4 行显示数据;第 4 行显示数据,变成第 5 行显示数据以此类推。 当第一个字型扫描显示完成之后,就进行这样的动作调整,以产生第二个字型的编码。 同样的,当第二个字型扫描完成之后,就进行这样的调整动作,以产生第三个字型的编码。 这个调整动作时先将 16 个编码根据序填入存储器,例如第 1 行编码存入 20H,第二行编码存 入 21H要进行左移调整时,则先将 20H 地址的数据转移到 36H 地址,再将 21 H 地址的数据转移到 20 H 地址,将 22 H 地址的数据转移到 21 H 地址,将 23 H
35、 地址的数据 转移到 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 个 数据的位置(先后顺序) “循环左移”一次,即原来第
36、2 个移到第 1 个,原来第 3 个移到第 2 个原来第 1 个移到第 16 个。实现数组数据循环左移的方法有:第一,遍一 个“数组数据循环左移子程序” ,该子程序每执行一次可把数组中的额数据循环左移一次, 主程序中先调用一次该子程序,时数组中的数据循环左移这一次,然后再从数组中取数据显 示。当数组中的额数据个数较多时,片内 RAM 将不够大,必须将数组定义在片外 RAM 中。 第二,不用子程序,而是用变量判断控制实现数组数据的循环左移。 (2) 行扫描方式左移:行向组字显示字符水平方向的左移。如果是行向组字(行扫描方 式,点阵数据为列码,左边为敌位右边为高位) ,希望显示向左移动的一个字符,
37、第 1 次扫 描从列码的点阵数组中取第 116 个数据,送到列码输出口,对应的 8 个数据,同时用行码 输出口输出行码,分别控制扫描第 116 行。扫描完成这 16 个数据之后,第 2 次扫描的第 16 个数据,应将原来第 1 次扫描的 16 列码每一个都循环右移一位(如果是显示右移则应循 环左移) ,再进行扫描。如此,每进行下一次扫描,把上一次扫描的 16 个列码都循环右移一 位,再进行扫描。 数据的右移与数据的左移相似,只是取码的顺序相反而已,在此就不再赘述。 2数据的上下移动 (1)列扫描方式向上移动 列向组字显示字符竖直方向的移动。若是列向组字,希望显示向上移动一个字符,第 1 次扫描
38、从行码的点阵数组中取第 116 个数据,送行码输出口,对应于这 16 个数据,同时 14 用列码输出口输出列码,分别控制扫描第 116 列。由于是列向组字(上高下低) ,扫描完成 这 16 个数据后,第 2 次扫描的 16 个数据,应将原来的第 1 次扫描的 16 个行码每一个都循 环右移一位,使显示的点都上移一行(如果是显示向下滚动则应循环左移) ,再进行扫描。 如此,每进行下一次的扫描,把上一次的 16 个行码都循环右移一位,再进行扫描就实现了 数据的向上移动。 也可以用字型的方法容易理解,以下的 1616 的 LED 显示一个字是 8 个字型,首先 扫描的而是第一个字型,同样是 16 行
39、,16 列扫描,16 次显示;完成一个字型后,再扫描第 二个字型;完成第二个字型后,再扫描第三个字型以此类推,即可产生该文字 向上移动的感觉 当把第一个字型编码中,每行显示的数据都右移一位,以产生第二个字型编码,即可 产生字符向上滚动的感觉。 当第一个字符扫描完成后,就进行这样的调整动作,以产生第二个字型的编码。同样 的,当第二个字型完成之后,就进行这样的调整动作,以产生第三个字型的编码。调整的动 作是先将 8 个编码根据序填入储存器,例如第 1 行编码存入 20 地址,第 2 行编码存入 21 地 址要进行上移调整时,则从 20 地址数据开始,每笔数据都右移一位即可。 下图 2.15 仅以字
40、型移动的方法画图。 图 2.15 字形法上下移动示意图 (2)行扫描方式上下移动 行向组字显示字符竖直方向的移动 方法 1:延长数组法。如果是行向组字,希望显示向上移动的一个字符,第 1 次扫描从 15 列码的点阵数组中取第 116 个数据,送列码输出口,对应于这 8 个数据,同时用行码输出 口输出行码,分别控制扫描第 116 行。第 2 次扫描从点阵数组中取第 217 个额数据(第 17 个数据与地 1 个数据同) ,分别送列码输出口,对应于这 16 个数据,同时用行码输出口 输出行码,仍分别控制地 116 行。第 3 次扫描从点阵数组中取第 318 个数据(第 18 个数 据与地 2 个数
41、据同)扫描;如此就实现了字符的向上移动。 方法 2:数组数据“循环左移法” 。实现数组数据循环左移的方法与上类似。也有:用 数组数据循环左移子程序;不用子程序,而是用变量判断控制实现数组数据的循环左移。 2.7 点阵颜色的转换 图 2.16 双色 88 点阵扫描接口图 为了简便起见,以下以 88 双色点阵为例介绍双色的转换原理。前面已经介绍过了, 88 双色点阵其实就相当于 2 个 88 单色点阵组合在一起,上图 2.16 的 2 个 88 单色点 阵就相当于一个 88 的单色点阵。在设计电路的时候可以使显示信号从公用的引脚接入, 接到 89C51 的一个 PORT 口,把显示红色的部分和显示
42、黄色的部分分别接到 89C51 的另外 两个 PORET 口,在编写程序的时候,使显示红色的扫描信号输出就显示了红色,当显示黄 色的扫描扫描信号输出时,就显示了黄色。 2.8 LED 阵列驱动电路 正向点亮一颗 LED,至少也得 10 到 20 毫安,若电流不够大,则 LED 不够亮!而不管 是 8051 的输入还是输出端其高态输出电流都不是很高,不过 12 毫安而已。因此,很难直 接高态驱动 LED。这时候就需要额外的驱动电路,分别针对共阳极和共阴极 LED 阵列,有 两种不同的驱动方式。针对输出态的不同,分为:高态扫描-高态显示,高态扫描-低态显示, 16 低态扫描-高态显示和低态扫描-低
43、态显示四种方式。下面针对设计中实际用到的一种驱动方 式介绍一种:共阴型低态扫描-低态显示信号驱动电路。 图 2.17 所示是针对共阴性 LED 阵列而设计的驱动电路,在这种驱动电路采用低态扫描, 也就是任何时间只有一个高态信号,其他则为低态。一行扫描完成之后,再把高态信号转到 临近的其他行。扫描信号经限流电阻接到 PNP 晶体管的基极,晶体管的集电极接地,射极 则连至 LED 点阵的列引脚,若要同时点亮该列的 16 个 LED,则晶体管的电流必须大于 200 毫安才行。常用的 2N3904 之类就可以达到当低态的列扫描信号输入晶体管的基极后,该晶 体管即为正向,而产生电流,即可使该列的 LED
44、 具有点亮的条件 所要的显示信号连接到一个 PNP 晶体管的基极,而该晶体管的射极连接到 VCC,同样 的,当低态的显示信号输入时,晶体管的集电极电流将流入行 LED 的阳极,即可点亮该行 的 LED。如图 2.17 所示. 图 2.17 共阴型低态扫描-低态显示信号驱动电路 若要并接多个 LED 阵列,如连接使用 4 个 88LED 阵列,连接成 1616LED 阵列, 则一个扫描信号同时驱动两个 LED 阵列。如在本设计中要显示的字比较大,用一个 88 的 点阵无法显示完整,这就需要用四块 88 的点阵组成一块 1616 的点阵,这样就可以显示 完整的汉字了,若要并联多个 88 的 LED
45、 组成 1616 的点阵,则一个扫描信号同时要驱 动两行的 LED。如下图 2.18 所示。 17 图 2.18 1616 的点阵驱动图 这时候就需要靠锁存器(74LS373)将这两组显示信号锁住,此处的锁存器是以低态输出的, 其输出的电压可达 24 毫安,足以驱动一个 LED;若嫌不足,可以选用 74A373 其输出的电 压可达 48 毫安,当 74LS373 得 G 脚为高态时,数据可以从输入端传输到锁存器中; G 脚为 低态时,数据被锁住,不会随输入端而变。另外 OC 脚为输出控制引脚,当 OC 脚为高态时, 输出呈现高阻抗;OC 为低态时,数据会由锁存器输出。 在这个电路之中驱动的扫描信号总共有 16 条,如果直接由 8051 输出,将占用 2 个 PORT 口,浪费了宝贵的资源,不太理想,在此使用的是一个 4 对 16 的译码器 (74LS154) ,这个译码器是将输入的 16 进位码解码输出低态的扫描信号。输出的低态扫描 信号可直接接到 PNP 晶体管的基极,如果太大的话也可以先经过限流电阻再接到 PNP 晶体 管的基极,信号最后经过晶体管的放大后即可推动 16 个 LED 点阵了。 第三章 软件设计 3.1 单片机延时子程序 延时程序在单片机编程中使用非常广泛,也很重要,在本毕业设计的程序中用到了延时 子程序,所以在此详细的叙述一下。在弄清延时程序指令的用法
链接地址:https://www.31doc.com/p-25847.html