S3C2440驱动4.3寸TFT屏程序
时间:11-21
来源:互联网
点击:
简单的配色原理
- /**************************************************************
- Theinitialandcontrolfor16BppTFTLCD
- **************************************************************/
- #include"def.h"
- #include"option.h"
- #include"2440addr.h"
- #include"2440lib.h"
- #include"2440slib.h"
- #defineMVAL_USED(0)//0=eachframe1=ratebyMVAL
- #defineINVVDEN(1)//0=normal1=inverted
- #defineBSWP(0)//Byteswapcontrol
- #defineHWSWP(1)//Halfwordswapcontrol
- #definePNRMODE(3)//设置为TFT屏
- #defineBPPMODE(12)//设置为16bpp模式
- //TFT_SIZE
- #defineLCD_XSIZE_TFT(480)
- #defineLCD_YSIZE_TFT(272)
- #defineSCR_XSIZE_TFT(480)
- #defineSCR_YSIZE_TFT(272)
- #defineHOZVAL_TFT(LCD_XSIZE_TFT-1)
- #defineLINEVAL_TFT(LCD_YSIZE_TFT-1)
- //Timingparameterfor4.3LCD
- #defineVBPD(2)//垂直同步信号的后肩
- #defineVFPD(4)//垂直同步信号的前肩
- #defineVSPW(8)//垂直同步信号的脉宽
- #defineHBPD(10)//水平同步信号的后肩
- #defineHFPD(19)//水平同步信号的前肩
- #defineHSPW(30)//水平同步信号的脉宽
- #defineCLKVAL_TFT(4)//时钟分频因子,VCLK=HCLK/((CLKVAL_TFT+1)*2)
- #defineM5D(n)((n)&0x1fffff)//用于设置显示缓存区时,取低21位地址
- volatileunsignedshortLCD_BUFFER[SCR_YSIZE_TFT][SCR_XSIZE_TFT];//定义显示缓存区
- /**************************************************************
- TFTLCD功能模块初始化
- **************************************************************/
- voidLcd_Init(void)
- {
- rGPCUP=0x00000000;
- rGPCCON=0xaaaa02a9;
- rGPDUP=0x00000000;
- rGPDCON=0xaaaaaaaa;//InitializeVD[15:8]
- rLCDCON1=(CLKVAL_TFT<8)|(MVAL_USED<7)|(3<5)|(12<1)|0;//TFTLCDpanel,16bppTFT,ENVID=off
- rLCDCON2=(VBPD<24)|(LINEVAL_TFT<14)|(VFPD<6)|(VSPW);
- rLCDCON3=(HBPD<19)|(HOZVAL_TFT<8)|(HFPD);
- rLCDCON4=HSPW;
- rLCDCON5=(1<11)|(0<10)|(1<9)|(1<8)|(0<7)|(0<6)|(1<3)|(BSWP<1)|(HWSWP);
- //16位输出格式565,VCLK下降沿取数据等(看数据手册)
- rLCDSADDR1=(((U32)LCD_BUFFER>>22)<21)|M5D((U32)LCD_BUFFER>>1);//单扫描
- rLCDSADDR2=M5D(((U32)LCD_BUFFER+(SCR_XSIZE_TFT*LCD_YSIZE_TFT*2))>>1);
- //LCD_WIDTH×16/16;由于是选择的16位模式,
- //如果是24位模式,每个像素4字节则为LCD_WIDTH×32/16
- //(LCD_WIDTH在此为LCD_XSIZE_TFT)
- rLCDSADDR3=(((SCR_XSIZE_TFT-LCD_XSIZE_TFT)/1)<11)|(LCD_XSIZE_TFT/1);
- rLCDINTMSK|=(3);//MASKLCDSubInterrupt
- rTCONSEL&=(~7);//DisableLPC3600
- rTPAL=0;//禁止临时调色板寄存器
- }
- /**************************************************************
- *LCD视频和控制信号输出或者停止,1开启视频输出
- **************************************************************/
- voidLcd_EnvidOnOff(intonoff)
- {
- if(onoff==1)
- rLCDCON1|=1;//ENVID=ON
- else
- rLCDCON1=rLCDCON1&0x3fffe;//ENVIDOff
- }
- /**************************************************************
- *TFTLCD电源控制引脚使能
- *pwren=1时,允许PWREN信号
- *pwren=0时,禁止PWREN信号
- *invpwre=1,PWREN信号极性反转
- *invpwre=0,PWREN信号极性正常
- **************************************************************/
- voidLcd_PowerEnable(intinvpwren,intpwren)
- {
- //GPG4issettedasLCD_PWREN
- rGPGUP=rGPGUP&(~(1<4))|(1<4);//GPG4上拉电阻无效
- rGPGCON=rGPGCON&(~(3<8))|(3<8);//GPG4=LCD_PWREN
- rGPGDAT=rGPGDAT|(1<4);//GPG4置1
- //invpwren=pwren;
- //EnableLCDPOWERENABLEFunction
- rLCDCON5=rLCDCON5&(~(1<3))|(pwren<3);//PWREN
- rLCDCON5=rLCDCON5&(~(1<5))|(invpwren<5);//INVPWREN
- }
- /**************************************************************
- TFTLCD单个象素的显示数据输出
- **************************************************************/
- voidPutPixel(U32x,U32y,U32c)
- {
- if((x
- LCD_BUFFER[(y)][(x)]=c;
- }
- /**************************************************************
- TFTLCD全屏填充特定颜色单元或清屏
- **************************************************************/
- voidLcd_ClearScr(U32c)
- {
- unsignedintx,y;
- for(y=0;y
- {
- for(x=0;x
- {
- LCD_BUFFER[y][x]=c;
- }
- }
- }
- /**************************************************************
- //实现功能:在屏幕中画直线
- //参数:
- //x1-起始点的x坐标
- //y1-起始点的y坐标
- //x2-结束点的x坐标
- //y2-结束点的y坐标
- //color-直线颜色
- //返回值:无
- **************************************************************/
- voidGlib_Line(intx1,inty1,intx2,inty2,intcolor)
- {
- intdx,dy,e;
- dx=x2-x1;
- dy=y2-y1;
- if(dx>=0)
- {
- if(dy>=0)//dy>=0
- {
- if(dx>=dy)//1/8octant
- {
- e=dy-dx/2;
- while(x1<=x2)
- {
- PutPixel(x1,y1,color);
- if(e>0){y1+=1;e-=dx;}
- x1+=1;
- e+=dy;
- }
- }
- else//2/8octant
- {
- e=dx-dy/2;
- while(y1<=y2)
- {
- PutPixel(x1,y
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)