配合驱动LED显示屏实现高速数据传输。应用软件处理文字信息,并与USB设备通信。本设计经测试能动态地显示文字信息。
1、引言
LED显示屏是由若干发光二极管排列组成的显示器件。它采用低电压扫描驱动,具有耗电省、使用寿命长、成本低、亮度高、视角大、可视距离远、规格品种多等优点,被广泛地应用于许多公共场合的提示、说明、广告等。
本设计包括硬件和软件。硬件包括LED显示屏的驱动和控制。驱动部分负责根据行列选通信号向指定的LED发光器件提供合适的驱动电流;控制部分采用集成USB2.0的微处理器CY7C68013A,实现USB通信和对行列移位寄存系统的控制。软件包括KeilC51环境下编写的固件程序、驱动程序和应用软件。固件程序控制硬件完成相应的功能;驱动程序提供了连接到计算机的硬件设备的软件接口;应用软件处理图文信息并与USB设备通信。本设计的结构框图如图1所示。
图1
点击此处查看全部新闻图片
2、硬件设计
2.1显示和驱动设计
本设计的LED显示屏如图1中64×16LED点阵显示屏所示,采用16块8×8模块,组成4个16×16点阵。每个16×16点阵显示一个汉字,因此LED显示屏可以显示4个汉字。
由于CY7C68013AI/O口的个数有限(5个8位I/O口),也考虑到今后方便扩展的需要,LED显示屏的行列驱动系统均选用8位串行输入转并行输出移位寄存器芯片74HC595.其优点是可以采用很少的I/O口控制尽量多的行或列,且可以克服直接采用I/O口控制或采用I/O口和译码器共同控制时难以克服的一些问题,如“鬼影”的消除。
由于I/O口的驱动能力有限,列驱动采用了PNP型晶体管。点亮每一个LED器件大约需要20mA驱动电流,为了满足同时点亮16个LED大约需要320mA的驱动电流,采用PNP型晶体管的发射极接电源,集电极接LED阳极,基极经限流电阻接74HC595输出端。这样利用晶体管的电流放大作用,74HC595的输出端仅需提供几毫安的驱动电流就可控制对应LED的亮灭了。部分驱动电路如图2所示。
图2
点击此处查看全部新闻图片
2.2控制设计
本设计的USB接口采用集成USB2.0的微处理器CY7C68013A,其优点是集成了USB2.0收发器、智能SIE、增强的8051微控制器和可编程的外围接口,数据传输率达到56MByte/s,可以硬件处理USB1.1和USB2.0协议,从而减少开发时间、确保USB的兼容性、提高硬件的集成度和可靠性.
CY7C68013A的外围电路主要包括供电(5V-3.3V转换)电路,串行I2C总线电路以及复位和唤醒电路.具体电路可参考文献。
LED显示屏的基本工作原理是动态扫描。动态扫描又分为行扫描和列扫描两种方式。本设计采用行扫描工作方式。
同一行8个8×8点阵模块的同名行控制引脚是接在一条线上的,共16条线,连接在行移位寄存系统上。同一列2个8×8点阵模块的同名列控制引脚也是接在一条线上的,共64条线,连接在列移位寄存系统上。行移位寄存系统由2片74HC595组成,列移位寄存系统由8片74HC595组成。
以行移位寄存系统为例:将第一片的DS(串行数据输入)端由一个CY7C68013A的I/O口控制;第一片和第二片74HC595的SH_CP(移位寄存器的时钟脉冲)、ST_CP(存储寄存器的时钟脉冲)和OE(输出使能端)端分别接在一起,各由一个I/O口控制;第一片的Q7(串行输出)端与第二片的DS连接;MR(芯片复位)端接高电平;O1-O7(并行数据输出)端分别与对应的LED行控制引脚相连接。
CY7C68013A在SH_CP端产生连续的16个时钟脉冲上升沿,将16位二进制数0x01依次送入两个移位寄存器中,并锁存在锁存器中,然后在ST_CP端产生1个时钟脉冲上升沿,将0x01并行输出到对应的16根行控制引脚线上,使得第一行LED阴极为低电平,其它行LED阴极均为高电平。此时将对应的字模送到列驱动系统,若该列的LED阳极为高电平,则对应的LED被点亮,若该列的LED阳极为低电平,则对应的LED为暗。依次选择第二至十六行,将对应的字模送到列驱动系统,点亮相应的LED.当显示完第十六行的字模后,又从第一行开始显示,这样LED显示屏就会显示相应的汉字。
按照这种工作方式,LED显示屏是一行一行点亮的,每次都只有一行亮,但由于人眼视觉暂留时间最长为1/16s,只要设计的扫描周期时间(从第一列到最后一列所花费的时间)小于1/16s,看到的还是全屏稳定的图像。
3、软件设计
3.1固件程序设计
固件程序是指运行在设备CPU中的程序。只有在该程序运行时,外设才能被称为具有给定功能的外部设备。固件程序在KeilC51环境下编写。
C51编译器包可以用在所有的8051系列处理器上,可以在WINDOWS32位命令行中执行.本设计的固件程序流程图如图3所示。
图3
点击此处查看全部新闻图片
硬件设备上电/复位后,工作分配器函数TD_Init()完成对微处理器的初始化,然后通过调用工作分配器函数TD_Poll()启动采样,判断是否有EP2OUT中断发生。若有中断发生,则进入中断处理函数INT_Ep2out(),将上位机通过USB总线传来的数据放在EP2OUTBUF中,根据这些数据依次驱动LED显示屏的行和列,更新LED显示。中断处理完毕后又回到启动采样阶段,重复判断是否有中断过程。若没有中断发生,则继续保持LED的显示,然后也回到启动采样阶段,重复判断是否有中断过程。
其中显示第i行字模的函数如下:
chooseraw_5950(i);//选择第i行
chooseline_5951(a,b);//第一个字对应第i行的字模
chooseline_5951(c,d);//第二个字对应第i行的字模
chooseline_5952(e,f);//第三个字对应第i行的字模
chooseline_5952(g,h);//第四个字对应第i行的字模
stcp0=0;stcp1=0;stcp2=0;
stcp0=1;stcp1=1;stcp2=1;//st_cp端产生一个脉冲上升沿,数据并行输出
delay_ms(3);//延时3ms
}
3.2驱动程序设计
采用DDK来开发驱动程序,DDK的编译工具build来进行驱动程序的编译,DriverStudio工具包中的SoftIce用来对驱动程序进行调试[5].
使用的例程包括:驱动程序入口例程、即插即用例程、分发例程、电源管理例程、卸载例程。
驱动程序的编写与固件中定义的USB传输方式等信息有关,在固件中,采用端点EP2作为OUT方向的批量传输端点,负责储存要发往外设的数据。
3.3应用软件设计
因为涉及到与USB通信的问题,所以本设计采用了动态链接库(DLL)和应用程序相结合的方式编写应用软件。动态链接库利用驱动程序建立起与底层硬件的通信,应用程序为用户提供一个直观的软件界面以方便操作。
应用程序可采用不同的算法,实现文字的滚动显示,如左移、右移、上翻、下翻等。
4、结束语
本设计的LED显示系统,采用USB总线通信,实现了文字的静态和动态显示,达到了设计要求。
采用USB接口与串口相比能提高数据传输的速率。
LED显示屏的行列驱动系统均选用串行输入转并行输出移位寄存器,使得扩展变得很方便。调用不同的文字库,本系统可以显示不同字体的汉字、数字、字母和符号,还可以显示自定义图片。
软件界面如图4所示。显示效果如图5所示。
图4图5
点击此处查看全部新闻图片
免责声明:凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。