300 likes | 492 Views
ARM嵌入式体系结构与接口技术 第12章 LCD接口设计. 课程安排 :. 第1章 嵌入式系统基础知识 第2章 ARM技术概述 第3章 ARM的指令系统 第4章 ARM汇编语言程序设计 第5章 ARM Realview MDK集成开发环境 第6章 GPIO编程 第7章 ARM异常中断处理及编程 第8章 串行通信接口. 课程安排 :. 第9章 存储器接口 第10章 定时器 第11章 A/D转换器 第12章 LCD接口设计 第13章 温度监测仪开发实例. 本章课程:. 12.1 LCD控制器 12.2 接口电路与程序设计 12.3 小结
E N D
ARM嵌入式体系结构与接口技术第12章 LCD接口设计
课程安排: • 第1章 嵌入式系统基础知识 • 第2章 ARM技术概述 • 第3章 ARM的指令系统 • 第4章 ARM汇编语言程序设计 • 第5章 ARM Realview MDK集成开发环境 • 第6章 GPIO编程 • 第7章 ARM异常中断处理及编程 • 第8章 串行通信接口
课程安排: • 第9章 存储器接口 • 第10章 定时器 • 第11章 A/D转换器 • 第12章 LCD接口设计 • 第13章 温度监测仪开发实例
本章课程: • 12.1 LCD控制器 • 12.2 接口电路与程序设计 • 12.3 小结 • 12.4 思考与练习
12.1 LCD控制器 • 12.1.1 LCD控制器介绍 • 液晶屏(LCD:Liquid Crystal Display)即人们常说的液晶显示器 • 液晶显示屏按显示原理分为STN 和TFT 两种: • STN(Super Twisted Nematic,超扭曲向列)液晶屏 • 单色液晶屏及灰度液晶屏都是STN 液晶屏 • TFT(Thin Film Transistor,薄膜晶体管)彩色液晶屏 • 现在大多数笔记本电脑都使用TFT显示屏,也常用于主流台式显示器 • 液晶屏的显示要求设计专门的驱动与显示控制电路 • 驱动电路包括提供液晶屏的驱动电源和液晶分子偏置电压,以及液晶显示屏的驱动逻辑;显示控制部分可由专门的硬件电路组成,也可以采用集成电路(IC)模块
12.1 LCD控制器 • 12.1.2 S3C2410X LCD控制器介绍 • S3C2410X LCD 控制器用于传输显示数据和产生控制信号,支持屏幕水平和垂直滚动显示,数据的传送采用DMA(直接内存访问)方式 ,支持STN和TFT显示器
12.1 LCD控制器 • 12.1.2 S3C2410X LCD控制器介绍 • 1、STN LCD显示器 • 支持3种类型的扫描方式:4位单扫描,4位双扫描和8位单扫描 • 支持256色和4096色彩色STN LCD • 典型的实际屏幕大小是:640×480,320×240,160×160等 • 最大虚拟屏幕占内存大小为4M字节 • 256色模式下最大虚拟屏幕大小:4096×1024, 2048×2048, 1024×4096等
12.1 LCD控制器 • 12.1.2 S3C2410X LCD控制器介绍 • 2、TFT LCD显示控制器性能 • 支持1,2,4或8bpp彩色调色显示 • 支持16bpp和24bpp非调色真彩显示 • 在24bpp模式下,最多支持16M种颜色 • 支持多种屏幕大小 • 典型的实际屏幕大小是: 640×480, 320×240, 160×160等 • 最大虚拟屏幕占内存大小为4M字节 • 64K色模式下最大虚拟屏幕大小:2048×1024等
12.1 LCD控制器 • 12.1.2 S3C2410X LCD控制器介绍 • 3、LCD外部接口信号 • VFRAME/VSYNC/STV:LCD控制器和LCD驱动器之间的帧同步信号 • VLINE/HSYNC/CPV:LCD控制器和LCD驱动器间的同步脉冲信号 • VCLK/LCD_HCLK:此信号为LCD控制器和LCD驱动器之间的时钟信号 • VD[23:0]:LCD像素数据输出端口 • VM/VDEN/TP:对于STN屏来说,它是LCD显示的开关控制信号。对于TFT屏来说,它是数据信号的使能信号 • LEND/STH:行结束信号(通常可以不用使能这个信号) • LCD_PWREN:LCD 电源使能 • LCDVF0:SEC TFT 信号OE • LCDVF1:SEC TFT 信号REV • LCDVF2:SEC TFT 信号REVB
12.1 LCD控制器 • 12.1.3 S3C2410X LCD控制器操作 • 主要讲解16位色的TFT屏操作方法: • TIMEGEN(脉冲发生器)产生适合LCD 驱动器的各种控制信号,如VSYNC, HSYNC, VCLK, VDEN,和LEND 等信号 • VSYNC 和HSYNC 取决于HOZVAL 与LINEVAL • HOZVAL = (水平显示尺寸) -1 • LINEVAL = (垂直显示尺寸) -1 • VCLK 的速率取决于寄存器LCDCON1 中CLKVAL 的值 • VCLK(Hz) = HCLK/[(CLKVAL+1)x2] • 帧频即为VSYNC信号的频率 • 帧频与控制寄存器LCDCON1及LCDCON2/3/4 中的VSYNC、VBPD、VFPD、LINEVAL、HSYNC、HBPD、HFPD、HOZVAL 和CLKVAL 有关联
12.1 LCD控制器 • 12.1.3 S3C2410X LCD控制器操作 • 典型的TFT液晶显示屏的扫描时序 • 帧同步(VSYNC) 用于表示一帧的起始 • 行同步(HSYNC) 用于表示一行的起始 • 时钟(VCLK)时钟信号 • 数据有效控制(VDEN) 数据有效信号 • 数据信号(VD) 表示每个像素点的数据信号,有1、2、4、8、12、16、24位等模式
12.1 LCD控制器 • 12.1.4 LCD控制器寄存器 • LCD控制器的相关寄存器共用16个 • 其中和TFT屏显示相关的有: • 5个LCD控制寄存器 • 2个帧缓冲开始地址寄存器 • 1个实际屏地址寄存器 • 1个零时调色板寄存器 • 中断屏蔽寄存器 • 中断源挂起寄存器 • 中断挂起寄存器
12.1 LCD控制器 • 12.1.4 LCD控制器寄存器 • 1、LCD控制器LCDCON1(地址:0x4D000000)
12.1 LCD控制器 • 12.1.4 LCD控制器寄存器 • 2、LCD控制器LCDCON2(地址:0x4D000004)
12.1 LCD控制器 • 12.1.4 LCD控制器寄存器 • 3、LCD控制器LCDCON3(地址:0x4D000008)
12.1 LCD控制器 • 12.1.4 LCD控制器寄存器 • 4、LCD控制器LCDCON4(地址:0x4D00000C)
12.1 LCD控制器 • 12.1.4 LCD控制器寄存器 • 5、LCD控制器LCDCON5(地址:0x4D000010)
12.1 LCD控制器 • 12.1.4 LCD控制器寄存器 • 5、LCD控制器LCDCON5(地址:0x4D000010)
12.1 LCD控制器 • 12.1.4 LCD控制器寄存器 • 6、帧缓冲区起始地址寄存器LCDSADDR1(地址:0x4D000014)
12.1 LCD控制器 • 12.1.4 LCD控制器寄存器 • 7、帧缓冲区起始地址寄存器LCDSADDR2(地址:0x4D000018)
12.1 LCD控制器 • 12.1.4 LCD控制器寄存器 • 8、帧缓冲区起始地址寄存器LCDSADDR3(地址:0x4D00001C)
12.1 LCD控制器 • 12.1.4 LCD控制器寄存器 • LCD 屏= 320*240, 16 级灰度, 单扫描 • 帧起始地址= 0x0c500000 • 偏移点数= 2048 点( 512 个半字) • 对应的寄存器应按如下方法设置: • LINEVAL = 240-1 = 0xef //显示窗口的垂直分辨率 • PAGEWIDTH = 320*4/16 = 0x50//显示窗口占用空间的半字数 • OFFSIZE = 512 = 0x200 //显示窗口可以水平偏移空间所占用的半字数 • //虚拟显示缓冲区的开始位置的[31:22],4M偏移 • LCDBANK = 0x0c500000 >> 22 = 0x31 • //显示窗口的开始地址的[21:1], 0x100000是0x0c500000的[21:0]位。 • LCDBASEU = 0x100000 >> 1 = 0x80000 • //显示窗口结束地址的[21:1] • LCDBASEL = 0x80000 + ( 0x50 + 0x200 ) * ( 0xef + 1 ) = 0xa2b00
12.2 接口电路与程序设计 • 12.2.1 S3C2410X LCD电路连接
12.2 接口电路与程序设计 • 12.2.1 S3C2410X LCD电路连接 • 上图中各个信号含义如下: • 器件J27是一个跳线选择,可以选择3.3V和5V作为液晶屏的输入电压 • nERESET:液晶复位信号,通常可以不接 • BUF_VD1~BUF_VD23:液晶数据信号,根据液晶的要求连接 • LCDVF0~LCDVF2: SEC液晶屏需要的时序信号,其它的液晶屏可以不用 • BUF_VCLK:液晶时钟信号 • BUF_VFRAME:帧同步信号 • BUF_VLINE: 行同步信号 • BUF_VM:数据使能信号 • BUF_LEND:行结束信号,通常可以不接 • TSXM、TSXP、TSYM、TSYP:触摸屏控制信号
12.2 接口电路与程序设计 • 12.2.2 程序的编写 • 编写软件程序,实现在分辨率为320*240,颜色深度为16位的LCD屏上,显示指定分辨率为320*240,颜色深度为16位色的图片 • 主要程序设计: • 相关寄存器定义 • LCD管脚初始化程序 • 初始化LCD控制器 • 画一个像素点 • 清屏 • 画一副图片 • LCD测试主程序
12.2 接口电路与程序设计 • 12.2.3 调试与运行结果 • 1.连接液晶屏 • 在开发板上连接一个320*240的16位真彩色LCD液晶屏。 • 2.打开实验例程 • (1)运行MDK开发环境,进入实验例程目录lcd_test子目录下的lcd_test.Uv2例程,编译链接工程。 • (2)根据common目录下的ReadMeCommon.txt及本工程目录下的readme.txt文件配置集成开发环境,在Option for Target对话框的Linker页中选择RuninRAM.sct分散加载文件,单击MDK的Debug菜单,选择Start/Stop Debug Session项或单击,下载程序文件到目标板的RAM中调试运行。 • (3)在Option for Target对话框的Linker页中选择RuninFlash.sct分散加载文件,单击MDK的Flash菜单,选择Download烧写调试代码到目标系统的Nor Flash中,重启目标板,目标板自动运行烧写到Nor Flash中的代码。
12.2 接口电路与程序设计 • 12.2.3 调试与运行结果 • 3.观察实验结果 • (1)在LCD上观察结果 • (2)logo图片转换为像素点的过程 • 使用Image2Lcd工具将图像logo.bmp转换为图像数据并保存到logo.c中,将logo.c加入到工程lcd_test中,重新编译运行。
12.3 小结 • 本章主要介绍了基于S3C2410X 的LCD控制器,操作TFT LCD的方法。 • 通过一个实例实现了在LCD屏上显示一幅图片。
12.4 思考与练习 • 12-1 TFT液晶显示屏外部接口信号有哪些? • 12-2 简述VFRAME、VLINE、VCLK这几个信号的作用? • 12-3 编程实现在LCD上显示一幅你自己的图片。