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

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

?? lcd.c

?? 基于ARM的觸摸屏幕的驅動wangqu 一定能用
?? C
字號:
//****************************************************************************************
//** 文件名:Lcd.c

//** Copyright (c) 2004  杭州期待電子嵌入式開發(fā)部
//** 創(chuàng)建人:Tony ZHAO

//** 日期:2004.03.15

//** 描述:Lcd driver and graphics functions
//**
//** 版本:1.0
//**************************************************************************************

#include "lcd.h"
#include "../../target/2410addr.h"
#include "../../target/def.h"

#include <stdarg.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>

#define MVAL		(13)
#define MVAL_USED 	(0)
#define M5D(n) ((n) & 0x1fffff)	// To get lower 21bits


//Timing parameter for V16C6448AB(PRIME VIEW) 
#define VBPD		((33-1)&0xff)
#define VFPD 	((10-1)&0xff)
#define VSPW	((2-1) &0x3f)
#define HBPD		((48-1)&0x7f)
#define HFPD		((16-1)&0xff)
#define HSPW	((96-1)&0xff)

#define CLKVAL_TFT 	(6)

#define LCDFRAMEBUFFER 0x33800000 //_NONCACHE_STARTADDRESS 

U32 (*aLcdBuffer)[SCR_XSIZE_TFT/2];

#define LCD_PutPixel(x,y,c)\
    if(x<SCR_XSIZE_TFT && y<SCR_YSIZE_TFT) \
        aLcdBuffer[(y)][(x)/2]=( aLcdBuffer[(y)][(x)/2] \
        & ~(0xffff0000>>((x)%2)*16) ) | ( ((c)&0x0000ffff)<<((2-1-((x)%2))*16) );



extern INT8U g_auc_HZK_Dot[];
extern INT8U g_auc_ASCII_Dot[];



void Lcd_Init (void)
{     
    rGPCUP=0xffffffff; // Disable Pull-up register
    rGPCCON=0xaaaaaaaa; //Initialize VD[7:0],LCDVF[2:0],VM,VFRAME,VLINE,VCLK,LEND 
    rGPDUP=0xffffffff; // Disable Pull-up register
    rGPDCON=0xaaaaaaaa; //Initialize VD[23:8]

    rGPGCON &= ~(3 << 8);                 /* Set LCD_PWREN as output                          */
    rGPGCON |=  (1 << 8);

    rGPGDAT |=  (1 << 4);                 /* Backlight ON         */

    aLcdBuffer=(U32 (*)[SCR_XSIZE_TFT/2])LCDFRAMEBUFFER;
    rLCDCON1=(CLKVAL_TFT<<8)|(MVAL_USED<<7)|(3<<5)|(12<<1)|0;
    // TFT LCD panel,16bpp TFT,ENVID=off
    rLCDCON2=(VBPD<<24)|(LINEVAL_TFT<<14)|(VFPD<<6)|(VSPW);
	rLCDCON3=(HBPD<<19)|(HOZVAL_TFT<<8)|(HFPD);
	rLCDCON4=(MVAL<<8)|(HSPW);
	rLCDCON5=(1<<11)|(1<<9)|(1<<8);	//FRM5:6:5,HSYNC and VSYNC are inverted
	rLCDSADDR1=(((U32)aLcdBuffer>>22)<<21)|M5D((U32)aLcdBuffer>>1);
	rLCDSADDR2=M5D( ((U32)aLcdBuffer+(SCR_XSIZE_TFT*LCD_YSIZE_TFT*2))>>1 );
	rLCDSADDR3=(((SCR_XSIZE_TFT-LCD_XSIZE_TFT)/1)<<11)|(LCD_XSIZE_TFT/1);
	rLCDINTMSK|=(3); // MASK LCD Sub Interrupt
	rLPCSEL&=(~7); // Disable LPC3600
	rTPAL=0; // Disable Temp Palette
	
	rLCDCON1 |= 1;
	
	Lcd_Clr(BLACK);
}


void Lcd_Clr(INT16U c)
{
	INT16U i,j;
	
	for(j=0;j<SCR_YSIZE_TFT;j++)
            for(i=0;i<SCR_XSIZE_TFT;i++)
		        LCD_PutPixel(i,j,c);	
}

void Lcd_Draw_Line (INT16 usX0, INT16 usY0, INT16 usX1, INT16 usY1, INT16U usColor, 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, usColor, usWidth);
		return;
	}
	if (usX0 == usX1)
	{
		Lcd_Draw_VLine (usY0, usY1, usX0, usColor, 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, usColor);
            }

            for (wpy = wNexty - usWidth / 2;
                 wpy <= wNexty + usWidth / 2; wpy++)
            {
                    LCD_PutPixel(wNextx, wpy, usColor);
            }
        }
    }
    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, usColor);
            }

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


void Lcd_Draw_HLine (INT16 usX0, INT16 usX1, INT16 usY0, INT16U usColor, 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, usColor);
        }
        usY0++;
    }
}

void Lcd_Draw_VLine (INT16 usY0, INT16 usY1, INT16 usX0, INT16U usColor, 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, usColor);
        }
        usX0++;
    }
}

void Lcd_DrawRect (INT16 usLeft, INT16 usTop, INT16 usRight, INT16 usBottom, INT16U 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);
}

void Lcd_FillRect(INT16U usX0, INT16U usY0, INT16U usX1, INT16U usY1, INT16U ucColor)
{
	INT16U i;
	INT16U j;

	if (usX0 > usX1)
	{
		GUISWAP(usX0, usX1);
		GUISWAP(usY0, usY1);
	}

	for (i = usX0; i <= usX1; i++)
	{
		if (usY0 <= usY1)
		{
			for (j = usY0; j <= usY1; j++)
			{
				LCD_PutPixel(i, j, ucColor);
			}
		}
		else
		{
			for (j = usY0; j >= usY1; j--)
			{
				LCD_PutPixel(i, j, ucColor); 
			}
		}
	}
}


INT16U Lcd_GetPixel (INT16U x, INT16U y)
{
	return ((aLcdBuffer[(y)][(x)/2] >> ((1 - (x % 2)) * 16)) & 0xff);
}


void LcdDispHz16 (INT16U x0, INT16U y0, INT16U ForeColor, INT8U *s)
{
	INT16 i,j,k,x,y,xx;
	INT8U qm,wm;
	INT32U ulOffset;
	INT8 hzbuf[32],temp[2];

	if(((INT8U)(*s)) < 161)
	{
		temp[0] = *(s+i);
		temp[1] = '\0';
		return;
	}
	else
	{
		qm = *(s) - 161;
    		wm = *(s + 1) - 161;
    		ulOffset = (INT32U)(qm * 94 + wm) * 32;
    		for (j = 0; j < 32; j ++)
    		{
    			hzbuf[j] = g_auc_HZK_Dot[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;
		       		LCD_PutPixel( xx, y + y0, (INT16U)ForeColor);
		       	}
		   	}
    		}
     	}

}


void LcdDisp8X16 (INT16U x0, INT16U y0, INT16U ForeColor,  INT8U *s)
{
	INT16 i,j,k,x,y,xx;
	INT8U qm;
	INT32U ulOffset;
	INT8 ywbuf[16],temp[2];

	if((INT8U)*(s) >= 161)
	{
		temp[0] = *(s + i);
		temp[1] = '\0';
		return;
	}
	else
	{
		qm = *s;
    		ulOffset = (INT32U)(qm) * 16;		//Here to be changed tomorrow
    		for (j = 0; j < 16; j ++)
    		{
    			ywbuf[j] = g_auc_ASCII_Dot[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;
		       		LCD_PutPixel( xx, y + y0, (INT16U)ForeColor);
		       	}
		   	}
    		}
     	}
}



void Lcd_Printf(INT16U x, INT16U y, INT16U c, INT8U *fmt,...)
{
    va_list ap;
    char string[256];

    va_start(ap,fmt);
    vsprintf(string,fmt,ap);
    Lcd_Disp(x, y, c,string);
    va_end(ap);
}

void Lcd_Disp(INT16U usX, INT16U usY, INT16U usForeColor,  INT8U *pucStr)
{
	INT16U i = 0;
	//INT8U ucLen;

	while (*pucStr != 0)
	{
		if (*pucStr >= 161)
		{
			if ((usX + i * 8) >= LCD_XSIZE_TFT - 16 ||(usY >= LCD_YSIZE_TFT))
			{
				break;
			}
			LcdDispHz16(usX + i * 8, usY, usForeColor,  pucStr);
			i += 2;
			pucStr += 2;
		}
		else
		{
			if ((usX + i * 8) >= LCD_XSIZE_TFT - 8 ||(usY >= LCD_YSIZE_TFT))
			{
				break;
			}
			LcdDisp8X16(usX + i * 8, usY, usForeColor,  pucStr);
			i ++;
			pucStr ++;
		}
	}
}

void		ShowCanBanner()
{
	Lcd_Printf(0, 0, WHITE, "(1)Start   Can1   Send");
	Lcd_Printf(0, 30, WHITE, "(2)Stop    Can1   Send");
	Lcd_Printf(0, 60, WHITE, "(3)Start   Can2   Send");
	Lcd_Printf(0, 90, WHITE, "(4)Stop    Can2   Send");
}


void ShowCan1Start()
{
	Lcd_FillRect(0,120,200,150,BLUE);
	Lcd_Printf(0, 120, WHITE, "Can1 is Sending");
}

void ShowCan1Stop()
{
	Lcd_FillRect(0,120,200,150,BLUE);
	Lcd_Printf(0, 120, WHITE, "Can1 stop Send");
}

void ShowCan2Start()
{
	Lcd_FillRect(0,150,200,180,BLUE);
	Lcd_Printf(0, 150, WHITE, "Can2 is Sending");
}

void ShowCan2Stop()
{
	Lcd_FillRect(0,150,200,180,BLUE);
	Lcd_Printf(0, 150, WHITE, "Can2 stop Send");
}


void ShowChar(INT8U ch)
{
	int ix=0;
	static int count=0;
	static INT8U display[16];
	
	if(ch=='\n')
		{
			Lcd_FillRect(0,290,200,330,BLUE);
			count=0;
		}
	else if(count>10)
		return;
	else
		{
			display[count++]=ch;
			Lcd_FillRect(0,290,200,330,BLUE);
			for(ix=0;ix<count;ix++)
			Lcd_Printf(0+ix*16, 300, WHITE, "%c",display[ix]);
		}

}

void ShowTitle()
{
	Lcd_Draw_Line(0,270,200,270,WHITE,2);
	Lcd_Printf(0,240,WHITE, "Please Input char");
	Lcd_Draw_Line(0,330,200,330,WHITE,2);
}

void OnChange(INT32U x,INT32U y)
{
	
	
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产三级三级三级精品8ⅰ区| 免费在线观看视频一区| 午夜精品在线看| 国产成人a级片| 91精品国产91综合久久蜜臀| 最新热久久免费视频| 国产做a爰片久久毛片| 欧美性大战久久久久久久蜜臀| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 一本大道久久a久久精品综合| 欧美mv日韩mv国产网站app| 亚洲综合一区二区三区| 成人av中文字幕| 中文成人av在线| 国产成人综合网站| 久久久91精品国产一区二区三区| 视频一区二区三区中文字幕| 在线观看av不卡| 国产精品久久久99| 国产成都精品91一区二区三| 精品国产乱码久久久久久图片| 亚洲成av人片观看| 欧美日本一道本| 亚洲大片一区二区三区| 欧亚一区二区三区| 亚洲国产毛片aaaaa无费看 | 九色综合狠狠综合久久| 在线综合视频播放| 日韩电影在线看| 欧美xxx久久| 久久99国产精品免费| 欧美一级片在线观看| 日本不卡一区二区| 欧美大度的电影原声| 久久国产成人午夜av影院| 日韩欧美的一区二区| 九色综合国产一区二区三区| 久久婷婷久久一区二区三区| 国产一区二区三区久久悠悠色av| 精品久久久久久久人人人人传媒 | 亚洲视频免费看| av成人动漫在线观看| 一级特黄大欧美久久久| 欧美精品一级二级| 免费观看日韩av| 久久久青草青青国产亚洲免观| 国产精品18久久久久久vr| 国产精品日韩精品欧美在线| 91美女精品福利| 日韩精品亚洲专区| 国产亚洲精品中文字幕| 成人av网址在线观看| 亚洲一二三区视频在线观看| 777a∨成人精品桃花网| 国产成人精品www牛牛影视| 亚洲欧美日韩成人高清在线一区| 欧美日韩综合在线免费观看| 另类中文字幕网| 亚洲欧洲成人精品av97| 欧美日韩视频在线观看一区二区三区 | 欧美日韩在线三区| 九九九精品视频| 亚洲视频一二三| 日韩一区二区麻豆国产| 成人av在线播放网站| 午夜精品一区在线观看| 国产午夜精品福利| 欧美裸体bbwbbwbbw| 高清日韩电视剧大全免费| 亚洲电影一级黄| 国产精品亲子伦对白| 欧美一区二区在线视频| aaa欧美色吧激情视频| 美女网站在线免费欧美精品| 亚洲图片激情小说| 日韩精品一区二区三区swag| 色婷婷久久久亚洲一区二区三区 | 精品剧情在线观看| 色久综合一二码| 国产成人啪午夜精品网站男同| 一区二区三区高清不卡| 2023国产精品| 6080yy午夜一二三区久久| 91丝袜美女网| 国产精品中文字幕欧美| 丝袜美腿一区二区三区| 亚洲色图视频网站| 国产视频视频一区| 日韩精品一区二区三区在线观看 | 五月天婷婷综合| 国产精品国产精品国产专区不蜜| 欧美成人三级在线| 欧美三级午夜理伦三级中视频| fc2成人免费人成在线观看播放| 久久狠狠亚洲综合| 爽爽淫人综合网网站| 一区二区三区久久| 亚洲视频1区2区| 国产精品美女久久久久av爽李琼| 亚洲精品一区二区三区福利| 欧美一区二区三区在线| 欧美日韩亚洲综合一区 | 亚洲国产精品久久不卡毛片| 中文字幕一区视频| 国产精品乱人伦一区二区| 国产欧美一区视频| 国产亚洲一本大道中文在线| 久久一区二区视频| 精品成人a区在线观看| 91精品国产入口| 日韩亚洲欧美在线| 日韩欧美一级二级| 日韩欧美不卡一区| 精品剧情在线观看| 久久九九影视网| 日本一区二区三区电影| 欧美激情综合在线| 国产精品九色蝌蚪自拍| 中文字幕一区免费在线观看| 中文字幕一区二区三区av| 国产精品二三区| 亚洲猫色日本管| 亚洲.国产.中文慕字在线| 视频一区免费在线观看| 蜜臂av日日欢夜夜爽一区| 久久精品99国产精品| 激情成人午夜视频| av在线综合网| 色婷婷av久久久久久久| 欧美精品欧美精品系列| 日韩美女主播在线视频一区二区三区| 日韩免费视频一区二区| 久久精品人人做人人综合 | 亚洲欧美偷拍卡通变态| 亚洲福中文字幕伊人影院| 日韩成人一级大片| 国产激情精品久久久第一区二区 | 欧美性做爰猛烈叫床潮| 91精品国产欧美日韩| 亚洲精品一区二区三区蜜桃下载| 国产精品久久久久三级| 亚洲18女电影在线观看| 加勒比av一区二区| 91小视频在线| 欧美一区二区网站| 国产精品系列在线| 亚洲午夜精品网| 国产综合久久久久久鬼色| 91香蕉视频污在线| 日韩三级中文字幕| 国产精品国产成人国产三级| 午夜精品久久久久久久久久 | 色久综合一二码| 日韩欧美一级片| 亚洲色图欧洲色图婷婷| 免费国产亚洲视频| 色乱码一区二区三区88| 精品国产免费一区二区三区香蕉| 中文字幕一区二区在线观看| 日本不卡一二三| 91久久精品一区二区| 国产亚洲成aⅴ人片在线观看| 亚洲国产精品久久人人爱蜜臀| 国产精品影音先锋| 555夜色666亚洲国产免| 亚洲品质自拍视频网站| 国产主播一区二区三区| 欧美麻豆精品久久久久久| 国产精品乱子久久久久| 九九在线精品视频| 7777精品伊人久久久大香线蕉完整版| 国产精品丝袜一区| 国产一区二区在线影院| 精品1区2区3区| 亚洲精品你懂的| 成人免费视频caoporn| 精品国产91久久久久久久妲己| 亚洲午夜久久久久久久久久久| 成人精品视频一区二区三区| 欧美成人激情免费网| 午夜久久久久久| 欧美视频一二三区| 樱花草国产18久久久久| 99久久精品99国产精品 | 亚洲国产精品久久不卡毛片| 福利一区福利二区| 久久久精品综合| 国产在线不卡一区| 精品欧美乱码久久久久久| 午夜不卡在线视频| 精品视频一区二区不卡| 一二三四社区欧美黄| 91国偷自产一区二区开放时间| 国产精品女人毛片| 大胆欧美人体老妇| 国产精品毛片久久久久久久| kk眼镜猥琐国模调教系列一区二区| 欧美韩国日本不卡| 成人黄色在线视频| 亚洲色图制服丝袜|