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

📄 c_lcd19264_driver.c

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

/***********************************************************************
* 名    称:Wcommand19264_x()
* 功    能:LCd19264读写,数据,命令子程序群
* 入口参数:输人一个8位整型变量
* 出口参数:无
* 说明    :占用
*   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_Writecommand_L(uint8 Command)
{	

	lcd19264busy_L();	//定位左边HD61202
	LCD19264_SE();
	
	LCD19264_CE();
	LCD19264_CDI();			//命令
	LCD19264_CRW();			//写

	LCD19264_SE();
	LCD19264_BusData(Command);	//数据输出

	DelayNS(1);
	LCD19264_CE();		//读入LCM

	LCD19264_BusData(0);//总线上写入数据,防止在数据口写数据

}

/***********************************************************************************************
***					 		命令输出到中控制口
*********************************************************************************************/
void LCD19264_Writecommand_M(uint8 Command)
{	

	lcd19264busy_M();	//定位左边HD61202
	LCD19264_SE();
	
	LCD19264_CE();
	LCD19264_CDI();			//命令
	LCD19264_CRW();			//写

	LCD19264_SE();
	LCD19264_BusData(Command);	//数据输出

	DelayNS(1);
	LCD19264_CE();		//读入LCM

	LCD19264_BusData(0);//总线上写入数据,防止在数据口写数据

}

/***********************************************************************************************
***					 		命令输出到右边控制口
*********************************************************************************************/
void LCD19264_Writecommand_R(uint8 Command)
{	

	lcd19264busy_R();	//定位左边HD61202
	LCD19264_SE();

	LCD19264_CE();
	LCD19264_CDI();			//命令
	LCD19264_CRW();			//写

	LCD19264_SE();
	LCD19264_BusData(Command);	//数据输出
	

	DelayNS(1);

	LCD19264_CE();		//读入LCM

	LCD19264_BusData(0);//总线上写入数据,防止在数据口写数据

}


/***********************************************************************
* 名    称:Fix_point ()
* 功    能:LCd19264根据设定坐标,定位LCM上的操作单元位置
* 入口参数:无
* 出口参数:无
* 说明    :占用
*   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_Fix_point (void)
{
	unsigned char	x,y; //实际输出占存
	switch ( X & 0XC0)	//选择所用HD61202
	{	
		case (0) 	: {lcd19264busy_L();break;}
		case (0X40) : {lcd19264busy_M();break;}
		case (0X80) : {lcd19264busy_R();break;}
	}
	x = (X&0X3F)|SETX;	//X与,限制X命令长度
	y = (Y&0X07)|SETY;	//Y与,限制Y命令长度
	
	Lcd19264_Busy();


   
	LCD19264_CDI();			//命令
	LCD19264_CRW();			//写

	LCD19264_SE();//写Y
	LCD19264_BusData(x);
	

	
	LCD19264_CE();


	Lcd19264_Busy();

	LCD19264_CDI();			//命令
	LCD19264_CRW();			//写

	LCD19264_SE();
	LCD19264_BusData(y);
	
	LCD19264_CE();
	Lcd19264_Busy();
	LCD19264_BusData(0);//总线上写入数据,防止在数据口写数据


	
	
}

/***********************************************************************
* 名    称:WDatalcd19264 (),RDatalcd19264 ()
* 功    能:LCd19264写,读数据到任何一个位置
* 入口参数:两个8位整型变量(两个坐标值),WDatalcd19264 ()输入要写入数据
* 出口参数:RDatalcd19264 ()返回当前坐标的数据,
* 说明    :
*   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_Writedata(uint8 x,uint8 y,uint8 Data)
{	

	
	if ( x >=192 ) x -= 192;
	X = x;
	Y = y;


	LCD19264_Fix_point();	//定位输入位置
	


	LCD19264_SDI();			//数据
	LCD19264_CRW();			//写

	LCD19264_SE();
	
	#if TURNOVER_EN > 0		//是否反色显示
	Data = ~Data;
	#endif
	
	LCD19264_BusData(Data);//总线上写入数据
	

	DelayNS(1);//调节速度,根据液晶品质调校
	LCD19264_CE();
	LCD19264_BusData(0);//总线上写入数据,防止在数据口写数据


}


uint8 LCD19264_RDatalcd19264(uint8 x,uint8 y)
{	uint8 RD_Data;

	X = x;
	Y = y;
	LCD19264_Fix_point();		//定位坐标


	
	
	IO0DIR =IO0DIR  & ~(0xFF << LCD19264_BusLSB) ; //设成输入方式
	DelayNS(3);//延时等待稳定
	
	LCD19264_SDI();				//数据
	LCD19264_SRW();				//读

	LCD19264_SE();
	RD_Data =  LCD19264_BusData_Read() ;
	
	LCD19264_CE();				//虚读一次
	LCD19264_SDI();				//数据
	LCD19264_SRW();				//读
	LCD19264_SE();
	
	
	
	DelayNS(3);									   //调节速度,根据液晶品质调校
	RD_Data =  LCD19264_BusData_Read() ;
	
	
	IO0DIR =IO0DIR  | (0xFF << LCD19264_BusLSB) ; //重新设成输出方式
	
	LCD19264_CE();				//读
	DelayNS(1);
	
	#if TURNOVER_EN > 0			//是否反色显示
	RD_Data = ~RD_Data;		
	#endif
	
	LCD19264_BusData(0);//总线上写入数据,防止在数据口写数据
	return ( RD_Data );
}


/***********************************************************************
* 名    称:LCD19264_Cls(),LCD19264_Turn_over()
* 功    能:LCd19264清屏.反屏
* 入口参数:无
* 出口参数:无
* 说明    :,
*   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_Cls(void)
{	

	


	for ( Y =0 ; Y< 8; Y++)
	{
		
		for ( X =0 ; X < 192 ; X++ ) 
			LCD19264_Writedata(X,Y,0x00);
	}


}

void LCD19264_Turn_over(void)
{	uint8 Tstr;
	
	for ( Y =0 ; Y< 8; Y++)
	{
		
		for ( X =0 ; X < 192 ; X++ )
		{
			Tstr = ~LCD19264_RDatalcd19264(X,Y);//读后取反
			LCD19264_Writedata(X,Y,Tstr);
	
		}
	}
}

#endif
/***********************************************************************
* 名    称:Lcd19264_16X16(),Lcd19264_32X32()
* 功    能:写不SIZE的字
* 入口参数: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
***********************************************************************/

#if LCD19264_API_EN >0
/***********************************************************************************************
***					 		写一个列16位
*********************************************************************************************/

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

	
	 for ( i = 0; i < 2; i ++)
	 {		
	 	LCD19264_Writedata(x ,(y+i),*str);
	 	str++;
	 }	 		

}
/***********************************************************************************************
***					 		写,一个6X16 的字
*********************************************************************************************/

void Lcd19264_6X16 (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 < 6; j ++ ) 
			LCD19264_Writedata(x + j,y + i,*(str ++));

		x = x + 6;
	 }
}
/**********************************************************************************************
***					 		写,一个8X16 的字
*********************************************************************************************/

void Lcd19264_8X16 (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 < 8; j ++ ) 
			LCD19264_Writedata(x + j,y + i,*(str ++));

		x = x + 8;
	 }
}	
/***********************************************************************************************
***					 		写N个8X16 的字,可反色turnover==1就反色显示
*********************************************************************************************/

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

	while (n--!= 0)
	 {	for ( i = 0; i < 2; i ++)
			for (j = 0; j < 8; j ++ ) 
			if(turnover==1) LCD19264_Writedata(x + j,y + i,~(*(str ++)));
				else LCD19264_Writedata(x + j,y + i,*(str ++));

		x = x + 8;
	 }
}	

/***********************************************************************************************
***					 		擦除,n个8X16 的字
*********************************************************************************************/
void Lcd19264_8X16_Cls (uint8 x,uint8 y, uint8 n)//输入坐标,数组指针,字符个数
{	uint8 i,j;	

	while (n--!= 0)
	 {	for ( i = 0; i < 2; i ++)
			for (j = 0; j < 8; j ++ ) 
			LCD19264_Writedata(x + j,y + i,0);

		x = x + 8;
	 }
}	
/***********************************************************************************************
***					 		写,n个16X16 的字,横写
*********************************************************************************************/

void LCD19264_16X16 (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’不写

		x = x + 16;
	 }
}	



/***********************************************************************************************
***					 		写,n个32X32 的字,横写
*********************************************************************************************/
void LCD19264_32X32 (uint8 x,uint8 y,uint8 const  *str, uint8 n)//输入坐标,数组指针,字符个数
{	uint8 i,j;	

	while (n--!= 0)
	 {	for ( i = 0; i < 4; i ++)
			for (j = 0; j < 32; j ++ ) 
			LCD19264_Writedata(x + j,y + i,*(str ++));

		x = x + 16;
	 }

⌨️ 快捷键说明

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