当前位置:文档之家› STM32学习笔记(6)LCD的显示

STM32学习笔记(6)LCD的显示

STM32学习笔记(6)LCD的显示
STM32学习笔记(6)LCD的显示

STM32学习笔记(6):LCD的显示

2011年4月14日LCD显示1.LCD/LCM的基本概念

液晶显示器(Liquid Crystal Display: LCD)的构造是在两片平行的玻璃当中放置液态的晶体,两片玻璃中间有许多垂直和水平的细小电线,透过通电与否来控制杆状水晶分子改变方向,将光线折射出来产生画面。

LCM(LCD Module)即LCD显示模组、液晶模块,是指将液晶显示器件,连接件,控制与驱动等外围电路,PCB电路板,背光源,结构件等装配在一起的组件。

在平时的学习开发中,我们一般使用的是LCM,带有驱动IC和LCD屏幕等多个模块。

2.FSMC的基本概念

在STM32上开发LCD显示,可以有两种方式来对LCD进行操作,一种是通过普通的IO口,连接LCM的相应引脚来进行操作,第2种是通过FSMC来进行操作。

可变静态存储控制器(Flexible Static Memory Controller: FSMC) 是STM32系列中内部集成256 KB以上FlaSh,后缀为xC、xD和xE的高存储密度微控制器特有的存储控制机制。之所以称为“可变”,是由于通过对特殊功能寄存器的设置,FSMC能够根据不同的外部存储器类型,发出相应的数据/地址/控制信号类型以匹配信号的速度,从而使得STM32系列微控制器不仅能够应用各种不同类型、不同速度的外部静态存储器,而且能够在不增加外部器件的情况下同时扩展多种不同类型的静态存储器,满足系统设计对存储容量、产品体积以及成本的综合要求。

FSMC有很多优点:

1.支持多种静态存储器类型。STM32通过FSMC可以与SRAM、ROM、PSRAM、NOR Flash和NANDFlash存储器的引

脚直接相连。

2.支持丰富的存储操作方法。FSMC不仅支持多种数据宽度的异步读/写操作,而且支持对NOR、PSRAM、NAND存储

器的同步突发访问方式。

3.支持同时扩展多种存储器。FSMC的映射地址空间中,不同的BANK是独立的,可用于扩展不同类型的存储器。当系

统中扩展和使用多个外部存储器时,FSMC会通过总线悬空延迟时间参数的设置,防止各存储器对总线的访问冲突。

4.支持更为广泛的存储器型号。通过对FSMC的时间参数设置,扩大了系统中可用存储器的速度范围,为用户提供了灵

活的存储芯片选择空间。

5.支持代码从FSMC扩展的外部存储器中直接运行,而不需要首先调入内部SRAM。

FSMC包含两类控制器:

1.1个NOR闪存/SRAM控制器,可以与NOR闪存、SRAM和PSRAM存储器接口。

2.1个NAND闪存/PC卡控制器,可以与NAND闪存、PC卡,CF卡和CF+存储器接口。

控制器产生所有驱动这些存储器的信号时序:

1.16位数据线,用于连接8位或16位的存储器;

2.26位地址线,最多可连续64MB的存储器(这里不包括片选线);

3.5位独立的片选信号线;

4.1组适合不同类型存储器的控制信号线:

-控制读/写操作

-与存储器通信,提供就绪/繁忙信号和中断信号

-与所用配置的PC卡接口:PC存储卡、PC I/O卡和真正的IDE接口

从FSMC的角度看,可以把外部存储器划分为固定大小为256MB的4个存储块

·存储块1用于访问最多4个NOR闪存或者PSRAM存储设备。这个存储区被划分为4个NOR/PSRAM区,并有4个专用的片选。

·存储块2和3用于访问NAND闪存设备,每个存储块连接一个NAND闪存。

·存储块4用于访问PC卡设备

每一个存储块上的存储器类型是由用户在配置寄存器中定义的。

注意:FSMC只是提供了一个控制器,并不提供相应的存储设备,至于外设接的是什么设备,完全是由用户自己选择,只要能用于FSMC控制,就可以,像本次实验中,我们接的就是LCM。

3.本例中FSMC的使用

由于本例只是利用FSMC对LCM进行操作,因此不用完全懂得FSMC的所有功能,而是懂得一部分相应的操作即可。

1.FSMC包括哪几个部分

FSMC包含以下4个模块:

·AHB接口(包含FSMC配置寄存器)

·NOR闪存和PSRAM控制器

·NAND闪存和PC卡控制器

·外部设备接口

需要注意的是,FSMC可以请求AHB进行数据宽度操作。如果AHB操作的数据宽度大于外部设备(NOR或NAND或LCD)的宽度,此时FSMC将AHB操作分割成几个连续的较小的数据宽度,以适应外部设备的数据宽度。

2.FSMC对外部设备的地址映像

FSMC对外部设备的地址映像从0x6000 0000开始,到0x9FFF FFFF结束,一共4个地址块,每个地址块256MB,而每个地址块又分成4个分地址块,大小为64MB。对于NOR的地址映像来说,我们可以通过选择HADDR[27:26] 来确定当前使用的是哪个64M的分地址块。而这四个分存储块的片选,则使用NE[4:1]来选择。数据线/地址线/控制线是共享的。

这里的HADDR 是需要转换到外部设备的内部AHB地址线,每个地址对应一个字节单元。因此,若外部设备的地址宽度是8位的,则HADDR[25:0]与STM32的CPU引脚FSMC_A[25:0]一一对应,最大可以访问64M字节的空间。若外部设备的地

址宽度是16位的,则是HADDR[25:1]与STM32的CPU引脚FSMC_A[24:0]一一对应。在应用的时候,可以将FSMC_A总线连接到存储器或其他外设的地址总线引脚上。

4.ILI9325

由于我们使用的是奋斗STM32 V3开发板,其内部自带的是一个LCM,产品的编号是:QD024CPS25-36AV0,其中的详细规格参数可以参考QD024CPS25-36AV0规格书中的记载。而LCM中的驱动IC就是采用的ILI9325。

ILI9325的功能很多,在此无法一一说明,但是参考ILI9325的Datasheet我们发现有几个引脚还是非常重要的,而只要操作好了这几个引脚,基本上就可以实现简单的对LCM的控制了。

nCS: IC的片选信号。如果是低电平,则ILI9325是被选中,并且可以进行操作,如果是高电平,这不被选中。

RS: 寄存器选择信号。如果是低电平,则选择的是索引或者状态寄存器,如果是高电平,则选择控制寄存器。

nWR/SCL: 写使能信号,低电平有效。

nRD: 读使能信号,低电平有效。

以上内容是从ILI9325的Datasheet里面找到的,但是根据我的实际操作发现,似乎高电平也是有效的。而且,不管是高电平还是低电平,都可以成功驱动LCD,如果有了解情况的可以讨论一下。

ILI9325的寄存器非常多,详细的各个寄存器的功能请参考ILI9325的Datasheet。在对ILI9325进行操作时,应该先写地址,然后再写数据,设置好各个寄存器之后,ILI9325就可以开始工作了。

5.电路设计

1.信号线的连接

STM32F10x FSMC有4个不同的banks,每一个64MB,可支持NOR以及其他类似的存储器。这些外部设备的地址线、数据线和控制线是共享的。每个设备的访问时通过片选信号来决定的,而每次只能访问一个设备。我们的LCM就是连接在NOR的bank 上面。

FSMC_D[15:0]:16bit的数据总线,连接ILI9325的数据线;

FSMC_NEx:分配给NOR的256MB的地址空间还可以分为4个banks,每一个区用来分配一个外设,这4个外设分别就是NE1-NE4;FSMC_NOE:输出使能,连接ILI9325的nRD引脚;

FSMC_NWE:写使能,连接ILI9325的nWR引脚;

FSMC_Ax:用在LCD显示RAM和寄存器之间进行选择的地址线,这个和ILI9325的RS引脚相连。该线可用任意一根地址线,范围是FSMC_A[25:0]。当RS=0时,表示读写寄存器,RS=1时,表示读写数据RAM。

其实关于RS的表述也并不完全准确,应该这么理解,RS=0的时候,向这个地址写的数表示了选择什么寄存器进行操作,然而要对寄存器进行什么操作,则要看当RS=1时,送入的数据了。

关于地址的计算,如果我们选择NOR的第一个存储区,并且使用FSMC_A16来控制ILI9325的RS引脚,则如果要访问寄存器地址(RS=0),那么地址是0x6000 0000(起始地址),如果要访问数据区(RS=1),那么基地址应该是0x6002 0000。

有人会问,为什么不是0x6001 0000呢?因为FSMC_A16=1。因为在前文中已经说过,若外部设备的地址宽度是16位的,则是HADDR[25:1]与STM32的CPU引脚FSMC_A[24:0]一一对应。也就是说,内部产生的地址应该要左移一位,FSMC_A16=1,

代表着第17位为1,而不是第16位为1。如果外部设备的地址宽度是8位的话,则不会出现这个问题。

再举一个例子,如果选择NOR的第4个存储区,使用FSMC_A0来控制RS引脚,则访问数据区的地址为0x6000 0002,访问LCD寄存器的地址为:0x6000 0000。

2.时序问题

一般使用模式2来做LCD的接口控制,不使用外扩模式。并且读写操作的时序一样。此种情况下,我们需要使用3个参数:ADDSET、DATAST、ADDHOLD。时序的计算需要根据NOR闪存存储器的特性和STM32F10x的时钟HCLK来计算这些参数。

写或读访问时序是存储器片选信号的下降沿与上升沿之间的时间,这个时间可以由FSMC时序参数的函数计算得到:

写/读访问时间= ((ADDSET + 1) + (DATAST + 1)) ×HCLK

在写操作中,DATAST用于衡量写信号的下降沿与上升沿之间的时间参数:

写使能信号从低变高的时间= t WP = DATAST ×HCLK

为了得到正确的FSMC时序配置,下列时序应予以考虑:

最大的读/写访问时间、不同的FSMC内部延迟、不同的存储器内部延迟

因此得到:

((ADDSET + 1) + (DATAST + 1)) × HCLK = max (t WC , t RC )

DATAST × HCLK = tWP

DATAST必须满足:

DATAST = (tAVQV+ tsu(Data_NE) + tv(A_NE) )/HCLK – ADDSET – 4 由于我没有找到ILI9325的这些时序的参数,所以就参考了一些以前别人写的程序里面的时序配置:当HCLK 的频率是72MHZ,使用模式B,则有如下时序:

地址建立时间:0x1

地址保持时间:0x0

数据建立时间:0x5

6.程序编写步骤

对于程序的编写,一般步骤是:

1.初始化RCC;

2.初始化GPIO;

3.初始化FSMC;

4.初始化LCD;

5.往GRAM里面写入显示数据。

其中RCC、GPIO、FSMC的初始化函数在STM32的固件库中已经有相应的函数,在此就不一一赘述了,如果有不懂的,可以参考以前我写的学习笔记。FSMC的初始化参数很多,而且基本上可以通用,因此在此也不对每一个参数具体有什么用进行解释了,一般来说,用通用参数就足够普通的开发了。

而对LCD的初始化,则需要自己编写相应的代码。基本原则是,首先向寄存器地址写入需要操作的寄存器地址(代码),然后再根据Datasheet,向数据区地址写入相应的数据,以实现某些操作。具体的操作在ILI9325的Datasheet 第8节Register Descriptions中,有详细的解释。而LCD的初始化只要按照Datasheet里面的,把每一个寄存器都给配置好了,就没有问题了。而这些寄存器的配置,大部分都是通用的,只是有一些屏幕方向选择,坐标系等会略有差别。

LCD配置好之后,就可以往GRAM里面写入图像数据了,在这里推荐一个软件“Image2LCD”,这个软件能读取图像,然后生成C代码的数据,只要将这些生成的代码直接写入GRAM中,就可以显示出图像了。不过要记住,在图像转换的时候,输出数据类型选择“C语言数组”,扫描模式选择“水平扫描”,输出灰度“16位真彩色”,最大宽度和高度“320”“240”勾选“高位在前(MSB First)”。这些配置都是和ILI9325的寄存器配置相对应的,如果说ILI9325的配置和本文中的不一样,则需要相应的选择其他的选项。

7. 程序源代码

main.c文件中的代码:

#include "stm32f10x_lib.h"

#include "stm32f10x_lcd.h"

extern unsigned char LCD_Image_BIT[];

extern unsigned char LCD_Image_HIT[];

void RCC_cfg();

void FSMC_cfg();

void LCD_cfg();

void GPIO_cfg();

void LCD_Show(unsigned char * LCD_Image);

int main()

{

RCC_cfg();

GPIO_cfg();

FSMC_cfg();

LCD_cfg();

while(1)

{

LCD_Show(LCD_Image_HIT);

Delay(100000000);

LCD_Show(LCD_Image_BIT);

Delay(100000000);

}

}

//RCC时钟配置

void RCC_cfg()

{

//定义错误状态变量

ErrorStatus HSEStartUpStatus;

//将RCC寄存器重新设置为默认值

RCC_DeInit();

//打开外部高速时钟晶振

RCC_HSEConfig(RCC_HSE_ON);

//等待外部高速时钟晶振工作

HSEStartUpStatus = RCC_WaitForHSEStartUp();

if(HSEStartUpStatus == SUCCESS)

{

//设置AHB时钟(HCLK)为系统时钟

RCC_HCLKConfig(RCC_SYSCLK_Div1);

//设置高速AHB时钟(APB2)为HCLK时钟

RCC_PCLK2Config(RCC_HCLK_Div1);

//设置低速AHB时钟(APB1)为HCLK的2分频

RCC_PCLK1Config(RCC_HCLK_Div2);

//设置FLASH代码延时

FLASH_SetLatency(FLASH_Latency_2);

//使能预取指缓存

FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);

//设置PLL时钟,为HSE的9倍频8MHz * 9 = 72MHz

RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);

//使能PLL

RCC_PLLCmd(ENABLE);

//等待PLL准备就绪

while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);

//设置PLL为系统时钟源

RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

//判断PLL是否是系统时钟

while(RCC_GetSYSCLKSource() != 0x08);

}

//打开GPIO时钟,复用功能

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE | RCC_APB2Periph_AFIO, ENABLE);

//打开FSMC时钟

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);

}

//FSMC配置

void FSMC_cfg()

{

FSMC_NORSRAMInitTypeDef FSMC_NORSRAMInitStructure;

FSMC_NORSRAMTimingInitTypeDef p;

//设置地址建立时间

p.FSMC_AddressSetupTime = 0x02;

//设置地址保持时间

p.FSMC_AddressHoldTime = 0x00;

//设置数据建立时间

p.FSMC_DataSetupTime = 0x05;

//总线返转时间

p.FSMC_BusTurnAroundDuration = 0x00;

//时钟分频

p.FSMC_CLKDivision = 0x00;

//数据保持时间

p.FSMC_DataLatency = 0x00;

//设置FSMC访问模式

p.FSMC_AccessMode = FSMC_AccessMode_B;

//选择设置的BANK以及片选信号(BANK1中的第一个block)

FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM1;

//设置是否数据地址总线时分复用(No)

FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;

//设置存储器类型(NOR)

FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_NOR;

//设置数据宽度(16bit)

FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;

//设置是否使用迸发访问模式(连续读写模式)(No)

FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable;

//设置WAIT信号的有效电平(低电平有效)

FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;

//设置是否使用还回模式(No)

FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;

//设置WAIT信号有效时机(在wait状态之前)

FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;

//设置是否使能写操作(Yes)

FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable;

//设置是否使用WAIT信号(No)

FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;

//设置是否使用扩展模式(读写时序相互独立)(No)

FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable;

//设置是否使用异步等待信号(No)

FSMC_NORSRAMInitStructure.FSMC_AsyncWait = FSMC_AsyncWait_Disable;

//设置是否使用迸发写模式(No)

FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable;

//设定读写时序

FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &p;

//设定写时序

FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p;

FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);

//使能Bank1中的block1

FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE);

}

//GPIO配置

void GPIO_cfg()

{

GPIO_InitTypeDef GPIO_InitStructure;

//背光控制

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOD, &GPIO_InitStructure);

//LCD复位

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;

GPIO_Init(GPIOE, &GPIO_InitStructure);

//打开FSMC的数据端口D[15:0]

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_14 | GPIO_Pin_15;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

GPIO_Init(GPIOD, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 |

GPIO_Pin_15;

GPIO_Init(GPIOE, &GPIO_InitStructure);

//打开FSMC功能端口,PD.4=RD(nOE);PD.5=WR(nWE)

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5;

GPIO_Init(GPIOD, &GPIO_InitStructure);

//打开NE1设置

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;

GPIO_Init(GPIOD, &GPIO_InitStructure);

//打开RS设置

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 ;

GPIO_Init(GPIOD, &GPIO_InitStructure);

//NE1=1

GPIO_SetBits(GPIOD, GPIO_Pin_7);

//LCD_RESET=0

GPIO_ResetBits(GPIOE, GPIO_Pin_1);

//LCD_RD=1(nOE)

GPIO_SetBits(GPIOD, GPIO_Pin_4);

//LCD_WR=1(nWE)

GPIO_SetBits(GPIOD, GPIO_Pin_5);

//背光LIGHT=1

GPIO_SetBits(GPIOD, GPIO_Pin_13);

}

//LCD初始化

void LCD_cfg()

{

//复位LCD

LCD_rst();

//LCD初始化

LCD_Init();

}

//LCD显示图片

//根据LCD_Init里面的配置,LCD的原点在左下角,终点在右上角;先纵向增长,再横向增长

void LCD_Show(unsigned char * LCD_Image)

{

u32 n = 0;

u16 temp = 0;

//设置进入模式

//AM=1:地址在水平写入方向上更新

//I/D[1:0]=01:水平方向递增,垂直方向递减

//BGR=1:RGB数据转换为BGR数据

//TRI=0;DFM=0;

//详细信息参考ILI9325 8.2.5 Entry Mode

LCD_WR_CMD(0x0003, 0x1018);

//GRAM的水平地址

//8.2.18 GRAM Horizontal/Vertical Address Set

LCD_WR_CMD(0x0020, 0x0000);

//GRAM的垂直地址

LCD_WR_CMD(0x0021, 0x013F);

//水平方向开始地址

LCD_WR_CMD(0x0050, 0x0000);

//水平方向结束地址(0-239)

LCD_WR_CMD(0x0051, 0x00EF);

//垂直方向开始地址

LCD_WR_CMD(0x0052, 0x0000);

//垂直方向结束地址(0-319)

LCD_WR_CMD(0x0053, 0x013F);

//写数据地址

//因为是16bits一起写入,而图像数据数组中是每个数据8bits,

//所以是2个8bits的数据合并成一个16bits的数据,再写入GRAM LCD_WR_ADD(0x0022);

while(n<153600)

{

temp = (u16)(LCD_Image[n]<<8) + LCD_Image[n+1];

LCD_WR_DATA(temp);

n += 2;

}

}

stm32f10x_lcd.c中的代码

#include "stm32f10x_lcd.h"

//数据区地址

#define Bank1_LCD_Data ((u32)0x60020000)

//寄存器区地址

#define Bank1_LCD_Reg ((u32)0x60000000)

u32 color1 = 0;

//延时函数

void Delay(u32 nCount)

{

for(; nCount != 0; nCount--);

}

//LCD复位

void LCD_rst()

{

//PE.1连接LCD的reset引脚

GPIO_ResetBits(GPIOE, GPIO_Pin_1);

Delay(0xAFFFFf);

GPIO_SetBits(GPIOE, GPIO_Pin_1 );

Delay(0xAFFFFf);

}

//LCD写寄存器地址函数

void LCD_WR_ADD(u16 index)

{

*(vu16 *)(Bank1_LCD_Reg) = index;

}

//LCD写数据函数

void LCD_WR_DATA(u16 val)

{

*(vu16 *)(Bank1_LCD_Data) = val;

}

//LCD写寄存器命令函数,先将命令地址写到Reg中,然后再将命令的数值写到Data中//具体地址和配置参照ILI9325的Datasheet

void LCD_WR_CMD(u16 index, u16 val)

{

*(vu16 *)(Bank1_LCD_Reg) = index;

*(vu16 *)(Bank1_LCD_Data) = val;

}

void LCD_Init()

{

//设置内部时钟

LCD_WR_CMD(0x00E3, 0x3008);

LCD_WR_CMD(0x00E7, 0x0012);

LCD_WR_CMD(0x00EF, 0x1231);

//启动振荡,ILI9325可以不要这一句

LCD_WR_CMD(0x0000, 0x0001);

//设置驱动器输出控制,SS=1,SM=0

//当SS=0时,源输出信号从S1开始至S720结束;

//当SS=1时,源输出信号从S720开始至S1结束。

//SM和GS搭配使用,具体查看ILI9325 8.2.3 Driver Output Contorl

LCD_WR_CMD(0x0001, 0x0100);

//LCD波形控制

//B/C=1:行反转;

//EOR=1和B/C=1:设置行反转

//8.2.4 LCD Driving Wave Control

LCD_WR_CMD(0x0002, 0x0700);

//设置进入模式

//AM=1:地址在水平写入方向上更新

//I/D[1:0]=01:水平方向递增,垂直方向递减

//BGR=1:RGB数据转换为BGR数据

//TRI=0;DFM=0;

//详细信息参考ILI9325 8.2.5 Entry Mode LCD_WR_CMD(0x0003, 0x1018);

//重新调整控制寄存器大小

//8.2.6 Resizing Control Register

LCD_WR_CMD(0x0004, 0x0000);

//显示器控制2

//FP[3:0]=0010;

//BP[3:0]=0010;

//详细信息参考ILI9325 8.2.8 Display Control 2 LCD_WR_CMD(0x0008, 0x0202);

//显示器控制3

//设置非显示区域刷新

//8.2.9 Display Control 3

LCD_WR_CMD(0x0009, 0x0000);

//显示器控制4

//FMARK信号设置

//8.2.10 Display Control 4

LCD_WR_CMD(0x000A, 0x0000);

//RGB显示接口控制1

//8.2.11 RGB Display Interface Control 1

LCD_WR_CMD(0x000C, 0x0000);

//帧标记位置

//8.2.12 Frame Marker Position

LCD_WR_CMD(0x000D, 0x0000);

//RGB显示接口控制2

//8.2.13 RGB Display Interface Control 2

LCD_WR_CMD(0x000F, 0x0000);

//功率控制1

//8.2.14 Power Control 1

LCD_WR_CMD(0x0010, 0x0000);

//功率控制2

//8.2.15 Power Control 2

//VC[2:0]=111:参考电压为Vci

LCD_WR_CMD(0x0011, 0x0007);

//功率控制3

//8.2.16 Power Control 3

LCD_WR_CMD(0x0012, 0x0000);

//功率控制4

//8.2.17 Power Control 4

LCD_WR_CMD(0x0013, 0x0000);

//延时,放电

Delay(200);

//功率控制1

//SAP=1:源驱动程序被启动

//BT[2:0]=110:

//APE=1:开始供应电力

//AP[2:0]=001:伽马驱动放大和源驱动放大

LCD_WR_CMD(0x0010, 0x1690);

//功率控制2

//DC1[2:0]=010:选择升压电路2工作频率Fosc/16 //DC0[2:0]=010:选择升压电路1工作频率Fosc/4 //VC[2:0]=111:参考电压为Vci

LCD_WR_CMD(0x0011, 0x0227);

//延时

Delay(50);

//功率控制3

//PON=1:控制线路3(VGL)开启

//VRH[3:0]=1100:设置外部参考电压

LCD_WR_CMD(0x0012, 0x001C);

//延时

Delay(50);

//功率控制4

//VDV[4:0]=11000:设置Vcom的电压振幅交替LCD_WR_CMD(0x0013, 0x1800);

//功率控制7

//8.2.21 Power Control 7

//VCM[5:0]=011100:设置内部VcomH电压

LCD_WR_CMD(0x0029, 0x001C);

//帧速率和色彩控制

//8.2.22 Frame Rate and Color Control

//FRS[3:0]:1101:帧率128

LCD_WR_CMD(0x002B, 0x000D);

//延时

Delay(50);

//GRAM的水平地址

//8.2.18 GRAM Horizontal/Vertical Address Set

LCD_WR_CMD(0x0020, 0x0000);

//GRAM的垂直地址

LCD_WR_CMD(0x0021, 0x0000);

//伽马控制

//8.2.23 Gamma Control

LCD_WR_CMD(0x0030, 0x0007);

LCD_WR_CMD(0x0031, 0x0302);

LCD_WR_CMD(0x0032, 0x0105);

LCD_WR_CMD(0x0035, 0x0206);

LCD_WR_CMD(0x0036, 0x0808);

LCD_WR_CMD(0x0037, 0x0206);

LCD_WR_CMD(0x0038, 0x0504);

LCD_WR_CMD(0x0039, 0x0007);

LCD_WR_CMD(0x003C, 0x0105);

LCD_WR_CMD(0x003D, 0x0808);

//水平和垂直位置的RAM地址

//8.2.24 Horizontal and Vertical RAM Address Position

//水平方向开始地址

LCD_WR_CMD(0x0050, 0x0000);

//水平方向结束地址(0-239)

LCD_WR_CMD(0x0051, 0x00EF);

//垂直方向开始地址

LCD_WR_CMD(0x0052, 0x0000);

//垂直方向结束地址(0-319)

LCD_WR_CMD(0x0053, 0x013F);

//门扫描控制

//8.2.25 Gate Scan Control

//GS=1:扫描方向是从G320到G1

//NL[5:0]=100111

LCD_WR_CMD(0x0060, 0xA700);

//NDL=0:在非显示区域设置源驱动器的输出极

//VLE=0:垂直滚动显示不可用

//REV=1:图像灰度反转

LCD_WR_CMD(0x0061, 0x0001);

//VL[8:0]=0

LCD_WR_CMD(0x006A, 0x0000);

//局部影像1显示位置

//8.2.26 Partial Image 1 Display Position

LCD_WR_CMD(0x0080, 0x0000);

//局部影像1RAM开始/结束地址

//8.2.27 Partial Image 1 RAM Start/End Address LCD_WR_CMD(0x0081, 0x0000);

LCD_WR_CMD(0x0082, 0x0000);

//局部影像2显示位置

//8.2.28. Partial Image 2 Display Position

LCD_WR_CMD(0x0083, 0x0000);

//局部影像2RAM开始/结束地址

//8.2.29 Partial Image 2 RAM Start/End Address LCD_WR_CMD(0x0084, 0x0000);

LCD_WR_CMD(0x0085, 0x0000);

//平板接口控制1

//8.2.30 Panel Interface Control 1

//RTNI[4:0]=10000:设置内部时钟运行模式中1线时钟的数目:16个

LCD_WR_CMD(0x0090, 0x0010);

//平板接口控制2

//8.2.31 Panel Interface Control 2

LCD_WR_CMD(0x0092, 0x0000);

LCD_WR_CMD(0x0093, 0x0003);

//平板接口控制4

//8.2.32 Panel Interface Control 4

LCD_WR_CMD(0x0095, 0x0110);

LCD_WR_CMD(0x0097, 0x0000);

LCD_WR_CMD(0x0098, 0x0000);

//显示控制1

//8.2.7 Display Control 1

//BASEE=1:显示基本图像

//GON=1 DTE=1:正常显示

//D[1:0]=11:打开显示面板

LCD_WR_CMD(0x0007, 0x0133);

//GRAM写入数据,用黑色清屏

LCD_WR_ADD(0x0022);

for(color1=0;color1<320*240;color1++)

{

LCD_WR_DATA(0x0000); //

}

color1=0;

}

stm32f10x_lcd.h中的代码

#include "stm32f10x_lib.h"

//LCD复位函数

void LCD_rst();

//LCD初始化函数

void LCD_Init();

//延时函数

void Delay(u32 nCount);

//LCD写寄存器地址函数

void LCD_WR_ADD(u16 index);

//LCD写数据函数

void LCD_WR_DATA(u16 val);

pic_bit.c中的代码和pic_hit.c中的代码由于太长了,所以并没有贴出来,其实就是根据某一

幅图片用Image2LCD生成的,其数组名分别叫const unsigned char LCD_Image_BIT[153600] const unsigned char LCD_Image_HIT[153600]

LED显示屏控制软件操纵使用说明(灵信V3.3)

第一章概述 1.1 功能特点 《LED Player V3.3》是本公司新推出的一套专为LED显示屏设计的功能强大,使用方便,简单易学的节目制作、播放软件,支持多种文件格式:文本文件,WORD文件,图片文件(BMP/JPG/GIF/JPEG...),动画文件(SWF /Gif)。 2.2 运行环境 操作系统 中英文Windows/7/NT/XP 硬件配置 CPU: 奔腾600MHz以上 内存:128M 相关软件 OFFICE2000--如需WORD文件必须安装

第二章安装与卸载 2.1 安装 《LED Player》软件安装很简单,操作如下:将LED Player播放软件的安装光盘插入电脑光驱,即可显示LED Player播放软件的安装文件,双击LED Player,即可实现轻松安装。 《LED Player》软件安装成功后,在【开始】/【程序】里将出现“LED软件”程序组,然后进入该程序组下的“LED Player”,单击即可运行,如图所示, opyright ? 2005-2007 Listen tech. All Rights Reserved 灵感设计诚信 同时,桌面上也出现“LED Player”快捷方式:如右图所示,双击它同样可以启动程序。

2.2 卸载 《LED Player》软件提供了自动卸载功能,使您可以方便地删除《LED Player》的所有文件、程序组和快捷方式,用户可以在“LED软件”组中选择“卸载LED Player”,也可在【控制面板】中选择【添加/删除程序】快速卸载. 第三章使用详解 3.1 节目组成 每块显示屏由一个或多个节目页组成。节目页是用来显示用户所要播放的文本、图片、动画等内容。区域窗口有十一种:图文窗、文本窗、单行文本窗、静止文本窗、时间窗、正计时窗、倒计时窗、模拟时钟窗、表格窗、动画窗、温度窗。 文件窗:可以播放各种文字、图片、动画、表格等几十种文件。 文本窗:用于快速输入简短文字,例如通知等文字。 单行文本窗:用于播放单行文本,例如通知、广告等文字。 静止文本窗:用于播放静止文本,例如公司名称、标题等文字。 时间窗:用于显示数字时间。 计时窗:用于计时,支持正/倒计时显示。

altium-designer基于MINI-STM32的最小系统

altium-designer基于MINI-STM32的最小系统《电路设计与PCB制板》 设计报告 题目: 基于MINI-STM32的最小系统学院: 专业: 班级: 姓名: 学号: 引言:Altium Designer基于一个软件集成平台,把为电子产品开发提供完整环境所需工具全部整合在一个应用软件中。 Altium Designer 包含所有设计任务所需工具:原理图和PCB设计、基于FPGA的嵌入式系统设计和开发。 目前我们使用到的功能特点主要有以下几点: 1、提供了丰富的原理图组件和PCB封装库并且为设计新 的器件提供了封装,简化了封装设计过程。 2、提供了层次原理图设计方法,支持“自上向下”的设 计思想,使大型电路设计的工作组开发方式称为可能。 3、提供了强大的查错功能,原理图中的ERC(电气规则 检查)工具和PCB 的DRC(设计规则检查)工具能帮助 设计者更快的查出和改正错误。 4、全面兼容Protel系列以前的版本,并提供orcad格式文 件的转换。 一、课程设计目的 1、培养学生掌握、使用实用电子线路、计算机系统设计、制板的能力;

2.提高学生读图、分析线路和正确绘制设计线路、系统的能力; 3.了解原理图设计基础、了解设计环境设置、学 习 Altium Designer 软件的功能及使用方法; 4.掌握绘制原理图的各种工具、利用软件绘制原理图; 5.掌握编辑元器件的方法构造原理图元件库; 6. 熟练掌握手工绘制电路版的方法,并掌握绘制编辑元件封装图的方法,自己构造印制板元件库; 7.了解电路板设计的一般规则、利用软件绘制原理图并自动生成印制板图。 二、设计过程规划 1、根据实物板设计方案; 2、制作原理图组件; 3、绘制原理图; 4、选择或绘制元器件的封装; 5、导入PCB图进行绘制及布线; 6、进入DRC检查; 三、原理图绘制 , 新建工程: 1.在菜单栏选择File ? New ? Project ? PCB Project 2.Projects面板出现。 3.重新命名项目文件。 , 新建原理图纸 1. 单击File ? New? Schematic,或者在Files面板的New单元选 择:Schematic Sheet。

DSP课程设计---液晶显示器控制显示

一、设计题目:液晶显示器控制显示 (1) 二、设计目的与步骤: (1) 2.1、 (1) 2.2、 (1) 三、设计原理: (2) 3.1、扩展IO接口: (2) 3.2、液晶显示模块的访问、控制是由VC5416 DSP对扩展接口的操作完成.. 2 3.3、液晶显示模块编程控制: (2) 3.4、控制I/O口的寻址: (2) 3.5、显示控制方法: (2) 3.6.液晶显示器与DSP的连接: (4) 3.7、数据信号的传送: (4) 四、 CCS开发环境 (5) 4.1、 (5) 4.2、 (6) 五、C语言程序 (8) 六、实验结果和分析 (15) 6.1、 (15) 6.2、 (16) 6.3、 (16) 6.4、 (16) 七、设计收获及体会 (17)

一、设计题目:液晶显示器控制显示 二、设计目的与步骤: 2.1、设计目的 通过实验学习使用VC5416 DSP的扩展I/O端口控制外围设备的方法,了解液晶显示器的显示控制原理及编程方法。 2.2、设计步骤 1.实验准备: ⑴连接实验设备:请参看本书第三部分、第一章、二。 2.设置Code Composer Studio 2.21在硬件仿真(Emulator)方式下运行: 3.启动Code Composer Studio 2.21: 选择菜单Debug→Reset CPU。 4.打开工程文件:浏览LCD.c文件的内容,理解各语句作用 工程目录:C:\ICETEK\VC5416AES61\VC5416AES61\Lab0403-LCD\LCD.pjt。5.编译、下载程序。 6.运行程序观察结果: 7将内层循环中的 “CTRLCDLCR=( nBW==0 )?(ledkey[nCount][i]):(~ledkey[nCount][i]);”语句改为“CTRLCDRCR=( nBW==0 )?(ledkey[nCount][i]):(~ledkey[nCount][i]);”,重复步骤5-6,实现在屏幕右侧显示。 8.更改程序中对页、列的设置,实现不同位置的显示。

dsp实验报告 哈工大实验三 液晶显示器控制显示实验

实验三液晶显示器控制显示实验 一. 实验目的 通过实验学习使用2407ADSP 的扩展I/O 端口控制外围设备的方法,了解液晶显示器的显示控制原理及编程方法。 二. 实验设备 计算机,ICETEK-LF2407-EDU 实验箱。 三.实验原理 ICETEK-LF2407-A 是一块以TMS320LF2407ADSP 为核心的DSP 扩展评估板,它通过扩展接口与实验箱的显示/控制模块连接,可以控制其各种外围设备。 液晶显示模块的访问、控制是由2407ADSP 对扩展I/O 接口的操作完成。 控制I/O 口的寻址:命令控制I/O 接口的地址为0x8001,数据控制I/O 接口的地址为0x8003 和0x8004,辅助控制I/O 接口的地址为0x8002。 显示控制方法: ◆液晶显示模块中有两片显示缓冲存储器,分别对应屏幕显示的象素,向其中写入数 值将改变显示,写入“1”则显示一点,写入“0”则不显示。其地址与象素的对应 方式如下: ◆发送控制命令:向液晶显示模块发送控制命令的方法是通过向命令控制I/O 接口 写入命令控制字,然后再向辅助控制接口写入0。下面给出的是基本命令字、解释 和 C 语言控制语句举例。 ?显示开关:0x3f 打开显示;0x3e 关闭显示; ?设置显示起始行:0x0c0+起始行取值,其中起始行取值为0 至63; ?设置操作页:0x0b8+页号,其中页号取值为0-7; ?设置操作列:0x40+列号,其中列号为取值为0-63; ◆写显示数据:在使用命令控制字选择操作位置(页数、列数)之后,可以将待显示的 数据写入液晶显示模块的缓存。将数据发送到相应数据控制I/O 接口即可。

利用拨码开关控制液晶显示器进行ASIC字符显示

中北大学 课程设计说明书 学生姓名:甘世伟学号:04 学院: 电子与计算机科学技术学院 专业: 微电子学 题目: 利用拨码开关控制液晶显示器进行ASIC字符显示 指导教师:王红亮职称: 讲师 2010 年 6 月 25 日 目录

表—1:OCMJ2X8(128X32)引脚说明....................- 12 -硬件接口 ..................................................................................................................................................................... - 13 -四、电性能参数 ......................................................................................................................................................... - 13 -1)表—1模块时间参数表.........................- 13 -2)表—2模块主要电气参数表.......................- 14 -用户命令 ..................................................................................................................................................................... - 14 -外型尺寸图(图11) .............................................................................................................................................. - 15 -6.附录:液晶显示器简介 (13) 1、课程设计目的 (1)学习操作数字电路设计实验开发系统,掌握液晶显示器的工作原理及应用。 (2)掌握组合逻辑电路、时序逻辑电路的设计方法。 (3)学习掌握可编程器件设计的全过程。 2、课程设计内容和要求: 、设计内容 用VHDL语言编写程序,利用拔码开头控制液晶显示器进行ASIC字符显示。 、设计要求 (1)学习掌握拔码开头控制模块、液晶显示模块的工作原理及应用; (2)熟练掌握VHDL编程语言,编写键盘控制模块的控制逻辑;

(仅供参考)STM32F105RBT6最小系统原理及工程的建立

市面上的许多stm32开发板都是使用ULINK2作为调试仿真工具,鉴于ULINK2所需引脚过多在学习时还可以,但应用于实际电路设计生产会造成许多硬件资源的浪费。鉴于此,本人经实验得出利用ST-LINK作为仿真下载工具的实验最小系统电路。希望给大家作为参考。 一、最小系统原理图 二、建立工程的步骤 1、先在一个文件夹内建6个子文件夹: DOC:放说明文件 Libraries:放库文件(CMSIS、FWlib) Listing:放编译器的中间文件 Output:放编译器的输出文件 Project:放项目工程 User:放自己编写的程序、main、stm32f10x_conf、stm32f10x_it.C、stm32f10x_it.h

2、双击桌面UV4图标启动软件,,---NWE uVision Project--选择保存地方----选择芯片型号------在左边处建立5个GOP(STARTUP放启动文件)、(CMSIS放内核文件)、(FWLIB放库里面的src的.C文件)、(USER 放自己写的程序文件及stm32f10x_conf.h、stm32f10x_it.h、stm32f10x_it.c、main.c)

3、将Output重置到一开始时所建的“Output”文件夹中。 4、将Listing重置到一开始时所建的“Listing”文件夹中。 5、在C、C++处的“Define”输入:STM32F10X_HD,USE_STDPERIPH_DRIVER。对于不同的芯片容量,可对HD进行更改(LD、MD、HD、XL、XC)。然后在“Include Paths”处指定相关的搜库位置。 6、Debug处选好下载器

led显示屏控制卡-LED显示屏控制器原理

目录 第一章 801型、802型卡功能简介 (1) 第二章硬件参数 (5) 第二章第8代控制系统使用手册 (6) 第三章国标网线制作方法 (25) Index Chapter I Model 801 and 802 functions and features (27) Chapter II Model 801 and 802 manual (30) Chapter III Communication cable making method (49) 深圳三鑫维科技是一家专业生产制造LED显示屏的知名企业,20年的led行业研究经验,如还有不理解的请咨询电话:9

第一章 801型、802型卡功能简介 一、完全兼容第七代 基于第七代升级开发,原功能不少,新功能更多更强大,系统更稳定更可靠。可与七代系统混合使用。 二、支持10位颜色 旧系统的8位颜色只能显示256X256X256=1677216种颜色,新系统颜色数为1024X1024X1024=1073741824种颜色,新系统颜色数是旧系统的64倍。 三、智能连接功能 同一块显示屏的多块接收卡/箱体(含备用的)可以任意交换而不需重新设置,接收卡能智能地动识别需显示的内容。 四、智能监控 每块接收卡均有温度检测和四路风扇监控输出,可根据用户设定的温度上限智能地控制四路风扇转速。 五、公司图标显示 当发送卡电源没开启时显示屏自动显示设定的公司图片,图片像素为128X128,颜色数为16K色。 六、支持16以内的任意扫描方式 原系统只支持1、2、4、8、16扫描,新系统为1、2、3、4、5、6、 7、8、9、10、11、12、13、14、15、16扫描。 七、支持模块宽度为64以内的任意数

altium designer基于MINI-STM32的最小系统

《电路设计与PCB制板》 设计报告 题目:基于MINI-STM32的最小系统 学院: 专业: 班级: 姓名: 学号:

引言:Altium Designer基于一个软件集成平台,把为电子产品开发提供完整环境所需工具全部整合在一个应用软件中。 Altium Designer 包含所有设计任务所需工具:原理图和PCB设计、基于FPGA的嵌入式系统设计和开发。 目前我们使用到的功能特点主要有以下几点: 1、提供了丰富的原理图组件和PCB封装库并且为设计新 的器件提供了封装,简化了封装设计过程。 2、提供了层次原理图设计方法,支持“自上向下”的设 计思想,使大型电路设计的工作组开发方式称为可能。 3、提供了强大的查错功能,原理图中的ERC(电气规则 检查)工具和PCB 的DRC(设计规则检查)工具能帮助设计者更快的查出和改正错误。 4、全面兼容Protel系列以前的版本,并提供orcad格式文 件的转换。

一、课程设计目的 1、培养学生掌握、使用实用电子线路、计算机系统设计、制板的能力; 2.提高学生读图、分析线路和正确绘制设计线路、系统的能力; 3.了解原理图设计基础、了解设计环境设置、学习 Altium Designer 软件的功能及使用方法; 4.掌握绘制原理图的各种工具、利用软件绘制原理图; 5.掌握编辑元器件的方法构造原理图元件库; 6. 熟练掌握手工绘制电路版的方法,并掌握绘制编辑元件封装图的方法,自己构造印制板元件库; 7.了解电路板设计的一般规则、利用软件绘制原理图并自动生成印制板图。 二、设计过程规划 1、根据实物板设计方案; 2、制作原理图组件; 3、绘制原理图; 4、选择或绘制元器件的封装; 5、导入PCB图进行绘制及布线; 6、进入DRC检查;

STM32最小系统电路

STM32最小系统电路 原创文章,转载请注明出处: 1.电源供电方案 ● VDD = ~:VDD管脚为I/O管脚和内部调压器的供电。 ● VSSA,VDDA = ~:为ADC、复位模块、RC振荡器和PLL的模拟部分提供供电。使用ADC时,VDD不得小于。VDDA和VSSA必须分别连接到VDD和VSS。 ● VBAT = ~:当关闭VDD时,(通过内部电源切换器)为RTC、外部32kHz振荡器和后备寄存器供电。 采用(AMS1117)供电 ]

2.晶振 STM32上电复位后默认使用内部[精度8MHz左右]晶振,如果外部接了8MHz 的晶振,可以切换使用外部的8MHz晶振,并最终PLL倍频到72MHz。 3.JTAG接口 ~ 在官方给出的原理图基本是结合STM32三合一套件赠送的ST-Link II给出的JTAG接口。

ST-Link II SK-STM32F学习评估套件原理图的JTAG连接 很多时候为了省钱,所以很多人采用wiggler + H-JTAG的方案。H-JTAG其实是twentyone大侠开发的调试仿真烧写软件,界面很清新很简洁。 ) H-JTAG界面

H-JTAG软件的下载: H-JTAG官网:大侠的blog: 关于STM32 H-JTAG的使用,请看下一篇博文 Wiggler其实是一个并口下载方案,其实电路图有很多种,不过一些有可能不能使用,所以要注意。你可以在taobao上买人家现成做好的这种Wiggler下载线,最简便的方法是自己动手做一条,其实很简单,用面包板焊一个74HC244就可以了。 ! Wiggler电路图下载: 电路图中”RESET SELECT”和”RST JUMPER”不接,如果接上的话会识别不了芯片。

LED显示屏控制系统方案

LED显示屏控制系统的分析与设计 摘要 本文根据LED图文显示屏系统的具体要求,通过查阅资料,分析并归纳出具体设计方案。即系统体系结构、系统整体工作流程、软件控制系统的设计以及串行通信设计。这个系统的工作流程是:通过软件控制系统提供的编辑工具完成图文编辑工作,对编辑的信息实现字模提取,然后可以根据系统提供的显示模式加载显示效果,确认为欲显示信息后保存文件,然后通过程序调用Windows函数,并采用RS-232C串口通信,实现数据到无线发射机的传输。 本文具体设计了三个模块:编辑功能模块,字模提取模块,效果添加及预览模块。系统是否需要更新以及现有设计是否能够满足要求都有待于进一步的研究。 关键词:LED 字模串行通信

目录 1 绪论 1.1 LED显示屏的研究背景及意义 (5) 1.2 软件开发工具C++概述 (6) 2 LED显示屏控制系统的系统分析 2.1 整体分析 (8) 2.2 计算机软件模块分析与设计 (8) 3 串行接口 3.1 串行通信的工作原理 (10) 3.2 RS-232C串行通信简介 (10) 3.3 RS-232C引脚及使用 (11) 3.4 MAX-232介绍 (12) 4 软件控制系统设计与实现 4.1编辑功能设计与实现 (14) 4.2字模提取 (16) 4.3效果添加与预览功能的设计与实现 (18) 4.4控制系统软件设计 (20) 5 总结 26 参考文献 (27)

致 (28) 1 绪论 1.1 LED显示屏的研究背景及意义 在当今现代信息化社会的高速发展过程中,大屏幕显示已经从公共信息展示等商业应用向消费类多媒体应用渗透。随着宽带网络的发展,数字化的多媒体容将在信息世界中占据主流,新型的大屏幕显示设备将代替传统电视机成为人们享受信息和多媒体容的中心。 与传统的显示设备相比,这种未来的巨大需求让大屏幕显示技术成为众人目光的焦点: (1) LED显示屏色彩丰富,显示方式变化多样(图形、文字、三维、二维动画、电视画 面等)、亮度高、寿命长,是信息传播设施划时代的产品。 (2) LED显示屏是集光电子技术、微电子技术、计算机技术、信息处理技术于一体的 高技术产品,可用来显示文字、计算机屏幕同步的图形。它以其超大画面、超强视觉、灵活多变的显示方式等独居一格的优势,是目前国际上使用广泛的显示系统。 (3) LED显示屏应用广泛,金融证券、银行利率、商业广告、文化娱乐等方面,有巨 大的社会效益和丰厚的经济效益。 在其历史的演变过程中,出现了多种信息传播媒体:但就其性能看:如阴级管(crt)或石英管(dv)大型电视,成本非常昂贵,在不需要超大画面且在室使用时效果尚可;彩色液晶显示同样成本昂贵、电路复杂,面积有限,受视频角的影响非常大,可视角度很小;影象投影设备亮度小、清晰度差(画面受光不均匀);电视墙表面有分割线,视觉上有异物感,室外应用时亮度效果差。而LED显示屏以其受空间限制较小,并可以根据用户要求设计屏的大小,具有全彩色效果,视角大,可以用于显示文字、图案、图象、动画、视频、录象信号等各种信息的特点得到了突飞猛进的发展。 LED显示屏的发展主要经历了三个阶段: 1、1990年以前LED显示屏的成长时期。一方面,受LED材料器件的限制,LED显示屏的应用领域没有广泛开展;另一方面,显示屏控制技术基本上是通讯控制方式,客观上影响了显示效果。这一时期的LED显示屏在国外应用较广,国很少,产品以红、绿双基色为主,控制方式为通讯控制,灰度等级为单点4级调灰,成本较高。 2、1990-1995年,这一段是LED显示屏迅速发展的时期。进入九十年代,全球信息产业高速增长,信息技术各个领域不断突破,LED显示屏在LED材料和控制技术方面也不断出现新的成果。蓝色LED晶片研制成功,全彩色LED显示屏进入市场;电子计算机及微电子领域的技术发展,在显示屏控制技术领域出现了视频控制技术,显示屏灰度等级实现16

LED显示屏控制系统介绍

LED显示屏控制系统介绍 LED显示屏控制系统引言 目前显示屏按数据的传输方式主要有两类:一类是采用与计算机显示同一内容的实时视频屏;另一类为通过USB、以太网等通信手段把显示内容发给显示屏的独立视频源显示屏,若采用无线通信方式,还可以随时更新显示内容,灵活性高。此外,用一套嵌入式系统取代计算机来提供视频源,既可以降低成本,又具有很高的可行性和灵活性,易于工程施工。因此,独立视频源LED显示系统的需求越来越大。 本系统采用ARM+FPGA的架构,充分利用了ARM的超强处理能力和丰富的接口,实现真正的网络远程操作,因此不仅可以作为一般的LED显示屏控制器,更可以将各显示节点组成大型的户外广告传媒网络。而FPGA是一种非常灵活的可编程逻辑器件,可以像软件一样编程来配置,从而可以实时地进行灵活而方便的更改和开发,提高了系统效率。 1 独立视频LED显示屏控制系统 LED显示屏的主要性能指标有场扫描频率、分辨率、灰度级和亮度等。分辨率指的是控制器能控制的LED管的数量,灰度级是对颜色的分辨率,而亮度高则要求每个灰度级的显示时间长。显然,这3个指标都会使得场扫描频率大幅度降低,因此需要在不同的场合对这些指标进行适当的 取舍。通常灰度级、亮度和场扫描频率由单个控制器决定,而分辨率可以通过控制器阵列的方式得到很大的提高。这样,每个控制器的灰度和亮度很好,场扫描频率也适当,再通过控制器阵列的形式,实现大的控制面积,即可实现颜色细腻的全彩色超大屏幕的LED显示控制器。 独立视频LED系统完全脱离计算机的控制,本身可以实现通信、视频播放、数据分发、扫描控制等功能。为了实现大屏幕、全彩色、高场频,本系统采用控制器阵列模式,如图1所示。 系统可以通过网络接口(以太网接口)由网络服务器端更新本地的数据,视频播放部分则通过对该数据进行解码,获得RGB格式的视频流。再通过数据分发单元,将这些数据分别发送到不同的LED显示控制器上,控制器将播放单元提供的数据显示到全彩色大屏幕LED上。 2 LED显示屏控制系统通信接口和视频播放单元 本系统的通信接口和视频播放部分由ARM+uClinux实现。ARM(Advanced RISC Machine)是英国ARM公司设计开发的通用32位RISC微处理器体系结构,设计目标是实现微型化、低功耗、高性能的微处理器。Linux作为一种稳定高效的开放源码式操作系统,在各个领域都得到了广泛的应用,而uClinux则是专门针对微控制领域而设计的Linux系统,具有可裁减、内核小、完善的网络接口协议和接口、优秀的文件系统以及丰富的开源资源等优点,正被越来越多的嵌入式系统采

液晶显示器控制显示实验

实验二液晶显示器控制显示实验 一、实验目的 通过实验学习使用VC5416DSP的扩展端口控制外围设备的方法,了解液晶显示器的显示控制原理及编程方法。 二、实验设备 计算机、ICETEK-VC5416-EDU实验箱(或ICETEK仿真器+ICETEK-VC5416-A系统板+相关连接线及电源)。 三、实验原理 1、扩展IO接口: ICETEK-VC5416-A是一块以TMS320VC5416ADSP为核心的DSP扩展评估板,它通过扩展接口与实验箱的显示/控制模块连接,可以控制其各种外围设备。 2、液晶显示模块的访问、控制时由VC5416 DSP对扩展接口的操作完成。 控制口的寻址:命令控制接口CTRLCDCMDR的地址为0x8001,数据控制接口的地址为CTRLCDLCR:0x8003和CTRLCDRCR:0x8004,辅助控制接口CTRLCDCR的地址为0x8002。 3、显示控制方法: 液晶显示模块中有两片显示缓冲存储器,分别对应屏幕显示的像素,向其中写入数值将改变显示,写入“1”则显示这一点,写入“0”则不显示。其地址与像素的对应方式如下: ——发送控制命令:方法是通过向命令控制接口写入命令控制字,然后再向辅助控制接口写入0。下面给出的是基本命令字、解释和C语言控制语句举例: 显示开关:0x3f打开显示;0x3e关闭显示; CTRLCDCMDR=0x3f;CTRLCDLCR=0;//将液晶显示打开 CTRLCDCMDR=0x3e;CTRLCDLCR=0;//将液晶显示关闭 设置显示起始行:0x0c0+起始行取值,其中起始行取值为0至63;

CTRLCDCMDR=0x0c0;CTRLCDLCR=0;//设置从存储器第0行开始显示 CTRLCDCMDR=0x0c8;CTRLCDLCR=0;//设置从存储器第8行开始显示设置操作页:0x0b0+页号,其中页号取值为0至7; CTRLCDCMDR=0x0b0;CTRLCDLCR=0;//设置即将操作的存储器第0页 CTRLCDCMDR=0x0b2;CTRLCDLCR=0;//设置即将操作的存储器第2页设置操作列:0x40+列号,其中列号取值为0至63; CTRLCDCMDR=0x40;CTRLCDLCR=0;//设置即将操作的存储器第0列 CTRLCDCMDR=0x44;CTRLCDLCR=0;//设置即将操作的存储器第4列 ——写显示数据:在使用命令控制字选择操作位置(页数、列数)之后,可以将待显示的数据写入液晶显示模块的缓存。将数据发送到相应数据控制I/O接口即可。由于液晶模块相对于DSP来讲是慢速设备,在命令之间可能需要增加延时语句。C语言语句举例说明: CTRLCDLCR=0x80;CTRLCDLCR=0;//向左侧屏幕缓存存入0x80,若显示行、页号 //和列号均为0时,屏幕上第8行第1列将显示 //黑色像素 CTRLCDRCR=0x01;CTRLCDLCR=0;//向右侧屏幕缓存存入0x01,若显示行、页号 //和列号均为0时,屏幕上第1行第65列将显 //示黑色像素 4、液晶显示器与DSP的连接: 5、数据信号所传送 由于液晶显示模块相对运行在高主频下的DSP属于较 为慢速设备,连接时需要考虑数据线上信号的等待问题; 电平转换:由于DSP为3.3V设备,而液晶显示模块 属于5V设备,所以在连接控制线、数据线时需要加电平隔 离和转换设备,如ICETEK-CTR板上使用了74LS245。 6、实验程序流程图: 四、实验步骤 1、实验准备: ⑴连接实验设备: ①连接电源:打开实验箱,将电源线的一端插入实验 箱外部左侧箱壁上的电源插孔中。确认实验箱面板上电源 总开关(位于实验箱底板左上角)处于“关”的位置,连接电源线的另一端至220V交流供电插座

lcd显示器控制电路

井冈山大学 课程:电子测量 系别:电子工程系 班级:08电信本(1)姓名:李俊剑 学号:80514055 教师:刘宇安

基于lcd显示器控制电路设计 摘要 本文将主要介绍远程步进电机控制与状态显示器系统的设计及相关功能,系统由一个主机和两个从机三大部分组成,主从机主控芯片都是AT89S52单片机。系统可实现的功能是主机能够对从机发出控制命令包括步进电机转速值的设定、角度值的设定,同时将在从机采集到的步进电机实时速度在显示器上显示和实现智能控制。主机和从机之间的通信采用的是半双工串行通信方式,串行通信接口采用的是MAX485接口,通过RS-485接口标准协议实现主从机之间的通信。显示部分采用的是具有较好人机界面的TG12864LCD显示,步进电机驱动器采用NPN型的TIP122达林顿管,速度的测量通过光电传感器MOC70T2实现,系统的干扰隔离通过电隔离器TLP521-4实现。 关键字:智能控制;串行通信;LCD显示;隔离干扰

Abstract This article will focus on remote stepper motor control and status display system design and related functions, the system consists of a master and two slaves three major components, both master and slave control chip AT89S52 microcontroller. System can realize the function of the host to control commands issued from the machine, including the value of the stepper motor speed setting, the setting angle value, while collected from the machine speed stepper motor display real-time display and intelligent control. Between master and slave half-duplex communication is used in serial communication, serial communication interface uses a MAX485 interface, through the RS-485 interface standard protocol for communication between master and slave. Show some use is a good man-machine interface TG12864LCD shows, stepping motor drive type with NPN TIP122 Darlington, speed measurement by optical sensors MOC70T2 achieved through the electrical system interference isolation isolator TLP521-4 implementation. Keywords: intelligent control; serial communication; LCD display; isolation interference

LED显示屏控制软件操作手册完整版

LED显示屏控制软件操作手册完整版

LED显示屏控制软件操作手册 ? 您使用LED显示屏控制软件,本软件适用于常规类LED控制卡(例如U盘LED控制卡,串口LED控制卡,网口LED控制卡等)。 下面为LED显示屏控制软件主界面图

LED显示屏控制软件主界面 双击光盘里面图标的安装包文件即可安装软件,安装完成后会在桌面出现图标,双击图标,即可进入LED显示屏控制软件的主界面。 ?下面是软件详细的操作说明 控制卡查找和显示屏设置 控制卡连接好显示屏和电脑后点击工具栏里面的查找屏

查找屏 使用串口卡或者网口卡连接会在红色字体区域自动显示控制卡的型号和版本号 ▲(注:使用U盘控制卡能够忽略查找屏步骤,直接设置屏参,编辑好节目点击发送即可) ①点击屏参设置按钮

设置屏参 ②输入密码168 输入密码 ③设置好屏参后点击设置屏参按钮 屏参设置 ▲(注:设置屏参里面有一些常见的单元板参数供参考选择)

?下面是一些常见的LED单元板的参数设置推荐 1,如果是户外P10的屏,接口是12接口的:(单色) 屏参为:数据极性:低,OE极性:高 扫描方式: 1/4 扫描,默认4.1扫描方式 2,如果是户外P16的屏,接口是12接口的: 屏参为:数据极性:低,OE极性:高 扫描方式: 1/4 扫描中的4.3扫描方式 3,如果是户内φ3.75,φ5 的屏,接口是08接口的: 屏参为:数据极性:低,OE极性:低 扫描方式: 1/16 扫描 4,如果是车载屏P7.62的屏,接口是08接口的: 屏参为:数据极性:低,OE极性:低 扫描方式: 1/8 扫描 ▲(注:以上推荐参数都是市面LED单元板的常见参数设置,不排除特殊规格的LED单元板,请以实际情况为准) 编辑节目和节目类型介绍

LCD字符型液晶显示器控制

LCD字符型液晶显示器控制 实现功能: 在实验平台上扩展一块LCD点阵字符型液晶显示器,要求:设计接口电路并编程使液晶显示器显示“当前时间”;并用按键输入与或修改时间。 工作原理及设计思路: 点阵字符型液晶显示器是专门用于显示数字、字母图形符号及少量自定义字符的显示器。在zks-03实验仪上有一标准的LCD液晶显示器接口J4,标注为DS1602。它与P87C52X2单片机以总线方式连接,其硬件连接如图1所示。 图1 由此可以看出LCD的命令寄存器的地址为:0xf800而数据寄存器的地址是: 0xf801。 实验箱上的J4接口如图4所示: J4 J5 DS1602(SIP16) LCD_L 从左到右对应的管脚分别为: 1:GND 2:VCC 3:V0——接0~5V电压,调节LCD的对比度(实验箱上让它接地,使对比度达到最大) 4:RS——寄存器选择:“0”选指令寄存器;“1”选数据寄存器

5:R/W——“1”读操作;“0”写操作 6:EN——使能信号 7~14:DB0~DB7——八位双向数据信号线 15~16:LCD背光电源 将液晶显示器与J4接口对应连接好,编写读写程序,便对液晶显示器进行控制。

电路仿真 程序 #include #define uint unsigned int #define uchar unsigned char uchar a,miao,shi,fen,ri,yue,nian,week,flag,temp,key1n; #define yh 0x80 //第一行的初始位置 #define er 0x80+0x40 //第二行初始位置 //sbit cs1=P3^7; //sbit ledk=P2^5; sbit dula=P2^6; sbit wela=P2^7; sbit wr=P1^1; sbit rs=P1^0; sbit en=P2^5; sbit SCLK=P2^1; // 6 P1.1 sbit IO=P2^0; // 7 P1.0 sbit RST=P2^4; //时钟5 P1.2 sbit ACC0=ACC^0; sbit ACC7=ACC^7; sbit key=P3^7; sbit key1=P3^0; sbit key2=P3^1; sbit key3=P3^2; uchar code tab1[]={"2009- - THU"}; uchar code tab2[]={" : : "};

基于STM32的最小系统及串口通信的实现_勾慧兰

STM32是意法半导体(ST)推出的32位RISC(精简指令集计算机)微控制器系列产品,采用高性能的ARM Cortex-M3内核,工作频率为72MHz,内置高速存储器(128K字节的闪存和20K字节的SRAM)。本文介绍STM32F103增强型微处理器的最小系统,实现其串口通信的设计调试。 1STM32的最小系统 STM32微处理器不能独立工作,必须提供外围相关电路,构成STM32最小系统。包括3.3V电源、8MHz晶振时钟、复位电路、数字和模拟间的去耦电路、调试接口、串行通信接口等电路。最小系统原理图如图1所示。 图1STM32最小系统原理图 1.1电源模块与外部晶振 STM32F103C8T6内嵌8MHz高速晶体振荡器,也可外部时钟供给,本系统采用8MHz外部晶振供给。 STM32F103C8T6的供电电压范围为2.0~3.6V。电源模块是电路关键的一部分,是整个系统工作的基础。因此,电源设计过程中需要考虑以下因素:①输入电压、电流;②输出的电压、电流和功率;③电磁兼容和电磁干扰等[1]。 1.1.1电源供电设计 最小系统供电电源为12V直流电源供电,通过LM2576S-5.0单元电路,将电压稳定到+5V。LM2576系列芯片是单片集成电路,能提供降压开关稳压器的各种功能,能驱动3A的负载,有优异的线性和负载调整能力,在指定输入电压和输出负载条件下保证输出电压的±4%误差。LM2576的效率比流行的三段线性稳压器要高的多,是理想的替代。用DL4003串接到电源正端,为系统提供电源反接保护。+5V电压通过三端稳压芯片ASM1117-3.3将电压转换成+3.3V,D3作为电源指示灯,为主控芯片STM32F103C8T6、串口通信电路和其他外围芯片供电。电源供电原理如图2所示。 图2电源供电原理 1.1.2电源抗干扰设计 电源电压转换过程中需要进行滤波处理,+12V转+5V的电路中,需要在+12V输入端加入47μF/50V的电解电容,+5V输出端加入1000μF/25V的电解电容,IN5822起到续流作用;+5V转3.3V电路中,在+5V输入端和+3.3V输出端需要各加入100μF/10V的钽电容。 电路中存在模拟和数字电源,需要加入电感和电容组成去耦电路。STM32中有3组VDD/VSS管脚,有1组VDDA/VS-SA管脚。尽管所有的VDD和所有VSS在内部相连,在芯片外部仍然需要连接所有的VDD和VSS。由于导线较细,内部连接负载能力较差,抗干扰的能力也较差,如果漏接VDD/VSS,容易造成线路损坏,同时抗干扰能力也会下降。因此每对VDD与VSS都必须在尽可能靠近芯片处分别放置一个100nF的高频瓷介电容,在靠近VDD3和VSS3的地方放置一个4.7μF的瓷介电容。VDDA为所有的模拟电路部分供电,包括ADC模块、复位电路等,即使不使用ADC功能,也需要连接VDDA。建议VDD和VDDA使用同一个电源供电。VDD与VDDA之间的电压差不能超300mV。VDD与VDDA应该同时上电或调电[2]。模拟电源与数字电源隔离去耦电路如图3所示。 1.2复位电路 复位电路为低电平复位、上电复位。 基于STM32的最小系统及串口通信的实现 勾慧兰刘光超(北京九州泰康生物科技有限责任公司,北京102200)Minimum System and Serial Communication Implementation Based on STM32 摘要 介绍了以Cortex-M3为内核的STM32的最小系统,详细描述其串口通信的设计,并进行仿真调试和目标调试。 关键词:STM32,最小系统,串口通信 Abstract This paper introduces the minimum system of STM32which core is Cortex-M3,and detailed describes the design of serial communication,then does the simulation debugging and target debugging. Keywords:STM32,minimum system,serial communication 基于STM32的最小系统及串口通信的实现26

STM32最小系统电路

STM32最小系统电路 原创文章,转载请注明出处:blog、ednchina、com/tengjingshu 1、电源供电方案 ● VDD = 2、0~3、6V:VDD管脚为I/O管脚与内部调压器的供电。 ● VSSA,VDDA = 2、0~3、6V:为ADC、复位模块、RC振荡器与PLL的模拟部分提供供电。使用ADC时,VDD不得小于2、4V。VDDA与VSSA必须分别连接到VDD与VSS。 ● VBAT = 1、8~3、6V:当关闭VDD时,(通过内部电源切换器)为RTC、外部32kHz振荡器与后备寄存器供电。 采用LM1117-3、3V(AMS1117)供电

2、晶振 STM32上电复位后默认使用内部[精度8MHz左右]晶振,如果外部接了 8MHz的晶振,可以切换使用外部的8MHz晶振,并最终PLL倍频到72MHz。 3、JTAG接口 在官方给出的原理图基本就是结合STM32三合一套件赠送的ST-Link II给出的JTAG接口。 ST-Link II

SK-STM32F学习评估套件原理图的JTAG连接 很多时候为了省钱,所以很多人采用wiggler + H-JTAG的方案。H-JTAG其实就是twentyone大侠开发的调试仿真烧写软件,界面很清新很简洁。 H-JTAG界面 H-JTAG软件的下载: H-JTAG官网: twentyone 大侠的blog: 关于STM32 H-JTAG的使用,请瞧下一篇博文

Wiggler其实就是一个并口下载方案,其实电路图有很多种,不过一些有可能不能使用,所以要注意。您可以在taobao上买人家现成做好的这种Wiggler下载线,最简便的方法就是自己动手做一条,其实很简单,用面包板焊一个74HC244就可以了。 Wiggler电路图下载: 电路图中”RESET SELECT”与”RST JUMPER”不接,如果接上的话会识别不了芯片。

相关主题
文本预览
相关文档 最新文档