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

📄 lcddrv.c

📁 这是一个潜入式开发的c语言代码
💻 C
字号:
#include "fgraph.h"

#define rLCDCON1	(*(volatile unsigned *)0x1f00000)
#define rLCDCON2	(*(volatile unsigned *)0x1f00004)
#define rLCDCON3	(*(volatile unsigned *)0x1f00040)
#define rLCDSADDR1	(*(volatile unsigned *)0x1f00008)
#define rLCDSADDR2	(*(volatile unsigned *)0x1f0000c)
#define rLCDSADDR3	(*(volatile unsigned *)0x1f00010)
#define rREDLUT		(*(volatile unsigned *)0x1f00014)
#define rGREENLUT	(*(volatile unsigned *)0x1f00018)
#define rBLUELUT	(*(volatile unsigned *)0x1f0001c)
#define rDP1_2		(*(volatile unsigned *)0x1f00020)
#define rDP4_7		(*(volatile unsigned *)0x1f00024)
#define rDP3_5		(*(volatile unsigned *)0x1f00028)
#define rDP2_3		(*(volatile unsigned *)0x1f0002c)
#define rDP5_7		(*(volatile unsigned *)0x1f00030)
#define rDP3_4		(*(volatile unsigned *)0x1f00034)
#define rDP4_5		(*(volatile unsigned *)0x1f00038)
#define rDP6_7		(*(volatile unsigned *)0x1f0003c)
#define rDITHMODE	(*(volatile unsigned *)0x1f00044)
/***/


/* I/O PORT */
#define rPCONA		(*(volatile unsigned *)0x1d20000)
#define rPDATA		(*(volatile unsigned *)0x1d20004)

#define rPCONB		(*(volatile unsigned *)0x1d20008)
#define rPDATB		(*(volatile unsigned *)0x1d2000c)

#define rPCONC		(*(volatile unsigned *)0x1d20010)
#define rPDATC		(*(volatile unsigned *)0x1d20014)
#define rPUPC		(*(volatile unsigned *)0x1d20018)

#define rPCOND		(*(volatile unsigned *)0x1d2001c)
#define rPDATD		(*(volatile unsigned *)0x1d20020)
#define rPUPD		(*(volatile unsigned *)0x1d20024)

#define rPCONE		(*(volatile unsigned *)0x1d20028)
#define rPDATE		(*(volatile unsigned *)0x1d2002c)
#define rPUPE		(*(volatile unsigned *)0x1d20030)

#define rPCONF		(*(volatile unsigned *)0x1d20034)
#define rPDATF		(*(volatile unsigned *)0x1d20038)
#define rPUPF		(*(volatile unsigned *)0x1d2003c)

#define rPCONG		(*(volatile unsigned *)0x1d20040)
#define rPDATG		(*(volatile unsigned *)0x1d20044)
#define rPUPG		(*(volatile unsigned *)0x1d20048)

#define rSPUCR		(*(volatile unsigned *)0x1d2004c)
#define rEXTINT		(*(volatile unsigned *)0x1d20050)
#define rEXTINTPND	(*(volatile unsigned *)0x1d20054)

/***********************----------lcd.h--------------******************************/
#define BLACK 0x0
#define ALLBLACK ((BLACK << 24) | (BLACK << 16) | (BLACK << 8) | BLACK)
#define WHITE 0xff
#define ALLWHITE ((WHITE << 24)  | (WHITE << 16)  | (WHITE << 8)  | WHITE)
#define LIGHTGRAY    0xa0
#define DARKGRAY     0x50

#define TRANSPARENCY 0xff

#define RED 0xe0
#define GREEN 0x1c
#define BLUE 0x03

#define SCR_XSIZE 	(320)  
#define SCR_YSIZE 	(240)
#define SCR_GXSIZE 	320//(240)  
#define SCR_GYSIZE 	240//(320)
#define SCR_BXSIZE 	640//(240)  
#define SCR_BYSIZE 	480//(320)
#define COLOR_NUMBER 16

#define LCD_XSIZE 	(320)
#define LCD_YSIZE 	(240)
#define LCD_GXSIZE 	320//(240)  
#define LCD_GYSIZE 	240//(320)
#define LCD_BXSIZE 	(640)
#define LCD_BYSIZE 	(480)

#define M5D(n) ((n) & 0x1fffff)
#define ARRAY_SIZE_COLOR 	(SCR_XSIZE/1*SCR_YSIZE)
#define HOZVAL_G16			(LCD_GXSIZE/4-1)
#define HOZVAL_COLOR		(LCD_XSIZE*3/8-1)
#define HOZVAL_BCOLOR		(LCD_BXSIZE*3/8-1)
#define LINEVAL_G16			(LCD_GYSIZE-1)
#define LINEVAL_COLOR       (LCD_YSIZE-1)
#define LINEVAL_BCOLOR      (LCD_BYSIZE-1)
#define MVAL			    (13)
#define CLKVAL_COLOR 		(4) //60Mhz 
#define MVAL_USED 0
#define LCD_BUF_SIZE (SCR_XSIZE * SCR_YSIZE)
/*---------------------------lcd.h--------------------------------------*/
unsigned int frameBuffer16[LCD_GYSIZE][LCD_GXSIZE/8];
unsigned char lytc[4]={0x0F , 0x0c, 0x03, 0x00};
void GrayLcd_Init (void)
{     
	
	//ChangePllValue( 24, 2, 1 );
	
	rDITHMODE=0x12210; 	
    //rDITHMODE=0x0;
    rDP1_2 =0xa5a5;      
	rDP4_7 =0xba5da65;
	rDP3_5 =0xa5a5f;
	rDP2_3 =0xd6b;
	rDP5_7 =0xeb7b5ed;
	rDP3_4 =0x7dbe;
	rDP4_5 =0x7ebdf;
	rDP6_7 =0x7fdfbfe;


	rLCDCON1=(0)|(1<<1)|(1<<5)|(MVAL_USED<<7)|(0x3<<8)|(0x3<<10)|(6<<12);
	    // disable,4B_SNGL_SCAN,WDLY=8clk,WLH=8clk,
	rLCDCON2=(LINEVAL_G16)|(HOZVAL_G16<<10)|(10<<21);  
	    //LINEBLANK=10 (without any calculation) 
	rLCDSADDR1= (0x2<<27) | ( ((unsigned int)frameBuffer16>>22)<<21 ) | M5D((unsigned int)frameBuffer16>>1);
	    // 16-gray, LCDBANK, LCDBASEU
	rLCDSADDR2= M5D((((unsigned int)frameBuffer16+(SCR_GXSIZE*LCD_GYSIZE/2))>>1)) | (MVAL<<21);
	rLCDSADDR3= (LCD_GXSIZE/4) | ( ((SCR_GXSIZE-LCD_GXSIZE)/4)<<9 );
	rLCDCON1=(1)|(1<<1)|(1<<5)|(MVAL_USED<<7)|(0x3<<8)|(0x3<<10)|(6<<12);
	
	rPDATE=0xfe;
}

void GrayLcd_PutPixelG16(unsigned int x,unsigned int y,unsigned char c)
{
		c = lytc[c];
    if(x<LCD_GXSIZE && y<LCD_GYSIZE)
        frameBuffer16[(y)][(x)/8]=(frameBuffer16[(y)][x/8] & ~(0xf0000000>>((x)%8)*4) )
            | ( (c)<<((8-1-((x)%8))*4) );
    
}

void GrayLcd_Close(void)
{}
void GrayLcd_Enable(void)
{}
void GrayLcd_Disable(void)
{}
void GrayLcd_GetPixel(void)
{}
void GrayLcd_Clear(void)
{
	int i ,j ;
	for( i = 0 ; i < 320 ; i++)
	for( j = 0 ; j < 240 ; j++)
	GrayLcd_PutPixelG16(i,j,0);
}


VOID GDrvInit (GRAHICINFO *pGInfo)
{
	
	pGInfo->XSize                    = LCD_GXSIZE;
	pGInfo->YSize                    = LCD_GYSIZE;
	pGInfo->MaxColor                 = COLOR_NUMBER;
	pGInfo->Bpp                      = 4;
	
	pGInfo->pGDrvOpen                = GrayLcd_Init;
  pGInfo->pGDrvClose               = GrayLcd_Close;
  pGInfo->pGDrvEnable              = GrayLcd_Enable;
  pGInfo->pGDrvDisable             = GrayLcd_Disable;
  pGInfo->pGDrvClear               = GrayLcd_Clear;
  pGInfo->pGDrvPutPixel            = GrayLcd_PutPixelG16;
  pGInfo->pGDrvGetPixel            = GrayLcd_GetPixel;
} 

⌨️ 快捷键说明

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