TFT液晶显示屏设计定稿Word格式文档下载.docx
- 文档编号:20563253
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:16
- 大小:192.60KB
TFT液晶显示屏设计定稿Word格式文档下载.docx
《TFT液晶显示屏设计定稿Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《TFT液晶显示屏设计定稿Word格式文档下载.docx(16页珍藏版)》请在冰豆网上搜索。
5.LCD显示器与触摸屏接口:
作为系统显示与人机交互的必不可少的接口。
6.JTAG接口:
作为系统调试接口,可以通过JTAG口下载程序或进行在线调试。
2.2三星S3C2410介绍
S3C2410是韩国三星公司的一款基于ARM920T内核的16/32位RISC嵌入式微处理器,主要面向手持设备以及高性价比,低功耗的应用。
运行的频率可以达到203MHzARM920T核由ARM9TDMI,存储管理单元(MMU)和高速缓存三部分组成。
其中MMU可以管理虚拟内存,高速缓存由独立的16KB地址和16KB数据高速Cache组成。
ARM920T有两个协处理器:
CP14和CP15。
CP14用于调试控制,CP15用于存储系统控制以及测试控制。
S3C2410的资源包括[5]:
(1)1个LCD控制器(支持STN和TFT带有触摸屏的液晶显示屏)。
(2)SDRAM控制器。
(3)3个通道的UART。
(4)4个通道的DMA。
(5)4个具有PWM功能的计时器和一个内部时钟。
(6)8通道的10位ADC。
(7)触摸屏接口。
(8)IIS总线接口。
(9)2个USB主机接口,1个USB设备接口。
(10)2个SPI接口。
(11)SD接口和MMC卡接口。
(12)看门狗计数器。
(13)117个通用I/O口和24位外部中断源。
(14)8通道10位AD控制器。
2.3TFT液晶显示屏
TFT型液晶显示技术采用了“主动式矩阵”的方式来驱动。
方法是利用薄膜技术所做成的电晶体电极,利用扫描的方法“主动地”控制任意一个显示点的亮与暗。
光源照射时先通过下偏光片向上透出,借助液晶分子传导光线。
本次设计的实际系统采用了夏普256K色3.5英寸TFT液晶屏,分辨率为320*240,通过VFRAME(帧同步)、VLINE(行同步)、VCLK(点时钟)、VDATA(视频数据)、VM(开关)等信号可以直接与S3C2410接口。
2.4S3C2410LCD控制器
2.4.1概述
S3C2410X中的LCD控制器由传送逻辑构成,这种逻辑是把位于系统内存显示缓冲区中LCD视频数据传到外部的LCD驱动器。
LCD控制器支持单色,使用基于时间的抖动算法和帧频控制的方法,可以支持每像素2位(四级灰度)或每像素4位(16级灰度)的单色LCD显示屏。
支持每像素1位、2位、4位和8位带有调色板的TFT彩色LCD和每像素16位与24位的无调色板真彩色显示。
根据屏幕的水平与垂直像素数,数据界面的数据宽度,界面时间和自刷新速率,LCD控制器可以编程以支持各种不同要求的显示屏[6]。
2.4.2方框图
图2-2LCD控制器方框图
S3C2410中LCD控制器用为传送视频数据和产生需要的控制信号的,如VFRAME,VLINE,VCLK,VM,等。
除控制信号外,S3C2410X中的LCD控制器还有传送视频数据的端口,如图中VD[23:
0]所示。
LCD控制器由REGBANK,LCDCDMA,VIDPRCS,TIMEGEN,andLPC3600(如图2-2LCD控制器框图)组成。
REGBANK有17个可编程寄存器组和用来配置LCD控制器的256*16的调色板存储器。
LCDCDMA是一个专用DMA,自动传送数据到LCD驱动器。
利用这个专用的DMA,视频数据可以在没有CPU的参与下自动显示。
VIDPRCS从LCDCDMA接收视频数据,然后将其转换成适合的数据格式通过数据端口VD[23:
0]发送到LCD驱动器上,例如4/8位单扫描或4位双扫描模式。
TIMEGEN由可编程逻辑组成,支持各种常见LCD驱动器的定时与速率界面的不同要求。
TIMEGEN模块产生FRAME,VLINE,VCLK,VM等信号。
数据流描述:
LCDCDMA有FIFO(First-InFirst-Out,先入先出)存储器。
当FIFO为空或者部分为空时,LCDCDMA模块就以爆发式传送模式从帧存储器中取数据(每次爆发式请求连续取16个字节,期间不允许总线控制权的转变)。
当传送请求被位于内存控制器中的总线仲裁器接受时,将有连续的4个字的数据从系统内存送到外部的FIFO。
FIFO的大小总共为28字,其中分别有12个字的FIFOL和16个字的FIFOH。
S3C2410X有两个FIFO存储器以支持双扫描显示模式。
在单扫描模式下只有一路FIFO(FIFOH)工作。
2.4.3TFT型LCD控制器操作
1.LCD控制器的外部接口信号
VSYNC:
垂直同步信号
HSYNC:
水平同步信号
VCLK:
像素时钟信号
VD[23:
0]:
LCD像素数据输出端口
VDEN:
数据使能信号
LEND:
行结束信号
LCD_PWREN:
LCD屏电源控制信号
2.TIMEGEN(脉冲发生器)产生适合LCD驱动器的各种控制信号,如VSYNC,HSYNC,VCLK,VDEN,和LEND等信号。
这些控制信号与寄存器组中的控制寄存器LCDCON1/2/3/4/5的配置密切相关。
基于这些可编程LCD控制寄存器,脉冲发生器可以产生可编程的信号,可支持各种不同类型的LCD驱动器。
VSYNC和HSYNC脉冲的产生依赖于LCDCON2/3寄存器的HOZVAL域和LINEVAL域的配置。
HOZVAL和LINEVAL的值由LCD屏的尺寸决定,如下公式:
HOZVAL=水平显示尺寸-1
LINEVAL=垂直显示尺寸-1
VCLK信号的频率取决于LCDCON1寄存器中的CLKVAL域。
VCLK和CLKVAL的关系如下,其中CLKVAL的最小值是0:
VCLK(Hz)=HCLK/[(CLKVAL+1)×
2]
帧频率是VSYNC信号的频率,它与LCDCON1和LCDCON2/3/4寄存器的VSYNC、VBPD、VFPD、LINEVAL、HSYNC、HBPD、HFPD、HOZVAL和CLKVAL都有关系。
大多数LCD驱动器都需要与显示器相匹配的帧频率,帧频率计算公式如下:
FrameRate=1/{[(VSPW+1)+(VBPD+1)+(LINEVAL+1)+(VFPD+1)]×
[(HSPW+1)+(HBPD+1)+(HFPD+1)+(HOZVAL+1)]×
[2×
(CLKVAL+1)/(HCLK)]}
3.TFT-LCD信号时序图
图2-3TFT-LCD信号时序图
4.视频操作
S3C2410中TFTLCD控制器支持1、2、4或8位每像素带调色板显示和16或24位每像素无调色板真彩色显示。
支持多种颜色映射选择的256色调色板,使用户的操作更具弹性。
5.虚拟显示
S3C2410X支持硬件方式的水平和垂直滚屏。
要实现滚屏,可修改LCDSADDR1和LCDSADDR2寄存器中的LCDBASEU和LCDBASEL的值(如图2-4)。
但不是通过修改PAGEWIDTH和OFFSIZE来实现。
显示缓冲区中的图像在尺寸上应比LCD显示屏大些。
图2-4虚拟显示滚屏
6.LCD的电源控制
S3C2410X有电源控制(PWREN)功能。
启用电源控制时,引脚LCD_PWREN的输出值是由ENVID控制的。
换言之,当引脚LCD_PWREN连接至LCD屏的电源开启控制端后,LCD屏的电源就自动由ENVID的设置确定。
S3C2410X亦有极性反转位(INVPWREN),可使PWREN信号的极性反转。
此功能只有当LCD屏有电源控制端口且被正确连接至LCD_PWREN引脚时方为有效。
第三章TFT屏驱动设计
3.1开发环境
ARM处理器产品作为一种高性能、低功耗的处理器产品,现在已经得到广泛应用。
ARM开发工具也因此得到很大的发展,ARM应用软件的开发工具根据功能的不同,分别有编译软件、汇编软件、链接软件、调试软件、嵌入式实时操作系统、函数库、评估板、JTAG仿真器、在线仿真器等[7]。
本次设计选用的开发环境为ADS1.2。
ADS1.2提供完整的WINDOWS界面开发环境,C编译器效率极高,支持C以及C++,可以很方便的使用C语言进行开发。
提供软件模拟仿真功能,很容易使初学习者能够熟悉ARM的指令系统;
配合FFT-ICE使用ADS1.2提供强大的实时调试跟踪功能,片内运行情况尽在掌握。
3.2S3C2410启动过程
3.2.1硬件启动过程[8]
1.在板子上电的一开始,系统首先自动判断是否是autoboot模式(这是由硬件设计阶段,由硬件工程师对mcu的引脚连线决定的),我所使用的s3c2410是带有nandflash的,并且被设置成autoboot,从nandflash开始启动。
2.在判断是autoboot模式后,mcu内置的nandflash控制器自动将nandflash的最前面的4k区域(这4k区域存放着bootloader的最前面4k代码)拷贝到samsung所谓的"
steppingstone"
里面(实际上是一块4k大小的SRAM).这一过程完全由硬件自动实现,不需软件控制。
3.在拷贝完前4k代码后,nandflash控制器自动将"
映射到arm地址空间0x00000000开始的前4k区域。
4.在映射过程完成后.nandflash控制器将pc指针直接指向arm地址空间的0x00000000位置,准备开始执行"
上的代码.
5.而"
上从nandflash拷贝过来的4k代码,是程序员写的bootloader的前4k代码.这个bootloader在之前写好,并已经被烧写到nandflash的0x00000000开始的最前面区域..而这"
上的4k代码就是bootloader的前4k代码.
6.在pc指向arm地址空间的0x00000000后,系统就开始执行指令代码.这4k代码的任务是:
初始化硬件,设置中断向量表,设置堆栈,然后一个很重要的任务是,将nandflash的最前面区域的bootloader(包含4k启动代码)拷贝到SDRAM中去,bootloader代码的大小是写好bootloader就确定的.然后只需要确定bootloader想映射到SDRAM的起始位置。
7.在完成对nandflash上的bootloader搬移后,找到4k代码的搬移代码最后一个指令的下一个指令在SDRAM的bootloader的地址,然后跳转到该位置,继续执行bootloader的剩余代码引导系统.
3.2.2LCD的初始化
LCD显示模块由S3C2410的LCD控制器和TFT液晶LCD显示器组成。
其显示方式以直接操作显示缓冲区的内容进行,LCD控制器通过DMA从显示缓冲区中获取数据,而不需要CPU干预[9]。
本系统采用TFTLCD的分辨率为320×
240。
在点亮LCD之前,首先对LCD控制器相关的寄存器进行初始化,从而使LCD控制器的配置与外接LCD模块特性能够匹配;
同在内存中划出一块显示缓冲区,与显示像素点一一对应[10],其主要过程包括
(1)初始化LCD端口。
(2)申请显示缓冲区。
(3)初始化LCD控制寄存器,包括设置LCD分辨率、扫描频率、显示缓冲区等。
按照上述分析,初始化程序如下:
第一部分:
TFTLCD数据和控制端口初始化,包括初始化了VD[7:
0],VD[15:
8],
LCDVF[2:
0],VM,VFRAME,VLINE,VCLK,LEND等数据以及控制信号。
函数名:
staticvoidLcd_Port_Init(void)
第二部分:
申请显示缓冲区。
S3C2410的LCD控制模块自带了DMA控制器,只
要在SDRAM里面开一块空间,然后设定要DMA的起始地址(LCDSADDR1寄存器)和结束地址(LCDSADDR2)就可以了。
注意,LCDSADDR2指向的是整个大缓冲区之后的第一个地址。
第三部分:
LCD控制寄存器初始化。
staticvoidLcd_Init(void)
{
rLCDCON1=(CLKVAL_TFT_240320<
<
8)|(MVAL_USED<
7)|(3<
5)|(12<
1)|0;
//(3<
5):
11(二进制)=TFT型LCD显示(12<
1):
1100=TFT型16位/像素0:
ENVIDLCD视频输出和逻辑信号使能位0=视频输出和控制信号无效
rLCDCON2=(VBPD_240320<
24)|(LINEVAL_TFT_240320<
14)|(VFPD_240320<
6)|(VSPW_240320);
//垂直同步信号的后肩3,LCD屏的垂直尺寸240-1,垂直同步信号的前肩5,垂直同步信号的脉宽15,
rLCDCON3=(HBPD_240320<
19)|(HOZVAL_TFT_240320<
8)|(HFPD_240320);
//水平同步信号的后肩5,LCD屏水平尺寸320-1,水平同步信号的前肩15rLCDCON4=(MVAL<
8)|(HSPW_240320);
//MVAL=13,水平同步信号的脉宽8
rLCDCON5=(1<
11)|(1<
10)|(1<
9)|(1<
8)|(0<
7)|(0<
6)|(0<
5)|(0<
4)|(1<
3)|(0<
2)|(0<
1)|
(1);
//FRM5:
6:
5,HSYNCandVSYNCareinverted
//确定16bpp显示时输出数据的格式1=5:
5格式
//决定VCLK的有效极性,1=VCLK上升沿时取数据
//HSYNC脉冲的极性0=正常1=反转
//VSYNC脉冲的极性1=反转
//VD(视频数据)脉冲的极性0=正常
//VDEN信号的极性0=正常
//PWREN信号的极性0=正常
//LEND信号的极性0=正常
//LCD_PWREN输出信号使能位1=PWREN信号有效
//LEND输出信号使能位0=LEND信号无效
//字节交换控制位0=不可交换
//半字交换控制位1=可以交换
//帧缓冲起始地址寄存器
rLCDSADDR1=(((U32)LCD_BUFER>
>
22)<
21)|M5D((U32)LCD_BUFER>
1);
//系统内存中视频缓冲区的位置A[30:
22]
//指示帧缓冲区的开始地址A[21:
1]M5D((U32)LCD_BUFER指取(U32)LCD_BUFER的低21位
rLCDSADDR2=M5D(((U32)LCD_BUFER+SCR_XSIZE_TFT_240320*SCR_YSIZE_TFT_240320*2)>
rLCDSADDR3=(((SCR_XSIZE_TFT_240320-LCD_XSIZE_TFT_240320)/1)<
11)|(LCD_XSIZE_TFT_240320/1);
//LCD中断屏蔽寄存器决定哪一个中断源被屏蔽。
被屏蔽的中断源将不会被响应。
rLCDINTMSK|=(3);
//MASKLCDSubInterrupt
//LPC3600控制寄存器
rLPCSEL=0;
//DisableLPC3600
//临时调色板寄存器
rTPAL=0;
//DisableTempPalette
}
初始化成功并启动LCD的显示,就可以通过对系统存储器的写入来显示屏上显示出对应的内容。
如下面代码为在LCD的(X,Y)位置处以颜色C打一个点。
staticvoidPutPixel(U32x,U32y,U32c)
if((x<
SCR_XSIZE_TFT_240320)&
&
(y<
SCR_YSIZE_TFT_240320))
LCD_BUFER[(y)][(x)]=c;
最直观的图形显示方式就是将图形中的颜色信息逐点输出到LCD的相应位置,有了上面的基础,实现整屏图形的显示或者部分图形显示就变得非常简单。
3.3建立开发系统
3.3.1硬件调试链接
1.调试系统架构体系
整个调试系统包括集成调试环境和硬件仿真器,它们组成了一个类似于“客户—服务器”模型的系统,服务器端把所有硬件封装起来,给客户端只提供了一个虚拟的处理器接口。
客户端的调试工具软件通过一个动态链接库与服务器相连,所以服务器一侧的硬件和客户端的调试工具软件是相互独立的。
在同一个动态链接库的基础上,双方可以自动行升级或替换,同样也方便了用户选择不同的仿真器和调试软件来组合自己的调试平台[11]。
一个具体的调试程序应该能够支持许多不同的链接库,不同的链接库提供了不同的功能调用。
以ADS工具包为例,“ARMulate.dll”提供了一个软ARM内核,用作程序的逻辑验证。
若要把Multi-ICEServer程序连接在一起进行实时仿真,则只要调入“MultiICE.dll”就可以了。
该动态库文件在Multi-ICEServer的安装目录下可以找到。
调试系统架构见下图3-1。
图3-1调试系统架构
2.调试连接
ARMJTAG使用标准的25芯并口插座和20针的JTAG插座作为接口。
与PC的连接线使用标准的25芯并口连接线缆,与目标板的连接线使用20芯的IDC宽带线缆。
PC机通过并口向Multi-ICE发送数据,Multi-ICE对嵌入式系统的CPU的JTAG接口产生响应的操作。
Multi-ICE通过20芯的JTAG接口给Multi-ICE内部硬件系统供电。
使用Multi-ICE的调试系统如图3-2所示。
图3-2使用Multi-ICE的调试系统示意图
3.3.2软件使用
使用Multi-ICE调试系统时,还要在PC机上安装Multi-ICEServer软件,配合硬件调试。
软件的使用流程是这样的:
(1)保证硬件连接正确的前提下,每次使用Multi-ICE是都要启动Multi-ICEServer(仿真器驱动程序),运行Auto-Configure来检测目标板上的CPU。
(2)启动CodeWarriorforARMDeveloperSuite(ADS集成开发环境)建立或调入项目文件,编译项目。
(3)在AXD中进行了一些设置工作后开始进行仿真。
第四章TFT屏动画程序开发
此次毕业设计中关于小车跑动的显示程序的实现,我采用了在固定点画出小车,然后利用TFT屏滚屏实现小车的移动。
4.1设计图
图4-1为原始设计图
图4-1原始设计图
4.2需要函数的实现
1.清屏函数
思想:
即用固定颜色填充屏幕
函数名:
staticvoidLcd_ClearScr(U16c)
unsignedintx,y;
for(y=0;
y<
SCR_YSIZE_TFT_240320;
y++)
{
for(x=0;
x<
SCR_XSIZE_TFT_240320;
x++)
{
LCD_BUFER[y][x]=c;
}
}
2.画直线函数
数学上的直线是没有宽度、由无数个点构成的集合,显然,光栅显示器只能近地似显示直线。
当我们对直线进行光栅化时,需要在显示器有限个象素中,确定最佳逼近该直线的一组象素,并且按扫描线顺序,对这些象素进行写操作,这个过程称为用显示器绘制直线或直线的扫描转换。
由于在一个图形中,可能包含成千上万条直线,所以要求绘制算法应尽可能地快。
在这里,使用数值微分(DDA)法,设过端点P0(x0
y0)、P1(x1
y1)的直线段为L(P0
P1),则直线段L的斜率为k=(y1-y0)/(x1-x0)。
要在显示器显示L,必须确定最佳逼近L的像素集合。
我们从L的起点P0的横坐标x0向L的终点P1的横坐标x1步进,取步长=1(个象素),用L的直线方程y=kx+b计算相应的y坐标,并取象素点(x,round(y))作为当前点。
因为:
yi+1
=
kxi+1+b
kxi+b+kDx
yi+kDx
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- TFT 液晶显示屏 设计 定稿