⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd701_functions.c

📁 利用SPCE061A实现中文输入,必要时可适当删减
💻 C
📖 第 1 页 / 共 2 页
字号:

//======================================================
// 函数名称:	LCD701_SetIcon
// 格式:		void LCD701_SetIcon(unsigned IconCode)
// 实现功能:	显示指定的图标
// 参数:		IconCode - 欲显示的图标,IconCode的bit0到bit13依次代表从
//						左到右每一个图标,要显示的图标所在位应置1
// 返回值:		无
//======================================================
/*const unsigned Icon_Map[]={
	0x07,0x0D,0x0E,0x11,0x17,0x1F,0x2C,
	0x3D,0x4C,0x58,0x6D,0x6F,0x72,0x75
};

void LCD701_SetIcon(unsigned IconCode)
{
	unsigned TempMask = 0x0001, i = 0;
	unsigned TempCode;
	
	while(TempMask < 0x8000)
	{
		if(TempMask & IconCode)
		{
			TempCode = Icon_Map[i];
			LCD701_Cmd(0x0DC0);
			LCD701_Cmd(0x0E00|(TempCode&0x01FF));
			if(i > 10)
				LCD701_Cmd(0x0F10);
			else
				LCD701_Cmd(0x0F40);
		}
		i++;
		TempMask <<= 1;
	}
}
*/
//======================================================
// 函数名称:	LCD701_ClrIcon
// 格式:		void LCD701_ClrIcon(unsigned IconCode)
// 实现功能:	熄灭指定的图标
// 参数:		IconCode - 欲熄灭的图标,IconCode的bit0到bit13依次代表从
//						左到右每一个图标,要熄灭的图标所在位应置1
// 返回值:		无
//======================================================
/*void LCD701_ClrIcon(unsigned IconCode)
{
	unsigned TempMask = 0x0001, i = 0;
	unsigned TempCode;
	
	while(TempMask < 0x8000)
	{
		if(TempMask & IconCode)
		{
			TempCode = Icon_Map[i];
			LCD701_Cmd(0x0DC0);
			LCD701_Cmd(0x0E00|(TempCode&0x01FF));
			LCD701_Cmd(0x0F00);
		}
		i++;
		TempMask <<= 1;
	}
}
*/
//======================================================
// 函数名称:	LCD701_BlinkIcon
// 格式:		void LCD701_BlinkIcon(unsigned IconCode)
// 实现功能:	使指定的图标闪烁
// 参数:		IconCode - 欲闪烁的图标,IconCode的bit0到bit13依次代表从
//						左到右每一个图标,要闪烁的图标所在位应置1
// 返回值:		无
//======================================================
/*
void LCD701_BlinkIcon(unsigned IconCode)
{
	unsigned TempMask = 0x0001, i = 0;
	unsigned TempCode;
	
	while(TempMask < 0x8000)
	{
		if(TempMask & IconCode)
		{
			TempCode = Icon_Map[i];
			LCD701_Cmd(0x0DC0);
			LCD701_Cmd(0x0E00|(TempCode&0x01FF));
			LCD701_Cmd(0x0F80);
		}
		i++;
		TempMask <<= 1;
	}
}
*/
//======================================================
// 函数名称:	LCD701_SetPaintMode
// 格式:		void LCD701_SetPaintMode(unsigned ModeCode)
// 实现功能:	设置图形显示模式
// 参数:		ModeCode - 图形显示模式,可以是下列数值之一:
//					PAINT_COVER:	覆盖显示。图形所在位置的原有显示内容将被覆盖掉
//					PAINT_SET:		叠加显示。图形所在位置中原有的黑色点将被保留
//					PAINT_CLR:		擦除显示。图形反色显示,但图形所在位置中原有的白
//										色点将被保留
//					PAINT_REV:		异或显示。图形中每一个点与原有的点做异或,即如果
//										图形中某点的颜色与其所在位置原有的颜色相同,则
//										该点显示白色,如果新颜色与原来颜色不同,则该点
//										显示黑色
// 返回值:		无
//======================================================
void LCD701_SetPaintMode(unsigned ModeCode)
{
	if(ModeCode > 3)
		ModeCode = PAINT_COVER;
	CurPaintMode = ModeCode;
}

//======================================================
// 函数名称:	LCD701_GetPaintMode
// 格式:		unsigned LCD701_GetPaintMode(void)
// 实现功能:	获取当前的图形显示模式
// 参数:		无
// 返回值:		函数返回当前图形显示模式,可以是下列数值之一:
//					PAINT_COVER:	覆盖显示。图形所在位置的原有显示内容将被覆盖掉
//					PAINT_SET:		叠加显示。图形所在位置中原有的黑色点将被保留
//					PAINT_CLR:		擦除显示。图形反色显示,但图形所在位置中原有的白
//										色点将被保留
//					PAINT_REV:		异或显示。图形中每一个点与原有的点做异或,即如果
//										图形中某点的颜色与其所在位置原有的颜色相同,
//										则该点显示白色,如果新颜色与原来颜色不同,则
//										该点显示黑色
//======================================================
unsigned LCD701_GetPaintMode(void)
{
	return CurPaintMode;
}

//======================================================
// 函数名称:	LCD701_PutPixel
// 格式:		void LCD701_PutPixel(unsigned x, unsigned y)
// 实现功能:	在指定位置显示一个点
// 参数:		x - 欲显示点的横坐标,范围0到119
//				y - 欲显示点的纵坐标,范围0到51
//				(坐标原点在屏幕左上角)
// 返回值:		无
//======================================================
/*void LCD701_PutPixel(unsigned x, unsigned y)
{
	unsigned TempBit, TempData;
	if( x >= SCR_MAX_COL || y >= SCR_MAX_ROW)return;
	TempBit = y & 0x07;				// Bit to Operate
	TempBit = 0x01 << TempBit;		// Bit Mask

	LCD701_Cmd(0x0D80|(y >> 3));		// Higher 3 bit Addr (=y/8)
	LCD701_Cmd(0x0E00|x);				// Lower 8 bit Addr (=x)
	TempData = LCD701_Read();
	switch(CurPaintMode)
	{
	case PAINT_CLR:					// Paint a White Dot
		TempData &= ~TempBit;
		break;
	case PAINT_REV:					// Black-White Reversed Dot
		TempData ^= TempBit;
		break;
	default:						// Black Dot
		TempData |= TempBit;
	}
	LCD701_Cmd(0x0F00|TempData);
}
*/
//======================================================
// 函数名称:	LCD701_Line
// 格式:		void LCD701_Line(unsigned x, unsigned y, unsigned e_x, unsigned e_y)
// 实现功能:	画一条直线
// 参数:		x - 直线起点的横坐标,范围0到119
//				y - 直线起点的纵坐标,范围0到51
//				e_x - 直线终点的横坐标,范围0到119
//				e_y - 直线终点的纵坐标,范围0到51
//				(坐标原点在屏幕左上角)
// 返回值:		无
//======================================================
/*void LCD701_Line(unsigned x, unsigned y, unsigned e_x, unsigned e_y)
{
	int Offset_x,Offset_y,Offset_k = 0;
	int Err_d = 1;
	if(y>e_y)
	{
		Offset_x = x;
		x = e_x;
		e_x = Offset_x;
		Offset_x = y;
		y = e_y;
		e_y = Offset_x;
	}
	Offset_x = e_x-x;
	Offset_y = e_y-y;
	LCD701_PutPixel(x,y);
	if(Offset_x<=0)
	{
		Offset_x = x-e_x;
		Err_d = -1;
	}
	if(Offset_x>Offset_y)
	{
		while(x!=e_x)
		{
			if(Offset_k>0)
			{
				y+=1;
				Offset_k += (Offset_y-Offset_x);
			}
			else Offset_k += Offset_y; 
			x+=Err_d;
			LCD701_PutPixel(x,y);
		}	
	}
	else
	{
		while(y!=e_y)
		{
			if(Offset_k>0)
			{
				x+=Err_d;
				Offset_k += (Offset_x-Offset_y);
			}
			else Offset_k += Offset_x;
			y+=1;
			LCD701_PutPixel(x,y);
		}
	}
}
*/
//======================================================
// 函数名称:	LCD701_Circle
// 格式:		void LCD701_Circle(unsigned x,unsigned y,unsigned r,unsigned Mode)
// 实现功能:	画一个圆
// 参数:		x - 圆心的横坐标,范围0到119(左->右)
//				y - 圆心的纵坐标,范围0到51(上->下)
//				r - 圆的半径
//				Mode - 绘制模式,可以是下列数值之一:
//					PAINT_HOLLOW:	空心圆
//					PAINT_SOLID:	实心圆
// 返回值:		无
//======================================================
/*
void LCD701_Circle(unsigned x,unsigned y,unsigned r,unsigned Mode)
{
	unsigned dx,dy,ref;
	unsigned Temp;
	
	if(r == 0)return;
	dx = r;
	dy = 1;
	ref = 707 * r / 1000;					//0.707r

	while(dy <= dx)
	{
		if(Mode == PAINT_SOLID)
		{
			CLR_WDT();

			if(dx > ref)
				LCD701_Line(x + ref + 1, y + dy, x + dx, y + dy);

			if(x >= ref + 1 && dx > ref)
			{
				if(x < dx)
					Temp = 0;
				else
					Temp = x - dx;
				LCD701_Line(Temp, y + dy, x - ref - 1, y + dy);
			}
			
			if(y >= dy && dx > ref)
				LCD701_Line(x + ref + 1, y - dy, x + dx, y - dy);
			
			if(x >= ref + 1 && y >= dy && dx > ref)
			{
				if(x < dx)
					Temp = 0;
				else
					Temp = x - dx;
				LCD701_Line(Temp, y - dy, x - ref - 1, y - dy);
			}

	
			if(dy != dx || dx == ref)
			{
				if(y < dx)
					Temp = 0;
				else
					Temp = y - dx;
				LCD701_Line(x + dy, Temp, x + dy, y + dx);
			}

			if(x >= dy && (dy != dx || dy == ref))
			{
				if(y < dx)
					Temp = 0;
				else
					Temp = y - dx;
				LCD701_Line(x - dy, Temp, x - dy, y + dx);
			}
		}
		else
		{
			LCD701_PutPixel(x + dx, y + dy);
			LCD701_PutPixel(x - dx, y + dy);
			LCD701_PutPixel(x + dx, y - dy);
			LCD701_PutPixel(x - dx, y - dy);
			if(dx != dy)
			{
				LCD701_PutPixel(x + dy, y + dx);
				LCD701_PutPixel(x + dy, y - dx);
				LCD701_PutPixel(x - dy, y + dx);
				LCD701_PutPixel(x - dy, y - dx);
			}
		}
		
		dy++;
//		Temp = r*r-(dx-1)*(dx-1)-dy*dy;				
//		Temp2 = dx*dx + dy*dy - r*r;
//		if(Temp<Temp2)dx--;
//		if((r*r<<1)-(dy*dy<<1)<((dx-1)*dx<<1)+1)
		if((r*r-dy*dy)<=(dx-1)*dx)
			dx--;
	}
	if(Mode == PAINT_SOLID)
	{
		LCD701_Line(x + ref + 1, y, x + r, y);

		if(x >= ref + 1)
		{
			if(x < r)
				Temp = 0;
			else
				Temp = x - r;
			LCD701_Line(Temp, y, x - ref - 1, y);
		}

		if(y < r)
			Temp = 0;
		else
			Temp = y - r;
		LCD701_Line(x, Temp, x, y + r);
	}
	else
	{
		LCD701_PutPixel(x + r, y);
		LCD701_PutPixel(x - r, y);
		LCD701_PutPixel(x, y + r);
		LCD701_PutPixel(x, y - r);
	}
}
*/
//======================================================
// 函数名称:	LCD701_Rectangle
// 格式:		void LCD701_Rectangle(unsigned left, unsigned top, unsigned right, unsigned bottom, unsigned Mode)
// 实现功能:	画一个矩形
// 参数:		left - 矩形的左上角横坐标,范围0到118
//				top - 矩形的左上角纵坐标,范围0到50
//				right - 矩形的右下角横坐标,范围1到119
//				bottom - 矩形的右下角纵坐标,范围1到51
//				Mode - 绘制模式,可以是下列数值之一:
//					PAINT_HOLLOW:	矩形框(空心矩形)
//					PAINT_SOLID:	矩形面(实心矩形)
// 返回值:		无
//======================================================
/*void LCD701_Rectangle(unsigned left, unsigned top, unsigned right, unsigned bottom, unsigned Mode)
{
	unsigned i,j;
	
	if(left > right)
	{
		i = left;
		left = right;
		right = i;
	}
	if(top > bottom)
	{
		i = top;
		top = bottom;
		bottom = i;
	}
	LCD701_Line(left,top,left,bottom);
	if(right != left)
		LCD701_Line(right,top,right,bottom);
	i = left + 1;
	while(i <= right)
	{
		if(Mode == PAINT_SOLID)
		{
			CLR_WDT();
			j = top;
			while(j <= bottom)
				LCD701_PutPixel(i,j++);
		}
		else
		{
			LCD701_PutPixel(i,top);
			if(top != bottom)
				LCD701_PutPixel(i,bottom);
		}
		i++;
	}
}
*/
//======================================================
// 函数名称:	LCD701_Bitmap
// 格式:		void LCD701_Bitmap(unsigned *p_Bitmap, unsigned x, unsigned y)
// 实现功能:	显示指定的位图
// 参数:		p_Bitmap - 位图数据的起始地址
//				x - 位图的左上角横坐标,范围0到118
//				y - 位图的左上角纵坐标,范围0到51
// 返回值:		无
//======================================================
/*void LCD701_Bitmap(unsigned *p_Bitmap, unsigned x, unsigned y)
{
	unsigned *p,Width,fWidth,Height,HighByte;
	unsigned i,j,MaxByteY,ShiftY,ShiftFlag,TailByteMask,TempCode,TempCode2;
	
	if(x >= SCR_MAX_COL || y >= SCR_MAX_ROW)return;
	p = p_Bitmap;
	TempCode = *p++;
	fWidth = TempCode & 0xff;
	Width = fWidth;
	if(x + Width >= SCR_MAX_COL)
		Width = SCR_MAX_COL - x - 1;
	Height = TempCode >> 8;
	if(y + Height >= SCR_MAX_ROW)
		Height = SCR_MAX_ROW - y - 1;

	MaxByteY = (y + Height + 7) >> 3;
	ShiftY = y & 0x07;
	TailByteMask = 0xff >> ((8 - ((y + Height) & 0x07)) & 0x07);
	
	HighByte = 0;
	ShiftFlag = 0;
	for(i=(y>>3);i<MaxByteY;i++)
	{
		LCD701_Cmd(0x0D80|i);
		LCD701_Cmd(0x0E00|x);
		for(j=0;j<Width;j++)
		{
			CLR_WDT();
			if(HighByte == 0)
			{
				if(ShiftFlag != 0)				// No Shift out yet
					TempCode = *(p - fWidth) >> (16 - ShiftY);
				else
					TempCode = 0x0000;
				TempCode |= *p << ShiftY;
			}
			else
			{
				TempCode = *p >> (8 - ShiftY);
			}

			if(i == MaxByteY - 1)
				TempCode &= TailByteMask;
			else
				TempCode &= 0x00ff;

			TempCode2 = LCD701_Read();
			switch(CurPaintMode)
			{
			case PAINT_SET:
				TempCode |= TempCode2;		// PAINT_SET
				break;
			case PAINT_CLR:					// PAINT_CLR
				TempCode ^= 0xffff;
				TempCode &= TempCode2;
				break;
			case PAINT_REV:					// PAINT_REV
				TempCode ^= TempCode2;
				break;
			default:						// PAINT_COVER
				if(ShiftFlag == 0 && ShiftY != 0)
					TempCode |= TempCode2 & (0xff >> (8 - ShiftY));
				else if(i == MaxByteY - 1)
					TempCode |= TempCode2 & (TailByteMask^0xff);
				break;
			}
			LCD701_Cmd(0x0f00|TempCode);
			p++;
		}
		if(ShiftY != 0)
			ShiftFlag = 1;
		if(!HighByte)
			p -= Width;
		else
			p += fWidth - Width;
		HighByte = !HighByte;
	}
}
*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -