点阵式led汉字广告屏的设计与制作毕业设计 - 图文 - 下载本文

而且价格昂贵,用在单色条屏的控制中颇感浪费。于是最佳选择为STC12C系列单片机,其最高时钟能到48MHz,且有较丰富的接口及存储器资源,价格极其低廉,零售价仅为9元/片。大幅降低了产品成本。

3.5 关于点阵数据的存储方式

目前使用最广泛的技术是,通过上位机软件将待显示的字符串转换为对应的点阵字模数据,通过烧写的方式将这些字模数据按一定的顺序编址后存储在E2PROM中。在条屏显示的过程中按规定的方式取出E2PROM中的字模数据进行处理。对于一个16×16点阵的汉字字模数据,需要连续32字节的E2PROM空间来存储。照此计算,若有256个需要显示的字符,则至少需要32B×256=8192字节(8KB)的E2PROM存储空间。通常的单片机内部没有集成这么大容量的E2PROM。因此这种方案,需要在单片机外部扩展大容量的E2PROM,增加硬件成本。上位机程序设计由于涉及到汉字取模,取模算法的难度较大。在多字下载的时候传输时间也较长。诸多弊端使本设计放弃了传统方案。而本设计创新使用了专用的点阵字库芯片,成本仅为8元,内含各种点阵规格的GB2312、ASCII等标准字库。专用字库芯片采用微型SO-8封装,使用高速同步串行SPI接口进行读写操作,节省了控制器的I/O。在本设计中,单片机内部的小容量E2PROM,用于存储待显示汉字的GB2312标准机内码,每个全角字符的内码占2字节,则在同样需要显示256个汉字的情况下,这种方案仅占用512字节的E2PROM空间。

3.6 关于显示内容的更新

目前常用的下载方式有串口下载、USB下载、无线下载等。考虑到本设计的上、下位机进行一次通信时的数据量不大(2KB以内),而且对通信的速度及可靠性要求并不严格。因此本设计采用PC机串口来作为下载接口,PC机串口为RS-232C标准,其特点是共模传输,因此通信电缆可以是成本低廉的普通双绞线,同轴屏蔽线等。PC机串口的驱动程序编写较为简单,不需要掌握复杂的通信协议。

汉字点阵数据采用现成的字库芯片,需要通过汉字的机内码作地址来取出相应汉字的点阵字模数据。因此上位机软件的任务就是:将待显示的字符转换成对应的标准机内码,并把操作者对下位机显示方式、速度等进行设置的常数,通过RS232总线按一定的通信协议一起发送到下位机。

3.7 总体电路结构及工作原理

3.7.1 硬件电路框图

通过前面对各种方案的比较与分析,初步构建硬件系统框图如图3.1

图3.1 LED显示屏硬件框图

在图3.1中,X0、X1—Xn为显示单元。每个显示单元由一个16×16点阵的LED模块和一个16位宽的移位锁存器(串行—并行转换器)构成。所有显示单元的16根行线均连接到公共的行扫描驱动电路。而每个显示单元的列数据则由16位移位锁存器并行输出口提供。

中央微处理器MCU负责与所有外围设备的协调通信,以及各种算法的处理。MCU用通用I/O口来驱动行扫描驱动电路。用通用I/O口模拟同步串行接口以实现和列数据锁存器(移位锁存器)之间的单向通信。

MCU通过内部集成的SPI接口和字库芯片进行双向通信。PC机(上位机)的RS-232C电平经过转换后,通过UART接口与MCU进行双向通信。

电源则为各个模块提供稳定的电压以及足够的电流。

3.7.2 工作原理

单片机上电后就检测单片机P3.2脚(DownLoad)的电平,如果按住LED显示屏上的“DownLoad”键开机,则单片机P3.2脚被强制拉为低电平,显示屏被引导进入下载模式。这时单片机把UART异步串行口初始化为“方式一”工作,波特率为115200bps。之后不断检测从UART传入的数据,如果连续接收到的两字节数据与程序中约定的两字节数据帧同步码(0xA0,0xFA)相同。则判定下载命令合法,真正进入下载流程。设置两字节同步码是为了降低误码干扰的概率。

进入下载流程后,擦除连续从0x2600地址开始的5个E2PROM扇区,每个扇区512字节。然后连续接收上位机发出的7字节设置数据,并从E2PROM第一个扇区首地址0x2600开始依次存放。这样,第一个扇区就保存了上位机对下位机的所有设置数据,包括刷新率,移动速度,显示模式以及总共需要显示的字符数等等。

保存好以上7字节的设置数据后,紧接着连续地接收上位机发出的不大于2048个内码数据,并依次保存在第二个E2PROM扇区中。因为第二到第五扇区是连续编址的,所以第二扇区存满后会自动存放在第三扇区,以次类推。汉字内码的数据量由上位机确定。当单片机接收到下载结束符0x8F时,执行软件复位,强迫程序在AP区从头运行。这时若仍然按住“DownLoad”键,则再一次进入下载模式。

如果开机的时候不按下“DownLoad”键,则单片机程序被引导进入显示模式。进入显示模式后,首先把单片机的SPI接口初始化为“空闲低电平/上升沿驱动”模式,为读写字库芯片作准备。

在单片机内部的扩展数据存储器(xdata区)中开辟192字节(1536位)动态显示缓冲区Display_Buffer和32字节的字模数据缓存区Temp_Buffer,两个缓存区编址连续。Display_Buffer中的一位与LED的一个点阵一一对应。(详细对应关系见章节5.3.1——显示缓存技术与映射关系)经过这样的映射处理,使字符在显示中的移动算法变得简单灵活,不论进行何种显示效果处理,只需要对Display_Buffer进行操作。

遵循结构化的程序设计思路。把单片机的在显示模式的所有工作量分为以下三个任务: 一.扫描显示任务:扫描显示任务负责把Display_Buffer中的数据依次发送到列驱动器74HC595,并按严格的时序高电平选通十六根行扫描线(Y0—Y15),使每一列数据对应着一个行线状态。

二.移动处理任务:移动处理任务负责完成显示字符逐点阵向左移动的算法处理,这是最基本的显示效果。其它大部分显示效果如左移六字暂停,全屏定格显示等都是以逐位左移为基础。对显示字符的移动,实质上是对显示缓冲区Display_Buffer内数据的移动。 该算法是将Display_Buffer和Temp_Buffer中的数据首尾相接地左移一位,并不断把Temp_Buffer移入Display_Buffe。

三.字符更新任务:在单片机的xdata区开辟了32字节的字模数据缓存区Temp_Buffer。该缓存区与Display_Buffer编址连续。当调用字符更新任务时,程序从E2PROM内码区指定位置读取相邻两字节的汉字内码数据。并通过一定的算法,把内码数据变换为该内码对应汉字的字模数据在字库芯片中的地址。单片机通过SPI接口,向字库芯片发送读命令和地址,字库芯片返回连续32字节的全角汉字字模数据或16字节的ASCII半角字模数据。这些字模数据就存储在32字节的字模数据缓存区中。字模数据缓存区Temp_Buffer中的数据可通过调用移动处理任务而逐位转移至动态显示缓冲区Display_Buffer中。

三个任务彼此独立,又相互联系。下面用实际的C51程序来说明一下如何实现简单的左移显示效果。

void Dis_Mode_1(void)//左移显示效果 { unsigned char i,j,k; unsigned int n; unsigned int strings; while(1)//所有显示效果都是无限循环 { for(n=0;n< CNT;n+=2)// CNT是字符总数,每字符内码2字节,所以以2步进 { strings =EEPROM_read (ADDR_GB2312+n); //从EEPROM中读取内码高字节 strings<<=8; //左移8位以合成16位数据 strings +=EEPROM_read (ADDR_GB2312+n+1); //从EEPROM中读取内码低字节 k=Load_Next_Charctor(strings);//调用更新字符任务,半角返回8全角返回16 for(i=0;i

第4章 硬件电路设计

4.1 显示单元电路设计

为了提高点阵LED的视觉亮度,本设计用行线做扫描线,列线做数据线。每行的显示占空比为直流情况下的1/16。为了再进一步的提高视觉亮度,选用了红绿双色LED点阵模块YLM2388ASRG,每个点阵内部有红色,绿色两个发光体。两组发光管公用8根行线,列线独立。本设计将两组LED合成一组使用。

由于红光和绿光的光子能量不同,红色LED的发光门限电压要比绿光稍低,因此红绿LED不能简单并联使用。如果这样,绿色LED的端电压就会受红色LED的钳制而不发光。为此,在红绿色LED各自的阴极回路(列线回路)中串联了一个分压电阻,以削弱红色LED的电压钳制作用,使两组LED均能正常发光,根据色光的合成原理,红绿色加光混合后呈现黄色。

本设计显示单元以及行列驱动电路如图4.1

图4.1 16×16LED点阵 显示单元以及行列驱动电路