基于单片机的LED显示屏控制系统设计

发布者:学富五车最新更新时间:2013-01-18 来源: 21ic 关键字:单片机  LED显示屏  控制系统 手机看文章 扫描二维码
随时随地手机看文章
  本设计使用双RAM技术来组织用于控制矩形显示屏的控制系统数据,提高了信息垂直循环显示时的存储器效率,大幅度降低了对数据存储器的占用率,并且对刷新频率的要求也不是很高。

  1、led显示数据组织

  需要显示的区域小于或等于实际显示区域时,采用静态显示即可。但大多时候需要显示的区域大于或等于实际显示区域,如图1所示。为了简化问题的分析,本文将显示区域高度设置为LED显示屏高度的4倍,宽度等于LED显示屏宽度。设显示屏的高度为Lh,宽度为Lw,则显示区域高度Dh=4Lh,宽度Dw=Lw。本文以单色显示作为描述对象,且Bw=Bn=8(Bw为扫描线条数,Bn为输出数据宽度),如图1所示。

  对于一个LED显示屏,宽度Lw和高度Lh确定后,显示屏单元板的排列方式也就确定了。单元板相邻的两条扫描线之间的距离为Sw,显示屏有Bw条扫描线,分别是Y0,Y1,…,YBw-1。每Sw行对应一位显示数据,显示屏上的每一个点对应于存储器中某个字节的某一位。Bw条扫描线分别指向:Y0=O,Y1=Sw,…,BBw-1=(Bw-1)Sw。用静态显示数据组织方法分别对显示块A、B、C、D组织显示数据。首先对显示块A的显示信息进行组织(X为列号):

  ①X=0,即当前扫描线各行与第O列相交各点的显示数据按D0,D1,…,DBw-1的顺序存储在存储器的第一个存储单元中。

  ②X值增加1,当前扫描线各行与X值对应列相交各点的显示数据存储在存储器的下一个存储单元中。直至将X=O至X=Dw-1的Dw个数据按顺序全部存储在存储器中。

  ③Bw条扫描线向下移动一行,重复第①至②步,直到Y0移动到Sw-1行时。

  ④数据组织结束。

显示区域B、C、D分别按照A的数据组织方式去组织显示数据。组织后的显示数据块按A、B、C、D的顺序存储在RAM0里,然后将RAM0中的显示数据块A、B、C、D按B、C、D、A的顺序拷贝到RAMl中,任何两个相邻显示块的显示数据在两块RAM中都有相同的地址存储区域。RAM0和RAMl的显示数据与存储器的对应关系如图2所示。

  扫描组1从Y0=0到Y0=Sw-1,对应显示块A,数据已组织存放在存储器中,可以直接输出显示数据;扫描组2从Y0=Lh到Y0=Lh+ Sw-1,对应显示块B也已经组织好,可以直接输出。但是扫描组3,它的位置非同一般,它的扫描线分别对应着两个块A和B;第O,1,…Bw-1条扫描线分别对应显示块A扫描组1的1,2,…,Bw-2;而第Bw-1条扫描线就对应显示块B扫描组2的第O条扫描线。如果要在显示屏上显示扫描组3对应的这一屏数据,就一定要同时使用到扫描组1的第1,2,…,Bw-1条扫描线和扫描组2的第O条扫描线组织的显示数据作为输出数据。由于显示块A和B的显示数据是分别组织的,这时就要取RAM0的D0,D2,…,DBw-1和RAMl的D0位作为输出到显示屏的Bw位数据,这就需要在两块RAM同时输出的2Bw位中选择需要的Bw位
作为输出数据,并且这Bw位数据是连续的。

  显示步骤(在此只考虑垂直移动显示效果);双RAM技术将显示数据输出的时候,是将两块RAM中相同地址的两个数据同时输出。所以,如果设置RAMO为主存储器,RAMl为从存储器,则将两块RAM的显示数据存在一块串行存储器中时,偶地址单元应存储RAM0的数据,奇地址单元存储RAMl的数据,由于数据宽度为8,所以每次输出16位数据。如果显示区域中以(XL,YL)点为显示起始点,在LED屏上显示一屏显示信息,则其数据选择控制位只与YL、扫描线和扫描宽度Sw有关。显示区域的起始行坐标为YL,一块显示区域有Bw·Sw行,则YL所在的块为:[page]

  这里讨论YL在实际显示区域的坐标没有多大意义,只须注意YL在当前显示块的相对坐标,NL=YL%(Bw·Sw)就是YL在当前显示块的相对纵坐标,则相对坐标为(NL,YL)。动态显示的基础是静态显示,静态显示以从特定行显示一屏为特征,当显示屏从第YL行开始显示信息时,因为一块显示区域有Sw·Dw个数据,则YL所在块显示数据的起始地址为:

  一块显示区域分为Sw个区,则YL所在的分区记作:

  一区存放有Dw个显示数据,所以YL所在分区地址与所在块起始地址之间的相对偏移地址为(YL%Sw)·Dw。所以,只要知道了显示信息的起始行坐标,就能得到显示数据在存储器中的存储地址。

  NL=YL/(Bw·Sw),这里记i=NL/Sw(0≤i≤7),表示显示信息跨越两个数据块时需要选择的数据位数。存储器输出16位数据[D0,D1,…,D15]后,从Di位控制选择连续的8位数据[Di,Di+1,…,D7,…,D7+i]输出到显示屏。当数据从一个字节的Di位开始输出16位时,如[Di,Di+1,…,D7,…,D15,D0,…,Di-1],前面8位在当前显示是多余的几位数据,后面8位数据[D8+i,…,D15,D0,…,Di-1]正好是要输出到显示屏的8位数据。当这16位数据串行输出到一个8位的移位寄存器中时,移位寄存器刚好可以容纳高8位数据,并将其输出显示。之后各列数据的输出情况同样如此,不需要额外的指令或电路来对输出数据进行选择输出。只是在每行第一列数据输出前,通过单片机模拟i个时钟脉冲输出到存储器,让输出数据产生错位,使数据从Di位开始输出。另外,当显示信息刚好是A、B、C、D块中的某一块时,无须产生模拟脉冲对数据进行选择,而是直接将数据输出显示。通过分析可知,SPI模块刚好具有这个功能,通过单片机额外模拟i个时钟脉冲,输出到串行存储器的时钟信号端,可以使数据错位,从指定的某一位Di开始输出。当显示信息跨越Sw-1区间时,如果一场显示还没有完毕,内存地址应返回到YL所在块的起始地址,并从起始地址开始输出显示数据,单片机模拟的脉冲数i也相应发生变化。

2 、LED显示屏控制系统设计

  LED显示屏控制电路。为了提高数据输出效率,采用RAMtron公司的带SPI功能模块的VRS51L3074单片机。VRS51L3074的时钟频率为40 M-Hz,指令周期短,处理速度快,效率高;工作电压在3.3 V左右,但是可以兼容5 V。SST25VF016B是一款具有SPI接口的8引脚串行Flash。7 4LSl64为移位寄存器。

  2.1 VRS51L3074的SPI功能模块

  VRS51L3074的SPI时钟频率可以在SysClk/2~SysClk/10

24范围内调整,SPI时钟频率最高可以达到20MHz。当VRS51L3074作为SPI主机时,可以对SPI运行控制、配置和状态监控以及其他的一些工作环境进行设置。

  配置寄存器SPICONFIG:主要对片选信号控制模式、SPI中断进行设置。

  状态寄存器SPISTATUS:主要用于对SPI运行状态的监控。

  传输字长寄存器SPISIZE:设置传输字长,本文设置为16位,即每次输出16位数据。

  控制寄存器SPICTRL:对SPI时钟速率、时钟相位/极性、片选信号,以及SPI时钟频率进行设置。

  数据寄存器SPIRXTX0~SPIRXTX3:用于对SPI接口32位收发缓冲器的访问,对数据寄存器执行写操作是将数据送入发送缓冲器中,对数据寄存器执行读操作是从接收缓冲器中取出收到的数据。SPI接口的发送和接收缓冲器都采用双缓冲结构,从硬件上减少数据冲突并提高数据传输效率。在主模式下对SPIRXTX0寄存器执行写入操作将启动SPI传输。当传输字各行长大于8时,应最后向SPIRXTX0寄存器写入。

  向串行Flash输入控制信号和数据地址后,启动串行Flash传输数据,在SPI时钟驱动下输出显示数据,并且可以用单片机模拟串行Flash时钟信号控制任意位数据输出。

  2.2 数据选择控制电路

  LED显示屏控制系统如图3所示,VRS51L3074单片机内部自带精确的40 MHz振荡器,不需要外部晶振电路提供系统时钟。数据显示采用内存为16 Mb的SST25VF016B。双RAM技术输出显示数据的时候,是将两块RAM中相同地址的两个数据同时输出,所以,将两块RAM的显示数据存放在一块串行存储器中时,偶地址单元应存储RAM0的数据,奇地址单元存储RAMl的数据,数据输出时每次输出16位数据。串行存储器和单片机的工作电压都在3.3 V左右,但是VRS51L3074可以兼容5V,简化了控制电路。控制信号和显示数据在输出到寄存器74LS164和显示屏的时候,需要用74LVC07进行电平转换。[page]

控制系统控制显示数据输出的流程为:

  ①将扫描线行地址通过P2端口的低4位送给LED显示屏。

  ②通过显示数据在显示区域中的位置,计算显示数据在存储器中的地址,并计算出数据选择的位数i。

  ③通过单片机P3.0口模拟移位脉冲,输出到串行Flash时钟信号,移位脉冲数由数据选择位数i决定。使输出数据产生错位,正确地选择输出显示数据。

  ④启动SPI读取显示数据,SPI传输字长设置为16位。模拟脉冲已经输出到串行Flash使数据产生了错位,输出16位数据[Di,Di+1,…,D7,…,D15,D0,…,Di-1],输出到显示屏的数据[D8+i,…,D15,D0,…,Di-1]在高8位,经过移位刚好可以存放在移位寄存器中。每行第一个数据输出后,此行各列数据都直接输出。

  ⑤16位数据输出完毕后,通过P3.1脚产生一个SCK脉冲,将移位寄存器74LSl64中的数据输出移入到单元板的串行移位寄存器74HC595中。

  ⑥重复第④至⑤步,直到一行数据全部输出完毕后,由P3.2产生一个RCK脉冲,读取的一行数据将输出显示,然后扫描线下移一行。

  ⑦重复第①至⑥步。

  此电路有这样几个特点:显示数据从串行Flash输出后,不经单片机的处理,直接以DMA方式输出到移位寄存器74LSl64,同时实现串并转换,既节省数据处理时间,又提高显示效率。在每场数据输出之前,通过信息在显示区域中的地址计算数据选择位数i,并通过P3.O端
口模拟i个脉冲输出到串行Flash,移出i位数据,数据产生错位,使输出显示的数据在16位输出数据的高8位,可以直接存放在移位寄存器中,输出到显示屏。以后同行各列的显示数据输出时,无需再进行数据选择位的判断,直接将显示数据从存储器中输出到显示屏。

  存储器效率分析如表1所列。

  由表1可知,采用双RAM技术输出显示大大提高了存储器效率,降低了显示数据存储器的占用。当显示信息量较大时,动态数据组织使用的存储器比较多、利用率低,而采用双RAM技术正好解决了这个问题。一块RAM(静态显示时)的存储器效率是100%,双RAM的效率是50%。当有N块RAM时,效率为(N-1)/N。

关键字:单片机  LED显示屏  控制系统 引用地址:基于单片机的LED显示屏控制系统设计

上一篇:基于STC单片机的智能LED路灯控制器设计
下一篇:基于单片机的点阵式LED滚动汉字显示屏仿真设计

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

STM8单片机外部晶振不起振解决方法
部分型号的STM8单片机可以支持最高24MHz的外部晶振,在配置外部晶振时需要按照如下的步骤进行: 1 定义外部晶振宏定义 宏定义的写法如下: #define HSE_VALUE ((uint32_t)24000000) 外部晶振是多少的就写多少,如果是24M的外部晶振就写成24000000。 如果不用宏定义的话,就在单片机的头文件中找到宏定义部分,头文件的宏定义默认16M外部晶振,将其修改为实际晶振值就可以。 2 配置外部晶振 配置外部晶振时需要使能外部时钟,并且要等到晶振稳定。使用库函数配置的语句如下所示: void CLK_Init() { CLK_HSECmd(ENABLE); //外部时钟开 whil
[单片机]
学好单片机必须要了解的8个电路设计
单片机上拉电阻的选择 大家可以看到复位电路中电阻R1=10k时RST是高电平 ,而当R1=50时RST为低电平,很明显R1=10k时是错误的,单片机一直处在复位状态时根本无法工作。出现这样的原因是由于RST引脚内含三极管,即便在截止状态时也会有少量截止电流,当R取的非常大时,微弱的截止电流通过就产生了高电平。 LED串联电阻的计算问题 通常红色贴片LED:电压1.6V-2.4V,电流2-20mA,在2-5mA亮度有所变化,5mA以上亮度基本无变化。 端口出现不够用的情况 这时可以借助扩展芯片来实现,比如三八译码器74HC138来拓展。
[单片机]
学好<font color='red'>单片机</font>必须要了解的8个电路设计
基于单片机STC89C51的电子琴电路设计
  引言   随着计算机在社会各领域的渗透,单片机的应用正在不断地走向深入,同时带动着工业、农业、商业、家电以及玩具的日新月异更新,极大地提高了电子电路及系统设计质量和效率。 本文中所设计的具有存储功能的单片机电子琴是由STC89C51单片机、小键盘、LCD以及音频功放电路和扬声器组成的。利用该电子琴电路,用户可以自由地输入音符,利用单片机产生不同频率来获得我们要求的音阶,使扬声器发出悦耳的音乐,最终可随意弹奏想要表达的音乐。同时详细论述了该系统的设计过程及关键技术。 1 系统硬件组成 电子琴的控制电路分为单片机STC89C51、工作指示LED、LCD显示器、按键输入、喇叭接口等几部分。其硬件电路结
[单片机]
基于<font color='red'>单片机</font>STC89C51的电子琴电路设计
浅析基于单片机设计康复仪方法与应用
通过对上面测量和描记的脉图进行对比分析可知,这套测量系统能比较精确地测得脉搏波形,而且测量精度高、响应速度快、功耗低,且便于操作。克服了传统方法获取人体脉搏波形的不便性及低精度等不利因素。同时在开发板上预留了网络接口,使采集处理后的数据可远程传输,这对于远程中医诊断提供了可能性,所以具有一定的实用性和很好的市场前景。 1. 引言 人类的平衡能力是人能够进行各种运动的基础,人的站立、坐卧、行走都需要有平衡能力。一旦人的平衡能力有障碍,则人的行动能力就受制约,给学习、生活带来极大的不便。在现代化的社会,人口老龄化问题突出,老年人因某种疾病而导致脑损伤引起平衡能力降低,行动能力受阻。因此,在临床治疗中,需要一种能对平衡功能检验的设备
[单片机]
浅析基于<font color='red'>单片机</font>设计康复仪方法与应用
单片机温度采集电路的设计与虚拟仿真
   0 引言   在工业生产中,电流、电压、温度、压力、流量、流速和开关量都是常用的主要被控参数。其中,温度控制也越来越重要。在工业生产的很多领域中,人们都需要对各类加热炉、热处理炉、反应炉和锅炉中的温度进行检测和控制。采用单片机对温度进行控制不仅具有控制方便、简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而大大提高产品的质量和数量。因此,单片机对温度的控制问题是工业生产中经常会遇到的控制问题。   目前应用的温度检测系统大多采用由模拟温度传感器、多路模拟开关、A/D转换器及单片机等组成的传输系统。这种温度采集系统需要大量的测温电缆,才能把现场传感器的信号送到采集卡上.安装和拆卸繁杂,成本也高。同时线路上传送
[单片机]
51单片机内核的中断基础知识
51内核的最基础的中断源请求有外部中断、定时器中断和串口中断,这也是学习和开发者最长用的。当然还有其他的中断源,比如ADC、SPI、PWM等。以外部中断0为例,在编程中常使用的方式为: void INT0()interrupt 0 using 1 { …… } 在这里特别做上笔记:其中前面的void INT0() 只是代表一个普通没有形参的函数而已,函数名写成什么都是可以的,这个到不重要。那么后面的就一个一个词的扣把:(2-1-i-c-中国-电子网,防抓取) 其中 interrupt n 组成一组,n用来指明中断号,在函数后使用了interrupt关键字后,就会自动的生成中断向量,51内核中断号如下图,这是
[单片机]
51<font color='red'>单片机</font>内核的中断基础知识
关于PIC单片机PAGE和BANK
从PIC单片机的指令结构上来分析一下为什么PIC中要有BANK和PAGE的设置吧。先来看一下为什么PIC中要把RAM区划分多个BANK。 仔细观察PIC单片机汇编语言指令的格式,一条完整的汇编语言指令语句通常是这样的:标号操作码助记符 操作数1,操作数2;注释。其中,主体部分是‘操作码助记符操作数1,操作数2’。 例如: 指令:MOVF 33,1 操作码助记符:MOVF ; 操作数1:33 ; 操作数2:1 ; 而在程序被编译时指令语句的主体部分会被转换为代码的形式,通常是:指令代码操作数2 操作数1。 例如在指令位数为14位的中档PIC单片机中: 指令:MOVF 33,1 转换后代码:00 1000 1 011
[单片机]
用M16单片机I/O口生成模拟音乐
* 用M16单片机I/O口生成模拟音乐 * * 功 能:用I/O口生成模拟音乐 * * 时钟频率:内部1M * * 设 计:tonghe * * 修改日期:2007年04月13日 * * 编译环境:ICC-AVR6.31 * * 实验环境:本站M16学习板 * * 发 声:无源蜂鸣器 * * 结 果:试验通过 * * 要 求:插上JP1、JP2、LED_EN短路块 * *****************************************/ #include iom16v.h #include macros.h #define uchar unsigned char #define uint unsigned int
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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