⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd_init.c

📁 MCP2515在2410下的测试程序
💻 C
字号:
#include <string.h>
#include "s3c2410x.h"
#include "consol.h"
#include "def.h"
#include "lcdinit.h"


//TFT 640480
U32 (*frameBuffer1BitTft640480)[SCR_XSIZE_TFT_640480/32];
U32 (*frameBuffer8BitTft640480)[SCR_XSIZE_TFT_640480/4];
U32 (*frameBuffer16BitTft640480)[SCR_XSIZE_TFT_640480/2];
U32 (*frameBuffer24BitTft640480)[SCR_XSIZE_TFT_640480];

void Lcd_Port_Init(void)
{

    rGPCUP=0xffffffff; // Disable Pull-up register
    rGPCCON=0xaaaaaaaa; //Initialize VD[7:0],LCDVF[2:0],VM,VFRAME,VLINE,VCLK,LEND 
    rGPDUP=0xffffffff; // Disable Pull-up register
    rGPDCON=0xaaaaaaaa; //Initialize VD[23:8]
    CONSOL_Printf("Initializing GPIO ports..........\n");
}


void Lcd_RegInit(void)
{
  
            frameBuffer16BitTft640480=(U32 (*)[SCR_XSIZE_TFT_640480/2])LCDFRAMEBUFFER;
			rLCDCON1=(CLKVAL_TFT_640480<<8)|(MVAL_USED<<7)|(3<<5)|(12<<1)|0;
			// TFT LCD panel,16bpp TFT,ENVID=off
			rLCDCON2=(VBPD_640480<<24)|(LINEVAL_TFT_640480<<14)|(VFPD_640480<<6)|(VSPW_640480);
			rLCDCON3=(HBPD_640480<<19)|(HOZVAL_TFT_640480<<8)|(HFPD_640480);
			rLCDCON4=(MVAL<<8)|(HSPW_640480);
			rLCDCON5=(1<<11)|(1<<9)|(1<<8);	//FRM5:6:5,HSYNC and VSYNC are inverted
			rLCDSADDR1=(((U32)frameBuffer16BitTft640480>>22)<<21)|M5D((U32)frameBuffer16BitTft640480>>1);
			rLCDSADDR2=M5D( ((U32)frameBuffer16BitTft640480+(SCR_XSIZE_TFT_640480*LCD_YSIZE_TFT_640480*2))>>1 );
			rLCDSADDR3=(((SCR_XSIZE_TFT_640480-LCD_XSIZE_TFT_640480)/1)<<11)|(LCD_XSIZE_TFT_640480/1);
			rLCDINTMSK|=(3); // MASK LCD Sub Interrupt
			rLPCSEL&=(~7); // Disable LPC3600
			rTPAL=0; // Disable Temp Palette
}



void Lcd_EnvidOnOff(int onoff)
{
    if(onoff==1)
	rLCDCON1|=1; // ENVID=ON
    else
	rLCDCON1 =rLCDCON1 & 0x3fffe; // ENVID Off
}    




void Lcd_PowerEnable(int invpwren,int pwren)
{
    //GPG4 is setted as LCD_PWREN
    rGPGUP=rGPGUP&(~(1<<4))|(1<<4); // Pull-up disable
    rGPGCON=rGPGCON&(~(3<<8))|(3<<8); //GPG4=LCD_PWREN
    //Enable LCD POWER ENABLE Function
    rLCDCON5=rLCDCON5&(~(1<<3))|(pwren<<3);   // PWREN
    rLCDCON5=rLCDCON5&(~(1<<5))|(invpwren<<5);   // INVPWREN
}    


U32 PutPixel(U32 x,U32 y,U32 c)// Tft16Bit_640480320  
{
 	if(x<SCR_XSIZE_TFT_640480 && y<SCR_YSIZE_TFT_640480)
		frameBuffer16BitTft640480[(y)][(x)/2]=( frameBuffer16BitTft640480[(y)][x/2]
				& ~(0xffff0000>>((x)%2)*16) ) | ( (c&0x0000ffff)<<((2-1-((x)%2))*16) );
}


/*
U32 GetPixel(U32 x,U32 y)
{
   U16 i;
   i=frameBuffer16BitTft240320[y][x];
   return i;

}
*/


void Lcd_ClearScr(U32 c)  //MODE_TFT_16BIT_640480
{   

  int i,j;
 for(j=0;j<SCR_YSIZE_TFT_640480;j++)
			for(i=0;i<SCR_XSIZE_TFT_640480;i++)
				PutPixel(i,j,c);
 
}


void Lcd_Init(void)

{
	Lcd_Port_Init();
    Lcd_RegInit();
    Lcd_PowerEnable(0,1);
    Lcd_EnvidOnOff(1);
    
}	








⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -