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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? lcd.c

?? 基于ARM處理器的S3C44Bx芯片
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*********************************************************************************************
* File:	lcd.c
* Author:	embest	
* Desc:	LCD control and display functions
* History:	
*			H.T.Zhang, Programming modify, September 12, 2005
*********************************************************************************************/
#include "lcd.h"
#include "bmp.h"
#include "44b.h"

/*------------------------------------------------------------------------------------------*/
/*	 								constant define							 			    */
/*------------------------------------------------------------------------------------------*/
#define XWIDTH 				6
#define LCD_STN256_COLOR
#define ASCII6x8

/*------------------------------------------------------------------------------------------*/
/*	 								global variables						 			    */
/*------------------------------------------------------------------------------------------*/
UINT32T g_unLcdActiveBuffer[LCD_YSIZE][LCD_XSIZE/4];

/*------------------------------------------------------------------------------------------*/
/*	 								extern variables						 			    */
/*------------------------------------------------------------------------------------------*/
extern const UINT8T g_ucBitmap[][76800];
extern UINT8T g_ucAscii8x16[];
#ifdef ASCII6x8
extern UINT8T g_ucAscii6x8[];
#endif
//#ifdef CHINESE_VERSION
#ifdef HZK12
extern const UINT8T g_auc_hzk12[];
#endif
#ifdef HZK16
extern const UINT8T g_ucHZK16[];
#endif
#ifdef HZK24
extern const UINT8T g_auc_hzk24[];
#endif
//#endif

/*********************************************************************************************
* name:		lcd_init()
* func:		Initialize LCD Controller
* para:		none
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
void lcd_init(void)
{     
	rDITHMODE = 0x12210;
	rDP1_2  = 0xa5a5;      
	rDP4_7  = 0xba5da65;
	rDP3_5  = 0xa5a5f;
	rDP2_3  = 0xd6b;
	rDP5_7  = 0xeb7b5ed;
	rDP3_4  = 0x7dbe;
	rDP4_5  = 0x7ebdf;
	rDP6_7  = 0x7fdfbfe;

	// disable,8B_SNGL_SCAN,WDLY=16clk,WLH=16clk,
	rLCDCON1 = (0x0)|(2<<5)|(MVAL_USED<<7)|(0x3<<8)|(0x3<<10)|(CLKVAL_COLOR<<12);
	// LINEBLANK=10 (without any calculation) 
	rLCDCON2 = (LINEVAL)|(HOZVAL_COLOR<<10)|(10<<21);  
	rLCDCON3 = 0;

	// 256-color, LCDBANK, LCDBASEU
	rLCDSADDR1 = (0x3<<27) | ( ((unsigned int)g_unLcdActiveBuffer>>22)<<21 ) | M5D((unsigned int)g_unLcdActiveBuffer>>1);
	rLCDSADDR2 = M5D((((unsigned int)g_unLcdActiveBuffer+(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; // 1111 1101 1011 1001 0110 0100 0010 0000
	rGREENLUT=0xfdb96420; // 1111 1101 1011 1001 0110 0100 0010 0000
	rBLUELUT =0xfb40;     // 1111 1011 0100 0000

	rLCDCON1=(0x1)|(2<<5)|(MVAL_USED<<7)|(0x3<<8)|(0x3<<10)|(CLKVAL_COLOR<<12);
	rPDATE=rPDATE&0x0e;
	lcd_clr();
}

/*********************************************************************************************
* name:		lcd_clr()
* func:		clear LCD screen
* para:		none 
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
void lcd_clr(void)
{
	UINT32T i;
	UINT32T *pDisp = (UINT32T*)g_unLcdActiveBuffer;
	
	for (i = 0; i < (SCR_XSIZE * SCR_YSIZE  / 4); i++)
	{
		*pDisp++ = ALLWHITE;
	}
}
#ifdef LCD_STN256_COLOR
/*********************************************************************************************
* name:		lcd_clr_rect()
* func:		fill appointed area with appointed color
* para:		usLeft,usTop,usRight,usBottom -- area's rectangle acme coordinate
*			ucColor -- appointed color value
* ret:		none
* modify:
* comment:	also as clear screen function 
*********************************************************************************************/
void lcd_clr_rect(UINT16T usLeft, UINT16T usTop, UINT16T usRight, UINT16T usBottom, UINT8T ucColor)
{
	UINT32T i, j;
	UINT8T  *pDisp = (UINT8T*)g_unLcdActiveBuffer;
	
	for(i=usTop;i<=usBottom;i++)
	{
		for(j=usLeft;j<=usRight;j++)
		{
			LCD_PutPixel(j, i, ucColor);
		}
	}	

}
#endif

#ifdef LCD_STN256_GRAY
/*********************************************************************************************
* name:		lcd_clr_rect()
* func:		fill appointed area with appointed color
* para:		usLeft,usTop,usRight,usBottom -- area's rectangle acme coordinate
*			ucColor -- appointed color value
* ret:		none
* modify:
* comment:	also as clear screen function 
*********************************************************************************************/
void lcd_clr_rect(UINT16T usLeft, UINT16T usTop, UINT16T usRight, UINT16T usBottom, UINT8T ucColor)
{
	UINT16T i=0;
	UINT16T k,l;
	UINT16T m;
	
	UINT32T ulColor = (ucColor << 28) | (ucColor << 24) | (ucColor << 20) | (ucColor << 16) | 
					  (ucColor << 12) | (ucColor << 8) | (ucColor << 4) | ucColor;
	
	if((usRight-usLeft)<=8)
	{
		for(i=usTop;i<=usBottom;i++)
		{
			for(m=usLeft;m<=usRight;m++)
			{
				LCD_PutPixel(m, i, ucColor);
			}
		}	
		return;
	}

	if((usLeft%8)==0)
		k=usLeft;
	else
		k=(usLeft/8)*8+8;

	if(( usRight%8)==0)
		l= usRight;
	else
		l=( usRight/8)*8;

	for(i=usTop;i<=usBottom;i++)
	{
		for(m=usLeft;m<=(k-1);m++)
			LCD_PutPixel(m, i, ucColor);
		for(m=k;m<l;m+=8)
			(*(UINT32T*)(g_unLcdActiveBuffer + i * SCR_XSIZE / 2 + m / 2)) = ulColor;
		for(m=l;m<=usRight;m++)
			LCD_PutPixel(m, i, ucColor);
	}
}
#endif

/*********************************************************************************************
* name:		lcd_draw_box()
* func:		Draw rectangle with appointed color
* para:		usLeft,usTop,usRight,usBottom -- rectangle's acme coordinate
*			ucColor -- appointed color value
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
void lcd_draw_box(UINT16T usLeft, UINT16T usTop, UINT16T usRight, UINT16T usBottom, UINT8T ucColor)
{
	lcd_draw_hline(usLeft, usRight,  usTop,    ucColor, 1);
	lcd_draw_hline(usLeft, usRight,  usBottom, ucColor, 1);
	lcd_draw_vline(usTop,  usBottom, usLeft,   ucColor, 1);
	lcd_draw_vline(usTop,  usBottom, usRight,  ucColor, 1);
}

/*********************************************************************************************
* name:		lcd_draw_line()
* func:		Draw line with appointed color
* para:		usX0,usY0 -- line's start point coordinate
*			usX1,usY1 -- line's end point coordinate
*			ucColor -- appointed color value
*			usWidth -- line's width
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
void lcd_draw_line(UINT16T usX0, UINT16T usY0, UINT16T usX1, UINT16T usY1, UINT8T ucColor, UINT16T usWidth)
{
	UINT16T usDx;
	UINT16T usDy;
	UINT16T y_sign;
	UINT16T x_sign;
	UINT16T decision;
	UINT16T wCurx, wCury, wNextx, wNexty, wpy, wpx;

	if( usY0 == usY1 )
	{
		lcd_draw_hline (usX0, usX1, usY0, ucColor, usWidth);
		return;
	}
	if( usX0 == usX1 )
	{
		lcd_draw_vline (usY0, usY1, usX0, ucColor, usWidth);
		return;
	}
	usDx = abs(usX0 - usX1);
	usDy = abs(usY0 - usY1);
	if( ((usDx >= usDy && (usX0 > usX1)) ||
        ((usDy > usDx) && (usY0 > usY1))) )
    {
        GUISWAP(usX1, usX0);
        GUISWAP(usY1, usY0);
    }
    y_sign = (usY1 - usY0) / usDy;
    x_sign = (usX1 - usX0) / usDx;

    if( usDx >= usDy )
    {
        for( wCurx = usX0, wCury = usY0, wNextx = usX1,
             wNexty = usY1, decision = (usDx >> 1);
             wCurx <= wNextx; wCurx++, wNextx--, decision += usDy )
        {
            if( decision >= usDx )
            {
                decision -= usDx;
                wCury += y_sign;
                wNexty -= y_sign;
            }
            for( wpy = wCury - usWidth / 2;
                 wpy <= wCury + usWidth / 2; wpy++ )
            {
                LCD_PutPixel(wCurx, wpy, ucColor);
            }

            for( wpy = wNexty - usWidth / 2;
                 wpy <= wNexty + usWidth / 2; wpy++ )
            {
                LCD_PutPixel(wNextx, wpy, ucColor);
            }
        }
    }
    else
    {
        for( wCurx = usX0, wCury = usY0, wNextx = usX1,
             wNexty = usY1, decision = (usDy >> 1);
             wCury <= wNexty; wCury++, wNexty--, decision += usDx )
        {
            if( decision >= usDy )
            {
                decision -= usDy;
                wCurx += x_sign;
                wNextx -= x_sign;
            }
            for( wpx = wCurx - usWidth / 2;
                 wpx <= wCurx + usWidth / 2; wpx++ )
            {
                LCD_PutPixel(wpx, wCury, ucColor);
            }

            for( wpx = wNextx - usWidth / 2;
                 wpx <= wNextx + usWidth / 2; wpx++ )
            {
                LCD_PutPixel(wpx, wNexty, ucColor);
            }
        }
    }
}

/*********************************************************************************************
* name:		lcd_draw_hline()
* func:		Draw horizontal line with appointed color
* para:		usX0,usY0 -- line's start point coordinate
*			usX1 -- line's end point X-coordinate
*			ucColor -- appointed color value
*			usWidth -- line's width
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
void lcd_draw_hline(UINT16T usX0, UINT16T usX1, UINT16T usY0, UINT8T ucColor, UINT16T usWidth)
{
	UINT16T usLen;

    if( usX1 < usX0 )
    {
        GUISWAP (usX1, usX0);
    }

    while( (usWidth--) > 0 )
    {
        usLen = usX1 - usX0 + 1;
        while( (usLen--) > 0 )
        {
        	LCD_PutPixel(usX0 + usLen, usY0, ucColor);
        }
        usY0++;
    }
}

/*********************************************************************************************
* name:		lcd_draw_vline()
* func:		Draw vertical line with appointed color
* para:		usX0,usY0 -- line's start point coordinate
*			usY1 -- line's end point Y-coordinate
*			ucColor -- appointed color value
*			usWidth -- line's width
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
void lcd_draw_vline (UINT16T usY0, UINT16T usY1, UINT16T usX0, UINT8T ucColor, UINT16T usWidth)
{
	UINT16T usLen;

    if( usY1 < usY0 )
    {
        GUISWAP (usY1, usY0);
    }

    while( (usWidth--) > 0 )
    {
        usLen = usY1 - usY0 + 1;
        while( (usLen--) > 0 )
        {
        	LCD_PutPixel(usX0, usY0 + usLen, ucColor);
        }
        usX0++;
    }
}

/*********************************************************************************************
* name:		lcd_disp_ascii8x16()
* func:		display 8x16 ASCII character string 
* para:		usX0,usY0 -- ASCII character string's start point coordinate
*			ForeColor -- appointed color value
*			pucChar   -- ASCII character string
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
void lcd_disp_ascii8x16(UINT16T x0, UINT16T y0, UINT8T ForeColor, UINT8T * s)
{
	UINT16T i,j,k,x,y,xx;
	UINT8T qm;
	UINT32T ulOffset;
	INT8T ywbuf[16],temp[2];
    
	for( i = 0; i < strlen((const char *)s); i++ )
	{

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品影院一区二区久久久| 亚洲精品免费在线观看| 麻豆91精品91久久久的内涵| 欧美久久高跟鞋激| 蜜臀a∨国产成人精品| 欧美本精品男人aⅴ天堂| 国产精品一区二区久久不卡| 中文乱码免费一区二区| 91亚洲精品乱码久久久久久蜜桃| 亚洲日本在线天堂| 欧美日韩一区三区| 狠狠色综合日日| 日韩一区日韩二区| 欧美日本免费一区二区三区| 老汉av免费一区二区三区| 久久久天堂av| 91九色02白丝porn| 久久精品国产网站| 亚洲情趣在线观看| 欧美一区二区三区电影| 成人免费不卡视频| 午夜电影网亚洲视频| 久久久午夜电影| 亚洲一区二三区| 久久精品国产**网站演员| 欧美激情综合网| 欧美日韩精品一区二区| 国产另类ts人妖一区二区| 亚洲日韩欧美一区二区在线| 日韩一区二区视频| 91丨porny丨蝌蚪视频| 日本不卡的三区四区五区| 国产精品理论在线观看| 91精品在线麻豆| 97久久精品人人澡人人爽| 麻豆成人久久精品二区三区红| 国产精品久久久久久久久免费樱桃| 欧洲国内综合视频| 高清国产一区二区| 美女被吸乳得到大胸91| 成人欧美一区二区三区| 日韩精品一区在线| 欧美在线观看视频一区二区| 国产精品91一区二区| 三级不卡在线观看| 一区二区国产视频| 国产精品区一区二区三区| 欧美tickling网站挠脚心| 91黄视频在线观看| av一区二区三区四区| 国产一区二区三区综合| 午夜精品久久久久久久99水蜜桃| 中国av一区二区三区| 日韩精品在线一区二区| 欧美日韩成人综合| 色综合久久久久综合体桃花网| 国产风韵犹存在线视精品| 日本三级韩国三级欧美三级| a在线欧美一区| 国产精品88av| 九色|91porny| 秋霞av亚洲一区二区三| 亚洲第一成人在线| 亚洲一区二区av在线| 亚洲男人电影天堂| 亚洲欧洲国产专区| 国产精品区一区二区三区| 国产肉丝袜一区二区| 久久亚洲精品国产精品紫薇| 欧美成人免费网站| 欧美成人一区二区| 欧美va在线播放| 精品国产一区二区三区久久久蜜月| 欧美一区二区私人影院日本| 7777精品伊人久久久大香线蕉经典版下载| aaa欧美日韩| 色偷偷成人一区二区三区91 | 久久在线观看免费| 日韩片之四级片| 91精品婷婷国产综合久久性色 | 国产精品私房写真福利视频| 日韩欧美国产成人一区二区| 国产精品久久午夜夜伦鲁鲁| 久久嫩草精品久久久精品一| 久久嫩草精品久久久精品一| 久久综合999| 久久精品视频一区二区| 国产日韩v精品一区二区| 国产情人综合久久777777| 中文字幕不卡在线观看| 亚洲精品精品亚洲| 亚洲观看高清完整版在线观看| 亚洲高清免费观看高清完整版在线观看| 香蕉成人伊视频在线观看| 日韩电影免费在线| 国产成人精品亚洲777人妖 | 国产精品福利一区| 亚洲人一二三区| 无码av免费一区二区三区试看 | 日本一区二区成人在线| 亚洲欧洲www| 亚洲成a人在线观看| 蜜臂av日日欢夜夜爽一区| 国产精品综合一区二区| 91视频.com| 欧美一二三区在线观看| 国产欧美日韩精品在线| 亚洲美女精品一区| 热久久久久久久| 成人av在线资源网| 欧美日韩一本到| 国产人久久人人人人爽| 亚洲永久精品国产| 国产酒店精品激情| 欧美专区亚洲专区| 久久久精品欧美丰满| 一区二区三区波多野结衣在线观看| 奇米影视在线99精品| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 精品免费日韩av| 亚洲精品高清在线| 精品一区二区免费看| 色婷婷精品久久二区二区蜜臂av| 日韩一区二区在线观看| 18成人在线观看| 精品一区二区三区影院在线午夜| 91日韩一区二区三区| 久久一区二区三区国产精品| 亚洲人xxxx| 91精品在线麻豆| 一区二区三区精品久久久| 精品一区免费av| 欧美精品亚洲一区二区在线播放| 国产精品国产三级国产aⅴ原创| 青青草97国产精品免费观看 | 色综合 综合色| 久久综合九色综合97婷婷女人| 亚洲电影激情视频网站| 国产成人啪免费观看软件| 欧美电影一区二区| 亚洲欧美日韩久久精品| 成人中文字幕合集| 精品久久久久久久久久久久包黑料 | 91精品国产综合久久久蜜臀粉嫩| 中文字幕在线观看一区二区| 老色鬼精品视频在线观看播放| 精品视频999| 亚洲免费在线视频一区 二区| 国产福利精品导航| 久久久无码精品亚洲日韩按摩| 日本中文字幕不卡| 欧美性猛交xxxxxx富婆| 中文字幕一区二区在线观看| 国产激情一区二区三区四区| 亚洲精品一区二区精华| 蜜臀av一区二区在线免费观看| 欧美艳星brazzers| 玉足女爽爽91| 色婷婷精品大在线视频| 亚洲欧洲成人自拍| 91丝袜高跟美女视频| 中文字幕一区二区视频| 成人蜜臀av电影| 国产精品久久久久三级| 国产91精品在线观看| 国产三区在线成人av| 国产成人亚洲综合色影视| 久久久久9999亚洲精品| 国产精品一级片| 国产清纯白嫩初高生在线观看91 | 99久久99久久精品免费看蜜桃| 中文在线免费一区三区高中清不卡 | 337p日本欧洲亚洲大胆精品| 国产一区二区三区四区五区入口| 欧美精品一区二区三区在线| 国产精品中文有码| 久久精品一区二区三区不卡| 成人免费看的视频| 亚洲日本在线a| 欧美色视频一区| 日本aⅴ免费视频一区二区三区| 欧美一区二区福利在线| 老司机免费视频一区二区三区| 久久综合丝袜日本网| 成人性生交大片免费看视频在线| 国产精品成人一区二区艾草| 91免费版在线看| 午夜电影网一区| 久久综合五月天婷婷伊人| av不卡一区二区三区| 亚洲成人黄色小说| 欧美成人精品3d动漫h| av色综合久久天堂av综合| 亚洲精品视频免费看| 666欧美在线视频| 国产一级精品在线| 亚洲欧美日韩国产综合在线| 欧美猛男gaygay网站| 国产综合久久久久久久久久久久| 1024成人网|