理论教育 控制器软件结构优化方案

控制器软件结构优化方案

时间:2023-06-16 理论教育 版权反馈
【摘要】:由图6.1可知,LED 模组的75E 接口信号是由单片机控制器产生的。STM32单片机会把一些引脚分配给75E 作为控制线、地址线及移位数据线,这些引脚在软件控制下产生扫描与数据移位时序。初始化将对STM32 端口、定时器、中断等硬件初始化,对图像帧存以及系统中用到的控制标志等写入初始值,等等;系统主循环,以30ms的周期定时生成图像显示双缓冲结构中的更新帧数据,以实现屏幕汉字的滚动显示。

控制器软件结构优化方案

经上节的分析,我们已经清楚了来自75E 接口的RGB像素信号在时钟与行地址信号等的共同作用下,模块上可以实现图像的行列数据移位、锁存与电流驱动等扫描动作。由图6.1可知,LED 模组的75E 接口信号是由单片机控制器产生的。STM32单片机会把一些引脚分配给75E 作为控制线、地址线及移位数据线,这些引脚在软件控制下产生扫描与数据移位时序。驱动系统还使用了两个图像帧存,它们是一片存储区域,存放着LED 显示屏点阵上需要显示及更新的内容。

驱动系统的核心功能就是不断地把图像帧存中的内容通过行列扫描时序“映射”到LED 显示屏上。因此,LED 屏上的每个像素是否点亮、以什么颜色点亮完全取决于帧存中对应存储位置上的内容(可以理解为对应的虚拟像素)。换言之,屏幕上的实像素与帧存中的虚拟像素之间是一一对应的。理论上讲,LED 屏上有多少个实像素,帧存中就需要多少个虚拟像素。例如,本例中LED 显示模块的空间分辨率为64×64,因此,帧存中同样会有4 096个像素与之对应。帧存中的虚拟像素所在的位置即是该像素的内存地址,然而一个内存地址所指定存储位置中的内容可以是一个二进制位(bit)、一个8位的字节(BYTE)、一个16位的字(WORD)或是一个32位的双字(DWORD),甚至是64位的四字(QWORD)。那么一个虚拟像素会占内存中的多少位呢?这取决于所要实现的实像素颜色深度,即在同一像素上需要显示多少种颜色。若是真彩色,则要求像素能显示224=16 777 216种颜色,通过红、绿、蓝三基色分别显示256灰度级的颜色经混色得到,意味着表达这样一个真彩色实像素至少需要三个字节来构成帧存中的一个虚拟像素,其中的每个字节分别用于表达当前像素颜色中的RGB分量。若是单色屏,实像素只有亮或不亮两种状态,虚拟像素仅需一个二进制位即可。上述例子表明,图像帧存所占内存的大小不仅与LED 显示屏的空间分辨率有关,而且与像素的色彩深度有关。尽管本例采用的LED 模块是全彩的,理论上讲可以在每个像素上产生高达一千七百万种以上的颜色,但为了便于理解与表述,我们将采用简化的扫描方案:每个像素取RGB 三色混合,但每种颜色只取二进制取值——亮或灭。于是,RGB三种颜色仅需要三个二进制位即可,它们用一个字节的低三位来表示,其余位不用,即0bxxxxxBGR。这种方案中,每个虚拟像素在帧存中占一个字节,完整的一个帧存共使用4 096字节,它同样分成上、下两个分别为2 048的半帧,与LED 模块硬件扫描的上、下半屏完全对应。这就说明了为什么图6.1所示的两个图像帧存都是4 096字节,使用双缓冲结构合计使用8 192个字节。

仅仅把单片机的某些端口连接到75E 上是不够的,显示驱动必须在驱动软件控制下才能发挥作用,因此驱动软件的设计同样重要。驱动软件将包括:(www.daowen.com)

(1)主程序模块:包括初始化与系统主循环。初始化将对STM32 端口、定时器、中断等硬件初始化,对图像帧存以及系统中用到的控制标志等写入初始值,等等;系统主循环,以30ms的周期定时生成图像显示双缓冲结构中的更新帧数据,以实现屏幕汉字的滚动显示。

(2)定时器中断服务模块:这是LED 屏扫描的核心模块,以312.5μs的周期,从扫描帧中取出上、下半屏各一行64列图像像素值,产生移位时钟把像素值移入扫描电路的移位寄存器,移位结束后发出一行像素的锁定与显示指令。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈