本文包含原理图、PCB、源代码、封装库、中英文PDF等资源
您需要 登录 才可以下载或查看,没有账号?注册会员
×
摘 要: 以USB2.0接口芯片CY7C68013A为核心,分别采用74HC138和74HC595构成行列控制电路驱动16×64 LED显示屏,实现高速、动态的显示图文信息。详细介绍了硬件电路、固件程序和应用程序的设计。实验结果表明,通过调用不同的字库,本系统可以动态地显示HZK16中的汉字、ASC16中的字符和对应尺寸的自定义图片。
关键词: USB; LED; 图文显示
LED显示屏可以动态地显示各种文字和图形图像,具有亮度高、功耗低、寿命长和性能稳定等优点,正受到广泛的重视并得到迅速的发展[1]。本系统的LED显示屏采用异步控制方式,即在PC上编辑好图文,通过USB总线传入LED屏,实现脱机自动播放。
USB自提出以来便得到各PC、PC外设和芯片制造厂商的广泛支持。USB最大的特点是支持即插即用和热插拔,允许多达127个外设同时连接至PC的一个USB接口上。目前,USB接口主要有USB1.1和USB2.0两种。本系统采用USB2.0接口,支持速率最高达480 Mb/s,实现数据高速传输。
本系统由硬件和软件组成,硬件包括USB2.0接口芯片外围电路和LED屏控制电路;软件包括固件程序和应用软件,其中,固件程序与系统硬件紧密相关,二者配合控制LED点阵的亮灭。由于设备CPU运行速度较慢且内存较小,因此固件程序应尽量简单。USB设备与PC的通信以及复杂的运算(如图文字模的提取等)都交由运行在PC的应用软件来实现。本系统采用了Cypress公司提供的通用驱动程序,也可用相关驱动程序开发工具自行定制。
1 硬件设计
1.1 接口芯片选择和外围电路
USB接口芯片大致可以分为单独运作的USB接口芯片、内含USB单元的微处理器和特定的接口转换芯片3类。其中,前两种芯片需要自行开发驱动程序,接口转换芯片可以利用虚拟串口等驱动程序缩短开发周期,但数据传输速率较低。与第二种芯片相比,第一种芯片的开发者需要面对应用和如何使用USB2.0两方面的工作,开发周期长,硬件集成度较低。
本系统采用内含USB单元的微处理器CY7C68013A,其优点是集成了USB2.0收发器、智能SIE、增强的8051微控制器和可编程的外围接口,数据传输率达到56 MB/s,可以硬件处理USB1.1和USB2.0协议,从而减少开发时间、确保USB的兼容性、提高硬件的集成度和可靠性[2]。
由于CY7C68013的集成度高,所以它的外围电路比较简单,主要有供电电路、串行I2C总线电路以及复位和唤醒电路。
串行I2C总线电路图1所示。其中,SDA和SCL分别为I2C总线的数据线和时钟线,因为是OC输出,所以需经2.2 kΩ上拉电阻接电源[4]。SDA接选择开关SW2,这是因为在固件程序调试初期,需要多次修改,可将编译好的HEX文件下载到CY7C68013A中的RAM中, 数据断电消失,调试比较方便,此时SW2处于断开位置;到后期,固件程序调试完毕,可将I2C文件固化在EEPROM中,利用I2C上电后自动从EEPROM中读入进行枚举,此时SW2处于图1所示位置,即接通。另外,EEPROM是电可擦除的,SW2与专用固件配合可以利用PC擦除已有数据,重新编程,提高了硬件的利用率。由于芯片已经将I2C总线集成,且采用的是24LC64(8 KB)的EEPROM,因此相应的地址线A2~A0为001。
1.2 LED屏驱动电路
LED显示屏可以采用点扫描、行扫描或列扫描[1]。本系统选用行扫描,即显示屏是一行一行地被点亮。虽然每次都只有一行亮,但由于人眼视觉暂留效应,看到的仍然是全屏稳定的图像。本系统需要分时驱动16行和64列LED点阵,若采用I/O口直接驱动的方法比较简单,但需要大量的I/O口。由于控制芯片 的I/O口个数有限,也考虑到今后扩展的需要,显示屏的行驱动选用3线-8线译码器74HC138,列驱动选用8 bit串行输入转并行输出移位寄存器芯片74HC595。这样就可以采用很少的I/O口控制尽量多的行和列。
行驱动由2片74HC138级联组成,共16个并行数据输出端,分别控制点阵模块的16个同名行。列驱动由8片74HC595组成,共64个输出端,分别控制点阵模块的同名列。部分电路如图2所示。
行驱动:U2为低位片,U3为高位片,A3~A0为4 bit译码输入端。列驱动: 4片74HC595一组,共两组。以第一组为例,DS1为串行数据输入端;第1片的Q7与第2片的DS连接,第2片的Q7与第3片的DS连接,以此类推至第4片。由于I/O口的驱动能力有限,列驱动采用了PNP型晶体管。晶体管发射极接电源,集电极接LED阳极,基极经限流电阻接74HC595输出端,这样利用晶体管的电流放大作用,仅需提供几毫安的驱动电流就可控制对应LED的亮灭了。
以显示第一行为例,首先,CY7C68013A将行驱动使能端置0,输出”0000”到行驱动的译码输入端。此时选通低位片,而高位片不工作,输出16 bit二进制为0xFFFE,使得第一行LED的阴极为低电平,其他行LED的阴极均为高电平。然后,CY7C68013A在SH_CP端产生64个连续的时钟脉冲上升沿,将本行对应的图文字模依次送入8个列移位寄存器中,并锁存在锁存器中,再在ST_CP端产生1个时钟脉冲上升沿,将字模并行输出到对应的64根列控制引脚线上,若该列的LED阳极为高电平,则对应的LED被点亮;若该列的LED阳极为低电平,则对应的LED为暗。同理,依次选择第2~16行,点亮对应的LED并循环,此时显示屏就会显示相应的图文。
2 软件设计
2.1 固件程序设计
固件程序是指运行在设备CPU中的程序,只有在该程序运行时,外设才能被称为具有给定功能的外部设备[2]。CY7C68013A开发包提供了固件程序框架和固件函数库[2],在Keil C51环境下编写,降低了开发难度,缩短了开发周期。本系统固件程序流程图如图3所示。
|