新闻中心

EEPW首页>光电显示>设计应用> 应对智能手机的背光驱动干扰

应对智能手机的背光驱动干扰

作者: 时间:2012-10-16 来源:网络 收藏

单片机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 点) 连接方式。

图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( ( Addr0xff) ;

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( ( SPSTAT0x80) == 0) ;

SPSTAT = 0x80; / /清接收标志

SPDAT = 0xff; / /启动SPI 发送

Data_Length -- ;

}

while( ( SPSTAT0x80) == 0) ;

SPSTAT = 0x80; / /清接收标志

SPCTL = 0x90; / /禁止SPI 接口

CS = 1; /* disable devicce * /

EN = 0;

RCK = 1; RCK = 0;

PI = ( ( P10xf0) | 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 屏信号测试

评论


相关推荐

技术专区

关闭