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

📄 c_lcd19264_driver.c

📁 交流异步电机直接转矩控制程序
💻 C
📖 第 1 页 / 共 4 页
字号:
}	


/***********************************************************************************************
***					 		写,n个16X16 的字,竖写
*********************************************************************************************/

void LCD19264_16X16_L (uint8 x,uint8 y,uint8 const  *str, uint8 n)//输入坐标,数组指针,字符个数
{	uint8 i,j;	

	while (n--!= 0)
	 {	for ( i = 0; i < 2; i ++)		//写上下两个半部分
			for (j = 0; j < 16; j ++ )  //整行16个
			LCD19264_Writedata(x + j,y + i,*(str ++));//遇到‘/0’不写

		y += 2;
	 }
	
}	


/***********************************************************************************************
***					 		反色显示n个16X16 的字,横
*********************************************************************************************/

void LCD19264_Turn_over_16X16(uint8 x,uint8 y, uint8 n)//输入坐标,数组指针,字符个数
{
	uint8 i,j,Tstr;	

	while (n--!= 0)
	 {	for ( i = 0; i < 2; i ++)		//写上下两个半部分
			for (j = 0; j < 16; j ++ )  //整行16个
			{
				Tstr = ~LCD19264_RDatalcd19264(x + j,y + i);//读后取反
				LCD19264_Writedata(x + j,y + i,Tstr);//遇到‘/0’不写
			}
		x = x + 16;
	 }

}

/***********************************************************************************************
***					 		反色显示n个8X16 的字,横
*********************************************************************************************/

void LCD19264_Turn_over_8X16(uint8 x,uint8 y, uint8 n)//输入坐标,数组指针,字符个数
{
	uint8 i,j,Tstr;	

	while (n--!= 0)
	 {	for ( i = 0; i < 2; i ++)		//写上下两个半部分
			for (j = 0; j < 8; j ++ )  //整行16个
			{
				Tstr = ~LCD19264_RDatalcd19264(x + j,y + i);//读后取反
				LCD19264_Writedata(x + j,y + i,Tstr);//遇到‘/0’不写
			}
		x = x + 8;
	 }
}
/***********************************************************************
* 名    称:LCD19264_16X16_newline(uint8 x,uint8 y,uint8 const *str, uint8 n)
* 功    能:在目标坐标上写N个16X16的字,带换行,换行后将给换行靠前一个半字位置
* 入口参数:坐标字符个数
* 出口参数: 无
* 说    明:
***********************************************************************/
void LCD19264_16X16_newline_of(uint8 x,uint8 y,uint8 const *str, uint8 n,uint8 turn_over)
{
	uint8 i,j,ix;
	
	ix = x;
	while (n--!= 0)
	 {	
	 	for ( i = 0; i < 2; i ++)		//写上下两个半部分
			for (j = 0; j < 16; j ++ )  //整行16个
		    	
		    if(turn_over ==0)	LCD19264_Writedata(x + j,y + i,*(str ++));//遇到‘/0’不写
			else if(turn_over ==1) LCD19264_Writedata(x + j,y + i,~*(str ++));
			x = x + 16;
			if( x>= 185) 
			{	
				x = ix - 28;
	 			y += 2;					//换下一行
	 		}
	 }

}
/***********************************************************************
* 名    称:LCD19264_16X16_newline(uint8 x,uint8 y,uint8 const *str, uint8 n)
* 功    能:在目标坐标上写N个16X16的字,带换行,换行后将给换行靠前一个半字位置
* 入口参数:坐标字符个数
* 出口参数: 无
* 说    明:
***********************************************************************/
void LCD19264_16X16_newline(uint8 x,uint8 y,uint8 const *str, uint8 n)
{
	uint8 i,j,ix;
	
	ix = x;
	while (n--!= 0)
	 {	
	 	for ( i = 0; i < 2; i ++)		//写上下两个半部分
			for (j = 0; j < 16; j ++ )  //整行16个
		    	LCD19264_Writedata(x + j,y + i,*(str ++));//遇到‘/0’不写

			x = x + 16;
			if( x>= 185) 
			{	
				x = ix - 28;
	 			y += 2;					//换下一行
	 		}
	 }

}
/***********************************************************************
* 名    称:LCD19264_16X16_behine_newline(uint8 x,uint8 y,uint8 const *str, uint8 n)
* 功    能:反色在目标坐标上写N个16X16的字,带换行,换行后将给换行靠前一个半字位置
* 入口参数:坐标字符个数
* 出口参数: 无
* 说    明:是反色写,并非将原来的反转颜色
***********************************************************************/
void LCD19264_16X16_behine_newline(uint8 x,uint8 y,uint8 const *str, uint8 n)
{
	uint8 i,j,ix;
	
	ix = x;
	while (n--!= 0)
	 {	
	 	for ( i = 0; i < 2; i ++)		//写上下两个半部分
			for (j = 0; j < 16; j ++ )  //整行16个
		    	LCD19264_Writedata(x + j,y + i,(*(str ++)));//遇到‘/0’不写

			x = x + 16;
			if( x>= 185) 
			{	
				x = ix - 28;
	 			y += 2;					//换下一行
	 		}
	 }

}
/***********************************************************************
* 名    称:
* 功    能:画点画直线
* 入口参数:若干
* 出口参数:无
* 说明    :,
*   R/S     --      P0.3        // RS
*	R/W     --      P0.4        // RW
*	E       --		P0.5        // E
*   CS1		--		P0.6		//CS1
* 	CS2		--		P0.7		//CS2
*  	CS3		--		P0.8		//CS3
*   D0      --      P0.9       // DB0
*   .       --      .
*   .       --      .
*   .       --      .
*   D7      --      P0.16       // DB7
***********************************************************************/

/***********************************************************************************************
***					 		清单列
*********************************************************************************************/

void LCD19264_single_cls(uint8 x)//X为要清的X坐标列
{	uint8 i;
	

	for ( i =0 ; i< 8; i++)
	{
		
		LCD19264_Writedata(x,i,0x00);
	}


}

/***********************************************************************************************
***					 		画一个点,真正的Y,非上面的Y,上面的Y是页地址,在该列上只有该点
*********************************************************************************************/
void LCD19264_Point_cls (uint8 px,unsigned char py)//输入坐标
{	uint8 ny = 0;		//业内地址
	
	LCD19264_single_cls(px);//清楚该列上的点
	ny = py & 0X07;

	ny = 0X01 << ny;

	py = py >> 3;				//字节内位计算
	LCD19264_Writedata( px, py, ny);
}

/***********************************************************************************************
***					 		擦一个点,真正的Y,非上面的Y,上面的Y是页地址,在该列上只有该点
*********************************************************************************************/
void LCD19264_Cls_Point (uint8 px,unsigned char py)//输入坐标
{	uint8 ny = 0,Rdata;		//业内地址
	
	
	ny = py & 0X07;			//取出所要
	py = py >> 3;
	Rdata = LCD19264_RDatalcd19264(px,py);//读原来该业上的数据

	ny = ~(0X01 << ny);			//字节内位计算
	ny = Rdata & ny;				//保留原来数据,不影响其他数据

				
	LCD19264_Writedata( px, py, ny);

}

/***********************************************************************************************
***					 		画一个点,真正的Y,非上面的Y,上面的Y是页地址,保留该列上所有点
*********************************************************************************************/
void LCD19264_Point_save(uint8 px,uint8 py)//输入坐标
{	uint8 ny = 0,Rdata;		//业内地址
	
	

	ny = py & 0X07;			//取出所要
	py = py >> 3;
	Rdata = LCD19264_RDatalcd19264(px,py);//读原来该业上的数据

	ny = 0X01 << ny;			//字节内位计算
	ny |= Rdata;				//保留原来数据,不影响其他数据

				
	LCD19264_Writedata( px, py, ny);
}


/***********************************************************************************************
***					 		画一个直线
*********************************************************************************************/
void LCD19264_Linehv(uint8 p1x,uint8 p1y,  uint8 p2x,uint8 p2y)//输入起始坐标,结束坐标
{	
	if (p1y == p2y)
	{	for (; p1x <= p2x ; p1x++) LCD19264_Point_save(p1x,p1y);//输入坐标
		
	}
	
		if (p1x == p2x)
	{	for (; p1y <= p2y ; p1y++) 
		{
		LCD19264_Point_save(p1x,p1y);//输入坐标
		}
	}
}


/***********************************************************************************************
***					 		擦除一直线
*********************************************************************************************/
void LCD19264_Cls_Linehv(uint8 p1x,uint8 p1y,  uint8 p2x,uint8 p2y)//输入起始坐标,结束坐标
{	
	if (p1y == p2y)
	{	for (; p1x <= p2x ; p1x++) LCD19264_Cls_Point(p1x,p1y);//输入坐标
		
	}
	
		if (p1x == p2x)
	{	for (; p1y <= p2y ; p1y++) 
		{
		LCD19264_Cls_Point(p1x,p1y);//输入坐标
		}
	}
}

/***********************************************************************************************
***					 		画斜线
*********************************************************************************************/
/*void Lcd19264_Oblique(unsigned char p1x,unsigned char p1y,  unsigned char p2x,unsigned char p2y)//输入起始坐标,结束坐标
{
	int intpx,intpy;	//中转变量,用于处理数据
	char incx,incy;		//增量算法用变量
	unsigned char i;	//循环用变量

	intpx = p2x - p1x;	//求偏移量
	intpy = p2y - p1x;


}
*/


/***********************************************************************************************
***					 		画一方框68*19
*********************************************************************************************/
void LCD19264_Squrt(uint8 p1x,uint8 p1y)//输入起始坐标
{
	LCD19264_Linehv(p1x,p1y,(p1x+64),p1y);//画第一条横线
	LCD19264_Linehv(p1x,(p1y+16),(p1x+64),(p1y+16));//画第二条横线
	LCD19264_Linehv(p1x,p1y,p1x,(p1y+16));//画第一条竖线
	LCD19264_Linehv((p1x+64),p1y,(p1x+64),(p1y+16));//画第二条竖线

}

/***********************************************************************************************
***					 		擦除一方框68*19
*********************************************************************************************/
void LCD19264_Cls_Squrt(uint8 p1x,uint8 p1y)//输入起始坐标
{
	LCD19264_Cls_Linehv(p1x,p1y,(p1x+64),p1y);//画第一条横线
	LCD19264_Cls_Linehv(p1x,(p1y+16),(p1x+64),(p1y+16));//画第二条横线

	LCD19264_Cls_Linehv(p1x,p1y,p1x,(p1y+16));//画第一条竖线
	LCD19264_Cls_Linehv((p1x+64),p1y,(p1x+64),(p1y+16));//画第二条竖线
	
}
/***********************************************************************************************
***					 		画一立体方框68*19
*********************************************************************************************/
void LCD19264_3DSqurt(uint8 p1x,uint8 p1y)//输入起始坐标
{
	LCD19264_Linehv(p1x,p1y,(p1x+64),p1y);//画第一条横线
	LCD19264_Linehv(p1x,(p1y+16),(p1x+64),(p1y+16));//画第二条横线
	LCD19264_Linehv((p1x+2),(p1y+17),(p1x+64),(p1y+17));//画第二条横线
	LCD19264_Linehv(p1x,p1y,p1x,(p1y+16));//画第一条竖线
	LCD19264_Linehv((p1x+64),p1y,(p1x+64),(p1y+16));//画第二条竖线
	LCD19264_Linehv((p1x+65),(p1y+2),(p1x+65),(p1y+17));//画第二条竖线

}

/***********************************************************************************************
***					 		擦除一立体方框68*19
*********************************************************************************************/
void LCD19264_Cls_3DSqurt(uint8 p1x,uint8 p1y)//输入起始坐标
{
	LCD19264_Cls_Linehv(p1x,p1y,(p1x+64),p1y);//画第一条横线
	LCD19264_Cls_Linehv(p1x,(p1y+16),(p1x+64),(p1y+16));//画第二条横线
	LCD19264_Cls_Linehv((p1x+2),(p1y+17),(p1x+64),(p1y+17));//画第二条横线
	LCD19264_Cls_Linehv(p1x,p1y,p1x,(p1y+16));//画第一条竖线
	LCD19264_Cls_Linehv((p1x+64),p1y,(p1x+64),(p1y+16));//画第二条竖线
	LCD19264_Cls_Linehv((p1x+65),(p1y+2),(p1x+65),(p1y+17));//画第二条竖线
}




/***********************************************************************
* 名    称:
* 功    能:画圆
* 原    理? 计算圆点在(0,0)处,的第一象限处的4份一圆的点的坐标,在有对称得的方法计算出其余
*           4个象限上的点, 然后用平移计算出不同原点,的圆上的点
* 入口参数:若干
* 出口参数:无
* 说明    :,
*   R/S     --      P0.3        // RS
*	R/W     --      P0.4        // RW
*	E       --		P0.5        // E
*   CS1		--		P0.6		//CS1
* 	CS2		--		P0.7		//CS2
*  	CS3		--		P0.8		//CS3
*   D0      --      P0.9       // DB0
*   .       --      .
*   .       --      .
*   .       --      .
*   D7      --      P0.16       // DB7
***********************************************************************/
void LCD19264_Cricle(uint8 px,uint8 py,uint8 r)//输入起始坐标,半径
{	fp32 ix , iy;
	uint8 rx , ry , i;
	
	ix = 0;		//计算用的XY坐标
	iy = r;
	
	rx = 0;		//写上液晶的XY坐标
	ry = 0;
	
	for (  i = 0 ; i <= r ; i++)
	{
		iy = sqrt( r*r - i*i ) + 0.55;		//计算圆上Y轴的值.加上调节数
		
		ry = (uint8)iy;			//去掉小数点
		rx = i;						//确定在第一象素点的坐标
		
		
		if ( ( rx + px ) < 192 && ( ry + py ) < 64)  LCD19264_Point_save(( rx + px ),( ry + py ));
		//向19264液晶写入第一象限的点,并且越界的点不显示
		
		if ( ( rx + px ) < 192 && ( py - ry ) >= 0)  LCD19264_Point_save(( rx + px ),( py - ry ));
		//向19264液晶写入第四象限的点,并且越界的点不显示
		
		if ( ( px - rx ) >= 0 && ( py - ry ) >= 0)  LCD19264_Point_save(( px - rx ),( py - ry ));
		//向19264液晶写入第三象限的点,并且越界的点不显示	
		
		if ( ( px - rx ) >= 0 && ( ry + py ) < 64)  LCD19264_Point_save(( px - rx ),( ry + py ));
		//向19264液晶写入第二象限的点,并且越界的点不显示	
		
		
		
		
	}
	

}
/***********************************************************************
* 名    称:uint8 LCD19264_Number(uint8 x,uint8 y,uint16 integral)
* 功    能:将数字输出
* 入口参数:输入,x,y坐标,整数部分
* 出口参数: 
* 说明    :X,Y坐标是倒过来的,也就是按个位为输出相对位置,留意要
*   R/S     --      P0.3        // RS
*	R/W     --      P0.4        // RW
*	E       --		P0.5        // E
*   CS1		--		P0.6		//CS1
* 	CS2		--		P0.7		//CS2
*  	CS3		--		P0.8		//CS3
*   D0      --      P0.9       // DB0
*   .       --      .
*   .       --      .
*   .       --      .
*   D7      --      P0.16       // DB7
***********************************************************************/
void LCD19264_OnlyNumber(uint8 x,uint8 y,uint16 integral)
{
	Lcd19264_8X16(x,y,(ynumber+integral*16),1);
}

/***********************************************************************
* 名    称:uint8 LCD19264_16BNumber(uint8 x,uint8 y,uint16 integral)
* 功    能:将4位的16进制数输出
* 入口参数:输入,x,y坐标,整数部分,有效数字个数
* 出口参数: 
* 说明    :X,Y坐标是倒过来的,也就是按个位为输出相对位置,留意要
*   R/S     --      P0.3        // RS
*	R/W     --      P0.4        // RW
*	E       --		P0.5        // E
*   CS1		--		P0.6		//CS1
* 	CS2		--		P0.7		//CS2
*  	CS3		--		P0.8		//CS3
*   D0      --      P0.9       // DB0
*   .       --      .
*   .       --      .

⌨️ 快捷键说明

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