基于多端口串行Flash的条形LED显示屏控制系统

摘要: 为了不增加硬件成本而提高显示数据的输出速度,在分析现有条形led 显示屏单元板电路的基础上,提出了一种基于多端口串行flash 存储器的led 显示控制系统,该系统由stc12c5616 高速1t 单片机和带spi接口的sst26vf016b 串行多端口flash 存储器组成。显示数据输出时,利用单片机的高速同步串行口(spi) 高速时钟,将多端口串行flash 存储器中的显示数据以“存储器直接存取(dma) ”的方式直接输出至超长条形led显示屏。 最后,以4 096 × 64 点阵单色led 显示屏为例进行了测试。 结果表明,显示屏刷新率达到62. 5 hz,验证了该系统在实际应用中的有效性和可行性。
在led 显示屏应用中,超长条形led 屏是非常广泛的一种形式,其特点是长度“特别长”而宽度窄。 超长led 显示屏目前没有明确的定义,可以将其水平方向的点数定义为≥2 048 比较合适。
以由1 /4 扫描p10 单元板(点间距10 mm) 组成的超长条形led 显示屏为例,当水平方向的点数为2 048 时,其水平方向物理尺寸为20. 48 m. led 屏的宽度(垂直方向) 点数一般为16、24 和32 点,最多不超过64 点,应用中以能够显示一行各类字体的汉字为主。 为保证刷新率,在对超长led 显示屏的控制上,要求在规定时间内送出更多数据,普通的led 显示屏控制卡很难实现控制要求。
本文在分析现有各种条形led 显示屏单元板电路的基础上,提出了一种基于多端口串行flash存储器的led 显示控制系统。 利用单片机的spi接口产生可控时钟,将多端口串行flash 存储器中的显示数据以“dma”方式直接输出至超长条形led 显示屏。
1 常用单元板内部串行移位寄存器连接方式
图1 为3 种常用单元板内部串行移位寄存器连接方式。 其中图1(a) 为单元板74hc595 与led发光管点阵连接关系及简化表示电路。 led 显示屏单元板内部使用的串行移位寄存器一般为74hc595、mbi5026 或mbi5026 兼容芯片,而mbi5026 可以看成是由两片74hc595 级联构成,为恒流源驱动模式,更适合led 的驱动。
图1(b) 、(c) 、(d) 分别为p10、p16、f3. 75 或f5. 0单元板的连接方式。
图1 3 种常用单元板内部串行移位寄存器连接方式
2 超长led 显示屏面临的问题及解决方案
目前,市场上大量的门头屏( 条形led 显示屏) 是led 显示屏应用最广的一种形式。 从技术上来说,门头屏的水平方向点数从256 点至数千点,而高度一般不超过64 点。 随着市场需求和显示精度的提高,数千点长度的超长led 显示屏需求量在不断加大。 普通的led 显示屏控制卡难于满足刷新率的要求,以在长度上像素点是4 096 的f3. 75 led 显示屏为例,设刷新率为60 hz,其sck时钟周期至少为106 /60 /16 /4 096 = 0. 254 μs = 254 ns.
解决超长led 显示屏数据输出的方法有两种: 一是选择高性能嵌入式处理器和fpga 芯片,该方法控制卡成本较高; 二是巧妙应用单片机上的特殊功能部件并优化组织数据算法,这种方法成本很低。 本文采用的就是第2 种方法,通过优化算法将数据预先写入多端口串行flash 存储器sst26vf016b 中,利用stc12c5616 单片机的spi部件产生高速可控sck 时钟,将多端口串行flash存储器中的显示数据以“dma”方式直接输出至超长条形led 显示屏中,满足超长led 显示屏的显示要求。
超长led 显示屏高度一般不超过64 点,若控制1 /16 扫描单色led 显示屏,sst26vf016b 存储器的4 位数据端口正好满足led 显示屏数据口宽度的需要。 图2 为sst26vf016b 存储器的控制时序,cs 为sst26vf016b 存储器的片选端,所有对存储器的操作都要在cs 为低电平期间进行;sck 为时钟线,当空闲模式时,sck 信号可以处于低电平状态( mode 0) ,也可以处在高电平状态( mode 3) ; sio( 3∶ 0) 为4 位数据端口,在数据传输时,先传字节的高4 位,再传字节的低4 位。 从存储器的控制时序可以看出,对存储器的控制按照命令字、24 位存储地址、虚拟字节、数据字节0 到数据字节n 的顺序发送。 存储器的命令字可以实现对存储器进行片擦除、扇区擦除、单字节读写、连续字节读写等功能,完全能够满足超长led 显示屏对存储器的容量和控制方式的要求。
图2 sst26vf016b 存储器的控制时序。
stc12c5616 是stc 公司推出的高速1t 单片机,时钟频率可达30 mhz 以上,其内部集成一个高速串行通信接口部件( 即spi 接口)。 当stc12c5616 的spi 部件采用主模式工作时,其spi时钟输出频率( fclk) 可以达到晶振频率( fosc) 的1 /4 倍,并且可以灵活配置它的时钟相位和时钟极性,既满足对sst26vf016b存储器控制的要求,又满足超长led 显示屏对时钟的要求。
3 超长led 显示屏控制卡电路设计
利用串行flash 存储器sst26vf016b 的多位数据口存储器和stc12c5616 单片机的spi 部件能产生高速sck 时钟的特点,将显示数据从串行flash存储器旁路输出至led 显示屏,电路如图3 所示。
图3 超长led 显示屏控制卡电路图。
当显示屏的动态刷新速率达到50 次/s 时,在1 /16 扫描的led 显示屏上,一行显示时间要小于1 /50 /16 s,即1. 25 ms. 在控制卡设计上,当fosc =22 mhz时,串行flash 时钟频率fclk = 1 /4 fosc =5. 5 mhz,故4 096 个clk 时钟所需时间为4 096 × 1 /( 5. 5 × 106 ) s = 0. 744 ms,加上采用sqi协议发送存储器指令和地址的时间后也小于1. 25 ms,故在图3 中,单片机stc12c5616 的外部时钟选择22 mhz 时钟,就可以保证在sqi 协议方式下实现4 096 超长显示屏的显示。
单片机stc12c5616 的外部时钟选择22. 118 4 mhz,便于串行口波特率的精确控制; 引脚p3. 0和p3. 1为uart 接口,通过通信接口芯片max232 芯片实现控制卡和pc 机之间的通信连接; 引脚p2. 0 ~ p2. 3为4 位数据线,该数据线一方面连接存储器sst26vf016b 的4 位数据口,另一方面通过74hc245 驱动后连接到led 单元板输出接口的数据线上。 在控制卡上设计有2 个单色led单元板输出接口,接口j1 使用数据线d0和d1,接口j2 使用数据线d2和d3; 引脚p1. 7为spi 时钟输出,spi 时钟输出线同时连接到串行flash 存储器sst26vf016b 和led 单元板的时钟输入; 引脚p1. 4为串行flash 存储器sst26vf016b 的片选信号; 引脚p3. 5为led 单元板的数据锁存信号; 引脚p3. 7为led 单元板的使能信号输出; 引脚p1. 0 ~p1. 3为led 单元板的行选择信号输出; j1 和j2 连接头用来连接显示屏在高度方向上的led 单元板,以符合门头屏64 点高度要求。
该电路的设计可以灵活地在单片机、串行存储器和led 单元板相互之间实现3 种不同的数据访问模式,分别是:
(1) 单片机和存储器之间的正常访问。
由图3 可以看出,单片机stc12c5616 和串行flash 存储器sst26vf016b 之间的连接是参照数据手册进行连接的,可以实现正常的数据存取,同时该数据也会进入led 单元板上的移位寄存器缓冲区,但只要led 单元板上的数据锁存rck 没有得到有效信号,进入led 单元板的数据是不显示出来的无效数据。
(2) 单片机和led 单元板之间数据通信。
将单片机引脚p1. 4置高电平,即将串行flash存储器的使能端无效,这时存储器的数据端口呈高阻状态,单片机和led 单元板之间数据通信就不会受到存储器数据口的影响,可以将单片机的数据正常输出到led 单元板上。
(3) 存储器和led 显示屏之间的数据传输。
首先采用第(1) 种模式,单片机先向串行存储器输出命令字、存储地址和虚拟字节,然后将单片机的数据口p2. 0 ~ p2. 3全部置高电平,通过spi 时钟从串行存储器读取显示数据,同时以“dma”方式进入led 单元板,当读取完一行数据后,在led单元板上的数据锁存端rck 上产生有效信号,就可以显示该行数据。 当采用这种模式时,一定要将单片机stc12c5616 的引脚p2. 0 ~ p2. 3设置为“弱上拉”模式。
4 超长led 显示屏显示程序设计
在1 /16 单色led 显示屏硬件电路设计中,74hc595 采用直通方式连接。 根据直通方式特点,预先对单色显示数据进行优化组织,将组织后的显示数据预先存放在串行flash 存储器sst26vf016b 中。 如图4 所示,单片机输出显示每行数据时按“输出数据→送移位脉冲→地址加1”的顺序重复进行,显示完一行后,rck 锁存显示,通过abcd 切换行选通线。
图4 1 /16 扫描单色f3. 75 或f5. 0 单元板( 64 × 32 点) 连接方式。
以led 显示屏的水平方向点数为4 096 点为例,其显示一帧数据的程序代码如下:
woid display( unsigned long begin_addr)
{
unsigned char ln
,bv = 1;
unsigned int data_length,lw = 4096;
unsigned long addr;
data_length = bv* lw
) ;
for ( ln = 0; ln 《 16; ln + + )
{
addr = begin_addr + ln* data_length;
cs = 0;
sendsqi_byte( 0x0b) ; / /送读命令
/ /送3 个字节地址
sendsqi_byte( ( addr 》 16) &0xff) ;
sendsqi_byte( ( addr 》 8) &0xff) ;
sendsqi_byte( ( addr&0xff) ;
sendsqi_byte( ( 0xff) ; / /送虚字节
p2 = p2 |0x0f;
spctl = 0xd0; / /允许spi 接口
spdat = 0xff; / /启动第1 次spi 发送
data_length = ( data_length 》 3) - 1;
while( data_length! = 0)
{ / /spi 时钟每次传输8 个脉冲
while( ( spstat&0x80) == 0) ;
spstat = 0x80; / /清接收标志
spdat = 0xff; / /启动spi 发送
data_length -- ;
}
while( ( spstat&0x80) == 0) ;
spstat = 0x80; / /清接收标志
spctl = 0x90; / /禁止spi 接口
cs = 1; /* disable devicce * /
en = 0;
rck = 1; rck = 0;
pi = ( ( p1&0xf0) | ln
) ;
en = 1;
}
}
在设计程序时,仅在换行时关闭显示屏,避免它产生余辉,其余时间都点亮。 在该程序中,bv为数据线在垂直方向使用595 的组数; lw为led 显示屏水平方向像素点数; ln为当前led 显示屏显示数据行号。 当显示数据时,采用存储器和led 显示屏的数据输出模式,单片机先向串行存储器输出“读数据”命令字“0x0b”,然后输出24 位地址和虚拟字节,再使单片机数据口输出高电平,就可以根据led 显示屏的长度输出sck 脉冲。 送完一行数据后,禁止spi 接口,rck 锁存信号有效,切换至下一行,按重复步骤继续输出显示数据。
5 测试
经过测试后,显示屏显示正常,没有抖动情况,使用逻辑分析仪测试了其刷新率,如图5( b) 所示,信号a 的电平宽度表示显示1 行所需要的时间,其宽度为1. 036 16 ms,显示1 帧的时间为16 ×1. 036 16 ms≈16 ms,所以led 显示屏的刷新率为1 /16 ms = 62. 5 hz. 而当led 显示屏的刷新率大于50 次/s 时,就可以满足设计要求,故本设计能够满足正常显示要求。 通过测试sck 信号,如图5( a)所示,可以看出sck 信号每8 个脉冲1 组,每组之间的时间间隔仅为570 ns,该时间主要消耗在判断spi 数据传输完成标志和循环控制上。
图5 led 屏信号测试
6 结论
本文提出了基于多端口串行flash 存储器的led 显示控制系统,利用单片机的spi 接口产生可控时钟,将多端口串行flash 存储器中的显示数据以“dma”方式直接输出至超长条形led 显示屏。
其制造成本低廉,根据本文程序及逻辑分析仪得到的时序图可知,该方法可以控制4 096 × 64 点阵单色led 显示屏,在超长显示屏市场上有很好的应用前景。

关于日本电动车技术发展史分析
功能安全之风险评估(HARA)
浅谈发电机组接入动环系统
华为回应“拒绝富士康代工”传闻:纯属造谣
物联网时代下模拟技术的需求正在上升
基于多端口串行Flash的条形LED显示屏控制系统
财富中文网发布2019年《财富》美国500强排行榜 苹果公司重回第三位
变频器输出滤波器的功能
华为推出5G随行WiFi,开启全场景5G新体验
苹果将取消iPhone 12售后福利:不再免费换新
逆变器对齿轮电机有那些用处,陡的冲击电压
人工智能为刷脸支付带来哪一些可能性
指纹泄露的风险高 生物信息安全建设需加强
NVIDIA Clara AGX开发套件加速AI医疗设备开发
芯片为什么难造?
时序约束的相关知识(二)
什么是阻燃端子线?
英特尔四大层面,提升DeepRec训练和推理能力
在传输过程的信号要如何描述?
利用电池传感器降低汽车电子装置引发故障的风险