基于单片机的LED显示系统设计
引 言
最近,笔者在实习参观某工厂大型生产线上基于现场总线的物流呼叫系统项目中发现,由于所需要显示的信息流比较大,用现有的基于AT89C51芯片组成的LED显示屏控制系统,由于受到微处理器的处理速度、体系架构、寻址范围、外围接口资源等诸多限制,已难以在要求显示较多像素、显示内容帧频较高、动态显示效果复杂的情况下,得到良好的动态视觉效果。针对以上情况,在利用现有资源的基础上,重新设计和研制了一种全新的,由32位高性能ARM微处理器组成的LED显示屏控制图1系统的硬件结构框图系统,并通过RS485接口与现场总线中的上位机进行实时数据通信,实现整个系统的信息显示。
1 系统硬件结构
该系统的硬件组成框图如图1所示。图1中,微处理器是Atmel公司生产的AT91M42800A,它采用基于ARM7TDMI内核的高性能32位RISC架构的处理器,有着丰富的外围接口资源。AT91M42800A有2个USART外围接口,系统用USART0口和MAX485组成485接口电路,具体的接口电路如图2所示。AT91M42800A还有2个SPI口,每个SPI口有4根片选信号,通过片选均可以支持外接15个设备。该系统的做法是将2个SPI口分别接到列驱动电路和行驱动电路上,并利用各自的2个片选信号CS0和CS1完成驱动电路的信号锁存和允许输出控制,SPI的CLK输出作为驱动电路的时钟信号输入,工作频率为4 MHz。
SRAM接口电路由2块HY57V641620芯片并联组成,HY57V641620是Hynix公司生产的4 Banks×1M×16位的SDRAM芯片,单片HY57V641620存储容量为4组×16 M位(8 MB),支持自动刷新,16位数据宽度。为充分发挥32位CPU的数据处理能力,系统用2块8 ns的HY57V641620组成32位SDRAM存储器系统。Flash存储器接口电路由1块HY29LV160芯片组成。HY57V641620是Flash存储器芯片,单片存储容量为16 M图2485接口电路、A6B595和A6276级联电路原理图位(2 MB),8/16位数据宽度,本系统采用16位数据宽度的工作方式。具体的电路连接可参阅参考文献[1]。
行驱动电路由Allegro公司的36片A6B595级联组成,显示屏背面每行数据线由串入并出移位寄存器A6B595级联而成,A6B595片内集成有MOS管构成的驱动器,足够驱动发光二极管发光。列驱动电路由Allegro公司的24片A6276级联组成,A6276是16位带锁存的串入并出移位LED驱动芯片。A6B595和A6276级联时引脚和联接方法如图2所示,电路都较为简单(其中带端口框标的为AT91M42800A的相应引脚)。其他详细的性能资料,请查阅Atmel和Allegro公司的相关产品文档[2,3]。AT91M42800A的SPI口均采用16位串行输出工作方式,利用32位ARM处理器的高速性能,能够充分提高数据传输速度。
图1系统的硬件结构框图
图2 485接口电路、A6B595和A6276级联电路原理图
2 工作原理
该系统与上位机的通信由AT91M42800A的USART0口与485接口电路完成,上位机仅需将要显示的数据,传送至AT91M42800A即可。开机后,AT91M42800A初始化,读入启动代码后,将保存在Flash存储器内的程序代码和所要显示的字模数据,重映射到SDRAM中,使得系统的数据存取全部在高速SDRAM中完成。在接收到上位机的数据后,AT91M42800A将要显示的数据,转换成相对应的LED屏显示驱动信号,再加入相应的动态显示效果控制程序(画面左移
、上移、开幕、覆盖、闪烁和直显等)后,用SPI口分别输出给行、列驱动电路。同时,若有需要,上位机所传来的数据或图像画面,也可以保存在Flash存储器中。
显示屏采用1/16动态逐次行扫描方式,先将SPIA端口中的24个字节数据依此串行移入对应的24个A6276列驱动电路,并锁存。接着,SPIB端口再将一行行选通信号串行移入行驱动电路,完成一行的LED显示。然后依理,逐次的显示LED屏的各行。
二极管亮灭时间的占空比可用软件进行设定,以选取合适亮度,提高发光二极管的使用寿命。在现场实际安装的LED显示屏,有效显示面积约为4.6 m2,共有288×384=110 592个像素,满帧刷新时间最短可小于8 ms,换帧频率125 Hz以上,比传统的用单片机组成的显示系统提高了10倍以上的帧频,保证了动态显示时的视觉效果。同时,在相同的条件下,还可以使得实际可视像素点增多。
3 软件部分简述
本系统的软件采用μC/OSII操作系统,使得系统具有强大的多任务管理、定时器管理、中断管理、存储管理等功能,通过对相关寄存器的实时监控,可以大大提高系统的稳定性,这些是以往用单片机和部分DSP处理器所无法实现的。
显示应用程序采用定时器中断方法,通过设置合适的进入中断时间常数,即可以得到高于40 Hz的LED刷新帧频,使人眼得到稳定的动态视觉效果。
画面的实时动态处理,即各种动态显示方式均以子程序形式编写,每种显示方式都是独立的子程序。具体的动态显示方式有:画面左、右移,上、下移,拉幕,覆盖,闪烁,直显等多种方式。
4 本系统的优点
① 使用高性能32位RISC架构的ARM微处理器,硬件上克服了传统8/16位单片机在处理能力、系统架构、寻址范围和外围接口能力上的不足;软件上使用实时多任务操作系统,使系统的管理功能强大,可进行实时监控,实现复杂的程序控制,程序的开发和扩展也很方便。和以往单片机组成的类似系统相比,本系统的软件稳定性和可靠性都得到了很大提高。
② 该系统省去了传统做法中LED显示部分的总线驱动和译码电路,不像其他一些单片机系统,为提高显示速度而采用多处理器,使用双端口RAM,或是采用将LED屏分为多块的方案。系统使用AT91M42800A的SPI接口直接实现LED显示逻辑驱动,不仅电路简单,并且简化了软件的相关编程,节省了MCU的GPIO硬件资源。
③ AT91M42800A的SPI接口可以采用16位传输方式,配以A6276高速的16位专用LED驱动芯片,使得LED的显示刷屏速度比传统的单片机有了极大提高。
结语
由32位嵌入式 RISC微处理器组成的大屏幕 LED显示系统,与传统的基于 8/16位单片机的 LED显示系统相比,在不显著增加系统成本的情况下,性能有了极大提高。而与采用DVI接口方式的显示系统相比,省去了视频处理的相关电路,又具有硬件结构简单、成本低廉等优势。采用本设计方案,可节省单片机的端口资源,有效简化显示屏的电路结构,提高了整个显示系统的可靠性。在单色视频、动画、文字等LED信息显示方面,本系统有一定的应用价值。可做大型电子显示屏应用体育场、餐厅等大型公众场所。
最近,笔者在实习参观某工厂大型生产线上基于现场总线的物流呼叫系统项目中发现,由于所需要显示的信息流比较大,用现有的基于AT89C51芯片组成的LED显示屏控制系统,由于受到微处理器的处理速度、体系架构、寻址范围、外围接口资源等诸多限制,已难以在要求显示较多像素、显示内容帧频较高、动态显示效果复杂的情况下,得到良好的动态视觉效果。针对以上情况,在利用现有资源的基础上,重新设计和研制了一种全新的,由32位高性能ARM微处理器组成的LED显示屏控制图1系统的硬件结构框图系统,并通过RS485接口与现场总线中的上位机进行实时数据通信,实现整个系统的信息显示。
1 系统硬件结构
该系统的硬件组成框图如图1所示。图1中,微处理器是Atmel公司生产的AT91M42800A,它采用基于ARM7TDMI内核的高性能32位RISC架构的处理器,有着丰富的外围接口资源。AT91M42800A有2个USART外围接口,系统用USART0口和MAX485组成485接口电路,具体的接口电路如图2所示。AT91M42800A还有2个SPI口,每个SPI口有4根片选信号,通过片选均可以支持外接15个设备。该系统的做法是将2个SPI口分别接到列驱动电路和行驱动电路上,并利用各自的2个片选信号CS0和CS1完成驱动电路的信号锁存和允许输出控制,SPI的CLK输出作为驱动电路的时钟信号输入,工作频率为4 MHz。
SRAM接口电路由2块HY57V641620芯片并联组成,HY57V641620是Hynix公司生产的4 Banks×1M×16位的SDRAM芯片,单片HY57V641620存储容量为4组×16 M位(8 MB),支持自动刷新,16位数据宽度。为充分发挥32位CPU的数据处理能力,系统用2块8 ns的HY57V641620组成32位SDRAM存储器系统。Flash存储器接口电路由1块HY29LV160芯片组成。HY57V641620是Flash存储器芯片,单片存储容量为16 M图2485接口电路、A6B595和A6276级联电路原理图位(2 MB),8/16位数据宽度,本系统采用16位数据宽度的工作方式。具体的电路连接可参阅参考文献[1]。
行驱动电路由Allegro公司的36片A6B595级联组成,显示屏背面每行数据线由串入并出移位寄存器A6B595级联而成,A6B595片内集成有MOS管构成的驱动器,足够驱动发光二极管发光。列驱动电路由Allegro公司的24片A6276级联组成,A6276是16位带锁存的串入并出移位LED驱动芯片。A6B595和A6276级联时引脚和联接方法如图2所示,电路都较为简单(其中带端口框标的为AT91M42800A的相应引脚)。其他详细的性能资料,请查阅Atmel和Allegro公司的相关产品文档[2,3]。AT91M42800A的SPI口均采用16位串行输出工作方式,利用32位ARM处理器的高速性能,能够充分提高数据传输速度。
图1系统的硬件结构框图
图2 485接口电路、A6B595和A6276级联电路原理图
2 工作原理
该系统与上位机的通信由AT91M42800A的USART0口与485接口电路完成,上位机仅需将要显示的数据,传送至AT91M42800A即可。开机后,AT91M42800A初始化,读入启动代码后,将保存在Flash存储器内的程序代码和所要显示的字模数据,重映射到SDRAM中,使得系统的数据存取全部在高速SDRAM中完成。在接收到上位机的数据后,AT91M42800A将要显示的数据,转换成相对应的LED屏显示驱动信号,再加入相应的动态显示效果控制程序(画面左移
、上移、开幕、覆盖、闪烁和直显等)后,用SPI口分别输出给行、列驱动电路。同时,若有需要,上位机所传来的数据或图像画面,也可以保存在Flash存储器中。
显示屏采用1/16动态逐次行扫描方式,先将SPIA端口中的24个字节数据依此串行移入对应的24个A6276列驱动电路,并锁存。接着,SPIB端口再将一行行选通信号串行移入行驱动电路,完成一行的LED显示。然后依理,逐次的显示LED屏的各行。
二极管亮灭时间的占空比可用软件进行设定,以选取合适亮度,提高发光二极管的使用寿命。在现场实际安装的LED显示屏,有效显示面积约为4.6 m2,共有288×384=110 592个像素,满帧刷新时间最短可小于8 ms,换帧频率125 Hz以上,比传统的用单片机组成的显示系统提高了10倍以上的帧频,保证了动态显示时的视觉效果。同时,在相同的条件下,还可以使得实际可视像素点增多。
3 软件部分简述
本系统的软件采用μC/OSII操作系统,使得系统具有强大的多任务管理、定时器管理、中断管理、存储管理等功能,通过对相关寄存器的实时监控,可以大大提高系统的稳定性,这些是以往用单片机和部分DSP处理器所无法实现的。
显示应用程序采用定时器中断方法,通过设置合适的进入中断时间常数,即可以得到高于40 Hz的LED刷新帧频,使人眼得到稳定的动态视觉效果。
画面的实时动态处理,即各种动态显示方式均以子程序形式编写,每种显示方式都是独立的子程序。具体的动态显示方式有:画面左、右移,上、下移,拉幕,覆盖,闪烁,直显等多种方式。
4 本系统的优点
① 使用高性能32位RISC架构的ARM微处理器,硬件上克服了传统8/16位单片机在处理能力、系统架构、寻址范围和外围接口能力上的不足;软件上使用实时多任务操作系统,使系统的管理功能强大,可进行实时监控,实现复杂的程序控制,程序的开发和扩展也很方便。和以往单片机组成的类似系统相比,本系统的软件稳定性和可靠性都得到了很大提高。
② 该系统省去了传统做法中LED显示部分的总线驱动和译码电路,不像其他一些单片机系统,为提高显示速度而采用多处理器,使用双端口RAM,或是采用将LED屏分为多块的方案。系统使用AT91M42800A的SPI接口直接实现LED显示逻辑驱动,不仅电路简单,并且简化了软件的相关编程,节省了MCU的GPIO硬件资源。
③ AT91M42800A的SPI接口可以采用16位传输方式,配以A6276高速的16位专用LED驱动芯片,使得LED的显示刷屏速度比传统的单片机有了极大提高。
结语
由32位嵌入式 RISC微处理器组成的大屏幕 LED显示系统,与传统的基于 8/16位单片机的 LED显示系统相比,在不显著增加系统成本的情况下,性能有了极大提高。而与采用DVI接口方式的显示系统相比,省去了视频处理的相关电路,又具有硬件结构简单、成本低廉等优势。采用本设计方案,可节省单片机的端口资源,有效简化显示屏的电路结构,提高了整个显示系统的可靠性。在单色视频、动画、文字等LED信息显示方面,本系统有一定的应用价值。可做大型电子显示屏应用体育场、餐厅等大型公众场所。
文章版权归西部工控xbgk所有,未经许可不得转载。