📄 lcddrv.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 + -