8点阵LED

2024-07-26

8点阵LED(精选9篇)

8点阵LED 篇1

项目功能目标:使用单片机和8×8点阵LED模块构建一个广告牌。在广告牌上滚动显示“I LOVE MCU” (我爱单片机) 的字样。

同学们首先要掌握8×8点阵LED动态显示的工作原理, 结合8×8点阵LED电路原理图进行驱动代码的编写, 当遇到困难时再参照本例中的源代码。特别提醒:同学们千万不要以为自己代码看懂了, 就算万事大吉了。其实不然, 刚开始学习时, 一定要将源代码一条一条地写入KEIL软件中, 一边写一边理解, 直到在不看我的源代码的情况下, 自己能够根据原理图独立编写程序并最终实现程序功能。掌握单片机开发就是靠点点滴滴的实践积累起来的, 这点请同学们一定要牢记。

1.8×8点阵LED动态显示工作原理

现在, LED点阵在我们日常生活中十分常见, 如各大银行门口的广告牌、火车站售票大厅的列车时刻表等等, 它以图形或文字的方式显示在大家的面前, 已经成为一种重要的信息显示手段。这是我们学习单片机必须要掌握的基础内容之一。

8×8点阵模块是构成LED点阵显示屏的基本单元, 如图一所示。在8×8点阵模块中集成了64个发光二极管, 通过8个阳极端口和8个阴极端口可以点亮一个或多个发光二极管, 如图二所示。假如我们在第一行H0共阳极给出高电平, 第一列L0共阴极给出低电平, 则位于点 (H0, L0) 的发光二极管点亮。同理, 如果要点亮多个发光二极管, 只要在多个行和列上给出相应的电平状态即可。在显示字形的时候, 我们使用动态扫描驱动可使其显示不同的字形, 如果我们要显示大写字母A, 首先将控制行的阳极端口 (H0—H7) 和控制列的阴极端口 (L0—L7) 连接到单片机的I/O端口上, 如图三所示, 通过单片机I/O口上的电平变化来控制发光二极管的亮灭。我们已经知道, 8×8点阵模块显示字符是通过动态扫描的原理实现的, 下面我们重点介绍8×8点阵模块显示字符A的动态扫描过程, 如图四和图五所示。

(1) 单片机选中第一行H 0, 对应行端口给出电平 (10000000) , 根据A的字形, 熄灭L0至L7八列发光二极管, 对应列端口给出电平 (11111111) 。

(2) 单片机选中第二行H 1, 对应行端口给出电平 (01000000) , 根据A的字形, 点亮第4列和第5列发光二极管, 熄灭其他列发光二极管, 对应列端口给出电平 (11100111) 。

(3) 单片机选中第三行H 2, 对应行端口给出电平 (00100000) , 根据A的字形点亮第4列和第5列发光二极管, 熄灭其他列发光二极管, 对应列端口给出电平 (11100111) 。

(4) 单片机选中第四行H 3, 对应行端口给出电平 (00010000) , 根据A的字形, 点亮第3列和第6列发光二极管, 熄灭其他列发光二极管, 对应列端口给出电平 (11011011) 。

(5) 单片机选中第五行H 4, 对应行端口给出电平 (00001000) , 根据A的字形, 点亮第2列至第7列发光二极管, 熄灭第1列和第8列发光二极管, 对应列端口给出电平 (10000001) 。

(6) 单片机选中第六行H 5, 对应行端口给出电平 (00000100) , 根据A的字形, 点亮第2列和第7列发光二极管, 熄灭其他列发光二极管, 对应列端口给出电平 (10111101) 。

(7) 单片机选中第七行H 6, 对应行端口给出电平 (00000010) , 根据A的字形, 点亮第1列和第8列发光二极管, 熄灭其他列发光二极管, 对应列端口给出电平 (01111110) 。

(8) 单片机选中第八行H7, 对应行端口给出电平 (00000001) , 根据A的字形, 熄灭L0至L7八列发光二极管, 对应列端口给出电平 (11111111) 。

单片机就是这样不断地从第1行至第8行循环往复, 由于扫描的速度很快, 而人的眼睛是存在暂留效应的, 因此, 我们会发现各行是被同时点亮的, 最终大写字符A的字形就显示在8×8LED点阵模块上。注意, 我们这里的字形对应的字模是通过手工的方式提取出来的, 对应的16进制为 (0xff, 0xe7, 0x e 7, 0x db, 0x 81, 0x bd, 0x 7e, 0x ff) 。如果要显示多个字形, 靠手工方式来提取字模就显得效率太低了, 所以我们在需要显示多个字形的情况下, 通常靠字模软件来取模, 例如PCt o LCD软件。

2. 电路原理分析

单片机的项目开发, 要根据原理图来进行驱动代码编写, 不可能随便编程序, 这点对于初学者来说, 要引起注意。本项目中用到的原理图由如下三部分组成。

(1) 8×8LED点阵模块行和列的接口连接原理图, 如图六所示, 8×8LED点阵模块的8个列由单片机的P0口的8个位控制, 而8个行由3/8译码器输出控制。

(2) 单片机最小系统如图七所示, 单片机的最小系统包括电源、晶振和复位电路, 其中P0、P1.0—P1.4作为本次项目的控制接口。

(3) 74HC138译码器电路, 如图八所示, 为了节省单片机的I/O口资源, 采用74HC138作为点阵LED的8行扫描控制, 关于3/8译码器的真值表如表一所示。通过表一可以看出单片机控制的3个地址选择端A0、A 1、A 3 (A DDR0、A DDR1、A D-DR2) , 8个地址状态即可选中相应的YO—Y7 (MATRIX0-M A TRIX7) 输出相应的低电平。此时Q10—Q17的8个三极管会相应导通, 8×8LED点阵模块的8个脚的共阳极得到5V (数字1) 电源电压, 只要单片机的P0.0—P0.7口给出0V电压 (数字0) , 对应控制的行列LED就会点亮, 按照一定的规律扫描, 即可显示我们需要的“I LOVE M CU”广告字符。

3. 项目源代码讲解

(1) 简易广告牌滚动显示的“I LOVE MCU”的流程图, 如图九所示。

(2) 在KEIL软件中新建LED.C文件, 源代码讲解如下:

在上述程序中已经对源代码结合原理图作了非常详细的解释, 这里就不再赘述, 将源代码编译生成的HEX文件, 下载到单片机中, 我们即可看到在8×8LED点阵模块上滚动循环显示“I LOVE M CU”, 如图十所示。

请同学们思考:将4片8×8LED点阵模块扩展为1片16×16LED点阵显示汉字字符时, 在硬件和软件上需要做哪些修改。

4. 项目硬件制作过程

(1) 工具与元器件准备, 如图十一所示。

(2) 根据图六、图七和图八的广告牌原理图布局电子元器件, 具体如图十二所示。

(3) 根据图六、图七和图八的广告牌原理图结合电子元器件布局效果图, 如图十三和图十四所示。

8点阵LED 篇2

目录 LED概述.........................................................................3 1.1 LED电子显示屏概述......................................................3 1.2 LED电子显示屏的分类...................................................3 2 显示原理及控制方式分析.................................................4 2.1 LED点阵模块结构.........................................................4 2.2 LED 动态显示原理.......................................................4 2.3 LED常见的控制方式.....................................................5 3 硬件电路设计..................................................................7 3.1 系统硬件概述..............................................................7 3.2 16×16LED点阵显示制作..............................................8 3.2.1 16×16LED点阵的内部结构及工作原理......................8 3.2.2 用8×8LED点阵构成16×16LED点阵..........................9 3.3主控单片机的接口说明.................................................11 3.4 LED显示驱动电路.......................................................11 4 字模生成.......................................................................13 4.1 字模简介...................................................................13 4.1.1 LED显示屏领域字模实现技术...................................13 4.1.2 软件控制系统字模提取的分析与设计.........................13 4.2 字模存储技术.............................................................14 4.3 字库生成...................................................................14 5软件设计........................................................................16 5.1 程序设计总体思路和结构..............................................16 5.1.1 程序设计总体思路.................................................16 5.1.2 程序流程图...........................................................16 5.2 各模块程序设计..........................................................17 5.2.1 系统初始化...........................................................17 5.2.2 LED动态显示........................................................17 5.2.3 汉字显示的原理....................................................17 6系统功能测试..................................................................19 6.1 单元模块电路测试.......................................................19 6.2 系统整体功能测试.......................................................19 总结.................................................................................20 致谢.................................................................................21 参考文献...........................................................................22 附录.................................................................................23 引 言

LED(Light Emitting Diode),发光二极管,简称LED,是一种能够将电能转化为可见光的固态的半导体器件,它可以直接把电转化为光。LED的心脏是一个半导体的晶片,晶片的一端附在一个支架上,一端是负极,另一端连接电源的正极使整个晶片被环氧树脂封装起来。半导体晶片由两部分组成,一部分是P型半导体,在它里面空穴占主导地位,另一端是N型半导体,在这边主要是电子。但这两种半导体连接起来的时候,它们之间就形成一个“P-N结”。当电流通过导线作用于这个晶片的时候,电子就会被推向P区,在P区里电子跟空穴复合,然后就会以光子的形式发出能量,这就是LED发光的原理。

多个 LED发光灯组成固定的字符或图形进行显示,即形成LED点阵图文显示屏。其主要特征是只控制LED点阵中各发光器件的通断(发光或熄灭),而不控制LED的发光强弱。LED点阵的汉字显示方式是先根据所需要的汉字提取汉字点阵(如16×16 点阵),将点阵文件存入ROM,形成新的汉字编码;而在使用时则需要先根据新的汉字编码组成语句,再由MCU根据新编码提取相应的点阵进行汉字显示。

LED点阵显示具有如下特点:

(1)电压:LED使用低压电源,供电电压在6-24V之间,根据产品不同而异,所以它是一种比使用高压电源更安全的电源。

(2)效能:消耗能量比同光效的白炽灯减少80%。(3)适用性:每个单元LED小片是3-5mm的正方形,所以可以制备成各种形状的器件,并且适合于易变的环境。

(4)稳定性:10万小时,光衰为初始的50%。

(5)响应时间:其白炽灯的响应时间为毫秒级,LED灯的响应时间为纳秒级。(6)对环境污染:无有害金属汞。

(7)颜色:改变电流可以变色,发光二极管方便地通过化学修饰方法,调整材料的能带结构和带隙,实现红黄绿兰橙多色发光。

由于LED的众多优势,在市场中得到了广泛的应用,主要应用领域有:(1)、信号指示应用:信号照明是LED单色光应用比较广泛也是比较早的一个领域,约占LED应用市场的4%左右。

(2)、显示应用:指示牌、广告牌、大屏幕显示等,LED用于显示屏幕的应用约占LED应用的20%—25%,显示屏幕可分为单色和彩色。

(3)、照明应用:便携灯具,汽车用灯,特殊照明。由于LED尺寸小,便于动态的亮度和颜色控制,因此比较适合用于建筑装饰照明。背光照明:普通电子设备功能显示背光源、笔记本电脑背光源、大尺寸超大尺寸LCD显示器背光源等。以及投影仪用RGB光源。

LED概述

1.1 LED电子显示屏概述

LED电子显示屏(Light Emitting Diode Panel)是由几百--几十万个半导体发光二极管构成的像素点,按矩阵均匀排列组成。利用不同的半导体材料可以制造不同色彩的LED像素点。目前应用最广的是红色、绿色、黄色。而蓝色和纯绿色LED的开发已经达到了实用阶段。LED显示屏是一种通过控制半导体发光二极管的亮度的方式,来显示文字、图形、图像、动画、行情、视频、录像信号等各种信息的显示屏幕。

LED显示屏分为图文显示屏和条幅显示屏,均由LED矩阵块组成。图文显示屏可与计算机同步显示汉字、英文文本和图形;而条幅显示屏则适用于小容量的字符信息显示。LED显示屏因为其像素单元是主动发光的,具有亮度高,视角广、工作电压低、功耗小、寿命长、耐冲击和性能稳定等优点。因而被广泛应用于车站、码头、机场、商场、医院、宾馆、银行、证券市场、建筑市场、拍卖行、工业企业管理和其它公共场所。

LED显示屏的发展前景极为广阔,目前正朝着更高亮度、更高气候耐受性、更高的发光密度、更高的发光均匀性,可靠性、全色化方向发展。1.2 LED电子显示屏的分类

按颜色分类:

单基色显示屏:单一颜色(红色或绿色)。

双基色显示屏:红和绿双基色,256级灰度、可以显示65536种颜色。

全彩色显示屏:红、绿、蓝三基色,256级灰度的全彩色显示屏可以显示一千六百多万种颜色。

按显示器件分类:

LED数码显示屏:显示器件为7段码数码管,适于制作时钟屏、利率屏等,显示数字的电子显示屏。

LED点阵图文显示屏:显示器件是由许多均匀排列的发光二极管组成的点阵显示模块,适于播放文字、图像信息。按使用场合分类:

室内显示屏:发光点较小,一般Φ3mm--Φ8mm,显示面积一般零点几至十几平方米。室外显示屏:面积一般几十平方米至几百平方米,亮度高,可在阳光下工作,具有防风、防雨、防水功能。按发光点直径分类:

室内屏:Φ3mm、Φ3.75mm、Φ5mm、室外屏:Φ10mm、Φ12mm、Φ16mm、Φ19mm、Φ21mm、Φ26mm 室外屏发光的基本单元为发光筒,发光筒的原理是将一组红、绿、蓝发光二极管封在一个塑料筒内共同发光增强亮度。

显示原理及控制方式分析

2.1 LED点阵模块结构

八十年代以来出现了组合型LED点阵显示器模块,以发光二极管为像素,它用高亮度发光二极管芯阵列组合后,环氧树脂和塑模封装而成。这种一体化封装的点阵LED模块,具有高亮度、引脚少、视角大、寿命长、耐湿、耐冷热、耐腐蚀等特点。LED点阵规模常见的有4×4、4×8、5×7、5×8、8×8、16×16等等。

根据像素颜色的数目可分为单色、双基色、三基色等。像素颜色不同,所显示的文字、图象等内容的颜色也不同。单色点阵只能显示固定色彩如红、绿、黄等单色,双基色和三基色点阵显示内容的颜色由像素内不同颜色发光二极管点亮组合方式决定,如红绿都亮时可显示黄色,如果按照脉冲方式控制二极管的点亮时间,则可实现256或更高级灰度显示,即可实现真彩色显示。

图2.1示出最常见的8×8单色LED点阵显示器的内部电路结构和外型规格,其它型号点阵的结构与引脚可试验获得。

图2.1 8×8单色LED模块内部电路

LED点阵显示器单块使用时,既可代替数码管显示数字,也可显示各种中西文字及符号.如5x7点阵显示器用于显示西文字母.5×8点阵显示器用于显示中西文,8x8点阵可以用于显示简单的中文文字,也可用于简单图形显示。用多块点阵显示器组合则可构成大屏幕显示器,但这类实用装置常通过PC机或单片机控制驱动。2.2 LED 动态显示原理

LED点阵显示系统中各模块的显示方式: 有静态和动态显示两种。静态显示原理简单、控制方便,但硬件接线复杂,在实际应用中一般采用动态显示方式,动态显示采用扫描的方式工作,由峰值较大的窄脉冲电压驱动,从上到下逐次不断地对显示屏的各行进行选通,同时又向各列送出表示图形或文字信息的列数据信号,反复循环以上操作,就可显示各种图形或文字信息。

点阵式LED汉字广告屏绝大部分是采用动态扫描显示方式,这种显示方式巧妙地利用了人眼的视觉暂留特性。将连续的几帧画面高速的循环显示,只要帧速率高于24帧/秒,人眼看起来就是一个完整的,相对静止的画面。最典型的例子就是电影放映机。在电子领域中,因为这种动态扫描显示方式极大的缩减了发光单元的信号线数量,因此在LED显示技术中被广泛使用。

以8×8点阵模块为例,说明一下其使用方法及控制过程。图2.1中,红色水平线Y0、Y1……Y7叫做行线,接内部发光二极管的阳极,每一行8个LED的阳极都接在本行的行线上。相邻两行线间绝缘。同样,蓝色竖直线X0、X1……X7叫做列线,接内部每列8个LED的阴极,相邻两列线间绝缘。

在这种形式的LED点阵模块中,若在某行线上施加高电平(用“1”表示),在某列线上施加低电平(用“0”表示)。则行线和列线的交叉点处的LED就会有电流流过而发光。比如,Y7为1,X0为0,则右下角的LED点亮。再如Y0为1,X0到X7均为0,则最上面一行8个LED全点亮。

现描述一下用动态扫描显示的方式,显示字符“B”的过程。其过程如图2.2

图2.2 用动态扫描显示字符“B”的过程

2.3 LED常见的控制方式

目前常见的是并行传输方式(见附录1.1),通过8位锁存器将8位总线上的列数据进行锁存显示,各8位锁存器的片选信号由译码器提供。此种方式的优点是传输速度快,对微控制器(MCU)的通信速度要求较低。但是这种方案最大的缺点是不便于随意扩展显示单元的数目。每增加一个16×16点阵的全角汉字显示单元,就需要在之前的电路上多增加两根地址线,这就要求在PCB布线的时候要留有充足的地址线冗余量。再一个缺点是,每个单元的PCB随着安放位置的不同,布线结构也不相同,不利于厂家批量生产。并行传输需要的芯片较多,因此市场上已经出现用FPGA,CPLD等高密度可编程逻辑器件(PLD)来取代传统锁存器IC的方案。成本有所下降,但可扩展性仍旧较差。因此,并行传输方式适用于显示单元数目确定的条屏。

随着广告屏显示内容的多媒体化,对控制器传输速度,运算能力的要求越来越高。因此控制器的种类也在不断发展以适应要求,从最初的8051单片机,到PIC单片机,又到FPGA,直到现在的ARM处理器。不同功能档次的广告屏对应着不同的处理器。

一.以传统8051单片机为控制器的LED显示屏。因受到单片机运算速度及通信速率的限制,LED动态显示的刷新率不可能做得太高。对显示效果和移动算法的处理也比较吃力,在实际显示效果上有比较明显的闪烁感。除此之外,传统8051单片机的内部资源贫乏,仅128字节的数据存储器,几K字节的程序存储器,无E2PROM,SPI。这就需要对单片机扩展外设,无疑增加了硬件成本。因此,8051控制的条屏只能用于显示内容及其简单,不需要经常更改显示内容的场合。

二.以PIC单片机为控制器的LED显示屏。因PIC单片机是RISC架构的工业专用单片机,处理指令的速度有所增加,抗干扰能力优秀,型号种类繁多。作为条屏的控制器,可以明显的改善显示效果,同时PIC单片机内部的资源较丰富,可节省外部电路设计难度,同时降低了硬件成本。因此,以PIC单片机为控制器的条屏目前仍是单色条屏市场的主流。

三.以FPGA(复杂可编程逻辑门阵列)为控制器的LED显示屏。FPGA以高速、并行著称。是近年来新兴的可编程逻辑器件。用他作为LED显示屏的控制器,能够高速的处理色阶PWM信号、高速的完成动态扫描逻辑、高速的完成字符移动算法。因此被运用于双基色、三基色的显示系统。但是其成本较高,开发难度较大。

四.以ARM(32位RISC架构高性能微处理器)为控制器的LED显示屏。ARM有着极高的指令效率,极高的时钟频率。因此其运算能力非常强大,内部资源也十分丰富,极大的简化了硬件设计的难度,缩短了开发周期。在条屏的运用中,能用ARM来实现花样繁多的显示方式,以及高色阶,多像素的全彩屏驱动。ARM与FPGA的组合更是功能强大,除了海量存储技术,无线更新技术外,还能实时地显示视频信号。因此,以ARM为控制器的显示屏常为视频全彩屏。

硬件电路设计

3.1 系统硬件概述

整个电路由单片机89C51,8个74LS373,1个74HC154,1个74LS138,4个16×16的LED。该电路所设计的电子屏可显示多个汉字,需要4个16×16 LED点阵模块,可组成16×64的条形点阵。

AT89C51是一种带4KB可编程可擦除只读存储器的低电压,高性能微处理器,俗称单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。AT89C51引脚即外观如图3.1所示。

图3.1 AT89C51的管脚图

译码器是组合逻辑电路的一个重要的器件,74LS138的输出是低电平有效,故实现逻辑功能时,输出端不可接或门及或非门,74LS138与前面不同,其有使能端,故使能端必须加以处理,否则无法实现需要的逻辑功能。发光二极管点亮只须使其正向导通即可,根据LED的公共极是阳极还是阴极分为两类译码器,即针对共阳极的低电平有效的译码器;针对共阴极LED的高电平输出有效的译码器。

74LS373是低功耗肖特基TTL8D锁存器,内有8个相同的D型(三态同相)锁存器,由两个控制端(11脚G或EN;1脚OUT、CONT、OE)控制。当OE接地时,若G为高电平,74LS373接收由PPU输出的地址信号;如果G为低电平,则将地址信号锁存。工作原理:74LS373的输出端O0—O7可直接与总线相连。当三态允许控制端OE为低电平时,O0—O7为正常逻辑状态,可用来驱动负载或总线。当OE为高电平时,O0—O7呈高阻态,即不驱动总线,也不为总线的负载,但锁存器内部的逻辑操作不受影响。当锁存允许端LE为高电平时,O随数据D而变。当LE为低电平时,O被锁存在已建立的数据电平。74LS373引脚即外观如图3.2所示

图3.2 74LS373引脚图

74HC154为 4 线-12 线译码器,当选通端(G1、G2)均为低电平时,可将地址端(ABCD)的二进制 编码在一个对应的输出端,以低电平译出。若将 G1 和 G2 中的一个作为数据输入端,由 ABCD 对输出寻址,还可作 1 线-16 线数据分配器。工作环境温度为0~70℃,对社会的要求非常适合。

LED,50年前人们已经了解半导体材料可产生光

线的基本知识,第一个商用二极管产生于1960年。LED是英文light emitting diode(发光二极管)的缩写,它的基本结构是一块电致发光的半导体材料,置于一个有引线的架子上,然后四周用环氧7树脂密封,即固体封装,所以能起到保护内部芯线的

作用,所以LED的抗震性能好该电路的显示采用逐行扫描方式。工作时,由单片机取出第一行需要显示的内容经延时一段时间后再进行下一行点阵数据的显示。需要注意的是,每次只能选通一行数据,即要通过不断的逐行扫描来实现汉字或字符的显示。3.2 16×16LED点阵显示制作

3.2.1 16×16LED点阵的内部结构及工作原理

以UCDOS中文宋体字库为例,每一个字由16行16列的点阵组成显示。即国家标准汉字库中的每一个字均由256点阵来表示。我们可以把每一个点理解为一个像素,而把每一个字的字形理解为一幅图像。事实上这个汉字屏不仅可以显示汉字,也可以显示在256像素范围内的任何图形。这里我们以“高”字说明,如图3.3所示。

图3.3 16*16LED汉字显示

用8位的AT89C51单片机控制,由于单片机的总线为8位,一个字需要拆分为2个部分。一般把它拆分为上部和下部,上部由8×16点阵组成,下部也由8×16点阵组成。在本例中单片机首先显示的是左上角的第一列的上半部分,即第0列的p00—p07口。方向为p00到p07 ,显示汉字“高”时,p02点亮,由上往下排列,为p0.0 灭,p0.1 灭, p0.2 灭, p0.3 灭, p0.4 灭, p0.5 亮,p0.6灭,p0.7 灭。即二进制00000100,转换为16进制为 04h。上半部第一列完成后,继续扫描下半部的第一列,为了接线的方 便,我们仍设计成由上往下扫描,即从p27向p20方向扫

描,从上图可以看到,这一列全部为不亮,即为00000000,16进制则为00h。然后单片机转向上半部第二列,仍为p01点亮,为00000100,即16进制04h.这一列完成后继续进行下半部分的扫描,p20点亮,为二进制00000010,即16进制02h.依照这个方法,继续进行下面的扫描,一共扫描32个8位,可以得出汉字“高”的扫描代码为:02h,00h,01h, 04h,0FFh,0FEh, 00h, 00h,1Fh,0F0h, 10h, 10h, 10h, 10h, 1Fh,0F0h,00h, 04h, 7Fh,0FEh, 40h, 04h, 4Fh,0E4h,48h, 24h, 48h, 24h, 4Fh,0E4h, 40h, 0Ch。

由这个原理可以看出,无论显示何种字体或图像,都可以用这个方法来分析出它的扫描代码从而显示在屏幕上。不过现在有很多现成的汉字字模生成软件,就不必自己去画表格算代码了。

3.2.2 用8×8LED点阵构成16×16LED点阵

Proteus中只有5×7和8×8等LED点阵,并没有16×16LED点阵,而在实际应用中,要良好地显示一个汉字,则至少需要16×16点阵。下面我们就首先介绍使用8×8点阵构建16×16点阵的方法,并构建一块16×16LED点阵,用于本例的显示任务。

首先,从Proteus7.1的元件库中找到“MATRIX-8X8-RED”元器件,并将四块该元器件放入Proteus文档区编辑窗口中。此时需要注意,如果该元器件保持初始的位置(没有转动方向),我们要首先将其左转90°,使其水平放置,那么此时它的左面8个引脚是其行线,右边8个引脚是其列线(当然,如果你是将右转,则右边8个引脚是行线)。然后我们将四个元器件对应的行线和列线分别进行连接,使每一条行线引脚接一行16个LED,列线也相同。并注意要将行线和列线引出一定长度的引脚,以便下面我们使用。连接好的16×16点阵如图3.4所示。

成如上图的16×16点阵只是第一步,这样分开的数块并不能达到好的显示效果,下面我们要将其进一步组合。组合实际上很简单,首先选中如上图中右侧的两块8×8点阵,然后拖动并使其与左侧的两块相并拢,如图3.5所示。

图3.4 点阵模块组合

图3.5

可以看到原来的连线已经自动隐藏了,至于线上的交点,我们不要去动。然后,我们再来最后一步,选中下侧的两块点阵,并拖动使其与上侧的两块并拢,最后的效果如图3.6所示。看到,原来杂乱的连线现在已经几乎全部隐藏了,一块16×16的LED点阵做成了。需要注意,做成的LED点阵的行线为左侧的16个引脚,下侧的16个引脚为其列线,而且其行线为高电平有效,列线为低电平有效。然后,我们将其保存,以便以后使用。

图3.6 3.3主控单片机的接口说明

P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复制用口,作为输入口时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口写入“1可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期激活内部上拉电阻。在Flash编程时,PO口接收指令节,而在程序校检时,输出指令字节,校检时,要求外接上拉电阻。P1口:P1口是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流I。Flash编程和程序校检期间,P1接收低8位地址。

P2口:P2口是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流I。在访问外部数据存储器或16位地址的外部数据存储(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器(如执行MOVX@RI指令)时,P2口线上的内容(也即特殊功能寄存器(SFR)区中R2寄存器的内容),在整个访问期间不改变。Flash编程和校检时,P2亦接收高位地址和其他控制信号。

P3口:P3口是一个带内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,它们被内部上拉电阻拉高并可作输入端口,作输入端时,被外部拉低的P3口将用上拉电阻,输出电流I。P3口还接收一些用于Flash闪速存储器编程和程序校检的控制信号。

RST:复位输入,当震荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。

ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于所存地址的低8位字节。即使不访问外部存储器,ALE乃以时钟振动频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。

3.4 LED显示驱动电路 LED显示驱动电路如图3.7所示。

图3.7 显示驱动电路图

字模生成

4.1 字模简介

文字的字模是一组数字,但它的意义却与数字的意义有着根本的变化,它是用数字的各

[1]位信息来记载英文或汉字的形状。

在电脑硬件中,根本没有汉字这个概念,也没有英文的概念,其认识的概念只有——内码(将ASCII表的高128个很少用到的数值以两个为一组来表示汉字,即汉字的内码。而剩下的低128位则留给英文字符使用,即英文的内码)。如果你用启动盘启动系统后用DIR命令可能得到一串串莫名其妙的字符,但那确确实实是汉字,如果你启动UCDOS或其他的汉字系统后,就会看到那是一个个熟悉的汉字。在硬件系统内,英文的字模信息一般固化在ROM里,即使在没有进入系统的CMOS里,也可以让你看到英文字符。而在DOS下,中文的字模信息一般记录在汉字库文件里(将制作好的字模放到一个个标准的库中,这就是点阵字库文件)。

4.1.1 LED显示屏领域字模实现技术

在通过软件实现的技术中,目前有许多字模生成软件,软件打开后输入汉字,点“检取”,十六进制数据的汉字代码即可自动生成,把我们所需要的竖排数据复制到我们的程序中即可。在通过硬件实现字模提取的技术中,有在单片机系统中增加硬汉字库的方法,主控器发送的汉字是其机内码,用两个字节来表示一个汉字。根据机内码,显示单元控制模块从汉字库中查取显示字模,实现汉字显示。由于带有硬汉字库,进行动态文字显示时,通用智能显示单元仅接受汉字的机内码即可,这样数据通讯量大大减少。因此,“动态文字显示速度快”。4.1.2 软件控制系统字模提取的分析与设计

而在LED显示屏控制系统具体应用的Windows操作系统下如何提取字模信息是设计的核心。软件控制系统在实际编辑过程中,要求各种字体、字号的文字都能被编辑、保存。所以系统在设计时,把文本区理解为由众多的象素点构成,而把不同字体、字号的文字理解为一幅图像。因为所开启的文本区大小与LED显示屏的大小对应,所以采用16×16点阵为单位,把文本区内的每个像素点都看成一个二维数组,由于系统中各种颜色都有对应的值,赋予每个不同颜色的像素点不同的对应值,再把每个点赋予一个int型的值,这样保存下来的信息就是二进制数据。通过这样的设计,我们不仅可以把任何字型,任何大小的文字保存下来,还可以显示以256个像素点阵为单位的任何图形。在软件控制系统中实现字模的提取,也就避免了在单片机中加载硬汉字库模块,从而简化了硬件模块的设计。以下以单色屏为例,介绍系统采用字模保存的算法设计:

定义COLORREF zimo_ color为像素点的颜色,判断某个点的颜色值。如果值为Oxffffff,说明此点为白色,赋予此点值0。由于单色屏只有红色和不显色两种,所以可以简单赋值为除白色外其余点赋值为1 CClientDC

dc(this);

CFile myfile;unsigned int zimo[192] [384]={0};unsigned char zimo_data[192][48]={0};

COLORREF zimo_color;

int row, col;

this->HideCaret();

for(row=0;row<192;row++){

for(col=0;col<384;col++){

zimo_color=do.GetPixel(col, row);

if(zimo color = =Oxffffff)

{zimo [row] [col]=0;}else

{zimo [row] [col]=1;}}} 定义unsigned int zimo[192][384]={0};//文本区像素点

以8位为一字节(因为在随后的串行通讯中,传输的数据是8位的二进制数据)定义

unsigned char zimo_data[192][48]={0} 4.2 字模存储技术

目前使用最广泛的技术是,通过上位机软件将待显示的字符串转换为对应的点阵字模数

2据,通过烧写的方式将这些字模数据按一定的顺序编址后存储在EPROM中。在条屏显示的2过程中按规定的方式取出EPROM中的字模数据进行处理。对于一个16×16点阵的汉字字模

2数据,需要连续32字节的EPROM空间来存储。照此计算,若有256个需要显示的字符,则

2至少需要32B×256=8192字节(8KB)的EPROM存储空间。通常的单片机内部没有集成这么22大容量的EPROM。因此这种方案,需要在单片机外部扩展大容量的EPROM,增加硬件成本。上位机程序设计由于涉及到汉字取模,取模算法的难度较大。在多字下载的时候传输时间也较长。诸多弊端使本设计放弃了传统方案。而本设计创新使用了专用的点阵字库芯片,成本仅为8元,内含各种点阵规格的GB2312、ASCII等标准字库。专用字库芯片采用微型SO-8封装,使用高速同步串行SPI接口进行读写操作,节省了控制器的I/O。在本设计中,单片2机内部的小容量EPROM,用于存储待显示汉字的GB2312标准机内码,每个全角字符的内码

2占2字节,则在同样需要显示256个汉字的情况下,这种方案仅占用512字节的EPROM空间

4.3 字库生成

因为本设计中为行扫描,列输入,所以“魏”的自摸代码为:

DB 49H,40H,4AH,51H,4CH,6AH,7FH,0C4H,4CH,4AH,8AH,71H,88H,42H,3FH,84H DB64H,98H,0A5H,0E0H,3EH,0BEH,24H,81H,24H,89H,7FH,81H,20H,07H,00H,00

“佳”字代码为:

DB 01H,00H,02H,00H,04H,00H,1FH,0FFH,0E2H,02H,12H,22H,12H,22H,12H,22H DB 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,28H DB 0F2H,0A8H,2AH,0A8H,25H,0FFH,2AH,0A8H,32H,0A8H,23H,28H,02H,00H,00H,00H 5软件设计

5.1 程序设计总体思路和结构 5.1.1 程序设计总体思路

用简短的汇编程序设计,实现LED点阵显示内容,并使显示的内容在屏幕上从左到右的滚动显示。系统采用模块化结构,包括主程序、延时程序、显示子程序和串行口中断程序。用AT89C51、74LS373、74LS138、74HC154芯片和4个16×16LED点阵显示器构成一个完整的16位点阵LED显示系统。5.1.2 程序流程图

程序主要由开始、初始化、主程序、字库组成。其中主程序和子程序的流程图如图5.1所示。

图5.1 单片机汉字显示程序流程图

5.2 各模块程序设计 5.2.1 系统初始化 ORG 0000H AJMP START ORG 000BH LJMP TIME0 ORG 0030H START:MOV R1,#00H MOV R2,#00H MOV R3,#00H MOV R4,#00H MOV R5,#00H 5.2.2 LED动态显示

显示要求汉字在显示屏上按从左到右的顺序一个个的出现。设计时可采用如下方法:首先将LED显示屏对应的显示缓冲区全部清零,即 LED显示空白,然后每间隔一个“软定时器”设定的动态显示时间,显示缓冲区依次加入一个汉字点阵数据并进行扫描显示,这样就可达到动态显示的效果。实现LED从左向右移动显示程序: TIME0:INC R5 CJNE R5,#3,NEXT MOV R5,#0 INC DPTR INC DPTR INC R1 CJNE R1,#144,NEXT MOV R1,#0 MOV DPTR,#TAB NEXT: MOV TH0,#3CH MOV TL0,#0B0H RETI 5.2.3 汉字显示的原理

我们以中文宋体字库为例,每一个字由16行16列的点阵组成显示。即国标汉字库中的每一个字均由256点阵来表示。我们可以把每一个点理解为一个像素,而把每一个字的字形理解为一幅图像。事实上这个汉字屏不仅可以显示汉字,也可以显示在256像素范围内的任何图形。LED点阵汉字显示程序: MAIN: MOV P1,R2 MOV A,R3 MOVC A,@A+DPTR MOV P2,A INC R3 MOV A,R3 MOVC A,@A+DPTR MOV P0,A INC R3 MOV P3,R4 LCALL DELAY1MS INC R2 CJNE R2,#16,MAIN MOV R2,#0 INC R4 CJNE R4,#3,MAIN MOV R3,#0 MOV R4,#0 LJMP MAIN

6系统功能测试

6.1 单元模块电路测试

在proteus仿真软件中运行测试AT89C51、74LS373、74LS138、74HC154等芯片和LED显示器均能正常运行并完整的显示出了我所要的效果。所以各个模块功能正常。6.2 系统整体功能测试

在仿真软件proteus中运行测试系统整体功能,一切正常。实现了汉字的左移滚动显示,完整的显示出了“陕西理工学院”浮动汉字。

图6.1 单片机汉字显示系统测试图

总结

在本设计中我用简短的汇编程序在LED显示屏实现了汉字的左移滚动显示。在设计中采用的芯片有AT89C51、74LS373、74LS138、74HC154和4个16×16LED点阵显示器。其特点:1.内容能从右向左浮动显示。2.硬件结构简单,应用广泛。3.LED数码管动态扫描显示,工作效率高,价格低廉等。

通过本次(64×16位点阵LED)的设计,理论知识学习和实际设计的结合锻炼了我的综合运用所学的专业基础知识解决实际工程问题的能力,同时也提高我查阅文献资料、设计手册、设计规范以及电脑制图等其他专业能力水平,而且通过对整体的掌控,对局部的取舍,以及对细节的斟酌处理,都使我的能力得到了锻炼,经验得到了丰富。为后继的学习和工作奠定的基础。

致谢

在完成此设计过程中,我曾多次去找我的指导老师,李建忠老师,每次在遇到实验中遇到困难或者程序看不懂的时候,我都去找李老师,不管上班下班时间,李老师每次都不厌其烦,不辞辛苦的给我细心讲解指导,我才能在实验室完成实验,在写论文过程中老师也给了我很大帮助,在此,我由衷的对李老师对我的指导和教育。

参考文献

[1]李建忠编著.单片机原理及应用.西安:西安电子科技大学出版社,2002 [2]李群芳,肖看编著.单片机原理、接口及应用.北京:清华大学出版社,2005 [3]于海生编著.微型计算机控制技术.北京:清华大学出版社,2008 [4]戴梅萼,史嘉权编著.微型计算机技术及应用(第3版).北京:清华大学出版社,2008 [5]江晓安,董秀峰编著.数字电子技术(第二版).西安:西安电子科技大学出版社,2005

附录

附录:源程序代码 ORG 0000H;初始化

AJMP START

ORG 000BH

LJMP TIME0

ORG 0030H START:MOV R1,#00H

MOV R2,#00H

MOV R3,#00H

MOV R4,#00H

MOV R5,#00H

MOV TMOD,#01H

MOV TH0,#3CH

MOV TL0,#0B0H

MOV IE,#82H

SETB TR0

MOV DPTR,#TAB;================ MAIN: MOV P1,R2;单片机输出

MOV A,R3

MOVC A,@A+DPTR

MOV P2,A

INC R3

MOV A,R3

MOVC A,@A+DPTR

MOV P0,A

INC R3

MOV P3,R4

LCALL DELAY1MS

INC R2

CJNE R2,#16,MAIN

MOV R2,#0

INC R4

CJNE R4,#4,MAIN

MOV R3,#0

MOV R4,#0

LJMP MAIN;=============== TIME0:INC R5;移动显示

CJNE R5,#3,NEXT

MOV R5,#0

INC DPTR

INC DPTR

INC R1

CJNE R1,#144,NEXT

MOV R1,#0

MOV DPTR,#TAB NEXT: MOV TH0,#3CH

MOV TL0,#0B0H

RETI;================ DELAY1MS:MOV R7,#2;延时 DEL: MOV R6,#250

DJNZ R6,$

DJNZ R7,DEL

RET;================ TAB:;DB 000H,000H,01FH,0FCH,010H,000H,025H,000H,03BH,004H,000H,048H,00AH,050H,009H,060H;陕

;DB 07FH,0C0H,010H,0A0H,012H,090H,014H,088H,000H,08CH,000H,004H,000H,004H,000H,000H

DB 00H,00H,7FH,0FFH,44H,20H,5AH,10H,61H,0E1H,10H,82H,14H,84H,12H,88H

DB 10H,0B0H,0FFH,0C0H,10H,0B0H,12H,88H,34H,86H,11H,83H,00H,82H,00H,00H

DB 000H,000H,003H,000H,002H,0F8H,022H,010H,022H,050H,03FH,090H,022H,010H,022H,010H

DB 07FH,090H,044H,090H,044H,090H,004H,00CH,004H,030H,007H,0C0H,000H,000H,000H,000H

DB 000H,010H,011H,010H,011H,020H,01FH,0E0H,022H,048H,000H,048H,038H,008H,027H,048H

DB 025H,048H,03FH,0F0H,04AH,090H,042H,090H,07EH,010H,000H,010H,000H,000H,000H,000H

DB 000H,000H,000H,010H,000H,010H,000H,010H,008H,010H,008H,010H,008H,010H,00FH,0E0H

DB 010H,020H,010H,020H,010H,020H,000H,020H,000H,020H,000H,020H,000H,000H,000H,000H

DB 000H,000H,003H,020H,00EH,020H,044H,020H,024H,020H,005H,020H,04AH,024H,02AH,0C2H

DB 00BH,07CH,01AH,040H,0E8H,040H,008H,040H,00CH,040H,008H,000H,000H,000H,000H,000H

DB 000H,000H,03FH,0FCH,022H,000H,02DH,004H,033H,008H,004H,010H,018H,0A0H,00AH,0C0H

DB 052H,080H,035H,0F8H,015H,004H,011H,004H,018H,004H,000H,038H,000H,000H,000H,000H

DB 02H,00H,02H,00H,42H,00H,33H,0FEH,00H,04H,02H,08H,02H,10H,02H,00H

DB 02H,00H,0FFH,0FFH,02H,00H,02H,00H,02H,00H,06H,00H,02H,00H,00H,00H

DB 10H,10H,20H,10H,0C0H,11H,5FH,0D2H,75H,7CH,55H,50H,55H,50H,35H,50H

DB 0D5H,50H,55H,50H,75H,7FH,5FH,0D0H,40H,10H,40H,30H,00H,10H,00H,00H

DB 08H,20H,08H,0C0H,0BH,00H,0FFH,0FFH,09H,01H,08H,82H,00H,04H,3FH,0F8H

DB 20H,00H,20H,00H,20H,00H,7FH,0FCH,20H,02H,00H,02H,00H,0EH,00H,00H

DB 24H,08H,24H,10H,24H,60H,25H,80H,7FH,0FFH,0C5H,00H,44H,80H,00H,40H

DB 24H,40H,12H,40H,00H,40H,0FFH,0FFH,00H,80H,01H,80H,00H,80H,00H,00H

DB 02H,20H,0CH,20H,88H,20H,69H,20H,09H,20H,09H,22H,89H,21H,69H,7EH

DB 09H,60H,09H,0A0H,19H,20H,28H,20H,0C8H,20H,0AH,60H,0CH,20H,00H,00H

DB 00H,10H,00H,10H,00H,10H,0FFH,10H,11H,10H,11H,10H,11H,10H,11H,10H

DB 11H,10H,11H,32H,11H,11H,11H,02H,33H,0FCH,11H,00H,00H,00H,00H,00H

DB 08H,20H,08H,22H,08H,41H,0FFH,0FEH,08H,80H,08H,01H,11H,81H,11H,62H

DB 11H,14H,0FFH,08H,11H,14H,11H,64H,31H,82H,10H,03H,00H,02H,00H,00H

DB 04H,08H,04H,08H,04H,10H,04H,20H,04H,40H,04H,80H,05H,00H,0FFH,0FFH

DB 05H,00H,44H,80H,24H,40H,34H,20H,04H,10H,0CH,18H,04H,10H,00H,00H

DB 49H,40H,4AH,51H,4CH,6AH,7FH,0C4H,4CH,4AH,8AH,71H,88H,42H,3FH,84H

DB 64H,98H,0A5H,0E0H,3EH,0BEH,24H,81H,24H,89H,7FH,81H,20H,07H,00H,00H

DB 01H,00H,02H,00H,04H,00H,1FH,0FFH,0E2H,02H,12H,22H,12H,22H,12H,22H

DB 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,28H

DB 0F2H,0A8H,2AH,0A8H,25H,0FFH,2AH,0A8H,32H,0A8H,23H,28H,02H,00H,00H,00H

8点阵LED 篇3

关键词:三维LED点阵,主控系统,ATMEGA328P-PU,上位机,显示

1 引言

LED显示屏是八十年代后期在全球迅速发展起来的新型信息传播媒体[1,2], 随着大规模集成电路和计算机技术的发展, LED显示屏作为一种新兴的显示媒体得到了高速的发展, 其中以二维平面点阵屏显示的广泛应用作为标志之一[3], 但是随着人们对视觉享受的要求越来越高, 二维的平面点阵显示开始显得单调、粗糙、乏味, 人们已经不再满足于二维平面显示, 2009年10月1日天安门广场举行的国庆联欢晚会上, 四千多棵光艺高科技“发光树”, 吸引了全国人民的眼球, 一个全新的名词“光立方”, 引起了众多学者的热议, 随后三维点阵显示屏的出现更是令人耳目一新, 本设计的8*8*8三维LED点阵[4,5]显示模块是以AVR单片机为核心控制系统, 显示部分用512个白发蓝高亮LED交错搭建而成, 极具光赏性, 可以动静态显示三维文字及图形, 给人强烈的立体感, 同时炫酷、多样式的显示也给人们带来全新的娱乐体验。

2 总体方案

本设计使用孔距为22mm的8*8平面模板快速搭建8面二维LED点阵, 把8面二维点阵组成立方型, 并将不同面的行依次相接, 构成8层共阳64列共阴的三维LED点阵。系统的工作原理, 是在简单二维LED点阵的基础上, 扩大LED之间的距离, 并应用层叠技巧搭建成一个实心LED立方体, 用AVR单片机直接控制外围驱动电路输出, 间接实现对LED的亮灭控制。采用逐层扫描的工作方式, 利用人们视觉暂留效应, 实现简单的动静态文字和图像显示。系统结构框图如图1所示。

3 硬件设计

3.1 三维LED点阵

8*8*8三维LED点阵由512个LED组成的实心立方体, 分为8层, 64列, 展开后相当于一个64x8的平面点阵。设计选用工作电压为2.7~3.3V, 大小为3mm白发蓝高亮长脚LED, 直接使用LED管脚实现矩阵的搭建, 构成8层共阳, 64列共阴的三维LED点阵。每个LED与相邻LED间距约22mm, 提高了整体的通透性, 达到良好的三维显示效果。

3.2 主控系统

三维LED点阵的控制根据系统对复杂数据的运算处理以及外部扩展接口配置需求, 结合ATMEL公司的AVR单片机[6]高可靠性、功能强、高速度、低功耗和低价位等特点, 采用ATMEGA328P-PU单片机作为主控芯片。设计的主控系统原理图如图2所示。

ATMEGA328P-PU的内核具有丰富的指令集, 32×8通用工作寄存器可保存大量的操作数据和运算结果;32K字节的系统自可编程Flash程序内存可写入大量控制光立方的功能代码;高达1 MIPS/MHz的吞吐率解决TM1816串入并出效率问题;两个8位定时器/计数器, 一个16位的定时器/计数器, 可用来实现串口中断和扩展外部中断;6通道的PWM输出可对全局LED进行无级亮度调节;6通道10位ADC输入可用于扩展AD功能接口等。工作时, 主控系统产生层扫描信号, 通过译码器译码控制阳极驱动芯片STM4953的输出, 实现逐层扫描[7], 结合阴极驱动电路中锁存数据的输出, 点亮相应的LED, 实现三围显示功能。

3.3 驱动电路

8*8*8三维LED点阵采用阳极驱动电路放大电流和阴极驱动电路恒流输出驱动。阳极驱动电路接共阳层, 起层选通开关作用;阴极驱动电路接共阴束, 起束选通开关和全局LED亮度控制作用。

(1) 阳极驱动电路

三维LED点阵采用逐层扫描的工作方式, 8个共阳层使用典型的平面点阵驱动芯片STM4953驱动, 驱动电路如图3所示。为了减少占用单片机的I/O接口数量, STM4953通过译码器74HC138与主控系统相接。STM4953控制端为低电平有效, 且74HC138输出为低电平, 为了避免不确定信号导致STM4953误导通, 增强系统的坑干扰能力, 在译码器输出端接上拉电阻, 把不确定信号通过电阻钳位在高电平。工作时, 由主控系统输出层控制扫描信号, 经74HC138译码器译码后选通或者关闭STM4953输出, 实现对三维LED点阵逐层扫描。

(2) 阴极驱动电路

三维LED点阵的64列共阴束使用4片16位恒流驱动IC-TM1816驱动, 驱动电路如图4所示。选用TM1816, 首先是其拥有16个驱动能力较强的恒流输出端口, 每个输出端可口提供3~45m A恒定电流量以驱动对应列的8个LED, 并且当环境发生变化时, 对其输出电流影响很小, 用4片即可驱动64列共阴束, 从硬件上提高了三维LED点阵显示的均匀性和一致性;其次, 串行输入并行输出[5]以及联级功能可以大大减小占用主控系统I/O数量, 同时降低了编程的复杂性;此外各个输出端口的电流大小可调, 可实现对三维LED点阵整体亮度调整, 使显示效果更加丰富。

工作时, 由主控系统产生时钟脉冲, 发送串行数据, 并控制数据锁存和使能输出。在CLK上升沿期间, 数据端串入的数据被发送到移位寄存器中, 即每当来一个上升沿, 从TM1816的SDI引脚送入一位数据或者SDO引脚输出一位数据, 如果需要发送16位的数据则需要16个CLK上升沿才能将16位数据全部输入或移出移位寄存器。当控制三维LED点阵阴极的所有数据全部输入到移位寄存器后, 数据锁存控制端被至为高电平, 串行数据全部输入锁存器后至为低电平。需要输出时, 输出使能控制端至为低电平即启动输出端输出。与此同时, 用PWM控制三极管使R-EXT引脚对地导通, 能集中控制各个输出引脚的电流大小, 实现对LED亮度进行无级调节。

4 软件设计

采用层扫描工作方式, 整个显示过程, 主控单片机不断发送数据、不断扫描, 每次发送数据只能点亮一层, 扫描完8层为一个周期。上位机只需根据主控系统控制三维LED点阵显示所需的格式[8], 编写文字或图像数据信息, 通过串行口发送给主控系统。

控制程序设计分为两大模块:与上位机通讯部分和驱动显示部分[9,10,11]:

与上位机通讯部分主要是利用主控单片机中断服务通过串口接收上位机发送的文字或图像等数据信息, 实现与上位机的实时数据信息传输, 并对接收数据信息进行处理, 本设计设计串口通讯波特率为57600;驱动显示部分主要是从显示缓冲区读取要显示的文字或图像等数据信息, 运算处理后发送给驱动电路, 并控制驱动电路输出实现显示功能。

程序流程图如图5所示

程序控制流程:

(1) 主程序:对堆栈、串口进行初始化, 然后循环调用驱动显示子程序、响应串行接收或发送中断指令;

(2) 中断服务程序:从串口接收上位机发送的数据信息处理后存至显示数据缓冲区, 实现与上位机实时数据信息传输;

(3) 驱动显示子程序:不断读取显示缓冲区的数据信息, 运算处理后, 串行输出列选通信号至阴极驱动电路控制输出, 配合层动态扫描信号, 实现显示数据输出。

5 实验验证

实验分别使用STC12系列单片机12C5A60S2和Arduino USB接口系列的最新版Arduino UNO R3作为上位机, 12C5A60S2单片机使用Keil u Vision4编程, Arduino UNO R3使用Arduino IDE编程, 设置串口通讯波特率为57600, 根据下位机控制三维LED点阵显示所需的格式, 编写文字或图像数据信息, 通过串行口与主控系统连接通讯。

显示效果如图6所示

实验结果表明:该方案有效可行, 主控系统不挑上位机类型, 只需上位机能与主控系统实现串口通讯, 设置相同的串口通讯波特率, 发送有效的文字或图像数据信息, 即可控制8*8*8三维LED点阵实现显示。

6 结束语

三维点阵是未来显示的发展方向, 根据三维LED点阵显示模块进行文字或图案显示的功能需求, 利用单片机构成主控系统添加外部扩展接口, 结合上位机通讯, 可实现一个较为完善的综合信息显示平台。设计选择使用上位机控制, 意在将“光立方”设计成为单纯的三维显示屏, 为将来进一步研究标准三维显示器的制作及控制提供一定的参考。对单色8*8*8三维LED点阵的研究, 对于灰度不同的真彩色或分辨率要求更大的三维LED点阵设计, 有待于进一步的研究设计。

参考文献

[1]徐振方, 孟艳花, 王艳.基于AVR单片机的LED显示屏控制系统的研究[J].照明工程学报, 2010, 21 (2) :77-80.

[2]王浩然, 秦会斌.LED点阵屏显示单元的设计与驱动控制[J].电子器件, 2010, 33 (5) :550-552.

[3]梁铭林.LED显示技术的应用[J].2010, (3) :42-45.

[4]刘小平, 李志远.单片机版光立方的制作[J].无线电, 2012, (10) :70-74.

[5]官微宏.3D8S的设计理念与开发心得——基于Arduino的×8×8光立方[J].无线电, 2012, (10) :66-69.

[6]邹清平, 卢森幸.一种基于ATmega32控制的MP3播放器的设计与实现[J].2012, (24) :118-118.

[7]康志强, 汪佳, 汤勇明.基于FPGA的3D光立方设计[J].电子器件, 2012, 6 (35) :683-686.

[8]杜洋.制作CUBE8光立方[J].无线电, 2011, (7) :20-25.

[9]杜洋.CUBE8光立方的图形DIY[J].无线电, 2012, (12) :34-38.

[10]刘小平, 李志远.按键操控的LED点阵动画编辑器[J].无线电, 2013, (2) :42-44.

8点阵LED 篇4

摘要:单片机作为LED主控制模块,利用简单的外围电路来驱动64×16的点阵LED显示屏。利用多个系列高速单片机本身强大的功能,可以很方便的实现单片机与PC机间的数据传输及存储,并能利用软件方便的进行显示内容的多样变化,点阵显示屏广泛的应用于医院、机场、银行等公共场所,所以LED显示屏具有很强的现实应用性。

关键词:动态显示;单片机;点阵字库

中图分类号:TN312.8;TP368.1文献标识码:A文章编号:1674-7712(2014)08-0000-01

LED(Light Emitting Diode),发光二极管,简称LED,是一种能够将电能转化为可见光的固态的半导体器件,它可以直接把电转化为光。LED的心脏是一个半导体的晶片,晶片的一端附在一个支架上,一端是负极,另一端连接电源的正极使整个晶片被环氧树脂封装起来。半导体晶片由两部分组成,一部分是P型半导体,在它里面空穴占主导地位,另一端是N型半导体,在这边主要是电子。但这两种半导体连接起来的时候,它们之间就形成一个“P-N结”。当电流通过导线作用于这个晶片的时候,电子就会被推向P区,在P区里电子跟空穴复合,然后就会以光子的形式发出能量,这就是LED发光的原理。多个LED发光灯组成固定的字符或图形进行显示,即形成LED点阵图文显示屏。其主要特征是只控制LED点阵中各发光器件的通断(发光或熄灭),而不控制LED的发光强弱。LED点阵的汉字显示方式是先根据所需要的汉字提取汉字点阵(如16×16点阵),将点阵文件存入ROM,形成新的汉字编码;而在使用时则需要先根据新的汉字编码组成语句,再由MCU根据新编码提取相应的点阵进行汉字显示。

一、LED电子显示屏概况

LED电子显示屏是由几百到几十万个半导体发光二极管构成的像素点,按矩阵均匀排列组成。利用不同的半导体材料可以制造不同色彩的LED像素点。目前应用最广的是红色、绿色、黄色。而蓝色和纯绿色LED的开发已经达到了实用阶段。LED显示屏是一种通过控制半导体发光二极管的亮度的方式,来显示文字、图形、图像、动画、行情、视频、录像信号等各种信息的显示屏幕。

LED显示屏分为图文显示屏和条幅显示屏,均由LED矩阵块组成。图文显示屏可与计算机同步显示汉字、英文文本和图形,而条幅显示屏则适用于小容量的字符信息显示。LED显示屏因为其像素单元是主动发光的,具有亮度高,视角广、工作电压低、功耗小、寿命长、耐冲击和性能稳定等优点。因而被广泛应用于车站、码头、机场、商场、医院、宾馆、银行、证券市场、建筑市场、拍卖行、工业企业管理和其它公共场所。LED显示屏的发展前景极为广阔,目前正朝着更高亮度、更高气候耐受性、更高的发光密度、更高的发光均匀性,可靠性、全色化方向发展。

二、点阵式LED汉字广告屏显示原理及单片机应用

点阵式LED汉字广告屏绝大部分是采用动态扫描显示方式,这种显示方式巧妙地利用了人眼的视觉暂留特性。将连续的几帧画面高速的循环显示,只要帧速率高于24帧/秒,人眼看起来就是一个完整的,相对静止的画面。最典型的例子就是电影放映机。在电子领域中,因为这种动态扫描显示方式极大的缩减了发光单元的信号线数量,因此在LED显示技术中被广泛使用。以8×8点阵模块为例,说明一下其使用方法及控制过程。广告牌设计过程中使用的红色水平线Y0、Y1„„Y7叫做行线,接内部发光二极管的阳极,每一行8个LED的阳极都接在本行的行线上。相邻两行线间绝缘。同样,蓝色竖直线X0、X1„„X7叫做列线,接内部每列8个LED的阴极,相邻两列线间绝缘。

在这种形式的LED点阵模块中,若在某行线上施加高电平(用“1”表示),在某列线上施加低电平(用“0”表示)。则行线和列线的交叉点处的LED就会有电流流过而发光。比如,Y7为1,X0为0,则右下角的LED点亮。再如Y0为1,X0到X7均为0,则最上面一行8个LED全点亮。随着广告屏显示内容的多媒体化,对控制器传输速度,运算能力的要求越来越高。因此控制器的种类也在不断发展以适应要求,从最初的8051单片机,到PIC单片机,又到FPGA,直到现在的ARM处理器。不同功能档次的广告屏对应着不同的处理器。

单片机运算速度及通信速率的限制,LED动态显示的刷新率不可能做得太高。对显示效果和移动算法的处理也比较吃力,在实际显示效果上有比较明显的闪烁感。除此之外,传统8051单片机的内部资源贫乏,仅128字节的数据存储器,几K字节的程序存储器,无E2PROM,SPI。这就需要对单片机扩展外设,无疑增加了硬件成本。因此,8051控制的条屏只能用于显示内容及其简单,不需要经常更改显示内容的场合。

因为PIC单片机是RISC架构的工业专用单片机,处理指令的速度有所增加,抗干扰能力优秀,型号种类繁多。作为条屏的控制器,可以明显的改善显示效果,同时PIC单片机内部的资源较丰富,可节省外部电路设计难度,同时降低了硬件成本。因此,以PIC单片机为控制器的条屏目前仍是单色条屏市场的主流。

参考文献:

双色LED点阵显示系统 篇5

LED电子显示屏是20世纪80年代后期迅速发展起来的新型信息显示媒体, 以易于维护、色彩丰富、亮度高、使用寿命长、易于操作等优点, 逐步成为现在信息发布的一个主流载体。

本文研究的是双色LED点阵显示系统, 该系统是由单片机控制, 以74HC154作为行驱动、74HC595作为列驱动16×32双色点阵屏, 通过软件控制可以以各种方式显示数字、汉字、图片。采用串口下载, 可以根据要求级联成更大的屏、安装简单方便。

1 系统整体设计概述

本显示屏由STC12C5A32S2单片机为核心, PC机通过RS-232串口把程序下载到单片机, 单片机读到要显示的字模, 对驱动电路发出控制命令, 控制LED点阵屏对应的行和列, 在LED点阵屏上显示相应的汉字。系统原理框图如图1所示。

2 系统硬件电路设计

系统硬件主要划分为两大部分:单片机控制部分、点阵屏接口。

2.1 单片机控制部分

单片机控制部分只需一个单片机最小系统, 本设计选用的是STC12C5A32S2单片机, 它的执行速度比普通的单片机快很多, 价格也相对便宜, 大家也比较熟悉。

2.2 LED点阵屏接口电路

图2为本实验所用的双色8×8点阵 (共阴) LED显示屏, LED显示屏的行与列电极相互垂直, 在交叉点形成发光单元LED, 每个点有红绿两种灯珠, 点阵的驱动一般采取逐行扫描方式, 行电极轮流将低电位接通各行线, 使连接到各该行的全部LED的阴极接通低电平, 但具体哪一个LED导通, 还要看它的阳极是否接通, 由列来控制。显示什么颜色取决于列选为红色数据线还是绿色数据线。

本论文的双色点阵屏是由8块图2所示的8×8点阵构成, 有16行32列, 为了有效的利用单片机资源, 行驱动电路由1片74HC154组成, 由单片机P1口输出4bit二进制信号, 经1个4/16移码器74HC154, 生成点阵16条行选通信号线, 行选通低电平有效, 每次从第一行扫描到第16行, 每16行为一个扫描周期。行驱动电路如图3所示, 由于单片机的TTL输出口的驱动能力非常有限, 所以增加了4953作为行驱动管来驱动LED显示屏的行信号。

列驱动采用74HC595, 内含三态输出锁存器和内含移位寄存器, 可以把串行输入的数据并行输出。用8个74HC595分别锁存红色、绿色列线数据。

单片机2路控制信号与所有595的时钟输入SRCLK, 锁存信号RCLK相连, 第n片595的串行输出接到第n+1片595的串行输入端, 通过这种级联的方式连接, 同时每个595芯片并行输出。列驱动电路如图4所示:

3 系统软件设计

本设计中给出一种静态显示汉字的编程思路。先提取汉字的字模, 该汉字大小为16×16, 所以提取的字模为32个字节, 然后根据字模逐行送字模, 本论文采用1/16扫描方式。如果想显示不同的汉字或图像, 只要改变字模即可。例如要显示“点”这个汉字, 它的字模如下:

显示子程序是按照芯片的串行输入所要求的时序, 将所要输出汉字的字模一位一位的串行送到595的芯片中, 在芯片的输出端就可以得到并行数据输出。本论文点阵屏大小为16×32, 所以点亮每行时, 要串行传送四个字节。如果要将汉字显示为红色, 则关闭绿色, 字模发送到到红色数据线;反之显示绿色, 则关闭红色控制, 字模发送到传送到绿色数据线;如果红绿都亮则显示复合色橙色。串行发送子程序如下:

4 系统调试

编写程序, 使其在LED屏上显示“点阵”两个字, 一个红色、一个绿色。通电下载程序测试, 字体显示正确, 颜色显示正常。

5 结束语

本文设计的16×32双色点阵屏显示系统基本涵盖了LED显示屏的电路基本原理和基本程序, 不但可用于实验教学, 也可用于科研和实践;把软件的功能加以修改和扩充, 可显示更多样的画面。而且可以作为子模块进行不断级联、设计出符合要求的、更大的显示屏。应用面非常广, 具有极大的推广价值。

摘要:本文设计的是双色LED点阵显示系统, 该系统采用STC12C5A32S2单片机为主控模块, 以74HC154作为行驱动、74HC595作为列驱动16×32双色点阵屏, 通过软件控制能够很好的显示汉字和图形, 充分展示了LED显示的基本原理, 而且根据要求可以级联成更大的屏, 具有很好的推广价值。

关键词:LED点阵,串行输入,单片机,级联

参考文献

[1]李建忠.单片机原理及应用[M].西安:西安电子科技大学出版社, 2002.

[2]刘全忠.电子技术[M].北京:高等教育出版社, 1999.

[3]杨素行.模拟电子技术基础简明教程[M].2版.北京:高等教育出版社, 1998.

8点阵LED 篇6

随着电子信息技术的飞速发展,LED点阵显示屏已成为当今社会一种常见的信息发布平台。LED点阵显示系统因其功耗低、亮度高、显示效果醒目、性能稳定、使用寿命长、易小型化、方便拼装等一系列优点,近几年来得到了迅猛的发展并获得广泛的应用。从机场、车站、码头到银行、邮局、商场、体育馆等各种需要发布信息的公共场所,甚至街头巷尾各种大大小小的门面招牌,几乎到处可见LED点阵显示屏的身影。

1 预备知识

LED即发光二极管,它是一种电致发光的半导体电子元件,其发光原理是PN结正向导通时电子与空穴复合幅射出可见光,可作为显示器件使用。LED点阵显示屏是由很多个LED构成,一个8×8LED点阵显示模块是由64只LED按照8行8列的阵列方式组成,同一行上的LED共阴极,同一列上LED共阳极,从而引出8根行线8根列线。将若干个8×8 LED点阵显示模块拼装在一起,把同一行的行线连在一起,再把同一列的列线连在一起,就可以组成规模更大的点阵显示屏。通过编程控制点亮其中某些LED、熄灭其余的LED,点亮的LED就可以显示各种字符、数字和汉字,甚或图形图像。

2 设计背景

当LED点阵显示屏扩大规模时,其行列线必然很多,如果直接与单片机I/O口相连,将导致I/O口不够用,加之由于单片机I/O口内部结构的原因,其输出电流较小,不足以直接驱动LED发光,故LED点阵显示屏不适合与单片机直接相连。

3 总体设计方案

本设计方案建立在单片机串行通信的基础上,通过移位寄存器级联的方式扩大显示屏的尺寸以达到增加显示内容的目的,仅占用少量I/O口,当显示屏进一步扩容时只需按类似的连接方法级联电路即可,并不增加I/O口的使用数量,为系统功能的进一步扩展预留了足够的空间。众所周知,除了4个并行I/O口以外,单片机还有一个功能强大、可编程控制的全双工串行口,用于和外设之间串行通信。串行通信的最大优点在于通信线路简单,节省I/O口线,从而降低通信线路成本,唯一缺点是通信速度不如并行通信方式快。该串行口有四种工作方式,尤以方式0最为简单,只需一根时钟信号线、一根数据线即可实现通信。当串行口工作在方式0时,为8位移位寄存器同步通信方式,通过外接移位寄存器,可达到扩展并行I/O口的目的。

4 硬件设计

(1) 主控制器的选择。在本设计方案中,主控制器采用Atmel公司的AT89S52单片机,它是一款低功耗、高性能的8位单片机,具有较高的性价比,其指令系统、引脚功能及片内硬件资源与MCS-51单片机产品完全兼容;片内含8KB Flash ROM和256字节的RAM,适于存放大量字模数据及数据处理的需要;关键是它所支持的ISP(在系统可编程)功能使得程序写入方便,无需专门的编程器,降低了系统开发的复杂度,节约了开发成本。 (2) 驱动及接口电路的设计。由于在本设计方案中要充分利用单片机的串行通信节约I/O口资源,并使串行口工作在方式0,以达到扩展I/O口的目的。此时需在串行口上外接移位寄存器,移位寄存器同时又作为驱动电路,驱动LED点阵显示器工作。此时,单片机的P3.0 (RXD)引脚作为数据输出端,接移位寄存器的串行数据输入端,P3.1 (TXD)引脚作为移位脉冲输出端,接移位寄存器的移位脉冲输入端。本设计中的移位寄存器采用74HC595,它是一款漏极开路输出的8位移位寄存器,输出端具有可控的三态输出锁存功能,不仅能实现串行输入并行输出功能,亦能串行输出到下一级级联芯片,其输出电流可达35mA,足以驱动LED发光。和其他具有相同逻辑功能的同类电路相比较,其主要优点是具有数据存储功能,在其内部数据移位的过程中可使输出端数据保持不变,这特别适用于串行通信速度较慢的场合,使LED不致发生闪烁现象。 (3) 显示电路及其与驱动电路的接口设计。在本设计方案中,以16×32 LED点阵显示器为例,将8块8×8 LED点阵显示模块按照上下各四块的方式拼装成16×32点阵显示屏,将同一行上的行线连在一起,引出16根行线;将同一列的列线连在一起,引出32根列线。利用四个74HC595控制LED点阵显示屏的32根列线,两个74HC595控制16根行线,并将它们依次级联起来,只将最前端的74HC595的串行数据输入端与单片机的P3.0 (RXD)引脚相连,将所有74HC595的移位脉冲输入端连在一起,与单片机的P3.1 (TXD)引脚相连,再将所有74HC595的锁存脉冲输入端连在一起,与单片机的P3.2引脚相连。 (4) 注意事项。考虑到串行通信时数据的传输是由低位到高位的顺序依次进行的,而移位寄存器74HC595的数位顺序与此相反(最先传送的最后移位到最高位上),因此要注意74HC595与LED点阵显示屏的行线和列线相连时要颠倒高低位的顺序,即用74HC595的高位(Q7)接行线(或列线)的低位,其余位依次类推。

5 软件设计

本系统的软件部分采用C51语言编程,按模块化结构设计,主要包括串行通信发送单字节数据函数、LED点阵显示器的逐行动态扫描显示函数和主函数。

显示函数可采用逐行或逐列方式动态扫描,扫描方式不同,字符的取模方式亦不同,应根据扫描方式采用与之对应的取模方式。

6 结语

本设计方案电路结构简单,充分利用单片机的串行通信,节约了I/O口资源,仅占用少量I/O口,为系统功能的进一步扩展预留了足够的空间,稍加改进即可作为一个实用的信息发布平台应用于实际生活和工作中。

摘要:本文以16×32LED点阵显示器为例介绍了一种基于单片机串行通信的点阵显示系统的设计与实现方法。该系统利用单片机的串行通信功能, 外接移位寄存器, 通过级联方式扩大显示屏的尺寸以达到增加显示内容的目的。点阵显示屏可采用逐行 (或逐列) 动态扫描。单片机选用价格低廉、程序写入方便的AT89S52, 使得整个系统维护方便。该系统电路结构简单, 仅占用少量I/O口, 为系统功能的进一步扩展预留了足够的空间, 稍加改进即可作为一个实用的信息发布平台应用于实际生活和工作中。

LED点阵屏控制卡的研制 篇7

LED点阵广告屏作为一款高性价比显示屏在户内外广告被广泛运用, 用于显示各种集汉字、字符和图片信息于一体的商业广告以及城市装饰;于是目前市场上有各种款式, 各种价格的点阵广告屏控制器, 并且有相当部分也做得很专业, 然其使用方便程度不高, 且建立在系统基础上开发, 编程开发相对复杂, 使用起来需要专门的学习说明书或培训, 所以要真正用起来, 需用专业的人员, 这对使用的销售人员来说是一个考验, 因此, 做一个图形化的、傻瓜式操作的、廉价的、易于推广的点阵屏的控制系统尤其重要。

2 控制卡系统整体概述

如图1所示, LED点阵屏控制卡由STM32处理器及外围Flash存储电路、与PC上位机串口通信电路和LED点阵屏驱动电路组成。独自采用VC编写PC上位机通信软件, 其软件包括字模提取, 动静态显示效果模拟, 时钟校准功能与串口数据传输功能。STM32处理器从串口RS232接收到数据后将数据存储至外部Flash芯片中, 再调入处理器片内RAM中运行, 通过驱动电路驱动LED点阵屏显示。

3 控制卡硬件设计

硬件设计核心部分主要分成两部分:Flash数据存储部分, 负责存储接收PC上位机数据, 防止由于断电数据流消失;串口通信部分, 负责下位机处理器与PC机的正常通信与数据流传输。

3.1 Flash数据存储部分

外部Flash存储器选用W25X16芯片, 通过SPI与STM32处理器通信;W25X16容量为16Mbit (2MB) , 足够用来存储PC上位机数据, 因为上位机数据主要由驱动控制指令数据与字模数据组成, 数据主体部分为字模。且本文介绍STM32F103RB内部RAM为20K, 其中部分要用来放置处理器片内程序的动态变量数据, 同一时刻用来调用外部Flash的大小大致为10K;而10K则能驱动40个08接口LED点阵屏的静态字模显示。

图2为Flash控制引脚图片, 这里利用STM32的SPI主机模式;SPI通信只占用4根线:SPI2_NSS从设备片选信号, 由主设备控制;SPI2_MISO主设备数据输入, 从设备数据输出;SPI2_MOSI主设备数据输出, 从设备数据输入;SPI2_SCK时钟信号, 由主设备控制。

从串口接收到数据后每次256Byte开始从W25X16零作为起始地址顺序写入, 即可看成每帖写入数据为256Byte, 每次中断进入写完256Byte后从串口输出0x FF作为接收并写入Flash成功标志信号, 上位机接收到标志信号后依次发下一帖数据, 并依次存储写入, 直至发送完成[4]。

3.2 串口通信部分

串口通信电路较为简单, 如图3所示, 只是通过MAX232芯片电平转换即可完成串口通信;该部分主要体现在串口中断程序上:一方面要实现在上位机数据流传输并写入至外部Flash中;另一方面实现处理器时钟校准信号, 于是在上位机做时钟信号校正处理时, 在此数据后面加上标志位, 如回车标识符号 (0x0D和0x0A) [4]。

3.3 控制卡硬件核心代码

本下位机LED点阵屏程序显示代码的核心二字为“步骤”。我们知道08接口是用于十六分之一扫的点阵屏, 该接口是一行一行推送数据的, 因此比其他接口扫描点阵屏更为简单。我们就以一块08接口点阵屏为例, 该点阵屏是32*64, 因此同时扫描第一和第十七行, 我们需要扫描16次, 所以称之为十六分之一扫。

我们重点分析特效部分。我们将特效部分分为显示部分和动画部分, 显示部分即点阵屏扫描显示亮点形成图像, 而动画部分是将图像变成一帧帧的动画。

我们来讲一个分区函数, 全部特效都是围绕着该函数进行的。这里分几个步骤, 初始化变量, 调用特效函数, 判断时间, 重新更新时钟。首先初始化变量就不用说了, 这是必备的。调用特效函数就是这部分的核心, 而n_screen_module在这里是用来判断点阵屏的接口, 因为不同的扫描方式, 全局变量传递给特效函数行列位置也不一样。判断时间也是很重要的, 每个特效都会有不同的时间, 其中时间分为每帧动画时间, 字模显示时间, 特效切换时间等。

4 PC上位机软件

PC上位机软件采用MFC构架, 如图4所示, 简约易用, 与下位控制板卡配套使用。且有多种显示效果, 增加灵活性和多样性, 兼容多种字库, 兼容不同规格组合LED屏幕, 简单图形化人机交换界面, 面对非专业用户群体能轻松掌握使用, 减低使用门槛, 且操作步骤方便。

以下是部分代码:

On Paint () 函数主要用来实现静态效果的显示, 当屏幕显示变化时, 都会调用此函数。但只用这个函数有个缺点, 就是切换屏幕后就会再次调用这个函数。 (不断更新) 这时, 不能很好实现动态效果的播放。因此, 需要用到另外一个绘图函数, On Draw () 函数[3,4,5]。

4.1 视图分割技术

上位机软件采用视图分割技术, 实现对话框与视图界面数据的同步交换, 从而使操作更方便, 且显示效果更加美观。采用分割技术, 数据不能正常交换;在此, 则应当有一个交通中枢, 将其各部分相联系在一起, 而主类就有此功能。然其不足之处是数据的交换通过“全局变量”来实现而造成数据量庞大、容易混淆的缺点。为了达到操作与显示的同步, 还用到关联、自定义消息函数等技术。

自定义消息函数的作用比较明显的, 能够在某种意义上达到自动更新的作用, 实现非人手操作的更新, 显得更加智能化。

4.2 双缓冲技术

上位机的动态效果显示采用双缓冲技术。最初由于界面的不断更换, 促使屏幕闪烁。

最后变换的数据整理到一起, 大大减少变化的范围。在实现动静态效果时, 需要将窗口显示函数断开, 使On Paint与On Draw;函数分别实现静动态效果的显示。在实现动态效果时, 由于屏幕大小, 字体大小等的不断变化, 在此分配了一个特殊的绘图区域 (裁剪区域cliooing region) , 使显示能容只能在该区域内显示。

4.3 取模转换

上位机能够调用多种类型字库, 且字模没有以图片的形式获取, 而采用动态获取输入的字模的方法, 即能减少字模的数据量。由于字库的种类繁多, 在某些字库的调用上需要特殊处理。例如对24*24字体字获取上作适当的调整!其他规格的大小, 例如16*16, 32*32等, 无论字符还是字体的最小单位都是字节数, 而24*24就不一样, 它的字符 (例如‘0’等) 只是12位, 对此采用平移方式处理。

4.4 时钟校准

上位机时钟与计算器时钟的时间同步, 改变计算器上的时间, 上位机时钟的时间也随之变化, 还可以通过校准来改变下位机的时间。

4.5 串口传输数据转换

上位机采用的多个Active X控件进行数据传输。它的一个好处是, 采用这种控件就不需要再自行开发这种控件了。这种控件有个特点, 只能在对话框上使用, 因此, 在视图类上就造成了一定的使用限制。

5 结语

实验证明:以STM32为处理器, 通过上位机软件, 能有效地完成系统各种接口任务, 使系统具有体积小, 功耗小, 高性价比等特点, 并且不出现闪烁抖动现象。但在输入字符的数量和支持的驱动点阵数量还受到一定限制, 但可以满足低端广告市场。

参考文献

[1]王浩然, 秦会斌.LED点阵显示单元的设计与驱动控制[J].电子器件, 2010, 33 (5) :550-552.

[2]汪清明.LED点阵显示牌的设计与动态显示控制[J].微计算机信息, 2001, 17 (8) :64-67.

[3]孙鑫, 余安萍.VC++深入详解[M].北京电子工业出版社, 2006.

[4]刘军.例说STM32[M].北京:北京航空航天大学出版社, 2011, 73-75, 97-105, 558-238.

[5]郑莉, 董渊, 何江舟.C++语言程序设计[M].北京:清华大学出版社, 2011.

[6]STM32F系列ARM Cortex-M3核微控制器开发与应用[M].北京:清华大学出版社, 2011, 79-114.

[7]芮晓飞, 朱维涛.LED屏幕点阵字符显示系统应用研究[J].仪器仪表学报, 2004, 25 (4) :453-456.

8点阵LED 篇8

随着社会的不断进步与发展, 人们在获取信息的同时对信息获取的方法和传输方式有了更高的要求。LED显示屏是八十年代后期在全球迅速发展起来的新型信息显示媒体, 它利用发光二极管构成的点阵模块或像素单元组成平板显示屏幕, 以可靠性高、使用寿命长、环境适应能力强、性能价格比高、使用成本低等特点, 在信息显示领域得到了广泛的应用。

本文介绍一种由单片机构成的LED显示屏, 该显示屏可通过PC机的USB界面将数据传送到C8051F340的XRAM中, 再由单片机通过无线发送到点阵显示屏系统显示所需的图形文字。

2 系统基本原理

系统采用VC++6.0编写上位机程序, 对字模进行提取、编码及转化, 通过USB发送子程序将点阵代码发送到下位机中, 再由下位机通过无线传输发送到接收子机C8051f340的XRAM中, C8051f340通过驱动电路将汉字信息在点阵屏上显示出来。系统组成框图如图1所示:

3 上位机软件设计

本文讨论的上位机软件是在Microsoft Visual C++6.0环境下的制作的。主要针对LED点阵显示屏中字模的提取、显示方式和显示速度的设置。字模是提取由双字节上位机整体界面如图2:

汉字点阵的编码以UCDOS中文宋体字库为例, 每个汉字由16行16列的点阵组成, 即国标汉字库中的每一个字均由256个点阵来表示。中文操作软件 (UCDOS) 中包含16×16点阵汉字字库文件。

在字库中寻找需要的汉字字模首先要计算区位码设汉字机内码的两个字节为H HLL, 区码q h, 位码为w h, 则有:

qh=HH-0xa0;

wh=LL-0xa0;

再计算汉字点阵数据存储位置偏移量。偏移量是指字模首字节距离文件头的相对位置, 其计算原理是求出被检索汉字之前的汉字个数再乘每个汉字所占的字节数。1个n×n点阵字符所占字节数等于n×n÷8, 如16×16点阵占32个字节。

offset= (94× (qh1) + (wh1) ) ×32

最后移动文件指针读出点阵字模数据。打开点阵字库文件, 将文件指针从文件头向后移动offset个字节, 然后使用文件读取函数读出字模。如使用WindowsAPI函数:

int fseek (FILE*stream, long offset, in t fromwhere) ;

函数设置文件指针stream的位置。如果执行成功, stream将指向以fromwhere (偏移起始位置:文件头0, 当前位置1, 文件尾2) 为基准, 偏移offset (指针偏移量) 个字节的位置。如果执行失败 (比如offset超过文件自身大小) , 则不改变stream指向的位置。

int fread (void*ptr, int size, int nitem s, FILE*stream) ;

用于接收数据的地址 (指针) (ptr)

单个元素的大小 (size) :单位是字节而不是位, 例如读取一个整数值就是4

元素个数 (nitems)

提供数据的文件指针 (stream)

返回值:成功读取的元素个数

4 USB模块

现在上位机多数采用串口方式把数据发送到下位机。本文讨论的的上位机通过US B传输到下位机。USB协议层反映了USB主机与USB设备进行交互的语言结构和规则。

C8051F340集成了一个完整的全速/低速USB功能控制器, 用于实现USB外部设备。但这些设备却不能被用作USB主设备。U SB功能控制器由串行界面引擎 (SIE) 、USB收发器 (包括匹配电阻和可配置上拉电阻) 、1K B FIFO存储器和时钟恢复电路 (可以不用晶体) 组成, 不需要外部元件。USB功能控制器和收发器符合通用串行总线规范2.0版。以上C8051F340的一些特性使得使用USB传输得以方便的使用。

在开发C8051F340的USB传输时可以先在新华龙电子有限公司官网上下载安装AN200SW的USB开发包。在其卡发包中Demo.t xt文件中讲述了USB开发过程。其中要求先下载USBXpress_InstallXP.exe的安装包。US BXpress开发包涵盖了主机端和设备端的所有函数功能安装好后会产生下位机和上位机开发的头文件USB_API.h和SiUSBXp.h的上位机头文件。遵循Demo.txt顺序安装好USB后的预安装默认VID=0x10C4, PID=0x EA61。下位机USB代码如下:

USB_VID, 16位二进制卖主ID号, 一般用SILICONLab的ID号 (OXl0C4) 。

USB_PID, 16位二进制产品ID号, 一般USBXpress规定为OXEA61。

USB_MfrStr, BYTE型指针, 指向描述厂商的字符串, 不能为空。

USB_ProductStr, BYTE型指针, 指向描述产品的字符串, 不能为空。

USB_SerialStr, BYTE型指针, 指向描述序列号的字符串, 不能为空。

USB_MaxPower, BYTE型, 说明总线最大电流, 极限为500 mA。若取值0x32, 则表示最大电流为100 mA。

USB_PwAttributes, BYTE型, 用于供电配置。如果设备自己供电第6位置“1”, 若为总线供电则为“O”。如果设备提供弱上拉作用, 第5位置“l”, 位0~4必须为“O”, 位7必须为“1”。

USB_bcdDEVICE, 无符号int型, 用BCD码表示设备的版本号, 如2.13版为Ox0213。

5 USB中断函数如下

在VC++6.O编译环境下开发主机端的USB通信应用程序, 需要注意在编译之前向工程中添加开发包提供的SiUSBXp.dll、SiUSBXp.h和SiUSBXp.lib档。

上位机主要API函数调用

SI_Open (DWORD dwDevice, H A NDLE*cyHandle) ;//打开USB

SI_Write (HANDLE cyHandle, LPVOID lpBuffer, DWORD dwBytesToWrite, LPDW ORD lpdwBytesWritten, OVERLAPPED*o=NULL) ;//将数据传输到下位机

SI_Close (HANDLE cyHandle) ;//关闭USB

6 无线传输设计

本设计的无线传输采用RFM12。RF1M2是一款低成本高集成的FSK收发一体IC, 其内部集成了所有的RF功能模块电路, 外围只须一个MCU, 一个晶振, 一个旁路电容和一个外置天线就可组成一个带有PLL技术的高可靠性的收发系统, 具有设计简单, 生产无需调试的特点。可工作在315/433/868/915MHZ四个频段。两个RF12即可组成一个完整的双向收发系统。在无需外加功放电路的情况下, 距离可达到200米以上。

RF12还集成了一个数字界面, 轻易实现由MCU通过软件设置, 就可精确调整各种射频参数 (如中心频点, 接收带宽等) 。而无需调整硬件电路, 可轻易实现跳频功能。

显示屏的无线接收下位机发射的数据信息, 经过相应的校验实现数据的正确传输。无线传输流程图如图2-1。

7 显示屏的驱动

点阵显示模块主要由点阵显示面板和点阵驱动板组成。采用两片74HC595为列驱动, 两片74hc138+S8550作为行扫描。并设有级联端口, 将多个模块级联, 可方便的组成典型的16*64、16*128点阵显示屏 (图3, 图4) 。

接收到的字模存储在XRAM中

uchar xdata BUFF_Sotr[128][32];//用于存储无线发送过来的字模

该显示是动态刷新16行点阵

8 小结

本文介绍了字模提取、USB通信、无线传输和点阵屏驱动的电路设计和设备端的驱动设计, 简单说明了查c8051f340单片机自带通用串行总线控制器的卡发过程。所有设计思路和方法都通过了实验验证, 可以直接用于工程项目开发。

参考文献

[1]张呈祥.汉字字模提取技术[J].电脑知识与技术, 2007年19期.

[2]陈启美, 吴琨, 丁传锁, 陈锁柱.USB协议层[J].电力自动化设备, 2001年第5期.

[3]刘丽娟, 莫远国, 李尧.无线传输中一种基于节能的多位纠错算法[J].传感器与微系统, 2010年第29卷第6期.

[4]隆声.前程似锦的无线射频识别技术[J].现代通信, 2004年10期.

8点阵LED 篇9

1 设计要求和分析

显示单元是单片机常见的控制功能, 凡是遇到显示输出时都会用到显示单元, 如数码管的显示、液晶的显示、点阵的显示等。为了提高单片机输入输出端口的效率, 一般显示单元都使用动态显示技术。如果要实现8*8LED点阵屏的动态显示时, 其实现方法是将所有的数码管的a......g连接在一起, 接在单片机的某个输出端口上, 各个数码管的公共端作为片选信号接在单片机的另一个输出端口上。

2 硬件电路的设计

用8*8LED点阵屏循环显示字符JDGCXHYN (机电工程系欢迎您) , 原理图如 (图1) 所示。

单片机模块AT89C51的工作电源电压为5V;PROTEUS中的AT89C51模块内部已经具备了12MHz, 所以仿真外围电路可以省略晶振。

如 (图1) 所示是根据这一思路做的8*8点阵屏动态显示JDGCXHYN的电路原理图。图中数码管的a......g共同连接到了8051的P0.0-P0.7, 数码管的公共端分别接到P3.0-P3.7, 电阻器R1和电容器C1构成了简单的上电复位电路。

在动态扫描显示方式中, 显示的亮度同LED点亮导通时的电流大小, 每一位点亮的时间和扫描间隔时间三个因素有关。

3 Proteus中绘制仿真电路原理图

首先放置单片机模块AT89C51。

(1) 单击"元器件"工具栏上的"Place MCU"按钮, 在关键词栏输入AT89C51, 在"元件"栏中选择AT89C51。

(2) 鼠标处出现一个AT89C51, 在绘图区单击鼠标, 便放置了一个AT89C51, 同时打开MCU向导对话框。在其中输入工作区的路径和名称, 单击"下一步"。

(3) 弹出MCU向导第二步, 在"Progranning language"栏中选择编程语言, 选择C语言, "Assembler/conplier tool"栏中会出现"Hi-Tech C51-Lite complier";在"项目名称"栏中输入项目名称, 单击"下一步"按钮。

(4) 弹出MCU向导第三步, 可以选择Add Source file (添加源文件) , 可在其下面的文本框中输入源文件名, 默认为"main.asm"。点击"完成"按钮结束放置。

然后再放置其他元件, 连线, 完成原理图的绘制。

4 编写C源程序, 输入源程序

参考文献

[1]覃奈新主编.单片机应用技术.电子工业出版社, 2008.

[2]李良荣主编.现代电子设计技术.机械工业出版社, 2005.

[3]Proteus仿真51单片机-数码管动态显示.edtdz网.

[4]Proteus功能模块简介与应用.smt信息网.

【8点阵LED】推荐阅读:

16*16LED点阵07-30

汉字点阵显示06-10

上一篇:电视新闻及拍摄要义下一篇:中国青年手机使用调查论文

本站热搜

    相关推荐