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

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

?? lcd.c

?? S3CEV40教學(xué)平臺的COLOR LCD實驗程序
?? C
字號:
/*********************************************************************************************
* File:	lcd.c
* Author:	embest	
* Desc:	LCD control and display functions
* History:	
*********************************************************************************************/

/*--- include files ---*/
#include "lcd.h"
#include "bmp.h"
#include "44b.h"

/*--- global variables ---*/
INT32U aLcdActiveBuffer[LCD_YSIZE][LCD_XSIZE/4];

/*--- extern variables ---*/
extern const INT8U aucTempBitmap[][76800];

/*--- function code ---*/
/*********************************************************************************************
* 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)aLcdActiveBuffer>>22)<<21 ) | M5D((unsigned int)aLcdActiveBuffer>>1);
	rLCDSADDR2= M5D((((unsigned int)aLcdActiveBuffer+(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;
	rPDATE=0xfe;
	Lcd_Clr();
}

/*********************************************************************************************
* name:		Lcd_Clr()
* func:		clear LCD screen
* para:		none 
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
void Lcd_Clr(void)
{
	INT32U i;
	INT32U *pDisp = (INT32U*)aLcdActiveBuffer;
	
	for (i = 0; i < (SCR_XSIZE * SCR_YSIZE  / 4); i++)
	{
		*pDisp++ = ALLWHITE;
	}
}

/*********************************************************************************************
* name:		LcdClrRect()
* 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 LcdClrRect(INT16 usLeft, INT16 usTop, INT16 usRight, INT16 usBottom, INT8U ucColor)
{
	INT32U i, j;
	INT8U *pDisp = (INT8U*)aLcdActiveBuffer;
	
	for(i=usTop;i<=usBottom;i++)
	{
		for(j=usLeft;j<=usRight;j++)
		{
			LCD_PutPixel(j, i, ucColor);
		}
	}	

}

#ifdef MON_LCD
/*********************************************************************************************
* name:		LcdClrRect()
* 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 LcdClrRect(INT16 usLeft, INT16 usTop, INT16 usRight, INT16 usBottom, INT8U ucColor)
{
	INT16 i=0;
	INT16 k,l;
	INT16 m;
	
	INT32U 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)
		{
			(*(INT32U*)(aLcdActiveBuffer + 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(INT16 usLeft, INT16 usTop, INT16 usRight, INT16 usBottom, INT8U 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(INT16 usX0, INT16 usY0, INT16 usX1, INT16 usY1, INT8U ucColor, INT16U usWidth)
{
	INT16 usDx;
	INT16 usDy;
	INT16 y_sign;
	INT16 x_sign;
	INT16 decision;
	INT16 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(INT16 usX0, INT16 usX1, INT16 usY0, INT8U ucColor, INT16U usWidth)
{
	INT16 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 (INT16 usY0, INT16 usY1, INT16 usX0, INT8U ucColor, INT16U usWidth)
{
	INT16 usLen;

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

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

/*--- extern variables ---*/
extern INT8U g_auc_Ascii8x16[];
/*********************************************************************************************
* name:		Lcd_DspAscII8x16()
* 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_DspAscII8x16(INT16U x0, INT16U y0, INT8U ForeColor, INT8U * s)
{
	INT16 i,j,k,x,y,xx;
	INT8U qm;
	INT32U ulOffset;
	INT8 ywbuf[16],temp[2];
    
	for( i = 0; i < strlen((const char*)s); i++ )
	{
		if( (INT8U)*(s+i) >= 161 )
		{
			temp[0] = *(s + i);
			temp[1] = '\0';
			return;
		}
		else
		{
			qm = *(s+i);
			ulOffset = (INT32U)(qm) * 16;		//Here to be changed tomorrow
			for( j = 0; j < 16; j ++ )
			{
				ywbuf[j] = g_auc_Ascii8x16[ulOffset + j];
            }

            for( y = 0; y < 16; y++ )
            {
            	for( x = 0; x < 8; x++ ) 
               	{
                	k = x % 8;
			    	if( ywbuf[y]  & (0x80 >> k) )
			       	{
			       		xx = x0 + x + i*8;
			       		LCD_PutPixel(xx, y + y0, (INT8U)ForeColor);
			       	}
			   	}
            }
		}
	}
}

/*--- extern variables ---*/
extern INT8U g_auc_Ascii6x8[];
#define XWIDTH 				6
/*********************************************************************************************
* name:		Lcd_DspAscII6x8()
* func:		display 6x8 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_DspAscII6x8(INT16U usX0, INT16U usY0,INT8U ForeColor, INT8U* pucChar)
{
	INT32U i,j;
	INT8U  ucTemp;

	while( *pucChar != 0 )
	{
		for( i=0; i < 8; i++ )
		{
  			ucTemp = g_auc_Ascii6x8[(*pucChar) * 8 + i];
  			for( j = 0; j < 8; j++ )
  			{
  				if( (ucTemp & (0x80 >> j)) != 0 )
  				{
  					LCD_PutPixel(usX0 + i, usY0 + 8 - j, (INT8U)ForeColor);
  				}  				
  			}
		}
		usX0 += XWIDTH;
		pucChar++;
	}
}

#ifndef Eng_v
/*********************************************************************************************
* name:		Lcd_DspHz16()
* func:		display chinese character string in 16x16 dot array
* para:		usX0,usY0 -- ASCII character string's start point coordinate
*			ForeColor -- appointed color value
*			pucChar   -- ASCII character string
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
extern const INT8U g_auc_HZK16[];
void Lcd_DspHz16(INT16U x0, INT16U y0, INT8U ForeColor, INT8U *s)
{
	INT16 i,j,k,x,y,xx;
	INT8U qm,wm;
	INT32U ulOffset;
	INT8 hzbuf[32],temp[2];

	for( i = 0; i < strlen((const char*)s); i++ )
	{
		if( ((INT8U)(*(s+i))) < 161 )
		{
			temp[0] = *(s+i);
			temp[1] = '\0';
			break;
		}
		else
		{
			qm = *(s+i) - 161;
    		wm = *(s + i + 1) - 161;
       		ulOffset = (INT32U)(qm * 94 + wm) * 32;
			for( j = 0; j < 32; j ++ )
            {
            	hzbuf[j] = g_auc_HZK16[ulOffset + j];
            }
            for( y = 0; y < 16; y++ )
            {
	        	for( x = 0; x < 16; x++ ) 
	            {
                	k = x % 8;
				   	if( hzbuf[y * 2 + x / 8]  & (0x80 >> k) )
				    {
				    	xx = x0 + x + i * 8;
				    	LCD_PutPixel( xx, y + y0, (INT8U)ForeColor);
				    }
			   	}
           	}
		    i++;
		}
	}
}
#endif

/*********************************************************************************************
* name:		Lcd_Test()
* func:		LCD test function
* para:		none
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
void Lcd_Test(void)
{
	int i, j;
	
	int hh=12,mm=12,ss=12;
    char time[30];
    sprintf(time,"%d:%d:%d",hh,mm,ss);
    Lcd_DspAscII8x16(90,120,BLUE,time);
    
    Uart_Printf("\n LCD display Test Example(please look at LCD screen)\n");
	/* initial LCD controller */
	Lcd_Init();
	/* clear screen */
	Lcd_Clr();
	Lcd_DspAscII8x16(10,0,BLUE,"Embest S3CEV40 ");
	Lcd_DspAscII8x16(10,20,BLUE,"ShenZhen Embest Info&Tech Co.,LTD");
	Lcd_Draw_Box(10,40,310,230,14);
	Lcd_Draw_Box(20,45,300,225,13);
	Lcd_Draw_Box(30,50,290,220,12);
	Lcd_Draw_Box(40,55,280,215,11);
	Lcd_Draw_Box(50,60,270,210,10);
	Lcd_Draw_Box(60,65,260,205,9);
	Lcd_Draw_Box(70,70,250,200,8);
	Lcd_Draw_Box(80,75,240,195,7);
	Lcd_Draw_Box(90,80,230,190,6);
	Lcd_Draw_Box(100,85,220,185,5);
	Lcd_Draw_Box(110,90,210,180,4);
	Lcd_Draw_Box(120,95,200,175,3);
	Lcd_Draw_Box(130,100,190,170,2);
	Lcd_DspHz16(10,10,BLUE,"英蓓特三星實驗平臺");
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人精品免费网站| 国产精品一二二区| 日本久久电影网| 亚洲狠狠丁香婷婷综合久久久| av亚洲精华国产精华精华| 国产精品成人一区二区艾草 | 555夜色666亚洲国产免| 日韩精品一二三四| 久久先锋影音av| av中文字幕一区| 亚洲综合激情另类小说区| 在线播放视频一区| 国内精品免费在线观看| 国产精品丝袜在线| 欧美美女视频在线观看| 久久精品免费观看| 亚洲欧洲日韩综合一区二区| 91国产免费观看| 麻豆91在线看| 亚洲三级在线播放| 日韩视频在线一区二区| 福利一区二区在线| 亚洲成av人片在线观看无码| 日韩片之四级片| 91免费在线视频观看| 日本不卡一区二区三区| 欧美国产精品专区| 欧美日本免费一区二区三区| 国产一区二区h| 亚洲二区在线视频| 欧美极品xxx| 欧美一区二区黄色| 99国产精品99久久久久久| 日韩电影在线看| 综合久久久久久久| 久久亚洲捆绑美女| 欧美精品一级二级| 99热精品一区二区| 国产真实乱偷精品视频免| 亚洲黄色性网站| 亚洲国产高清在线| 精品国产百合女同互慰| 在线视频欧美精品| 成人免费va视频| 国产揄拍国内精品对白| 五月天一区二区三区| 国产精品国产三级国产普通话三级| 91精品国产综合久久婷婷香蕉| 99久久久精品免费观看国产蜜| 看电影不卡的网站| 日韩有码一区二区三区| 亚洲视频一二三区| 日本一区二区在线不卡| 日韩精品一区在线| 欧美色视频在线观看| 99re在线精品| 成人高清伦理免费影院在线观看| 蜜臀a∨国产成人精品| 亚洲精品国产a| 成人免费在线播放视频| 国产欧美日韩另类视频免费观看| 日韩一区二区在线看| 欧美日韩高清在线| 欧美影院精品一区| 色综合天天在线| 色综合视频一区二区三区高清| 成人一级黄色片| 国产精品123区| 国产成人综合视频| 国产黄色精品网站| 国产乱码精品一区二区三区忘忧草| 青椒成人免费视频| 免费成人美女在线观看.| 三级不卡在线观看| 免费在线观看日韩欧美| 日韩av电影一区| 青青草国产精品97视觉盛宴| 日韩av中文字幕一区二区| 五月激情综合色| 日本va欧美va精品| 精品一区二区日韩| 国产福利一区在线| 成人天堂资源www在线| 国产激情91久久精品导航| 国产99一区视频免费| 成人激情免费视频| 99国内精品久久| 在线看国产一区二区| 欧美精品v日韩精品v韩国精品v| 欧美日韩在线播放一区| 日韩一区二区精品在线观看| 欧美成人精品3d动漫h| 国产午夜三级一区二区三| 欧美激情一区二区三区全黄| 亚洲欧洲av在线| 亚洲精品免费在线观看| 青青草伊人久久| 国产传媒欧美日韩成人| 日本韩国一区二区| 欧美久久久久中文字幕| 精品日韩欧美一区二区| 国产欧美一区二区精品久导航 | 91高清视频在线| 欧美精品九九99久久| 亚洲精品在线电影| 日韩毛片高清在线播放| 视频一区在线播放| 国产精品一二三四五| 色悠久久久久综合欧美99| 欧美伦理视频网站| 国产午夜精品福利| 亚洲一区二区精品3399| 激情综合网天天干| 99久久99久久综合| 日韩一卡二卡三卡| 亚洲欧美视频在线观看| 奇米影视一区二区三区| 99九九99九九九视频精品| 欧美一级日韩不卡播放免费| 国产精品久久网站| 蜜桃av噜噜一区| 色综合婷婷久久| 久久蜜桃香蕉精品一区二区三区| 国产精品国产三级国产普通话蜜臀 | 国产精品区一区二区三区| 一个色在线综合| 国产一区中文字幕| 欧美日韩一区二区三区在线看| 久久色在线观看| 亚洲a一区二区| 99久久99久久免费精品蜜臀| 日韩美女在线视频| 亚瑟在线精品视频| 色综合久久中文字幕| 久久久国产精华| 奇米精品一区二区三区在线观看| 91视视频在线直接观看在线看网页在线看| 欧美一区二区三区影视| 亚洲福利视频一区二区| 91在线一区二区| 国产女人18水真多18精品一级做| 日韩制服丝袜av| 欧美在线free| 一区二区三区精品| 成人av电影在线播放| 久久九九99视频| 精品一二三四区| 欧美一区二区美女| 婷婷综合另类小说色区| 欧美这里有精品| 一区二区三区四区视频精品免费| 成人小视频在线| 日本一区二区三区高清不卡 | 激情欧美日韩一区二区| 在线观看91精品国产麻豆| 夜夜爽夜夜爽精品视频| 91免费观看国产| 国产精品久久久久7777按摩| 国产91精品一区二区| 久久久影院官网| 国产老妇另类xxxxx| 久久人人爽爽爽人久久久| 国产一区久久久| 久久久久97国产精华液好用吗| 精品无人区卡一卡二卡三乱码免费卡| 欧美一区二区三区在线视频 | 伊人色综合久久天天| 色综合久久综合网97色综合| 亚洲免费在线看| 91官网在线免费观看| 亚洲成人av一区二区| 337p亚洲精品色噜噜| 久久国产视频网| 久久精品亚洲精品国产欧美kt∨| 国产精品亚洲一区二区三区妖精 | 国产精品久久影院| 成人免费高清在线观看| 亚洲欧洲日产国产综合网| 99re这里只有精品视频首页| 一区二区在线看| 欧美日韩免费不卡视频一区二区三区| 午夜av一区二区三区| 欧美一区二区三区视频免费| 老司机精品视频一区二区三区| 欧美va在线播放| 国产成人综合在线观看| 亚洲免费资源在线播放| 在线成人免费视频| 国产老妇另类xxxxx| 亚洲精品一二三四区| 欧美日高清视频| 国产精品小仙女| 亚洲女同一区二区| 91精品国产欧美一区二区成人| 久草中文综合在线| 国产精品欧美久久久久一区二区| 在线一区二区视频| 蜜臀a∨国产成人精品| 亚洲欧洲另类国产综合| 4438x亚洲最大成人网|