亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? lcdlib.c

?? 三星的44b0的LCD驅動,可在ADS開發環境編譯通過.利用開發板下載調試
?? C
字號:
#include <string.h>
#include "..\inc\44b.h"
#include "..\inc\44blib.h"
#include "..\inc\def.h"
#include "..\inc\lcd.h"
#include "..\inc\lcdlib.h"
#include "..\inc\glib.h"

//SCR_XSIZE,SCR_YSIZE,LCD_XSIZE,LCD_YSIZE are defined in lcd.h

#define M5D(n) ((n) & 0x1fffff)

#define ARRAY_SIZE_MONO 	(SCR_XSIZE/8*SCR_YSIZE)
#define ARRAY_SIZE_G4   	(SCR_XSIZE/4*SCR_YSIZE)
#define ARRAY_SIZE_G16  	(SCR_XSIZE/2*SCR_YSIZE)
#define ARRAY_SIZE_COLOR 	(SCR_XSIZE/1*SCR_YSIZE)

#define HOZVAL			(LCD_XSIZE/4-1)
#define HOZVAL_COLOR		(LCD_XSIZE*3/8-1)
#define LINEVAL			(LCD_YSIZE-1)
#define MVAL			(13)

#define CLKVAL_MONO 		(13)  //60Mhz, CLKVAL=19 ->78.6Hz
#define CLKVAL_G4 		(9)   //40Mhz, CLKVAL=9  ->110Hz
#define CLKVAL_G16 		(10)   //40Mhz, CLKVAL=10 ->101Hz
				      //              9  ->112Hz	
//#define CLKVAL_COLOR 		(7)  //40Mhz
#define CLKVAL_COLOR 		(10) //60Mhz 


void LcdInit(int color);

unsigned int (*frameBuffer1)[SCR_XSIZE/32];
unsigned int (*frameBuffer4)[SCR_XSIZE/16];
unsigned int (*frameBuffer16)[SCR_XSIZE/8];
unsigned int (*frameBuffer256)[SCR_XSIZE/4];


#define MVAL_USED 0

void Lcd_Init(int depth)
{
    //320x240 1bit/1pixel LCD
    
    switch(depth)
    {
    case 1:    
	if((U32)frameBuffer1==0)
	{
	    //The total frame memory should be inside 4MB.
	    //For example, if total memory is 8MB, the frame memory 
	    //should be in 0xc000000~0xc3fffff or c400000~c7fffff.
	    //But, the following code doesn't meet this condition(4MB) 
	    //if the code size & location is changed..
	    frameBuffer1=(unsigned int (*)[SCR_XSIZE/32])malloc(ARRAY_SIZE_MONO); 
	}

	rLCDCON1=(0)|(1<<5)|(MVAL_USED<<7)|(0x3<<8)|(0x3<<10)|(CLKVAL_MONO<<12);
	    // disable,4B_SNGL_SCAN,WDLY=8clk,WLH=8clk,
	rLCDCON2=(LINEVAL)|(HOZVAL<<10)|(10<<21);  
	    //LINEBLANK=10 (without any calculation) 
	rLCDSADDR1= (0x0<<27) | ( ((U32)frameBuffer1>>22)<<21 ) | M5D((U32)frameBuffer1>>1);
	    // monochrome, LCDBANK, LCDBASEU
	rLCDSADDR2= M5D( (((U32)frameBuffer1+(SCR_XSIZE*LCD_YSIZE/8))>>1) ) | (MVAL<<21);
	rLCDSADDR3= (LCD_XSIZE/16) | ( ((SCR_XSIZE-LCD_XSIZE)/16)<<9 );

	rLCDCON1=(1)|(1<<5)|(MVAL_USED<<7)|(0x3<<8)|(0x3<<10)|(CLKVAL_MONO<<12);
	    // enable,4B_SNGL_SCAN,WDLY=8clk,WLH=8clk,
	break;

    case 4:
	if((U32)frameBuffer4==0)
	{
	    //The total frame memory should be inside 4MB.
	    //For example, if total memory is 8MB, the frame memory 
	    //should be in 0xc000000~0xc3fffff or c400000~c7fffff.
	    //But, the following code doesn't meet this condition(4MB) 
	    //if the code size & location is changed..
	    frameBuffer4=(unsigned int (*)[SCR_XSIZE/16])malloc(ARRAY_SIZE_G4); 
	}

	rLCDCON1=(0)|(1<<5)|(MVAL_USED<<7)|(0x3<<8)|(0x3<<10)|(CLKVAL_G4<<12);
	    // disable,4B_SNGL_SCAN,WDLY=8clk,WLH=8clk,
	rLCDCON2=(LINEVAL)|(HOZVAL<<10)|(10<<21);  
	    //LINEBLANK=10 (without any calculation) 
	rLCDSADDR1= (0x1<<27) | ( ((U32)frameBuffer4>>22)<<21 ) | M5D((U32)frameBuffer4>>1);
	    // 4-gray, LCDBANK, LCDBASEU
	rLCDSADDR2= M5D((((U32)frameBuffer4+(SCR_XSIZE*LCD_YSIZE/4))>>1)) | (MVAL<<21);
	rLCDSADDR3= (LCD_XSIZE/8) | ( ((SCR_XSIZE-LCD_XSIZE)/8)<<9 );

	//The following value has to be changed for better display.
	//Select 4 levels among 16 gray levels.

	rBLUELUT=0xfa40; 
	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=(1)|(1<<5)|(MVAL_USED<<7)|(0x3<<8)|(0x3<<10)|(CLKVAL_G4<<12);
	    // enable,4B_SNGL_SCAN,WDLY=8clk,WLH=8clk,
	break;

    case 16:
	if((U32)frameBuffer16==0)
	{
	    //The total frame memory should be inside 4MB.
	    //For example, if total memory is 8MB, the frame memory 
	    //should be in 0xc000000~0xc3fffff or c400000~c7fffff.
	    //But, the following code doesn't meet this condition(4MB) 
	    //if the code size & location is changed..
	    frameBuffer16=(unsigned int (*)[SCR_XSIZE/8])malloc(ARRAY_SIZE_G16); 
	}

	//The following value has to be changed for better display.
/*	rDITHMODE=0x1223a; //philips
	rDP1_2 =0x5a5a;      
	rDP4_7 =0x366cd9b;
	rDP3_5 =0xda5a7;
	rDP2_3 =0xad7;
	rDP5_7 =0xfeda5b7;
	rDP3_4 =0xebd7;
	rDP4_5 =0xebfd7;
	rDP6_7 =0x7efdfbf;*/

        //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;*/


        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<<5)|(MVAL_USED<<7)|(0x3<<8)|(0x3<<10)|(CLKVAL_G16<<12);
	    // disable,4B_SNGL_SCAN,WDLY=8clk,WLH=8clk,
	rLCDCON2=(LINEVAL)|(HOZVAL<<10)|(10<<21);  
	    //LINEBLANK=10 (without any calculation) 
	rLCDSADDR1= (0x2<<27) | ( ((U32)frameBuffer16>>22)<<21 ) | M5D((U32)frameBuffer16>>1);
	    // 16-gray, LCDBANK, LCDBASEU
	rLCDSADDR2= M5D((((U32)frameBuffer16+(SCR_XSIZE*LCD_YSIZE/2))>>1)) | (MVAL<<21);
	rLCDSADDR3= (LCD_XSIZE/4) | ( ((SCR_XSIZE-LCD_XSIZE)/4)<<9 );
	rLCDCON1=(1)|(1<<5)|(MVAL_USED<<7)|(0x3<<8)|(0x3<<10)|(CLKVAL_G16<<12);

	    // enable,4B_SNGL_SCAN,WDLY=8clk,WLH=8clk,
	break;

    case 256:
	if((U32)frameBuffer256==0)
	{
	    //The total frame memory should be inside 4MB.
	    //For example, if total memory is 8MB, the frame memory 
	    //should be in 0xc000000~0xc3fffff or c400000~c7fffff.
	    //But, the following code doesn't meet this condition(4MB) 
	    //if the code size & location is changed..
	    frameBuffer256=(unsigned int (*)[SCR_XSIZE/4])malloc(ARRAY_SIZE_COLOR); 
	}

	rLCDCON1=(0)|(2<<5)|(MVAL_USED<<7)|(0x3<<8)|(0x3<<10)|(CLKVAL_COLOR<<12);
	    // disable,8B_SNGL_SCAN,WDLY=8clk,WLH=8clk,
	rLCDCON2=(LINEVAL)|(HOZVAL_COLOR<<10)|(10<<21);  
	    //LINEBLANK=10 (without any calculation) 
	rLCDSADDR1= (0x3<<27) | ( ((U32)frameBuffer256>>22)<<21 ) | M5D((U32)frameBuffer256>>1);
	    // 256-color, LCDBANK, LCDBASEU
	rLCDSADDR2= M5D((((U32)frameBuffer256+(SCR_XSIZE*LCD_YSIZE))>>1)) | (MVAL<<21);
	rLCDSADDR3= (LCD_XSIZE/2) | ( ((SCR_XSIZE-LCD_XSIZE)/2)<<9 );

	//The following value has to be changed for better display.

	rREDLUT  =0xfdb96420;
	rGREENLUT=0xfdb96420;
	rBLUELUT =0xfb40;

	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=(1)|(2<<5)|(MVAL_USED<<7)|(0x3<<8)|(0x3<<10)|(CLKVAL_COLOR<<12);
	    // enable,8B_SNGL_SCAN,WDLY=8clk,WLH=8clk,

	break;

    default:
	break;
    }	
}



void Lcd_MoveViewPort(int vx,int vy,int depth)
{
    U32 addr;
    switch(depth)
    {
    case 1:
    	// LCDBASEU,LCDBASEL register has to be changed before 12 words before the end of VLINE.
    	// In mono mode, x=320 is 10 words, So, We can't change LCDBASEU,LCDBASEL 
    	// during LINECNT=1~0 at mono mode. 

	//The processor mode should be superviser mode.  
    	DisableInterrupt(); 

    #if (LCD_XSIZE<512)
    	while((rLCDCON1>>22)<=1); // if x<512
    #else	
    	while((rLCDCON1>>22)==0); // if x>512 ((12+4)*32) 
    #endif

        addr=(U32)frameBuffer1+(vx/8)+vy*(SCR_XSIZE/8);
	rLCDSADDR1= (0x0<<27) | ( (addr>>22)<<21 ) | M5D(addr>>1);
	    // monochrome, LCDBANK, LCDBASEU
	rLCDSADDR2= M5D( ((addr+(SCR_XSIZE*LCD_YSIZE/8))>>1) ) | (MVAL<<21);

	EnableInterrupt();
       	break;

    case 4:
	//The processor mode should be superviser mode.  
    	DisableInterrupt(); 

    #if (LCD_XSIZE<256)
    	while((rLCDCON1>>22)<=1); // if x<256
    #else	
    	while((rLCDCON1>>22)==0); // if x>256
    #endif
        addr=(U32)frameBuffer4+(vx/4)+vy*(SCR_XSIZE/4);
	rLCDSADDR1= (0x1<<27) | ( (addr>>22)<<21 ) | M5D(addr>>1);
	    // 4-gray, LCDBANK, LCDBASEU
	rLCDSADDR2= M5D(((addr+(SCR_XSIZE*LCD_YSIZE/4))>>1)) | (MVAL<<21);

	EnableInterrupt();
    	break;

    case 16:
	//The processor mode should be superviser mode.  
    	DisableInterrupt(); 

    #if (LCD_XSIZE<128)
    	while((rLCDCON1>>22)<=1); // if x<128
    #else	
    	while((rLCDCON1>>22)==0); // if x>128
    #endif
        addr=(U32)frameBuffer16+(vx/2)+vy*(SCR_XSIZE/2);
	rLCDSADDR1= (0x2<<27) | ( (addr>>22)<<21 ) | M5D(addr>>1);
	    // 16-gray, LCDBANK, LCDBASEU
	rLCDSADDR2= M5D(((addr+(SCR_XSIZE*LCD_YSIZE/2))>>1)) | (MVAL<<21);

	EnableInterrupt();
    	break;

    case 256:
	//The processor mode should be superviser mode.  
    	DisableInterrupt(); 

    #if (LCD_XSIZE<64)
    	while((rLCDCON1>>22)<=1); // if x<64
    #else	
    	while((rLCDCON1>>22)==0); // if x>64
    #endif
        addr=(U32)frameBuffer256+(vx/1)+vy*(SCR_XSIZE/1);
	rLCDSADDR1= (0x3<<27) | ( (addr>>22)<<21 ) | M5D(addr>>1);
	    // 256-color, LCDBANK, LCDBASEU
	rLCDSADDR2= M5D(((addr+(SCR_XSIZE*LCD_YSIZE))>>1)) | (MVAL<<21);

	EnableInterrupt();
    	break;
    }
}    
    

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲午夜免费视频| 亚洲国产精品精华液2区45| 亚洲国产日韩a在线播放| 色成人在线视频| 亚洲成av人片| 欧美变态tickling挠脚心| 国内外成人在线| 国产精品毛片无遮挡高清| 一本高清dvd不卡在线观看| 亚洲男人的天堂av| 51精品秘密在线观看| 韩国欧美一区二区| 国产精品久久福利| 欧美视频中文一区二区三区在线观看| 日韩精品一二三| 欧美变态tickling挠脚心| 粉嫩一区二区三区在线看| 亚洲男人的天堂av| 日韩视频123| 成人免费av资源| 亚洲成人免费视| 久久久综合视频| 91久久一区二区| 日本精品一区二区三区高清| 日本亚洲免费观看| 欧美激情一二三区| 欧美日韩国产a| 奇米色777欧美一区二区| 久久亚洲精品小早川怜子| 91成人在线免费观看| 久久狠狠亚洲综合| 亚洲啪啪综合av一区二区三区| 免费欧美在线视频| 最新国产成人在线观看| 欧美三日本三级三级在线播放| 亚洲人快播电影网| 日韩欧美三级在线| 91日韩在线专区| 另类调教123区| 伊人色综合久久天天| 久久蜜桃一区二区| 欧美电影在哪看比较好| av一区二区久久| 精品在线观看视频| 午夜久久久久久电影| 国产精品三级电影| 精品噜噜噜噜久久久久久久久试看| 午夜精品福利一区二区三区蜜桃| 欧洲视频一区二区| 国产91色综合久久免费分享| 人人爽香蕉精品| 夜夜操天天操亚洲| 国产精品久久久久久户外露出| 北条麻妃一区二区三区| 久久成人羞羞网站| 丝袜亚洲精品中文字幕一区| 国产精品久久久久久久久久久免费看 | 男男视频亚洲欧美| 亚洲精品大片www| 国产欧美日韩综合精品一区二区| eeuss鲁片一区二区三区在线观看| 欧美高清在线视频| www国产亚洲精品久久麻豆| 3d成人动漫网站| 884aa四虎影成人精品一区| 色av一区二区| 色播五月激情综合网| 99麻豆久久久国产精品免费优播| 亚洲欧美日韩国产综合在线| 成人欧美一区二区三区1314| 欧美极品另类videosde| 国产区在线观看成人精品| 日韩精品一区二区三区中文不卡 | 久久99国产精品免费| 日韩经典中文字幕一区| 亚洲超丰满肉感bbw| 亚洲综合免费观看高清完整版在线 | 欧美视频日韩视频| 在线观看www91| 在线免费观看一区| 国产亚洲精品久| 久久久精品影视| 国产日韩欧美a| 中文字幕一区日韩精品欧美| 国产精品久久99| 亚洲欧美另类小说视频| 亚洲狠狠丁香婷婷综合久久久| 欧美成人三级电影在线| 精品国产乱码久久久久久图片| eeuss国产一区二区三区| 91美女精品福利| 欧美日韩一区二区三区四区五区| 国产精品亚洲成人| 成人av电影观看| 日本道精品一区二区三区 | 国产一区二区三区四| 国产99久久精品| 99久久国产综合精品女不卡| 99精品久久99久久久久| 色视频成人在线观看免| 欧美色窝79yyyycom| 日韩一区二区三区三四区视频在线观看 | www激情久久| 国产欧美精品一区aⅴ影院 | 亚洲精品视频在线| 三级欧美韩日大片在线看| 久久99国产精品免费网站| 成人精品视频一区二区三区尤物| 日韩中文字幕1| 国产精品99久久久久久久vr| 99精品视频在线播放观看| 欧美人与性动xxxx| 久久―日本道色综合久久| 亚洲人成网站影音先锋播放| 亚洲国产视频一区二区| 久久er精品视频| 色播五月激情综合网| 日韩激情在线观看| 成人黄色小视频| 欧美一区二区视频观看视频| 亚洲国产高清不卡| 日韩av电影免费观看高清完整版 | 精品一区在线看| 91麻豆成人久久精品二区三区| 国产成人一区在线| 色婷婷久久久亚洲一区二区三区 | 国产成人在线网站| 欧美日韩视频在线一区二区| 久久人人超碰精品| 亚洲午夜一区二区| 国产不卡视频在线播放| 7777精品伊人久久久大香线蕉的| 欧美午夜精品免费| 国产精品入口麻豆原神| 亚洲午夜久久久| 99综合电影在线视频| 青娱乐精品视频| 91在线观看下载| 久久久久久毛片| 男人的j进女人的j一区| 色婷婷久久久久swag精品| 国产欧美日本一区二区三区| 蜜臀av性久久久久av蜜臀妖精| 久久国产日韩欧美精品| 欧美日韩一区二区三区免费看| 在线看国产一区| 国产精品国产精品国产专区不蜜 | 亚洲天堂精品在线观看| 国产在线精品免费av| 91精品国产一区二区人妖| 一区二区三区四区中文字幕| 国产精品18久久久久久久久久久久| 大白屁股一区二区视频| 久久综合九色综合欧美亚洲| 蜜臀av性久久久久蜜臀aⅴ四虎| 精久久久久久久久久久| 日韩一卡二卡三卡| 亚洲国产日韩精品| 欧美在线观看视频一区二区| 亚洲欧洲日韩在线| 菠萝蜜视频在线观看一区| 国产日韩欧美一区二区三区乱码| 国产精品入口麻豆原神| 国产精品2024| ww亚洲ww在线观看国产| 韩国女主播一区| 久久午夜色播影院免费高清 | 在线观看91精品国产入口| 日韩理论片一区二区| 99精品视频一区二区三区| 中文字幕中文字幕在线一区 | 日韩综合小视频| 91麻豆精品国产91久久久久久| 国产日本一区二区| 国产成+人+日韩+欧美+亚洲| 国产精品色眯眯| 一本色道亚洲精品aⅴ| 综合激情网...| 欧美系列在线观看| 日韩高清电影一区| 欧美精品一区二区三区高清aⅴ| 亚洲综合丝袜美腿| 91国模大尺度私拍在线视频| 亚洲线精品一区二区三区八戒| 懂色av中文字幕一区二区三区| 欧美色综合网站| 日本欧美一区二区在线观看| 欧美一区二区三区白人| 国模大尺度一区二区三区| 日本一区二区综合亚洲| 99re热这里只有精品视频| 欧美一区二区三区免费大片 | 亚洲午夜视频在线| 欧美日精品一区视频| 久久国产生活片100| 国产亚洲一本大道中文在线| 99久久精品国产网站| 一个色妞综合视频在线观看| 欧美精品视频www在线观看| 激情综合网激情|