示例#1
0
文件: lcd.c 项目: zhangsaisai/MEMS
void TFT_DrawCircle( u16 CoordiX, u16 CoordiY, u16 Radius, u32 Color )
{
	int a,b;
	int di;

	a=0;
	b=Radius;
	di=3-(Radius<<1);

	while(a<=b) {
		TFT_DrawPoint(CoordiX-b, CoordiY-a, Color);             //3
		TFT_DrawPoint(CoordiX+b, CoordiY-a, Color);             //0
		TFT_DrawPoint(CoordiX-a, CoordiY+b, Color);             //1
		TFT_DrawPoint(CoordiX-b, CoordiY-a, Color);             //7
		TFT_DrawPoint(CoordiX-a, CoordiY-b, Color);             //2
		TFT_DrawPoint(CoordiX+b, CoordiY+a, Color);             //4
		TFT_DrawPoint(CoordiX+a, CoordiY-b, Color);             //5
		TFT_DrawPoint(CoordiX+a, CoordiY+b, Color);             //6
		TFT_DrawPoint(CoordiX-b, CoordiY+a, Color);
		a++;
		// ??Bresenham????
		if(di<0)
			di += 4*a+6;
		else {
			di+=10+4*(a-b);
			b--;
		}
		TFT_DrawPoint(CoordiX+a, CoordiY+b, Color);
	}
}
示例#2
0
/*=====================================================================================================*/
void WaveFormPrint( WaveForm_Struct* WaveForm )
{
	u16 i, j;
	s16 TempY[WaveChannelMax] = {0};
	s16 CoordiY[WaveChannelMax] = {0};

	static u16 WavePic[WaveChannelMax][WaveFormW] = {0};

	/* 更新顯示座標 */
	for(i=0; i<WaveForm->Channel; i++) {
		for(j=0; j<WaveFormW-1; j++)
			WavePic[i][j] = WavePic[i][j+1];
		TempY[i] = (s16)((double)WaveForm->Data[i]/WaveForm->Scale[i]+0.5);
		CoordiY[i] = WaveFormL - TempY[i];
		if(CoordiY[i]<0)
			WavePic[i][WaveFormW-1] = 0;
		else if(CoordiY[i]>WaveForm2L)
			WavePic[i][WaveFormW-1] = WaveForm2L;
		else
			WavePic[i][WaveFormW-1] = CoordiY[i];
	}
	/* 畫邊框 */
	TFT_DrawLineX(0, 					0, 					WaveFormW,	WaveForm->WindowColor );
	TFT_DrawLineX(0, 					WaveForm2L,	WaveFormW, 	WaveForm->WindowColor );
	TFT_DrawLineY(0, 					0, 					WaveForm2L,	WaveForm->WindowColor );
	TFT_DrawLineY(WaveFormW,	0,					WaveForm2L,	WaveForm->WindowColor );
	/* 顯示 */
	for(i=0; i<WaveFormW-1; i++) {
		/* 清除上筆數據 */
		for(j=0; j<WaveForm->Channel; j++) {
			if(WavePic[j][i] == 0)
				TFT_DrawPoint(WaveWindowX+i+1, WaveWindowY+WavePic[j][i], WaveForm->WindowColor);
			else if(WavePic[j][i] == WaveForm2L)
				TFT_DrawPoint(WaveWindowX+i+1, WaveWindowY+WavePic[j][i], WaveForm->WindowColor);
			else
				TFT_DrawPoint(WaveWindowX+i+1, WaveWindowY+WavePic[j][i], WaveForm->BackColor);
		}
		/* 畫輔助線 */
		if((i%10) < 3) {
			for(j=0; j<=WaveFormL; j+=(WaveFormL/10)) {
				TFT_DrawPoint(WaveWindowX+i, WaveWindowY+WaveFormL+j, WaveForm->WindowColor);
				TFT_DrawPoint(WaveWindowX+i, WaveWindowY+WaveFormL-j, WaveForm->WindowColor);
			}
		}
		/* 畫中線 */
		TFT_DrawPoint(WaveWindowX+i, WaveWindowY+WaveFormL, WaveForm->WindowColor);
		/* 更新顯示新數據 */
		for(j=0; j<WaveForm->Channel; j++) {
			if(WavePic[j][i] == 0)
				TFT_DrawPoint(WaveWindowX+i, WaveWindowY+WavePic[j][i], WaveForm->WindowColor);
			else if(WavePic[j][i] == WaveForm2L)
				TFT_DrawPoint(WaveWindowX+i, WaveWindowY+WavePic[j][i], WaveForm->WindowColor);
			else
				TFT_DrawPoint(WaveWindowX+i, WaveWindowY+WavePic[j][i], WaveForm->PointColor[j]);
		}
	}
}
示例#3
0
文件: lcd.c 项目: zhangsaisai/MEMS
void TFT_DrawRectangle( u16 CoordiX, u16 CoordiY, u16 Length, u16 Width, u32 Color )
{
	u16 i;

	for(i=0; i<=Length; i++) {
		TFT_DrawPoint(CoordiX+i, CoordiY, Color);
		TFT_DrawPoint(CoordiX+i, CoordiY+Width, Color);
	}
	for(i=1; i<Width; i++) {
		TFT_DrawPoint(CoordiX, CoordiY+i, Color);
		TFT_DrawPoint(CoordiX+Length, CoordiY+i, Color);
	}
}
示例#4
0
文件: lcd.c 项目: zhangsaisai/MEMS
void TFT_PutChar1206( u16 CoordiX, u16 CoordiY, u8* ChWord, u32 FontColor, u32 BackColor )
{
	u8 Tmp_Char = 0;
	u16 i = 0, j = 0;

	for(i=0; i<12; i++) {
		Tmp_Char = ASCII_12x6[*ChWord-32][i];
		for(j=0; j<6; j++) {
			if((Tmp_Char>>j) & 0x01 == 0x01)
				TFT_DrawPoint(CoordiX+j, CoordiY+i, FontColor);	// ????
			else
				TFT_DrawPoint(CoordiX+j, CoordiY+i, BackColor);	// ????
		}
	}
示例#5
0
文件: lcd.c 项目: zhangsaisai/MEMS
void TFT_Draw9Point( u16 CoordiX, u16 CoordiY, u32 Color )
{
	TFT_DrawPoint(CoordiX,CoordiY,Color);
	TFT_DrawPoint(CoordiX,CoordiY-1,Color);
	TFT_DrawPoint(CoordiX,CoordiY+1,Color);
	TFT_DrawPoint(CoordiX-1,CoordiY,Color);
	TFT_DrawPoint(CoordiX+1,CoordiY,Color);
	TFT_DrawPoint(CoordiX-1,CoordiY-1,Color);
	TFT_DrawPoint(CoordiX-1,CoordiY+1,Color);
	TFT_DrawPoint(CoordiX+1,CoordiY-1,Color);
	TFT_DrawPoint(CoordiX+1,CoordiY+1,Color);
}
示例#6
0
文件: lcd.c 项目: zhangsaisai/MEMS
void TFT_DrawLineY( u16 CoordiX, u16 CoordiY, u16 Length, u32 Color )
{
	u16 i;

	for(i=0; i<Length; i++)
		TFT_DrawPoint(CoordiX, CoordiY+i, Color);
}
示例#7
0
文件: lcd.c 项目: zhangsaisai/MEMS
void TFT_DrawRectangleFull( u16 CoordiX, u16 CoordiY, u16 Length, u16 Width, u32 Color )
{
	u16 i, j;

	for(i=0; i<Width; i++)
		for(j=0; j<Length; j++)
			TFT_DrawPoint(CoordiX+j, CoordiY+i, Color);
}
示例#8
0
//画线
//x1,y1:起点坐标
//x2,y2:终点坐标  
void TFT_DrawLine(u8 x1, u16 y1, u8 x2, u16 y2)
{
    u16 x, y, t;

	if((x1==x2)&&(y1==y2))TFT_DrawPoint(x1, y1);
	else if(myabs(y2-y1)>myabs(x2-x1))//斜率大于1 
	{
		if(y1>y2) 
		{
			t=y1;
			y1=y2;
			y2=t; 
			t=x1;
			x1=x2;
			x2=t; 
		}
		for(y=y1;y<y2;y++)//以y轴为基准 
		{
			x=(u32)(y-y1)*(x2-x1)/(y2-y1)+x1;
			TFT_DrawPoint(x, y);  
		}
	}
	else                  //斜率小于等于1 
	{
		if(x1>x2)
		{
			t=y1;
			y1=y2;
			y2=t;
			t=x1;
			x1=x2;
			x2=t;
		}   
		for(x=x1;x<x2;x++)//以x轴为基准 
		{
			y =(u32)(x-x1)*(y2-y1)/(x2-x1)+y1;
			TFT_DrawPoint(x,y); 
		}
	} 	   
}
示例#9
0
文件: lcd.c 项目: zhangsaisai/MEMS
void TFT_DrawLine( u16 StartX, u16 StartY, u16 EndX, u16 EndY, u32 Color )
{
	u16 i;
	s16 DeltaX, DeltaY;
	double Slope;

	DeltaX = EndX - StartX;
	DeltaY = EndY - StartY;

	// ?? Slope
	if(DeltaX == 0)
		Slope = 0;
	else
		Slope = (double)DeltaY/(double)DeltaX;

if(DeltaX<0)DeltaX=-DeltaX;
if(DeltaY<0)DeltaY=-DeltaY;

	if(EndX<StartX) {
		if(Slope<0) {
			if(DeltaX>DeltaY) {
				for(i=0; i<=DeltaX; i++)
					TFT_DrawPoint(EndX+i, EndY+(s16)(((double)i*Slope)-0.5), Color);
					
			}
			else {
				for(i=0; i<=DeltaY; i++)
					TFT_DrawPoint(EndX-(s16)(((double)i/Slope)-0.5), EndY-i, Color);
			}
		}
		else {
			if(DeltaX>DeltaY) {
				for(i=0; i<=DeltaX; i++)
					TFT_DrawPoint(EndX+i, EndY+(s16)(((double)i*Slope)+0.5), Color);
			}
			else {
				for(i=0; i<=DeltaY; i++)
					TFT_DrawPoint(EndX+(s16)(((double)i/Slope)+0.5), EndY+i, Color);
			}
		}
	}
	else if(EndX==StartX) {
		if(EndY>StartY) {
			for(i=0; i<=DeltaY; i++)
				TFT_DrawPoint(StartX, StartY+i, Color);
		}
		else {
			for(i=0; i<=DeltaY; i++)
				TFT_DrawPoint(EndX, EndY+i, Color);
		}
	}
	else {
		if(Slope<0) {
			if(DeltaX>DeltaY) {
				for(i=0; i<=DeltaX; i++)
					TFT_DrawPoint(StartX+i, StartY+(s16)(((double)i*Slope)-0.5), Color);
			}
			else {
				for(i=0; i<=DeltaY; i++)
					TFT_DrawPoint(StartX-(s16)(((double)i/Slope)-0.5), StartY-i, Color);
			}
		}
		else {
			if(DeltaX>DeltaY) {
				for(i=0; i<=DeltaX; i++)
					TFT_DrawPoint(StartX+i, StartY+(s16)(((double)i*Slope)+0.5), Color);
			}
			else {
				for(i=0; i<=DeltaY; i++)
					TFT_DrawPoint(StartX+(s16)(((double)i/Slope)+0.5), StartY+i, Color);
			}
		}
	}
}