彩色LED旋转显示屏的设计
扫描二维码
随时随地手机看文章
摘要 为解决普通LED旋转屏显示色彩单一的缺陷,根据时间混色法利用单片机和三色LED设计了一种4 096色LED旋转屏。该旋转屏上的像素颜色编码为12 bit数据,通过4种亮度不同的帧的叠加,实现RGB每种颜色的16级灰度;利用在相邻两列LED显示间隙插入黑时隙的方法,降低了LED显示屏横向显示拖影等问题。经过实测验证表明,系统稳定、显示效果良好。
近年来,旋转柱式LED显示屏以其新颖、视角范围大、成本低、功耗小等优点引起人们的关注。这种显示屏的显示原理较为简单:将若干个LED排成一列构成一个LED线阵,当这个LED线阵绕与其平行的轴旋转时可形成柱面,按正截面圆周将柱面均分为诸多细小的曲面,精确地控制LED线阵旋转到每个小曲面时的发光状态及发光时间,由于人眼的视觉暂留特性,就可看到一幅完整的图像。现有的旋转柱式LED屏大多是单色LED屏,少数能够实现彩色显示,但显示的颜色较少。本文利用单片机STC12C5A60S2设计了一种4 096色旋转柱式LED显示屏控制系统。
1 系统总体设计
系统总体框图如图1所示,主要由电机转速与控制及LED阵列控制两部分组成。电机转速测量与控制部分用于实现旋转屏转速恒定;LED阵列控制部分用于实现LED线阵旋转位置和发光状态的精确控制。旋转柱式LED屏显示图像能否稳定,主要取决于这两部分电路的控制精度。
系统工作原理如下:电机每转动1周,霍尔开关输出1个脉冲信号,通过STC12C4052测量出该脉冲的周期,可计算出电机转速,如果电机转速不等于设定值,则改变STC12C40 52输出的PWM信号的占空比,从而控制转速稳定不变;需要显示的内容通过编程接口下载到X28C512-90中,X28C512-90是容量为64 kB、读取时间仅为90 ns的高速EEPROM。若显示柱面为256×16点阵,每个点4 096色,一个完整的柱面数据为8 kB,一片X28C512可存储8屏显示内容。位置检测电路用于确定柱面显示的起始位置。
2 系统硬件设计
硬件电路由电机转速测量与控制电路、数据存储电路、LED阵列控制电路、无线供电电路组成,其中无线供电电路采用市售电压5 V、电流600 mA的无线供电模块。
2.1 电机转速测量与控制电路
设计中选用R550型直流电机,其额定电压为12 V,最高转速为18 000转/分,这里将电机转速设定为100转/s,转速测量与控制电路如图2所示。霍尔开关输出的转速信号送至STC12C4052的外部中断引脚nINT0,根据两次中断时间间隔测量出电机的转速;P3.7输出PWM信号经放大后控制NMOS管75N75的通断,进而控制直流电机的转速。PWM信号占空比越小,一个PWM周期内NMOS管的导通时间越长,转速越高;反之,转速越低。
2.2 数据存储电路
利用EEPROM芯片X28C512扩展了64 x 8 kB的存储器,用于存储显示数据,如图3所示。该电路是51系列单片机典型的存储器扩展电路。P10所接的是显示数据装载开关,当需要更新显示数据时,将该开关闭合后上电,可通过下载线将新的显示数据通过单片机STC12C5A60S2的串行口写入X28C512中。
2.3 LED阵列控制
LED阵列控制电路由6片74HC595级联而成,如图4所示。16个三色LED的公共端并联,接至单片机STC12C5Q60S2的PWM信号输出脚P13,其余48个引脚分别和6片74HC595的48个输出端相连。在SDATA和SCLK信号控制下,显示数据从单片机串行输出到6片74HC595内部的移位寄存器中,而后74HC595的RCLK端加上有效信号,将各芯片中数据由移位寄存器锁存到寄存器中,74HC595的输出使能端受单片机输出的PWM信号控制,当PWM信号为低电平时LED可发光。
3 软件设计
3.1 电机转速的测量与控制
霍尔开关输出的信号送至单片机的外部中断引脚,电机每转1周产生一次外部中断,在中断服务程序中轮流使用T0和T1,测量出电机转动一周的时间,与设定时间10 ms/圈比较,若转速偏高,增大PWM信号的占空比,使转速降低;反之,减小PWM信号占空比。单片机的时钟为26 MHz,4分频后作为PWM模块的时钟,PWM周期为39.4μs,完整显示一帧图像时间为39.4μs×254×4≈40 ms,图像刷新速度为25帧/s。
3.2 4 096色的实现
根据时间混色法,顺序地让3种基色光出现在同一表面的同一处,当相隔的时间间隔足够小时,人眼会感到这3种基色光是同时出现的,具有3种基色相加后所得颜色的效果。利用时间混色法实现4 096色显示,对应于一个12 bit数据,RGB每种颜色均有16级灰度,每帧图像细分为4个子帧,每个子帧就是电机旋转1圈显示的图像,每种颜色的16级灰度由4个子帧叠加实现。例如某个像素的颜色为1001(R)0111(G)1010(B),将各颜色数据的对应位取出组合得到4组数据:101、010、011、110这4组数据分别用于控制第1~4个子帧中该像素点的控制如图5所示。1~4子帧的每个PWM周期中,低电平时间依次递减为上一子帧的1/2,注意每个PWM周期中,只有低电平期间74HC595才输出显示数据,因此4个子帧叠加的结果,每种颜色都有16级灰度。
3.3 主程序设计
电机每转1周,光电传感器输出一个脉冲信号,该信号既作为子帧的起始信号,又作为子帧计数信号。每个子帧分辨率为254×16,其中有效像素为248个,有6个像素时间用于帧调整。根据计数结果设置各子帧的PWM信号占空比,P13输出对应于第一个子帧的PWM波,如图6所示。
各子帧中对应每个像素的PWM波的高电平期间LED不发光,即旋转屏上相邻两列像素之间有黑时隙,既降低了旋转屏横向显示粘滞感,同时也利用这段时间从X28C512中取出下一列要显示的数据并串行送入74HC595中。由于X28C512—90的读取时间为90 ns,为保证数据正确读取,在读取数据前将系统时钟分频系数设置为4,即系统时钟为6.5 MHz,读取完成后,再将系统时钟分频系数设置为1,以提高运行速度。主程序流程图如图7所示。单片机复位后,若P10为低电平,则进入显示数据更新状态,通过利用STC单片机的下载线,通过图4中的编程接口将PC机串行输出的显示数据接收并写入X28C512中;如果复位后P10为高电平,则进行数据显示,利用中断服务程序对光电传感器输出的脉冲信号在0~3范围内进行计数,根据计数结果相应地设置PWM信号的占空比,占空比设置完成后,等待PWM信号为高电平,在PWM信号为高电平期间,读取X28C512中的数据,通过串行口发送到6片74HC595中,由于PWM为高电平故LED均灭,当PWM信号为低时74HC595输出待显示的数据,然后等待PWM为高电平,在PWM为高电平期间取出下一列数据,并发送到74HC595中,依此类推。PWM信号的周期和占空比在一个子帧中无需改变。
4 结束语
LED旋转屏是一种新型的LED显示屏,具有成本低、可视范围大、节能等优点,可用于医院、信息中心等场所,实现信息的动态显示,具有良好的应用前景。本文利用单片机根据时间混色原理设计的LED旋转屏,能够显示更为丰富的色彩,是LED旋转屏的一个发展方向。