基于AVR单片机的LED显示屏控制系统的研究
扫描二维码
随时随地手机看文章
1 引言
LED 显示屏是八十年代后期在全球迅速发展起来的新型信息传播媒体,是集微电子技术、光电子技术、计算机技术、信息处理技术于一体的大型显示系统。它以其色彩鲜艳、动态范围广、亮度高、寿命长、工作性能稳定而日渐成为显示媒体中的佼佼者,广泛应用于广告、证券、信息传播、新闻发布等方面, 是目前国际上较为先进的宣传显示媒体[1].本文提出了一种主从式单片机的LED 显示屏解决方案, 该设计方案利用AVR单片机自身的FLASH ROM 和RAM,外部无需任何存储电路,电路结构简单。
2 系统的工作原理及总体方案设计
2. 1 AVR 单片机
AVR 单片机是增强型内置Flash 的RISC(ReducedInstruction Set CPU) 精简指令集高速8 位单片机,硬件采用哈佛(Harward) 结构,达到一个时钟周期可以执行一条指令,绝大部分指令都为单周期指令。支持在系统编程ISP,其中MEGA 系列还支持在应用编程IAP.内置的FLASH 程序存储器可擦写1000 次以上,给用户的开发生产和维护带来方便。可擦写10 万次E PROM,为掉电后数据的保存带来方便。AVR 单片机有丰富的片内资源,如RTC、WATCHDOG、A /D 转换器、PWM 、USART、SPI、TWI 接口等,I / O 口功能强、驱动能力强。
2. 2 系统的工作原理
本设计采用AVR 系列单片机ATMEGA16 作为主控制器,以DS1302 时钟芯片和16M 的外置晶振提供准确时间标准、很方便的现实和校准时间。
Atmega32 的内核具有丰富的指令集和32 个通用工作寄存器。所有的寄存器都直接与算逻单元(ALU) 相连接,使得一条指令可以在一个时钟周期内同时访问两个独立的寄存器。采用74HC245 存储器作为信号功率放大。通过2 片74HC595 移位寄存器实现对数据的播放格式,ATMEGA32 卡内带32MFLASH,用户可用专用上位机软件对要显示的内容按照预定的显示格式进行编辑后,通过RS485或RS232 接口,向显示屏控制卡发送。发送结束后,控制卡可以脱开计算机,自动按照用户设定的模式显示所输入的内容,从而通过LED 显示屏来显示你所需要的内容。直到下一次数据更新,所显示的内容一直保持。
2. 3 系统的总体方案设计
LED 点阵显示系统由计算机、RS-232 通讯电路、控制电路和LED 点阵显示电路构成,结构框图如图1 所示。
图1 系统结构框图
上位机完成把图像和文字转换成为显示屏的显示码,并且把显示信息发通过RS232 送到控制电路上。控制电路选用具有32KB 片内FLASH ROM 和2KB 片内RAM 的AT2mega32 单片机,没有外挂存储器。如果要存储更多的显示信息,可以选用具有64KB 片内FLASH ROM 的AT2mega64 或者具有128kB 片内FLASH ROM 的AT2mega128,也可以外挂存储器来增大存储能力。控制电路主要完成对显示数据的滚动和分割处理,然后通过异步串行口发送到每个单元板中。每块单元板用16 × 32 单色点阵块拼成的点阵屏,控制电路更新显示单元板的显示内容时,对所有单元板按地址逐个发送显示数据,更新完所有子模块数据后,再发送一个特殊的地址字0xFF 作为控制字,使所单元板同时更新显示数据,这样可以避免当屏幕较大,单元板数量较多时各子模块画面更新不同步的问题。对本设计中完成的2 × 10 个单元板而言, 由于通讯速率限制,画面更新速度最高可达56800 / ( 129 × 24 + 1 ) =18134 帧/ s,由于主控制电路还要完成全屏数据的分割和显示内容的移动控制, 所以其实际帧数低于上述值,不过用于普通的图片显示已经可以达到要求。
3 系统硬件设计
3. 1 主控制器的选择
Atmega32 是基于增强的AVR RISC 结构的低功耗8 位CMOS 微控制器。由于其先进的指令集以及单时钟周期指令执行时间,Atmega32 的数据吞吐率高达1 MIPS /MHz,从而可以缓减系统在功耗和处理速度之间的矛盾。
Atmega32 有32K 字节的系统内可编程Flash( 具有同时读写的能力, 即RWW ) , 512 字节EEPROM,1K 字节SRAM,32 个通用I /O 口线,32个通用工作寄存器,用于边界扫描的JTAG 接口,支持片内调试与编程,三个具有比较模式的灵活的定时器/ 计数器( T /C) ,片内/ 外中断, 可编程串行USART,有起始条件检测器的通用串行接口,具有片内振荡器的可编程看门狗定时器,一个SPI 串行端口,以及六个可以通过软件进行选择的省电模式。
3. 2 单元板显示电路单元
显示驱动电路由RS232 转换电路、子模块地址标识电路和点阵驱动电路组成。RS232 转换电路和主机板中一样, 同样采用MAX485 作电平转换。由于采用单片机的异步串行口进行多机通信进行数据传输,单元模块应该有和其位置相对应的地址标识地址标识电路采用8 位并进串出芯片74HC595 和8 位拨码开关组成,因此本系统最多可以容纳255 个子模块( 地址0xFF 作为更新子模块显示的控制字)。
LED 点阵采用动态扫描法进行驱动,并且实现16 阶灰度显示,为了节省单片机程序中扫描程序的时间消耗,提高扫描速度,显示数据采用并行输出的方法。驱动电路采用译码器74HC138 和74HC245,分别实现行选和位选。[!--empirenews.page--]4 系统软件设计
系统软件设计包括上位机软件的设计、下位机程序设计两部分。
上位机软件完成图像和文字的编辑,通过计算机串行接口把显示数据传送到控制卡上。控制卡接收上位机的数据并通过内部Boot Loader 区的程序进行FLASH ROM 内显示数据的自更新。控制卡把显示数据进行分割处理后发送给每个单元板,并且完成显示数据不同方式处理。
4. 1 下位机程序设计
下位机软件设计分为两大功能块: 显示部分和通信部分。显示部分采用动态扫描的方式,实现对显示屏要显示的汉字、图象、字符等数据信息进行传输控制以及显示等功能。与PC 机的实时通信部分主要是利用单片机串口中断接收和发送数据信息,实现与计算机的实时数据信息传输。程序可以实现与计算机的通信,可非常方便地任意修改所要显示的汉字、图像等; 并使显示屏可按你选择显示方式进行汉字或表格显示。设计程序的流程图如图2 所示。
图2 系统程序流程图
软件系统采用模块化结构,包括主程序、显示子程序和串口中断服务程序。主程序为顺序结构,完成堆栈、中断、串口的初始化设置后,循环调用显示子程序,以及响应串行接收或发送中断指令;显示子程序从显示缓冲区取出字模,输出行选通信号至P0 口并通过一个通用逻辑阵列74HC00D 输出,配合列扫描信号,进行动态扫描显示; 中断服务程序串口接收PC 机发送的汉字机内码数据,实现与计算机实时通信。程序各部分的功能, 由各个模块分别实现。程序模块有: 串口初始化模块、数据输入模块、汉字首地址计算模块、取字模块、显示模块和移动模块。系统显示流程图如图3 所示。
图3 系统显示流程图
4. 2 人机交互界面的设计
上位机软件使用可视化编程工具Visual Basic.NET 开发,主要完成图像的取点、线性补偿和点阵数据生成。首先将图像文件转换为96 × 64 分辨率、256 阶色深的单色灰度图像,由于使用占空比驱动的LED 其占空比/ 亮度为对数特性,所以需加入指数特性调整为线性之后才能交付显示系统进行显示。
通过MSComm 控件实现PC 机与单元板的通信。系统主界面如图4 所示。
图4 上位机主界面
5 结论
本系统设计着重于对单色屏的研究,对于灰度不同的真彩色LED 显示屏的设计以及设备的驱动,有待于进一步的学习探讨。而且本设计所用的控制卡只能控制显示屏的单色显示,如果能显示双色,甚至三色那就更方便了。LED 显示屏可以显示变化的数字、文字、图形图像,不仅可以用于室内环境还可以用于室外环境,具有投影仪、电视墙、液晶显示屏无法比拟的优点。LED 甚至可以在信息指示灯、大屏幕显示、液晶显示(LCD) 的背照明等新技术中应用。它是未来智能交通系统的显示手段之一。
由于LED 显示屏的分析、设计与实际应用环境及应用目的有很大关系,所以对其控制系统的要求也是不同的。如果显示屏的面积要求很大,屏幕显示的信息量超大,那么要传输的数据量也随之增大,如何设计出更理想的字模保存方法以及数据传输时的压缩算法需要进一步的研究和探讨。