?? lcd320.c
字號:
#include <stdarg.h>
#include <stdio.h>
#include "def.h"
#include "44b.h"
#include "LCD320.h"
#define LCDCON1_ENVID (1)
#define LCDCON1_INVVD (1<<1)
#define LCDCON1_INVFRAME (1<<2)
#define LCDCON1_INVLINE (1<<3)
#define LCDCON1_INVCLK (1<<4)
#define LCDCON1_MMODE (1<<7)
#define L248 (8)
#define CLKVAL (20) // 60Mhz, fr=100Hz (CLKVAL=38.6)
//#define M5D(n) ((n) & 0x1fffff)
U32* pLCDBuffer16=(U32*)0xc000000;
U32 LCDBuffer[LCDHEIGHT][LCDWIDTH];
void LCD_Init()
{
int i;
U32 LCDBASEU,LCDBASEL,LCDBANK;
LCDDisplayOpen(FALSE);
rLCDCON1=(0);
// disable
rLCDCON2=(239)|(119<<10)|(15<<21);
//320x240LCD LINEBLANK=15 (without any calculation)
LCDBANK=0xc000000>>22;//((U32)LCDBuffer16)>>22;
LCDBASEU=0x0;//((U32)LCDBuffer16)&0x3fffff;
LCDBASEL=LCDBASEU+(160)*240;
rLCDSADDR1= (0x3<<27) |(LCDBANK<<21)|LCDBASEU;//| ((((U32)LCDBuffer16)>>1)&0x7ffffff);
// color_mode, LCDBANK, LCDBASEU
rLCDSADDR2= (0<<29)|(0<<21)|LCDBASEL;
rLCDSADDR3= (320/2)|(0<<9);
//No virtual screen.
//rREDLUT=0xfca86420;
//rGREENLUT=0xfca86420;
//rBLUELUT=0xfffff840;
rREDLUT=0xfca86420;
rGREENLUT=0xfca86420;
rBLUELUT=0xfffffa50;
rLCDCON1=LCDCON1_ENVID|0<<1|0<<2|0<<3|(2<<5)|1<<7|(0x3<<8)|(0x3<<10)|(CLKVAL<<12);//|LCDCON1_MMODE;
// enable,8B_SNGL_SCAN,WDLY=16clk,WLH=16clk,CLKVAL=?
for(i=0;i<80*240;i++)
*(pLCDBuffer16+i)=0x0;
Delay(5000);
LCDDisplayOpen(TRUE);
}
void LCDDisplayOpen(U8 isOpen)
{
if(isOpen){
rPDATB&=~LCDDisplayPin;
}
else{
rPDATB|=LCDDisplayPin;
}
}
void LCD_Refresh()
{
int i,j;
U32 lcddata;
U32 pixcolor; //一個像素點的顏色
U8* pbuf=(U8*)LCDBuffer[0];
for(i=0;i<LCDWIDTH*LCDHEIGHT/4;i++){
lcddata=0;
for(j=24;j>=0;j-=8){
pixcolor=(pbuf[0]&0xe0)|((pbuf[1]>>3)&0x1c)|(pbuf[2]>>6); //變換RGB
lcddata|=pixcolor<<j;
pbuf+=4;
}
*(pLCDBuffer16+i)=lcddata;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -