在各种设备中,显示设备占有重要地位,少了显示设备就像人少了眼睛,很多内在的东西都看不见。显示设备很重要也很常见,然而它的外形总是那么单调,像一个个的模型。旋转LED屏以其新颖、可视角360°吸引了电子狂热者的眼光。本项目是通过主控芯片STM32F103,将触摸技术与旋转LED屏幕相结合,可以实现时钟的变换,还可以利用触摸技术在旋转LED上玩一些小游戏[1],让旋转LED不再只是单一的观赏性的技术。
旋转LED显示屏是一种通过同步控制发光二极管(LED)位置和点亮状态来实现图文显示的新型显示屏,因其结构新颖、成本低、可视视角达360°而得到了迅速的发展。目前,常见的LED显示屏都是采用扫描方式进行显示的,其实现原理是在不同时间段内控制不同批次的LED轮流点亮,根据人眼的视觉暂留特性,当扫描帧频达到24Hz以上时,人眼便感觉不到扫描过程,而是一幅稳定的图像。旋转显示屏则是通过控制一行或一列LED快速移动位置和改变点亮状态来实现图形的显示,如果LED在各位置循环变换速度足够快,同样可以显示出一幅稳定的图像。POV原理(即视觉滞留原理)将它用于显示屏,优势表现在可用少量LED实现传统方式下海量LED才能实现的显示屏。用单片机控制LED,触摸按键提供用户与系统交互。旋转中的LED漂浮在半空中的景观给视觉带来享受。
基于这样的现状和原理,本文提出了基于TI公司TLC5947驱动芯片及STM32F103的旋转LED屏显示控制器设计。该旋转LED屏采用人眼视觉频率滞留原理,制作的旋转LED虚拟屏在微控制器的精确控制下,使用少量的LED便可完全实现传统方式下海量LED才能实现的一种新型显示技术。旋转三基色全彩LED是基于RGB原理,通过改变三种颜色的色调、饱和度、强度可以实现最高36色真彩图片显示,从而使显示更加绚烂夺目。该旋转LED屏与平板式LED显示屏和其他显示器技术(如CRT、LCD、PDP)相比较,旋转式线阵LED屏幕有着成本低、分辨率高、功耗小等几个明显优势。
1 系统硬件设计
STM32F103通过TLC5947与LED连接,用来控制旋转板上LED灯的显示。例如可以通过单片机STM32F103控制LED灯旋转显示时钟模样或各种图形,如果条件允许的话,可以显示一些简单的游戏。LED与ARM处理器相连接,通过ARM处理器对触摸信号的处理来实现LED灯的显示样式的变化,从基态的指针式时钟变为数字显示式以及改变其显示的背景,还可以进行时间的校准操作。TLC5947驱动旋转LED屏显示控制电路如图1所示。
旋转LED屏显示控制器设计方案
图1 TLC5947驱动旋转LED屏显示控制电路
1.1 STM32F103简介
选用了STM32F103控制器,STM32F103是增强型系列,最高工作时钟频率可达72 MHz,具有ARM CortexM3内核、128~256 KB Flash、20~48 KB RAM、8 MHz CPU晶振、32.768 kHz RTC晶振以及丰富的外设(64个快速I/O口)和4 GB的线性地址空间。ARM采用的仿真器很贵,而单片机的调试工具则非常便宜。相较之下,CortexM3参考单片机,专门拿出一个引脚来做调试,从而节约了大量的人力物力。CortexM3集成了大多数的存储器控制器,这样就可以直接在MCU外连接Flash,降低了设计难度和应用障碍。CortexM3处理器结合了多种突破性技术,使得它能实现低功耗、低成本、高性能三者(或二者)的结合。编程支持ISP下载功能,能通过USB端口和JLINK仿真器供电,使用起来非常方便。
1.2 TLC5947简介
TLC5947是TI(德州仪器)公司推出的24通道,具有内部晶振的12位PWM脉宽调制的LED驱动芯片。TLC5947采用超小32引脚QFN的高级封装。它为LED提供了精确的恒流值,通道与芯片之间的差异值只有±2%;高速的传输速率(单片芯片时30 MHz,级联为15 MHz);输出通道之间交错时间迟滞,避免出现传输误差;该芯片内部具有温度检测系统,当芯片的温度过高时为了保护芯片,它会自动断开所有的输出通道,当温度恢复正常,芯片正常工作;该芯片支持级联,可以多个芯片共同工作以驱动更大规模的LED显示屏幕。24个通道的当前电流值是通过外部IREF与地之间的阻值来设置的,驱动电路中的电阻由所驱动LED灯的电流决定。芯片具有宽泛的操作电压30~55 V,含有4 MHz的内部晶振。TLC5947适用驱动全彩LED和显示屏。
1.3 LED显示屏
选用三色(RGB)LED灯, 实现多重色彩光源,绚丽多彩的输出。同时,LED本身也具备相当的稳定度、高效率、单色彩纯度高、光强度可调等功能。LED与ARM处理器相连接,通过ARM处理器对触摸信号的处理来实现LED灯的显示样式的变化,从基态的指针式时钟变为数字显示式,以及改变其显示的背景,还可以进行时间的校准操作。
2 系统软件设计
2.1 点亮点线圆的设计及其算法和公式
点设计主要应用直角坐标到圆坐标转换通过坐标转换点亮任何位置的灯。线设计源于点设计,在点设计基础上采用Bresenham直线演算法画出所需的直线、斜线、曲线。在线设计基础上衍生出矩形绘画、绘图、填充等功能。
程序初始化完了,接着定义由直角坐标转换到极坐标,在程序中将弧度转到角度,在转换的时候考虑到会有负数数据的输入,加入360+0.5均是为了优化程序,防止出现误差。程序中距离r=x2+y2,角度a=180×arctanxyπ+360+0.5.
直角坐标到圆坐标转换算法如下:
void ConCoor(int x,int y,int *rad,int *angle) {double r,a;r=sqrt(x*x+y*y);
a=(180*atan2(x,y))/PI+360+0.5;
if(a》=360)
a=a-360;
(*rad)=r;
(*angle)=a;}
直角坐标转换完后,可以设置点的亮灭,接着用Bresenham直线演算法画出直线。
程序的整体流程如图2所示。系统上电后,首先读取系统的初始状态,设置ARM和TLC5947的工作状态,开启无线通信;然后等待旋转屏幕稳定,初始化菜单,等待输入指令;利用Qtouch控制传输命令到STM32F103,执行指令(用户交互过程);执行用户命令操作。
2.2 TLC5947芯片时序
TLC5947时序如图3所示,芯片的主要控制引脚有4个:数据输入端SIN、外部时钟输入端SCLK、灰度寄存器控制端XLAT以及输出控制端BLANK.通过数据输入端口将所需要的灰度数据送到SIN端,然后通过控制时钟信号SCLK将数据写入到芯片内部的灰度数据移位寄存器中,之后通过控制灰度寄存器的控制端XLAT的高低电平变换实现芯片TLC5947内部灰度数据的更新。当XLAT引脚的电平发生变化而产生一个上升沿时, TLC5947内部灰度数据将被更新一次,即图3中Grayscale LatchData 中被重新写入数据。芯片的数据输出分两部分,一部分是串行数据输出和恒流源数据输出。串行数据输出是接在灰度数据移位寄存器之后,当寄存器的数据满256位时,可以根据SCLK时钟的变化通过一个DQ触发器将数据从串行数据端口SOUT端输出,这一端口主要是芯片级联时后一级芯片的数据输入;而恒流源数据输出OUT0~OUT23则是通过输出控制端口BLANK和芯片内部自带时钟Oscillator Clock来共同控制,其中输出电流大小则可以通过芯片的VREF引脚的外接到地电阻来控制,根据外接LED的自身限流参数,保证LED正常工作。本系统中采用的是3.2 kΩ电阻,所以该芯片的控制主要是4个引脚端口的控制,操作上比较简单方便。
旋转LED屏显示控制器设计方案
图2 程序的整体流程
3 结论
实验中,通过主控制器STM32F103对两片级联的TLC5947芯片进行了测试,外围电路连接的是三色LED灯,外界供电电压为5 V稳压源,转换之后系统的供电电压为3.3 V稳压源。当写入相对应的程序控制字时,三色LED灯能够正确显示,单一色、混色两种工作模式均成功得以实现。而且LED灯之间的变化时间可以通过程序来控制,只要主控制器的时钟频率合适,变换时间均在人眼识别能力之外,这样就可以通过改变不同的程序控制字来实现全彩LED屏的设计。
旋转LED屏显示控制器设计方案
图3 TLC5947时序图
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』