1、课程设计任务书学生姓名: 田鑫 专业班级: 电子 0703 班 指导教师: 封小钰 工作单位: 信息工程学院 题 目: 基于单片机的 Led 点阵广告牌设计初始条件本设计既可以使用集成集成译码器、计数器、定时器、脉冲发生器和必要的门电路等。也可以使用单片机系统构建。要求完成的主要任务: 1、课程设计工作量:2 周2、技术要求:(1)采用单片机作为整个控制系统的控制电路的核心部分,配以各种显示、驱动模块,实现对点阵模块的显示和测量。(2)确定设计方案,按功能模块的划分选择元、器件和集成电路,设计分电路,阐述基本原理。(3)绘制总体电路原理图。3、查阅至少 5 篇参考文献。按武汉理工大学课程设计工
2、作规范要求撰写设计报告书。全文用 A4 纸打印,图纸应符合绘图规范。时间安排:1、2011 年 1 月 10 日至 14 日,课程设计任务布置、选题、查询资料 2、2011 年 1 月 15 日至 17 日,设计,软件编程、仿真和调试 3、2011 年 1 月 18 日至 20 日,设计的硬件调试并撰写报告 4、2011 年 1 月 21 日,机房检查设计成果,提交设计说明书及答辩指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日 2目录摘要 1ABSTRACTII1 LED 概述 11.1 LED 电子显示屏概述 .11.2 LED 电子显示屏的分类 .12 显示原理及控制方式
3、分析 32.1 LED 点阵模块结构 .32.2 LED 动态显示原理 42.3 LED 常见的控制方式 .53 硬件电路设计 63.1 系统硬件概述 .63.2 1616LED 点阵显示制作 83.2.1 1616LED 点阵的内部结构及工作原理 83.2.2 用 88LED 点阵构成 1616LED 点阵 .93.3 主控单片机的接口说明 103.4 LED 显示驱动电路 .114 字模生成 124.1 字模简介 .124.1.1 LED 显示屏领域字模实现技术 124.1.2 软件控制系统字模提取的分析与设计 124.2 字模存储技术 .134.3 字库生成 .145 软件设计 .165
4、.1 程序设计总体思路和结构 .165.1.1 程序设计 总体思路 165.1.2 程序流 程图 165.2 各模块程序设计 .175.2.1 系统初始化 175.2.2 LED 动态显示 175.2.3 汉字显示的原理 186 系统功能测试 .196.1 单元模块电路测试 .196.2 系统整体功能测试 .19总结 20参考文献 21附录 22武汉理工大学集成电路课程设计说明书I摘要本设计使用 AT89C51 系列高速单片机作为主控制模块,利用简单的外围电路来驱动6416 的点阵 LED 显示屏。利用 AT89C51 系列高速单片机本身强大的功能,可以很方便的实现单片机与 PC 机间的数据传
5、输及存储,并能利用软件方便的进行显示内容的多样变化,另一方面点阵显示屏广泛的应用于医院、机场、银行等公共场所,所以本设计具有很强的现实应用性。本 LED 显示屏能够以动态扫描的方式同时显示 4 个 1616 点阵汉字,并能通过上位机软件修改显示内容和显示效果等等。把字符内码存储在空闲的单片机程序存储器空间,使本 LED 显示系统能掉电存储 1024 个字符。设计中采用了 SPI 接口的 GB2312 标准字库,支持所有的国标字符和 ASCII 标准字符的显示。因为采用串行传输方式,使本系统的可扩展性得到提升,便于多个显示单元的级联。本文从 LED 的显示原理入手,详细阐述了 LED 动态显示的
6、过程,以及硬件电路的设计、计算和软件的算法。关键词 :动态显示;单片机;点阵字库IIAbstractThis design uses STC12C series MCU as a main controller, and depends on a simple external circuit to drive 9616 the lattice LED display. By using its own powerful functions and capacity of internal E2PROM, it is easy to accomplish the MCU and PC and
7、E2PROM for internal storage, data transmission equipment ,and it also can be used conveniently to show a variety of content changes. The other dot matrix display is widely used in hospitals, airports, banks and other public places. Therefore, the design has a strong practical application. The LED Di
8、splay dynamic scan can show the way at the same time six 16 16 dot matrix Chinese characters, and PC software can modify the content and effect shows, and so on. IAP used in the application of programmable technology, the characters within the code stored in the SCM free program memory space, so tha
9、t the LED display system can store 1,024 brown-out characters. SPI used in the design of the interface standard GB2312 character, to support all the GB2312 standard ASCII characters and characters of the show. Because serial transmission used, so that the system can be enhanced scalability, for a nu
10、mber of display units of the cascade. This article from the start LED display principle, elaborated on the LED display dynamic process, as well as hardware circuit design, computing and software algorithms.Key Words: MCU;Serial Data Transfer;Llattice Llibrary武汉理工大学集成电路课程设计说明书11 LED 概述1.1 LED 电子显示屏概述
11、LED 电子显示屏( Light Emitting Diode Panel)是由几百-几十万个半导体发光二极管构成的像素点,按矩阵均匀排列组成。利用不同的半导体材料可以制造不同色彩的 LED像素点。目前应用最广的是红色、绿色、黄色。而蓝色和纯绿色 LED 的开发已经达到了实用阶段。 LED 显示屏是一种通过控制半导体发光二极管的亮度的方式,来显示文字、图形、图像、动画、行情、视频、录像信号等各种信息的显示屏幕。 LED 显示屏分为图文显示屏和条幅显示屏,均由 LED 矩阵块组成。图文显示屏可与计算机同步显示汉字、英文文本和图形;而条幅显示屏则适用于小容量的字符信息显示。LED 显示屏因为其像素
12、单元是主动发光的,具有亮度高,视角广、工作电压低、功耗小、寿命长、耐冲击和性能稳定等优点。因而被广泛应用于车站、码头、机场、商场、医院、宾馆、银行、证券市场、建筑市场、拍卖行、工业企业管理和其它公共场所。LED 显示屏的发展前景极为广阔,目前正朝着更高亮度、更高气候耐受性、更高的发光密度、更高的发光均匀性,可靠性、全色化方向发展。1.2 LED 电子显示屏的分类按颜色分类:单基色显示屏:单一颜色(红色或绿色) 。 双基色显示屏:红和绿双基色,256 级灰度、可以显示 65536 种颜色。 全彩色显示屏:红、绿、蓝三基色,256 级灰度的全彩色显示屏可以显示一千六百多万种颜色。 按显示器件分类:
13、LED 数码显示屏:显示器件为 7 段码数码管,适于制作时钟屏、利率屏等,显示数字的电子显示屏。 LED 点阵图文显示屏:显示器件是由许多均匀排列的发光二极管组成的点阵显示模块,适于播放文字、图像信息。 按使用场合分类:2室内显示屏:发光点较小,一般 3mm-8mm,显示面积一般零点几至十几平方米。 室外显示屏:面积一般几十平方米至几百平方米,亮度高,可在阳光下工作,具有防风、防雨、防水功能。 按发光点直径分类:室内屏:3mm 、3.75mm、5mm、 室外屏:10mm 、12mm、16mm、19mm、21mm、26mm 室外屏发光的基本单元为发光筒,发光筒的原理是将一组红、绿、蓝发光二极管封
14、在一个塑料筒内共同发光增强亮度。武汉理工大学集成电路课程设计说明书32 显示原理及控制方式分析2.1 LED 点阵模块结构八十年代以来出现了组合型 LED 点阵显示器模块,以发光二极管为像素,它用高亮度发光二极管芯阵列组合后,环氧树脂和塑模封装而成。这种一体化封装的点阵 LED 模块,具有高亮度、引脚少、视角大、寿命长、耐湿、耐冷热、耐腐蚀等特点。LED 点阵规模常见的有 44、48 、 57、58、88 、1616 等等。根据像素颜色的数目可分为单色、双基色、三基色等。像素颜色不同,所显示的文字、图象等内容的颜色也不同。单色点阵只能显示固定色彩如红、绿、黄等单色,双基色和三基色点阵显示内容的
15、颜色由像素内不同颜色发光二极管点亮组合方式决定,如红绿都亮时可显示黄色,如果按照脉冲方式控制二极管的点亮时间,则可实现 256 或更高级灰度显示,即可实现真彩色显示。图 2.1 示出最常见的 88 单色 LED 点阵显示器的内部电路结构和外型规格,其它型号点阵的结构与引脚可试验获得。图 2.1 88 单色 LED 模块内部电路LED 点阵显示器 单块使用时,既可代替数码管显示数字,也可显示各种中西文字及符号如 5x7 点阵显示器用于显示西文字母58 点阵显示器用于显示中西文,8x8 点阵可以用于显示简单的中文文字,也可用于简单图形显示。用多块点阵显示器组合则可构成大屏幕显示器,但这类实用装置常
16、通过 PC 机或单片机控制驱动。42.2 LED 动态显示原理LED 点阵显示系统中各模块的显示方式: 有静态和动态显示两种。静态显示原理简单、控制方便,但硬件接线复杂,在实际应用中一般采用动态显示方式,动态显示采用扫描的方式工作,由峰值较大的窄脉冲电压驱动,从上到下逐次不断地对显示屏的各行进行选通,同时又向各列送出表示图形或文字信息的列数据信号,反复循环以上操作,就可显示各种图形或文字信息。点阵式 LED 汉字广告屏绝大部分是采用动态扫描显示方式,这种显示方式巧妙地利用了人眼的视觉暂留特性。将连续的几帧画面高速的循环显示,只要帧速率高于 24 帧/秒,人眼看起来就是一个完整的,相对静止的画面
17、。在电子领域中,因为这种动态扫描显示方式极大的缩减了发光单元的信号线数量,因此在 LED 显示技术中被广泛使用。以 88 点阵模块为例,说明一下其使用方法及控制过程。图 2.1 中,红色水平线Y0、Y1Y7 叫做行线,接内部发光二极管的阳极,每一行 8 个 LED 的阳极都接在本行的行线上。相邻两行线间绝缘。同样,蓝色竖直线 X0、X1X7 叫做列线,接内部每列 8 个 LED 的阴极,相邻两列线间绝缘。在这种形式的 LED 点阵模块中,若在某行线上施加高电平(用“1”表示) ,在某列线上施加低电平(用“0”表示) 。则行线和列线的交叉点处的 LED 就会有电流流过而发光。比如,Y7 为 1,
18、X0 为 0,则右下角的 LED 点亮。再如 Y0 为 1,X0 到 X7 均为 0,则最上面一行 8 个 LED 全点亮。现描述一下用动态扫描显示的方式,显示字符“B”的过程。其过程如图 2.2图 2.2 用动态扫描显示字符“B”的过程武汉理工大学集成电路课程设计说明书52.3 LED 常见的控制方式目前常见的是并行传输方式(见附录 1.1) ,通过 8 位锁存器将 8 位总线上的列数据进行锁存显示,各 8 位锁存器的片选信号由译码器提供。此种方式的优点是传输速度快,对微控制器(MCU)的通信速度要求较低。但是这种方案最大的缺点是不便于随意扩展显示单元的数目。每增加一个 1616 点阵的全角
19、汉字显示单元,就需要在之前的电路上多增加两根地址线,这就要求在 PCB 布线的时候要留有充足的地址线冗余量。再一个缺点是,每个单元的 PCB 随着安放位置的不同,布线结构也不相同,不利于厂家批量生产。并行传输需要的芯片较多,因此市场上已经出现用 FPGA,CPLD 等高密度可编程逻辑器件(PLD )来取代传统锁存器 IC 的方案。成本有所下降,但可扩展性仍旧较差。因此,并行传输方式适用于显示单元数目确定的条屏。一以传统 8051 单片机为控制器的 LED 显示屏。因受到单片机运算速度及通信速率的限制,LED 动态显示的刷新率不可能做得太高。对显示效果和移动算法的处理也比较吃力,在实际显示效果上
20、有比较明显的闪烁感。除此之外,传统 8051 单片机的内部资源贫乏,仅 128 字节的数据存储器,几 K 字节的程序存储器,无 E2PROM,SPI。这就需要对单片机扩展外设,无疑增加了硬件成本。因此,8051 控制的条屏只能用于显示内容及其简单,不需要经常更改显示内容的场合。二以 PIC 单片机为控制器的 LED 显示屏。因 PIC 单片机是 RISC 架构的工业专用单片机,处理指令的速度有所增加,抗干扰能力优秀,型号种类繁多。作为条屏的控制器,可以明显的改善显示效果,同时 PIC 单片机内部的资源较丰富,可节省外部电路设计难度,同时降低了硬件成本。因此,以 PIC 单片机为控制器的条屏目前
21、仍是单色条屏市场的主流。三以 FPGA(复杂可编程逻辑门阵列)为控制器的 LED 显示屏。FPGA 以高速、并行著称。是近年来新兴的可编程逻辑器件。用他作为 LED 显示屏的控制器,能够高速的处理色阶 PWM 信号、高速的完成动态扫描逻辑、高速的完成字符移动算法。因此被运用于双基色、三基色的显示系统。但是其成本较高,开发难度较大。63 硬件电路设计3.1 系统硬件概述整个电路由单片机 89C51,8 个 74LS373,1 个 74HC154,1 个 74LS138,4 个 1616的 LED。该电路所设计的电子屏可显示多个汉字,需要 4 个 1616 LED 点阵模块,可组成 1664 的条
22、形点阵。AT89C51 是 一 种 带 4KB 可 编 程 可 擦 除 只 读 存 储 器 的 低 电 压 , 高 性 能 微 处 理 器 , 俗称 单 片 机 。 单 片 机 的 可 擦 除 只 读 存 储 器 可 以 反 复 擦 除 100 次 。 该 器 件 采 用 ATMEL高 密 度 非 易 失 存 储 器 制 造 技 术 制 造 , 与 工 业 标 准 的 MCS-51 指 令 集 和 输 出 管 脚 相 兼容 。 由 于 将 多 功 能 8 位 CPU 和 闪 烁 存 储 器 组 合 在 单 个 芯 片 中 , ATMEL 的 AT89C51是 一 种 高 效 微 控 制 器 ,
23、 AT89C2051 是 它 的 一 种 精 简 版 本 。 AT89C51 单 片 机 为 很 多 嵌入 式 控 制 系 统 提 供 了 一 种 灵 活 性 高 且 价 廉 的 方 案 。 AT89C51 引 脚 即 外 观 如 图 3.1 所示 。图 3.1 AT89C51 的管脚图武汉理工大学集成电路课程设计说明书7译 码 器 是 组 合 逻 辑 电 路 的 一 个 重 要 的 器 件 , 74LS138 的 输 出 是 低 电 平 有 效 , 故 实现 逻 辑 功 能 时 , 输 出 端 不 可 接 或 门 及 或 非 门 , 74LS138 与 前 面 不 同 , 其 有 使 能 端
24、 ,故 使 能 端 必 须 加 以 处 理 , 否 则 无 法 实 现 需 要 的 逻 辑 功 能 。 发 光 二 极 管 点 亮 只 须 使 其 正向 导 通 即 可 , 根 据 LED 的 公 共 极 是 阳 极 还 是 阴 极 分 为 两 类 译 码 器 , 即 针 对 共 阳 极 的低 电 平 有 效 的 译 码 器 ; 针 对 共 阴 极 LED 的 高 电 平 输 出 有 效 的 译 码 器 。74LS373 是低功耗肖特基 TTL8D 锁存器,内有 8 个相同的 D 型(三态同相)锁存器,由两个控制端(11 脚 G 或 EN;1 脚 OUT、CONT 、OE)控制。当 OE 接地
25、时,若 G 为高电平,74LS373 接收由 PPU 输出的地址信号;如果 G 为低电平,则将地址信号锁存。工作原理:74LS373 的输出端 O0O7 可直接与总线相连。当三态允许控制端 OE 为低电平时,O0O7 为正常逻辑状态,可用来驱动负载或总线。当 OE 为高电平时,O0 O7 呈高阻态,即不驱动总线,也不为总线的负载,但锁存器内部的逻辑操作不受影响。 当锁存允许端 LE 为高电平时,O 随数据 D 而变。当 LE 为低电平时,O 被锁存在已建立的数据电平。7 4LS373 引 脚 即 外 观 如 图 3.2 所 示图 3.2 74LS373 引脚图74HC154 为 4 线12 线
26、译码器,当选通端(G1、G2)均为低电平时,可将地址端(ABCD)的二进制 编码在一个对应的输出端,以低电平译出。若将 G1 和 G2 中的一个作为数据输入端,由 ABCD 对输出寻址, 还可作 1 线16 线数据分配器。工作环境温度为 070,对社会的要求非常适合。所 以 LED 的 抗 震 性 能 好 该电路的显示采用逐行扫描方式。工作时,由单片机取出第一行需要显示的内容经延时一段时间后再进行8下一行点阵数据的显示。需要注意的是,每次只能选通一行数据,即要通过不断的逐行扫描来实现汉字或字符的显示。3.2 1616LED 点阵显示制作3.2.1 1616LED 点阵的内部结构及工作原理以 U
27、CDOS 中文宋体字库为例,每一个字由 16 行 16 列的点阵组成显示。即国家标准汉字库中的每一个字均由 256 点阵来表示。我们可以把每一个点理解为一个像素,而把每一个字的字形理解为一幅图像。事实上这个汉字屏不仅可以显示汉字,也可以显示在256 像素范围内的任何图形。这里我们以”高”字说明,如图 3.3 所示。图 3.3 16*16LED 汉字显示用 8 位的 AT89C51 单片机控制,由于单片机的总线为 8 位,一个字需要拆分为 2 个部分。一般把它拆分为上部和下部,上部由 816 点阵组成,下部也由 816 点阵组成。在本例中单片机首先显示的是左上角的第一列的上半部分,即第 0 列的
28、 p00p07 口。方向为 p00 到 p07 ,显示汉字”高”时,p02 点亮,由上往下排列,为 p0.0 灭,p0.1 灭, p0.2亮,p0.3 灭,p0.4 灭, p0.5 灭,p0.6 灭,p0.7 灭。即二进制,转换为 16 进制为 04h。上半部第一列完成后,继续扫描下半部的第一列,为了接线的方便,我们仍设计成由上往下扫描,即从 p27 向 p20 方向扫描,从上图可以看到,这一列全部为不亮,即为,16进制则为 00h。 然后单片机转向上半部第二列,仍为 p01 点亮,为,即 16 进制 04h.这一列完成后继续进行下半部分的扫描,p20 点亮,为二进制,即 16 进制 02h.
29、依照这个方法,继续进行下面的扫描,一共扫描 32 个 8 位,可以得出汉字“高”的扫描代码为:02h,00h,01h,04h,0FFh ,0FEh,00h,00h,1Fh,0F0h,10h,10h,10h,10h, 武汉理工大学集成电路课程设计说明书91Fh,0F0h,00h,04h,7Fh,0FEh, 40h,04h,4Fh,0E4h,48h,24h,48h, 24h, 4Fh,0E4h , 40h,0Ch 。由这个原理可以看出,无论显示何种字体或图像,都可以用这个方法来分析出它的扫描代码从而显示在屏幕上。不过现在有很多现成的汉字字模生成软件,就不必自己去画表格算代码了。3.2.2 用 88
30、LED 点阵构成 1616LED 点阵Proteus 中只有 57 和 88 等 LED 点阵,并没有 1616LED 点阵,而在实际应用中,要良好地显示一个汉字,则至少需要 1616 点阵。下面我们就首先介绍使用 88 点阵构建 1616 点阵的方法,并构建一块 1616LED 点阵。首先,从 Proteus7.1 的元件库中找到“MATRIX-8X8-RED”元器件,并将四块该元器件放入 Proteus 文档区编辑窗口中。右边 8 个引脚是其列线(当然,如果你是将右转,则右边 8 个引脚是行线)。然后将四个元器件对应的行线和列线分别进行连接,引脚接一行16 个 LED,列线也相同。并注意要
31、将行线和列线引出一定长度的引脚,以便下面我们使用。连接好的 1616 点阵如图 3.4 所示。如上图的 1616 点阵只是第一步,这样分开的数块并不能达到好的显示效果,下面我们要将其进一步组合。组合实际上很简单,首先选中如上图中右侧的两块 88 点阵,然后拖动并使其与左侧的两块相并拢,如图 3.5 所示。图 3.4 点阵模块组合10图 3.5 与左侧的两块相并拢可以看到原来的连线已经自动隐藏了,至于线上的交点,我们不要去动。然后,我们再来最后一步,选中下侧的两块点阵,并拖动使其与上侧的两块并拢,最后的效果如图3.6 所示。看到,原来杂乱的连线现在已经几乎全部隐藏了,一块 1616 的 LED
32、点阵做成了。需要注意,做成的 LED 点阵的行线为左侧的 16 个引脚,下侧的 16 个引脚为其列线,而且其行线为高电平有效,列线为低电平有效。然后,我们将其保存,以便以后使用。图 3.6 最后的效果图3.3 主控单片机的接口说明P0 口 : P0 口 是 一 组 8 位 漏 极 开 路 型 双 向 I/O 口 , 也 即 地 址 /数 据 总 线 复 制 用 口 ,作 为 输 入 口 时 , 每 位 能 吸 收 电 流 的 方 式 驱 动 8 个 TTL 逻 辑 门 电 路 , 对 端 口 写 入 “1 可作 为 高 阻 抗 输 入 端 用 。 在 访 问 外 部 数 据 存 储 器 或 程
33、 序 存 储 器 时 , 这 组 口 线 分 时 转 换 地址 ( 低 8 位 ) 和 数 据 总 线 复 用 , 在 访 问 期 激 活 内 部 上 拉 电 阻 。 在 Flash 编 程 时 , PO口 接 收 指 令 节 , 而 在 程 序 校 检 时 , 输 出 指 令 字 节 , 校 检 时 , 要 求 外 接 上 拉 电 阻 。P1 口 : P1 口 是 一 个 带 内 部 上 拉 电 阻 的 8 位 双 向 I/O 口 , P1 的 输 出 缓 冲 级 可 驱动 ( 吸 收 或 输 出 电 流 ) 4 个 TTL 逻 辑 门 电 路 。 对 端 口 写 “1”, 通 过 内 部
34、的 上 拉 电 阻 把端 口 拉 到 高 电 平 , 此 时 可 作 输 入 口 , 作 输 入 口 时 , 因 为 内 部 存 在 上 拉 电 阻 , 某 个 引 脚被 外 部 信 号 拉 低 时 会 输 出 一 个 电 流 I。 Flash 编 程 和 程 序 校 检 期 间 , P1 接 收 低 8 位 地址 。P2 口 :P2 口 是 一 个 带 内 部 上 拉 电 阻 的 8 位 双 向 I/O 口 , P1 的 输 出 缓 冲 级 可 驱 动( 吸 收 或 输 出 电 流 ) 4 个 TTL 逻 辑 门 电 路 。 对 端 口 写 “1”, 通 过 内 部 的 上 拉 电 阻 把
35、端口 拉 到 高 电 平 , 此 时 可 作 输 入 口 , 作 输 入 口 时 , 因 为 内 部 存 在 上 拉 电 阻 , 某 个 引 脚 被武汉理工大学集成电路课程设计说明书11外 部 信 号 拉 低 时 会 输 出 一 个 电 流 I。 在 访 问 外 部 数 据 存 储 器 或 16 位 地 址 的 外 部 数 据存 储 ( 例 如 执 行 MOVXDPTR 指 令 ) 时 , P2 口 送 出 高 8 位 地 址 数 据 。 在 访 问 8 位地 址 的 外 部 数 据 存 储 器 ( 如 执 行 MOVXRI 指 令 ) 时 , P2 口 线 上 的 内 容 ( 也 即 特 殊
36、功 能 寄 存 器 ( SFR) 区 中 R2 寄 存 器 的 内 容 ) , 在 整 个 访 问 期 间 不 改 变 。 Flash 编 程 和校 检 时 , P2 亦 接 收 高 位 地 址 和 其 他 控 制 信 号 。P3 口 : P3 口 是 一 个 带 内 部 上 拉 电 阻 的 8 位 双 向 I/O 口 。 P3 口 输 出 缓 冲 级 可 驱 动( 吸 收 或 输 出 电 流 ) 4 个 TTL 逻 辑 门 电 路 。 对 P3 口 写 入 “1”时 , 它 们 被 内 部 上 拉 电阻 拉 高 并 可 作 输 入 端 口 , 作 输 入 端 时 , 被 外 部 拉 低 的
37、P3 口 将 用 上 拉 电 阻 , 输 出 电 流I。 P3 口还接收一些用于 Flash 闪速存储器编程和程序校检的控制信号。RST:复位输入,当震荡器工作时,RST 引脚出现两个机器周期以上高电平将使单片机复位。ALE/PROG:当访问外部程序存储器或数据存储器时 ,ALE(地址锁存允许)输出脉冲用于所存地址的低 8 位字节。即使不访问外部存储器,ALE 乃以时钟振动频率的 1/6 输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个 ALE 脉冲。3.4 LED 显示驱动电路LED 显示驱动电路如图 3.7 所示。12图 3.7 显示
38、驱动电路图4 字模生成4.1 字模简介文字的字模是一组数字,但它的意义却与数字的意义有着根本的变化,它是用数字的各位信息来记载英文或汉字的形状 1。在电脑硬件中,根本没有汉字这个概念,也没有英文的概念,其认识的概念只有内码( 将 ASCII 表的高 128 个很少用到的数值以两个为一组来表示汉字,即汉字的内码。而剩下的低 128 位则留给英文字符使用,即英文的内码)。如果你用启动盘启动系统后用DIR 命令可能得到一串串莫名其妙的字符,但那确确实实是汉字,如果你启动 UCDOS 或其他的汉字系统后,就会看到那是一个个熟悉的汉字。在硬件系统内,英文的字模信息一般固化在 ROM 里,即使在没有进入系
39、统的 CMOS 里,也可以让你看到英文字符。而在 DOS 下,中文的字模信息一般记录在汉字库文件里(将制作好的字模放到一个个标准的库中,这就是点阵字库文件)。4.1.1 LED 显示屏领域字模实现技术在通过软件实现的技术中,目前有许多字模生成软件,软件打开后输入汉字,点“检取”,十六进制数据的汉字代码即可自动生成,把我们所需要的竖排数据复制到我们的程序中即可。在通过硬件实现字模提取的技术中,有在单片机系统中增加硬汉字库的方法,主控器发送的汉字是其机内码,用两个字节来表示一个汉字。根据机内码,显示单元控制模块从汉字库中查取显示字模,实现汉字显示。由于带有硬汉字库,进行动态文字显示时,通用智能显示
40、单元仅接受汉字的机内码即可,这样数据通讯量大大减少。因此, “动态文字显示速度快” 。4.1.2 软件控制系统字模提取的分析与设计而在 LED 显示屏控制系统具体应用的 Windows 操作系统下如何提取字模信息是设计的核心。软件控制系统在实际编辑过程中,要求各种字体、字号的文字都能被编辑、保存。所以系统在设计时,把文本区理解为由众多的象素点构成,而把不同字体、字号的武汉理工大学集成电路课程设计说明书13文字理解为一幅图像。因为所开启的文本区大小与 LED 显示屏的大小对应,所以采用1616 点阵为单位,把文本区内的每个像素点都看成一个二维数组,由于系统中各种颜色都有对应的值,赋予每个不同颜色
41、的像素点不同的对应值,再把每个点赋予一个 int 型的值,这样保存下来的信息就是二进制数据。通过这样的设计,我们不仅可以把任何字型,任何大小的文字保存下来,还可以显示以 256 个像素点阵为单位的任何图形。在软件控制系统中实现字模的提取,也就避免了在单片机中加载硬汉字库模块,从而简化了硬件模块的设计。以下以单色屏为例,介绍系统采用字模保存的算法设计:定义 COLORREF zimo_ color 为像素点的颜色,判断某个点的颜色值。如果值为Oxffffff,说明此点为白色,赋予此点值 0。由于单色屏只有红色和不显色两种,所以可以简单赋值为除白色外其余点赋值为 1CClientDC dc(thi
42、s);CFile myfile;unsigned int zimo192 384=0;unsigned char zimo_data19248=0;COLORREF zimo_color;int row, col ;this -HideCaret();for (row=0;row192;row+)for (col=0;col384;col+)zimo_color=do.GetPixel (col, row);if (zimo color = =Oxffffff)zimo row col=0;elsezimo row col=1;定义 unsigned int zimo192384=0;/文本区
43、像素点以 8 位为一字节(因为在随后的串行通讯中,传输的数据是 8 位的二进制数据)定义 unsigned char zimo_data19248=0144.2 字模存储技术目前使用最广泛的技术是,通过上位机软件将待显示的字符串转换为对应的点阵字模数据,通过烧写的方式将这些字模数据按一定的顺序编址后存储在 E2PROM 中。在条屏显示的过程中按规定的方式取出 E2PROM 中的字模数据进行处理。对于一个 1616 点阵的汉字字模数据,需要连续 32 字节的 E2PROM 空间来存储。照此计算,若有 256 个需要显示的字符,则至少需要 32B256=8192 字节(8KB)的 E2PROM 存
44、储空间。通常的单片机内部没有集成这么大容量的 E2PROM。因此这种方案,需要在单片机外部扩展大容量的 E2PROM,增加硬件成本。上位机程序设计由于涉及到汉字取模,取模算法的难度较大。在多字下载的时候传输时间也较长。诸多弊端使本设计放弃了传统方案。而本设计创新使用了专用的点阵字库芯片,成本仅为 8 元,内含各种点阵规格的GB2312、ASCII 等标准字库。专用字库芯片采用微型 SO-8 封装,使用高速同步串行 SPI接口进行读写操作,节省了控制器的 I/O。在本设计中,单片机内部的小容量 E2PROM,用于存储待显示汉字的 GB2312 标准机内码,每个全角字符的内码占 2 字节,则在同样
45、需要显示 256 个汉字的情况下,这种方案仅占用 512 字节的 E2PROM 空间。4.3 字库生成图 4.1 “魏”的字模代码武汉理工大学集成电路课程设计说明书15因为本设计中为行扫描,列输入,如图 4.1 所示所以“魏”的字模代码为:DB 49H,40H,4AH,51H,4CH,6AH,7FH,0C4H,4CH,4AH,8AH,71H,88H,42H,3FH,84HDB64H,98H,0A5H,0E0H,3EH,0BEH,24H,81H,24H,89H,7FH,81H,20H,07H,00H,00剩下的字仿照魏字即可, “佳”字代码为:DB 01H,00H,02H,00H,04H,00H
46、,1FH,0FFH,0E2H,02H,12H,22H,12H,22H,12H,22HDB 12H,22H,0FFH,0FEH,12H,22H,12H,22H,32H,62H,16H,26H,02H,02H,00H,00H“锋”字代码为:DB 01H,40H,02H,40H,0EH,40H,0F3H,0FEH,12H,44H,12H,48H,09H,00H,11H,28HDB 0F2H,0A8H,2AH,0A8H,25H,0FFH,2AH,0A8H,32H,0A8H,23H,28H,02H,00H,00H,00H165 软件设计5.1 程序设计总体思路和结构5.1.1 程序设计总体思路用简短的汇
47、编程序设计,实现 LED 点阵显示内容,并使显示的内容在屏幕上从左到右的滚动显示。系统采用模块化结构,包括主程序、延时程序、显示子程序和串行口中断程序。用 AT89C51、74LS373、74LS138、74HC154 芯片和 4 个 1616LED 点阵显示器构成一个完整的 16 位点阵 LED 显示 系统。5.1.2 程序流程图程序主要由开始、初始化、主程序、字库组成。其中主程序和子程序的流程图 5.1 单片机汉字显示程序流程图图如图 5.1 所示。武汉理工大学集成电路课程设计说明书175.2 各模块程序设计5.2.1 系统初始化ORG 0000HAJMP STARTORG 000BHLJ
48、MP TIME0ORG 0030HSTART:MOV R1,#00HMOV R2,#00HMOV R3,#00HMOV R4,#00HMOV R5,#00H5.2.2 LED 动态显示显示要求汉字在显示屏上按从左到右的顺序一个个的出现。设计时可采用如下方法:首先将 LED 显示屏对应的显示缓冲区全部清零,即 LED 显示空白,然后每间隔一个“ 软定时器”设定的动态显示时间,显示缓冲区依次加入一个汉字点阵数据并进行扫描显示,这样就可达到动态显示的效果。实现 LED 从左向右移动显示程序:TIME0:INC R5CJNE R5,#3,NEXTMOV R5,#0INC DPTRINC DPTRINC
49、 R1CJNE R1,#144,NEXTMOV R1,#0MOV DPTR,#TABNEXT: MOV TH0,#3CH18MOV TL0,#0B0HRETI5.2.3 汉字显示的原理我们以中文宋体字库为例,每一个字由 16 行 16 列的点阵组成显示。即国标汉字库中的每一个字均由 256 点阵来表示。我们可以把每一个点理解为一个像素,而把每一个字的字形理解为一幅图像。事实上这个汉字屏不仅可以显示汉字, 也可以显示在 256 像素范围内的任何图形。LED 点阵汉字显示程序:MAIN: MOV P1,R2MOV A,R3MOVC A,A+DPTRMOV P2,AINC R3MOV A,R3MOVC A,A+DPTRMOV P0,AINC R3MOV P3,R4LCALL DELAY1MSINC R2CJNE R2,#16,MAINMOV R2,#0INC R4CJNE R4,#3,MAINMOV R3,#