基于MCU和FPGA的LED图文显示屏控制系统

发布者:jiaohe1最新更新时间:2014-10-30 来源: 21ic关键字:MCU  FPGA  图文显示屏  LED 手机看文章 扫描二维码
随时随地手机看文章

  引言

  目前,市场上的中小规模LED显示系统,一般采用传统的单片机作为主控芯片。对LED大屏幕显示屏来说,由于数据传输量大,要求扫描速度快,而单片机内部的资源较少、运行速度较慢,难于满足系统要求。以FPGA作为控制器,一方面,FPGA采用软件编程实现硬件功能,速度较快;另一方面,它的引脚资源丰富,可扩展性强。因此,用单片FPGA和简单的外围电路就可以实现大屏幕LED显示屏的控制,无需另外设计汉字库,具有集成度高、稳定性好、设计灵活和效率高等优点。

  1  系统总体结构

  LED大屏幕显示系统由上位机(PC机)、单片机系统、FPGA控制器、LED显示屏的行列驱动电路等模块组成,如图1所示。上位机负责汉字、字符等数据的采集与发送。单片机系统与上位机之间以异步串行通信工作方式,通过串行端口从上位机获得已完成格式转换的待显示的图形点阵数据,并将其存入EEPROM存储器。之后通过FPGA控制器,将存储器的显示数据还原到LED显示屏。扫描控制电路采用可编程逻辑芯片CycloneEP1C6,利用VHDL语言编程实现,采用1/16扫描方式,刷新频率在60Hz以上。本文着重介绍2561024的单色图文显示屏的FPGA控制模块。

  2  LED显示屏基本工作原理

  对大屏幕LED显示屏来说,列显示数据通常采用的是串行传输方式,行采用1/16的扫描方式。图2为1632点阵屏单元模块的基本结构,列驱动电路采用4个74HC595级联而成。在移位脉冲SRCLK的作用下,串行数据从74HC595的数据端口SER一位一位地输入,当一行的所有32列数据传送完后,输出锁存信号RCLK并选通行信号Y0,则第1行的各列数据就可按要求显示。

  按同样的方法显示其余各行,当16行数据扫描一遍(即完成一个周期)后,再从第1行开始下一个周期的扫描。只要扫描的周期小于20ms,显示屏就不闪烁。

  2561024大屏幕显示屏由1632个的1632点阵屏级联而成。为了缩短控制系统到屏体的信号传输时间,将显示数据分为16个区,每个区由161024点阵组成,每行数据为1024/8=128字节,显示屏的像素信号由LED显示屏的右侧向左侧传输移位,把16个分区的数据存在同一块存储器。一屏的显示数据为32KB,要准确读出16个分区的数据,其存储器的读地址由16位组成,由于数据只有32KB,因此最高可置为0。其余15位地址从高到低依次为:行地址(4位)、列地址(7位)、分区地址(4位)。4位分区地址的译码信号(Y0~Y15)作为锁存器的锁存脉冲,在16个读地址发生周期内,依次将第1~16分区的第1字节数据锁存到相应的锁存器,然后在移位锁存信号上升沿将该16字节数据同时锁存入16个8位并转串移位寄存器组中。在下一个16个读地址发生时钟周期,一方面,并转串移位寄存器将8位数据移位串行输出,移位时钟为读地址发生时钟的二分频;另一方面,依次将16个分区的第2字节数据读出并锁入相应的锁存器,按照这种规律将所有分区的第一行数据依次全部读出后,在数据有效脉冲信号的上升沿将所有串行移位数据输出,驱动LED显示。接下来,移位输出第2行的数据,在此期间第1行保持显示;第2行全部移入后,驱动第2行显示,同时移入第3行按照这种各分区分行扫描的方式完成整个LED大屏幕的扫描显示。

  3  基于FPGA显示屏控制器的设计

  3.1 FPGA控制模块总体方案

  如图3所示,FPGA控制模块主要由单片机与FPGA接口及数据读写模块、读地址发生器、译码器、行地址发生器、数据锁存器组、移位寄存器组、脉冲发生器等模块组成。

  读地址发生器主要产生读地址信号,地址信号送往MCU接口及数据读写模块,读取外部SRAM1或SRAM2中已处理好的LED显示屏数据,并把数据按分区方式送到数据锁存器组锁存。锁存器输出16分区数据,通过移位寄存器组实现并串转换得到显示屏所需要的串行数据,并送往LED显示屏列驱动电路。脉冲发生器为各模块提供相应的同步时钟,行地址发生器产生相应的行信号送往显示屏的行驱动电路。

  3.2 单片机与FPGA接口及数据读写模块

  单片机与FPGA接口及数据读写模块结构如图4所示。单片机从EEPROM中读取数据并根据显示要求进行处理后,通过接口及数据读写模块把数据送往数据缓冲器SRAM1或SRAM2。为提高数据的传输速度,保证显示效果的连续性,在系统中采用双体切换技术来完成数据存储过程。也就是说,采用双SRAM存储结构,两套完全独立的读、写地址线和数据线轮流切换进行读写。工作时,FPGA在一个特定的时间只从两块SRAM中的一块读取显示的数据进行显示,同时另外一块SRAM与MCU进行数据交换。MCU会写入新的数据,依次交替工作,可实现左移、上移、双屏等显示模式。如果显示的内容不改变,即一块SRAM里的数据不变时,MCU不需要给另外一块SRAM写数据。

  该模块采用VHDL有限状态机来实现,整个控制分为4个状态,其状态转换图如图5所示。  系统开机进入初始状态ST0,单片机的写入使能端E为低电平,单片机从EEPROM中读取数据并把数据写入到SRAM1,同时FPGA读取SRAM2中的数据;当单片机数据写完一屏数据后E变为高电平,当FPGA从SRAM2中读完数据、结束信号READ_END为低电平时,进入ST1状态。[page]

 

  在ST1状态下,若没有新的数据写入则E保持高电平,FPGA读取SRAM1的数据,为静态显示;只有当单片机的读入控制信号E为低电平且READ_END为低电平时,进入ST2状态。在ST2状态下,单片机把数据写入SRAM2,同时FPGA读取SRAM1的数据,单片机数据写完后E变为高电平,当FPGA一屏数据读完后READ_END为低电平,进入ST3状态。在ST3状态下,如果没有新数据写入E为高电平,FPGA读取SRAM2中的数据。当单片机有新的数据写入时E变为低电平,当FPGA一屏数据读完后READ_END为低电平时,重新进入ST0状态。通过这种周而复始的交替工作完成数据的写入与读取,其端口程序如下:

  3.3 读地址发生器

  读地址发生器主要产生外部缓存器SRAM1(SRAM2)的读地址信号,使系统能正确地从存储器中读取相应的显示数据。其地址最高位为0,其余地址分别为行地址(hang[30])、列地址(lie[60])、分区地址(qu[30])15位有效地址信号。在16个脉冲周期内读出在SRAM1(SRAM2)中的16字节数据,其部分VHDL源程序如下:

  3.4 译码器

  译码器模块主要是产生16路的分区信号(低电平有效)分别控制16个锁存器,把16个分区的显示数据分别锁存在相应的锁存器中。

  3.5 数据锁存器组及移位寄存器组模块

  数据锁存器组模块由16个8位锁存器组成锁存器组,锁存16个分区的数据。移位寄存器组模块由16个8位移位寄存器组成,把各路锁存器中8位并行数据转换成同时输出的16路串行数据,驱动LED显示屏,实现数据的并串转换。

  其生成的元件符号如图6所示。其中,DATA_IN[7.0]为每个分区的8位并行数据输入,SCLK为移位时钟,CLR为清零信号,LOAD为数据锁存信号,CS[150]为16分区的输入信号(接译码器的输出),DATA_OUT[150]为16路的串行数据输出。

  3.6 脉冲发生器

  系统采用1/16的扫描方式,把数据分为16分区,16分区数据同时传送。假设刷新的频率为60Hz(即周期为16.67ms),每一行显示的时间约为16.67ms/16=1.04ms。每行有1024位,则移位脉冲周期为1.04/1024=102s,即移位频率为0.983MHz以上才能满足要求。

  由于移位脉冲是数据读取模块时钟的2分频,因此系统的时钟至少1.97MHz以上,本系统采用50MHz时钟源。

  其时序图如图7所示。

  其中,RDCLK为FPGA读取数据时钟;SCLK是串行输出的移位时钟,是RDCLK的2分频;LOAD是数据锁存信号,每次读完16个分区中的某个字节数据DATA后产生锁存信号,数据锁存在数据锁存器组中,其时钟是RDCLK的16分频。

  4  FPGA控制模块的仿真测试

  在QuartusII5.1中建立一个工程,并建立原理图文件,把单片机与FPGA接口及数据读写模块、读地址发生器、译码器、行地址发生器、数据锁存器、移位寄存器、脉冲发生器等单元模块所生的模块元件符号连接起来,构成总控制模块逻辑图并对其功能仿真。仿真结果如图8所示,从存储器中读取16字节数据,经并串转换输出16路的串行数据。从波形图分析,功能正确,且各输出端口信号均符合时序要求。

  5  结语

  FPGA是在线可编程芯片,可以根据不同的用户要求进行不同的编程,缩短了系统的开发周期并节约了硬件的开发成本。本文以FPGA为主芯片,较完整地设计了大屏幕LED单色图文显示屏控制系统。随着LED显示屏技术的发展,FPGA与ARM或DSP等芯片的组合,必将在双色显示屏和彩色显示屏领域获得广泛的应用。

关键字:MCU  FPGA  图文显示屏  LED 引用地址:基于MCU和FPGA的LED图文显示屏控制系统

上一篇:基于Freescale S08核MC9S08QG4的便携式自动呼吸控制系统
下一篇:用单片机实现的脉冲编码传感器设计

推荐阅读最新更新时间:2024-03-16 13:44

意法新款马达驱动器内建32位MCU
意法半导体(ST)近日推出STSPIN32F0A可程序设计马达控制器,其在一个7mmÍ7mm轻巧封装内,完整整合栅极驱动器(用于驱动三个外部MOSFET半桥)、STM32F0微控制器(MCU)以及3.3V DC/ DC切换式转换器和12V LDO低压差稳压器,让设计人员可以依照不同的情况灵活地开发马达控制系统。同时亦内建了32KB闪存的48MHz微控制器,能够运作马达控制算法,例如6步无传感器向量控制或位置监测控制算法,以及用户应用软件。 该马达驱动器拥有6.7V到45V的宽工作电压,在行动机器人、云台(Gimbal)或无人机内,电源可以使用最少两个锂电池。新款马达控制器亦适用于电动工具、空气净化器和小冰箱等携带式电器、服务器散热
[半导体设计/制造]
51单片机 温湿度传感器DHT11
//硬件连接: P2.0口为通讯口连接DHT1 #include reg51.h #include intrins.h typedef unsigned char U8; typedef signed char S8; typedef unsigned int U16; #define uchar unsigned char #define uint unsigned int sbit P2_0 = P2^0 ; sbit P2_1 = P2^1 ; //----------------------------------------------// //-------
[单片机]
单片机自动浇花系统设计
自动浇水,检测湿度,湿度上下限值可调,自动与手动模式! 制作出来的实物图如下: 功能介绍 单片机土壤湿度检测自动浇花系统系统采用STC89C52单片机+ADC0832+LCD1602液晶+土壤湿度传感器+防水温度传感器+抽水电机+ 按键+蜂鸣器设计而成。 液晶第一行显示 实际的湿度 液晶第二行显示 湿度上限值 湿度下限值 按键说明: 从左边第一个起,减键、加键、设置键。 1.单片机型号:STC89C52/51、AT89C52/51、AT89S52/51 可任选。 2.产品自带单片机上电复位电路、手动复位电路(复位按键)、晶振电路(给单片机提供时钟周期)。 3.采集LCD1602液晶显示土壤湿度和温度,报警参数也可以
[单片机]
<font color='red'>单片机</font>自动浇花系统设计
基于STM32CubeMX的USB鼠标例程
最近在玩 STM32 CUBE的 USB 功能,用起来还是挺方便的。只要配置一下,设备描述符、配置描述符、 接口 描述符什么的,都能给你自动生成,其中还包括比较复杂的报告描述符。 这次给大家演示一下如何用STM32CUBE的配置,自动生成一个USB鼠标的过程。这里多说一句,USB是一套比较复杂的协议,单靠一两个例程是不可能完全理解的。至少要找本书,再配着USB官网的各种协议啃几天,才算入门。 所以这个例子起到的是一个抛砖引玉的过程,如果你真的感兴趣,就去找相关 资料 学习。STM32CubeMX的便利,在很多方面都给了我们很大的帮助!当然,如果有感兴趣的想继续学的,可以留言,我会试着写一些这方面的文章。 首先,软件版本我用的是
[单片机]
基于STM32CubeMX的USB鼠标例程
AVR单片机的RC5和RC6算法比较与改进
摘要:RC5及RC6是两种新型的分组密码。AVR高速嵌入式单片机功能强大,在无线数据传输应用方面很有优势。本文基于Atmega128高速嵌入式单片机,实现RC5和RC6加密及解密算法,并对算法进行汇编语言的优化及改进。根据实验结果。对两种算法的优热点进行比较和分析。 关键词:Atmega128 RC5 RC6 分组密码 混合密钥 Flash 引言 在无线局域网中,传输的介质主要是无线电波和红外线,任何具有接收能力的窍听者都有可能拦截无线信道中的数据,掌握传输的内容,造成数据泄密。因此,对于无线局域网来说,数据的加密是关键技术之一。 AVR高速嵌入式单片机是8位RISC MCU,执行大多数指令只需一个时钟周期,速度快(8M
[应用]
S3C2440裸机之用查询方式按键控制LED
前言 本文基于JZ2440开发板 一、思维导图 二、代码 1.key_led.c 代码如下(示例): /************************************************************************ * * 文件名:key_led.c * * 功能: 用EINT0(GPF0)按键控制D12(GPF6), 用EINT2(GPF2)按键控制D11(GPF5), 用EINT11(GPG3)按键控制D10(GPF4) * * 创建人:LiZhenhao * * 时间:2021年10月9日16:49:52 * * 版本号:1.0 * * 修改记录:无 * ********
[单片机]
S3C2440裸机之用查询方式按键控制<font color='red'>LED</font>
1602.c和1602.h头文件,完美版的51单片机1602液晶驱动
本文件可以完美驱动1602液晶屏,调用方法详见: http://www.51hei.com/bbs/dpj-24670-1.html ,有2个文件1602.c和1602.h头文件(在后面). 1602.c文件 //***************************** #include stc12c5a.h #include intrins.h #define uchar unsigned char #define uint unsigned int #define IODATA P0 //这三个引脚参考资料 sbit E=P2^7; //1602使能引脚 sbit RW=P2^6; //1602读写引脚 sbit
[单片机]
51单片机—AT24C1024(带程序解析!)—07
昨天晚上没弄好,明天老哥也要结婚了~shit,上午只是知道很忙,现在没事了~发~~ 我依稀还记得昨天用Keil的时候让人蛋疼~差点让我崩溃~我擦,就是那么一点点,就是编译不通过(这个不就是没事找事啊,本来这几天就心烦意乱了 )~~ 首先今天说的AT24C1024在以前的文章中我有过详细的介绍(那是相当的详细,所以我写这个程序就是东拼西凑的 ),我这里就不说了,我只是重点把源程序上出来,里边有详细解析~~ 要是感兴趣的话,你可以做个LCD显示的数码锁什么的,还有那个什么什么~~(万年历~~程序太多也是可以的 ,EEPROM就是强大~),那是相当的简单的~~只要在源程序的基础上加加就哦了~ 今天我这个程序就是存放我预先设置好
[单片机]
51<font color='red'>单片机</font>—AT24C1024(带程序解析!)—07
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved