S3C2440驱动TFT屏(24bit显示模式)
时间:11-20
来源:互联网
点击:
- /********************************************************************
- *文件名:TFT.h
- *功能:定义TFT控制器参数,声明驱动TFT屏的相关函数
- *作者:jianqi
- *版本:v1.0
- ********************************************************************/
- #ifndef__TFT_H__
- #define__TFT_H__
- #include"def.h"
- #defineTFT351
- #defineTFT432
- #defineLCD_TypeTFT43
- //4.3寸TFT屏的相关参数
- #if(LCD_Type==TFT43)
- #defineTFT_XSIZE480
- #defineTFT_YSIZE272
- #defineCLKVAL4
- #defineVBPD4
- #defineVFPD4
- #defineVSPW8
- #defineHBPD4
- #defineHFPD4
- #defineHSPW40
- #definePNRMODE3
- #defineBPPMODE13
- #endif
- #defineHOZVALTFT_XSIZE-1
- #defineLINEVALTFT_YSIZE-1
- voidTFT_Power_Enable(BOOLON_OFF);
- voidTFT_Video_ON(BOOLON_OFF);
- voidTFT_Contraller_Init(void);
- voidPaint_Pixel(U32x,U32y,U32color);
- voidTFT_CLearScreen(U32color);
- voidDraw_Line(U32x1,U32y1,U32x2,U32y2,U32color);
- voidGraw_Rectangle(U32x1,U32y1,U32x2,U32y2,U32color);
- voidGraw_Full_Rectangle(U32x1,U32y1,U32x2,U32y2,U32color);
- voidPaint_Picture(U32x0,U32y0,U32width,U32height,UCHARbmp[]);
- #endif
- /********************************************************************
- *文件名:TFT.c
- *功能:配置ARM芯片的屏幕控制器相关寄存器,定义TFT相关显示函数
- *作者:jianqi
- *版本:v1.0
- ********************************************************************/
- #include"2440addr.h"
- #include"TFT.h"
- #include"def.h"
- volatileunsignedintTFT_Buffer[TFT_YSIZE][TFT_XSIZE];//显示数据缓存区
- /**********************************************
- *名称:TFT_Contraller_Init
- *功能:初始化相关的S3C2440的TFT驱动寄存器
- *入口参数:无
- *出口参数:无
- **********************************************/
- voidTFT_Contraller_Init(void)
- {
- rGPDCON=0xaaaaaaaa;//使能VD[15:8]
- rGPDUP=0x00000000;//使能上拉电阻
- rGPCCON=0xaaaa02a9;//使能相关GPC引脚的LCD控制功能
- rGPCUP=0x00000000;//使能上拉电阻
- rLCDCON1=(CLKVAL<8)|(0<7)|(PNRMODE<5)|(BPPMODE<1)|0;
- rLCDCON2=(VBPD<24)|(LINEVAL<14)|(VFPD<6)|(VSPW<0);
- rLCDCON3=(HBPD<19)|(HOZVAL<8)|(HFPD<0);
- rLCDCON4=(13<8)|(HSPW<0);
- rLCDCON5=(1<11)|(0<10)|(1<9)|(1<8)|(0<7)|(0<6)|(1<3)|(0<1)|(1<0);
- rLCDSADDR1=(((U32)TFT_Buffer>>22)<21)|(((U32)TFT_Buffer>>1)&0x1fffff);//缓存区起始地址30~22位
- rLCDSADDR2=((((U32)TFT_Buffer+(TFT_XSIZE*TFT_YSIZE)*4)>>1)&0x1fffff);//缓存区结束地址21~1位
- }
- /**********************************************
- *名称:TFT_Video_ON
- *功能:是否开启TFT屏
- *入口参数:1--开启TFT;0--关闭TFT
- *出口参数:无
- **********************************************/
- voidTFT_Video_ON(BOOLON_OFF)
- {
- if(ON_OFF==1)
- rLCDCON1|=1;//ENVID=ON
- else
- rLCDCON1=rLCDCON1&0xffffe;//ENVID=Off
- }
- /**********************************************
- *名称:TFT_Power_Enable
- *功能:是否使能TFT控制器电源
- *入口参数:1--使能;0--不使能
- *出口参数:无
- **********************************************/
- voidTFT_Power_Enable(BOOLEnable_Disenable)
- {
- rGPGUP=rGPGUP&(~(1<4))|(1<4);
- rGPGCON=rGPGCON&(~(3<8))|(3<8);//GPG4=PWREN
- if(Enable_Disenable==1)
- {
- rGPGDAT=rGPGDAT|(1<4);
- }
- else
- {
- rGPGDAT=rGPGDAT&(~(1<4));
- }
- }
- /*************************************************************
- *名称:Paint_Pixel
- *功能:点亮一个像素点
- *入口参数:像素点X坐标x,Y坐标y,显示颜色color
- *出口参数:无
- **************************************************************/
- voidPaint_Pixel(U32x,U32y,U32color)
- {
- if((x
- {
- TFT_Buffer[y][x]=color;
- }
- }
- /*************************************************************
- *名称:TFT_CLearScreen
- *功能:擦除屏幕为指定颜色
- *入口参数:擦出颜色color
- *出口参数:无
- **************************************************************/
- voidTFT_CLearScreen(U32color)
- {
- U32x,y;
- for(y=0;y
- {
- for(x=0;x
- {
- TFT_Buffer[y][x]=color;
- }
- }
- }
- /*************************************************************
- *名称:Draw_Line
- *功能:显示一条直线
- *入口参数:起始坐标(x1,y1),结束坐标(x2,y2),线条颜色color
- *出口参数:无
- **************************************************************/
- voidDraw_Line(U32x1,U32y1,U32x2,U32y2,U32color)
- {
- intdx,dy,e;
- dx=x2-x1;
- dy=y2-y1;
- if(dx>=0)
- {
- if(dy>=0)
- {
- if(dx>=dy)//1/8象限
- {
- e=dy-dx/2;
- while(x1<=x2)
- {
- Paint_Pixel(x1,y1,color);
- if(e>0)
- {
- y1+=1;
- e-=dx;
- }
- x1+=1;
- e+=dy;
- }
- }
- else//2/8象限
- {
- e=dx-dy/2;
- while(y1<=y2)
- {
- Paint_Pixel(x1,y1,color);
- if(e>
S3C2440驱动TFT屏显示模 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)