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

📄 lcd320.c

📁 触摸屏程序设计,嵌入式的程序,大家有机会可以相互交流一下
💻 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 + -