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

📄 lpc21_lcd.c

📁 1、ARM7芯片LPC2138驱动ym320240的点阵液晶. 2、320240的液晶驱动.
💻 C
📖 第 1 页 / 共 3 页
字号:
		LCD_WriteCMD(CSRW);					//CSRW = 0x46 CSRW 代码
		LCD_WriteData(j%256);				//设置光标地址
	    LCD_WriteData(j/256);				//设置光标地址
		LCD_WriteCMD(MWRTTE);				//MWRTTE = 0x42 MWRITE 代码
		for(i = 0; i < 16; i++)
		{
			LCD_WriteData(ASCII_NUM_16[*font][i]);			//写入汉字代码
		}
		font++;
		j++;
	}
}

/*********************************************************************
** 函数名称: void LCD_WR_char8(Uchar8 x, Uchar8 y, Uchar8 *temp_num)  
** 输 入: x坐标(<320),Y坐标(<240), 所在定值
** 输 出: 
** 全局变量: 无
** 调用模块: 无
** 作 者: 邱志城
** 日 期: 2008_08_21
** 功能描述: 
	1、 在指定的位置中写单个数字
************************************************************/
void LCD_WR_Num8(Uchar8 x, Uchar8 y, Uchar8 temp_num) 
{
	Ushort16 i,j;
	Uchar8 temp_x, temp_y, temp_row;
	temp_x = x;
	temp_y = y;
	temp_row = ROW;
	j= temp_row * temp_y + temp_x;
	LCD_WriteCMD(CSRDIR_DOWN);			   //CSRDIR_DOWN = 0x4F 令规定了光标地址指针自动移动的方向
	LCD_WriteCMD(CSRW);					//CSRW = 0x46 CSRW 代码
	LCD_WriteData(j%256);				//设置光标地址
    LCD_WriteData(j/256);				//设置光标地址
	LCD_WriteCMD(MWRTTE);				//MWRTTE = 0x42 MWRITE 代码
	for(i = 0; i < 8; i++)
	{
		LCD_WriteData(ASCII_NUM_8[temp_num][i]);			//写入汉字代码
		temp_num++;
	}
	j++;
}





/*********************************************************************
** 函数名称: void LCD_WR_char8(Uchar8 x, Uchar8 y) 
** 输 入: x坐标(<320),Y坐标(<240), 所在定值
** 输 出: 
** 全局变量: 无
** 调用模块: 无
** 作 者: 邱志城
** 日 期: 2008_08_21
** 功能描述: 
	1、  写低压侧的分接数标号
***********************************************************
void WR_Equip_LV_Label_Num(Uchar8 T_num) 
{
	Uchar8 m, n;
	Uchar8 Temp_buf[2];

	Ushort16 i,j;
	Uchar8 temp_x, temp_y, temp_row;
	temp_row = ROW;
	temp_x = Equip_addr_x21;
	temp_y = ACount_LV_label_Addr(H_tap_num);		 //计算低压标签显示的位置

	for(n = 1; n < (T_num + 1); n++)
	{
		temp_y = temp_y + (n * 9);
		Temp_buf[0] = n / 10;
		Temp_buf[1] = n % 10;

		j= temp_row * temp_y + temp_x;
		for(m = 0; m < 2; m++)
		{
			LCD_WriteCMD(CSRDIR_DOWN);			   //CSRDIR_DOWN = 0x4F 令规定了光标地址指针自动移动的方向
			LCD_WriteCMD(CSRW);					//CSRW = 0x46 CSRW 代码
			LCD_WriteData(j%256);				//设置光标地址
		    LCD_WriteData(j/256);				//设置光标地址
			LCD_WriteCMD(MWRTTE);				//MWRTTE = 0x42 MWRITE 代码
			for(i = 0; i < 8; i++)
			{
				LCD_WriteData(ASCII_NUM_8[Temp_buf[m]][i]);			//写入汉字代码
			}
			j++;
		}
	}
}

*/

void LCD_WR_char_string_8(Uchar8 x, Uchar8 y, Uchar8 unm, Uchar8 *font)
{
	Ushort16 i,j;
	Uchar8 m, temp_x, temp_y, temp_row;
	temp_x = x;
	temp_y = y;
	temp_row = ROW;
	j= temp_row * temp_y + temp_x;
	for(m = 0; m < unm; m++)
	{
		LCD_WriteCMD(CSRDIR_DOWN);			   //CSRDIR_DOWN = 0x4F 令规定了光标地址指针自动移动的方向
		LCD_WriteCMD(CSRW);					//CSRW = 0x46 CSRW 代码
		LCD_WriteData(j%256);				//设置光标地址
	    LCD_WriteData(j/256);				//设置光标地址
		LCD_WriteCMD(MWRTTE);				//MWRTTE = 0x42 MWRITE 代码
		for(i = 0; i < 8; i++)
		{
			LCD_WriteData(ASCII_NUM_8[*font][i]);			//写入汉字代码
		}
		font++;
		j++;
	}
}


/*********************************************************************
** 函数名称: void LCD_Write16_16(Ushort16 x, Uchar8 y, Uchar8 data) 
** 输 入: x坐标(<320),Y坐标(<240), 所在定值
** 输 出: 
** 全局变量: 无
** 调用模块: 无
** 作 者: 邱志城
** 日 期: 2008_08_21
** 功能描述: 
	1、 在文本方式下显示汉字, 首先要建立汉字CGRAM,要定义汉字代码
	2、 在文本方式下写汉字需要写入4 个代码以组成一个汉字        
	3、 16*16点阵中文写入函数 CCW1_PR 
	4、汉字写入子程序(文本方式)                           
************************************************************/
void LCD_WR_Singer16_16(Uchar8 x, Uchar8 y, Uchar8 *font) 
{
	Ushort16 i,j;
	Uchar8 m, temp_row;
	temp_row = ROW;
	j= temp_row * y + x;
	for(m = 0; m < 2; m++)
	{
		LCD_WriteCMD(CSRDIR_DOWN);			   //CSRDIR_DOWN = 0x4F 令规定了光标地址指针自动移动的方向
		LCD_WriteCMD(CSRW);					//CSRW = 0x46 CSRW 代码
		LCD_WriteData(j%256);				//设置光标地址
	    LCD_WriteData(j/256);				//设置光标地址
		LCD_WriteCMD(MWRTTE);				//MWRTTE = 0x42 MWRITE 代码
		for(i = 0; i < 16; i++)
		{
			LCD_WriteData(*font);			//写入汉字代码
			font++;
		}
		j++;
	}
}

/*********************************************************************
** 函数名称: void LCD_Write16_16(Ushort16 x, Uchar8 y, Uchar8 data) 
** 输 入: x坐标(<320),Y坐标(<240), 所在定值
** 输 出: 
** 全局变量: 无
** 调用模块: 无
** 作 者: 邱志城
** 日 期: 2008_08_21
** 功能描述: 
	1、 16*16点阵写入字符串
************************************************************/
void LCD_WR_String16_16(Uchar8 x, Uchar8 y, Uchar8 num, Uchar8 *font) 
{
	Uchar8 temp_x, temp_y, m;
	Uchar8 *temp_font;
	temp_x = x;
	temp_y = y;
	temp_font = font;
	for(m = 0; m < num; m++)
	{
		LCD_WR_Singer16_16(temp_x, temp_y, temp_font);
		temp_x +=2;			//字与字之间无间隔
		temp_font += 32;
	}
}

/*********************************************************************
** 函数名称: void LCD_Write16_16(Ushort16 x, Uchar8 y, Uchar8 data) 
** 输 入: x坐标(<320),Y坐标(<240), 所在定值
** 输 出: 
** 全局变量: 无
** 调用模块: 无
** 作 者: 邱志城
** 日 期: 2008_08_21
** 功能描述: 
	3、 24*24点阵中文写入
************************************************************/
void LCD_WR_Singer24_24(Uchar8 x, Uchar8 y, Uchar8 *font) 
{
	Ushort16 i,j;
	Uchar8 m, temp_row;
	temp_row = ROW;
	j=  temp_row * y + x;
	for(m = 0; m < 3; m++)
	{
		LCD_WriteCMD(CSRDIR_DOWN);			   //CSRDIR_DOWN = 0x4F 令规定了光标地址指针自动移动的方向
		LCD_WriteCMD(CSRW);					//CSRW = 0x46 CSRW 代码
		LCD_WriteData(j%256);				//设置光标地址
	    LCD_WriteData(j/256);				//设置光标地址
		LCD_WriteCMD(MWRTTE);				//MWRTTE = 0x42 MWRITE 代码
		for(i = 0; i < 24; i++)
		{
			LCD_WriteData(*font);			//写入汉字代码
			font++;
		}
		j++;
	}
}
/*********************************************************************
** 函数名称: void LCD_WR_Singer40_40(Uchar8 x, Uchar8 y, Uchar8 *font) 
** 输 入: x坐标(<320),Y坐标(<240), 所在定值
** 输 出: 
** 全局变量: 无
** 调用模块: 无
** 作 者: 邱志城
** 日 期: 2008_08_21
** 功能描述: 
	1、 40*40点阵中文写入函数
************************************************************/
void LCD_WR_Singer40_40(Uchar8 x, Uchar8 y, Uchar8 *font) 
{
	Ushort16 i,j;
	Uchar8 m, temp_row;
	temp_row = ROW;
	j= temp_row * y + x;
	for(m = 0; m < 5; m++)
	{
		LCD_WriteCMD(CSRDIR_DOWN);			   //CSRDIR_DOWN = 0x4F 令规定了光标地址指针自动移动的方向
		LCD_WriteCMD(CSRW);					//CSRW = 0x46 CSRW 代码
		LCD_WriteData(j%256);				//设置光标地址
	    LCD_WriteData(j/256);				//设置光标地址
		LCD_WriteCMD(MWRTTE);				//MWRTTE = 0x42 MWRITE 代码
		font = font + (m * 40);
		for(i = 0; i < 40; i++)
		{
			LCD_WriteData(*font);			//写入汉字代码
			font++;
		}
		j++;
	}
}
/*********************************************************************
** 函数名称: void LCD_Write16_16(Ushort16 x, Uchar8 y, Uchar8 data) 
** 输 入: x坐标(<320),Y坐标(<240), 所在定值
** 输 出: 
** 全局变量: 无
** 调用模块: 无
** 作 者: 邱志城
** 日 期: 2008_08_21
** 功能描述: 
	1、 40*40点阵中文写入函数字符串                       
************************************************************/
void LCD_WR_String40_40(Uchar8 x, Uchar8 y, Uchar8 num, Uchar8 *font) 
{
	Uchar8 temp_x, temp_y, m;
	Uchar8 *temp_font;
	temp_x = x;
	temp_y = y;
	temp_font = font;
	for(m = 0; m < num; m++)
	{
		LCD_WR_Singer40_40(temp_x, temp_y, temp_font);
		temp_x+= 6;		   //字与字之间间隔8个点
		temp_font += 200;
	}
}



/*********************************************************************************************************
** 函数名称: void LCD_Write_Line(Ushort16 x_start, Ushort16 y_start, Ushort16 legth)
** 输 入: x坐标(<320),Y坐标(<240), 对头坐标
** 输 出: 
** 全局变量: ROW 
** 调用模块: 无
** 作 者: 邱志城
** 日 期: 2008_08_21
** 功能描述: 
	1、 画直线. 长度为8的部数关系
************************************************************/
void LCD_Write_Line(Ushort16 x_start, Ushort16 y_start, Ushort16 legth)
{
    Ushort16 temp_row, j, m;
	temp_row = ROW;
	j= temp_row * y_start + (x_start / 8);
  	if((legth + x_start) > 320)				    //防止数据溢出
	{
		legth = legth - ((legth + x_start) - 320);
	}   	

	LCD_WriteCMD(CSRDIR_RIGHT);			   //CSRDIR_RIGHT = 0x4c 令规定了光标地址指针自动移动的方向
	LCD_WriteCMD(CSRW);					//CSRW = 0x46 CSRW 代码
	LCD_WriteData(j%256);				//设置光标地址
    LCD_WriteData(j/256);				//设置光标地址
	LCD_WriteCMD(MWRTTE);				//MWRTTE = 0x42 MWRITE 代码
	for(m = 0; m < (legth / 8); m++)
	{ 
		LCD_WriteData(0xff);				//写入合成数据
	}
}
/*********************************************************************************************************
** 函数名称:void LCD_Write_ROW_Left(Ushort16 x_start, Ushort16 y_start, Ushort16 legth)
** 输 入: x坐标(<320),Y坐标(<240), 对头坐标
** 输 出: 
** 全局变量: ROW 
** 调用模块: 无
** 作 者: 邱志城
** 日 期: 2008_08_21
** 功能描述: 
		1、 画左竖数
************************************************************/
void LCD_Write_ROW_Left(Ushort16 x_start, Ushort16 y_start, Ushort16 legth)
{
    Ushort16 temp_row, j, p, m;
	temp_row = ROW;

	if((legth + y_start) > 320)					 //防止数据溢出
	{
		legth = legth - ((legth + y_start) - 240);
	}
	for(m = 0; m < (legth / 8); m++)		 	//画左竖线
	{
		j= temp_row * ((m * 8) + y_start) + (x_start / 8);
		LCD_WriteCMD(CSRDIR_DOWN);			   //CSRDIR_DOWN = 0x4F 令规定了光标地址指针自动移动的方向
		LCD_WriteCMD(CSRW);					//CSRW = 0x46 CSRW 代码
		LCD_WriteData(j%256);				//设置光标地址
	    LCD_WriteData(j/256);				//设置光标地址
		LCD_WriteCMD(MWRTTE);				//MWRTTE = 0x42 MWRITE 代码
		for(p = 0; p < 8; p++)
		{ 
			LCD_WriteData(0x80);				//写入合成数据
		}
		j++;
	}
	if((legth / 8) != 0)
	{
		j= temp_row * ((m * 8) + y_start) + (x_start / 8);
		LCD_WriteCMD(CSRDIR_DOWN);			   //CSRDIR_DOWN = 0x4F 令规定了光标地址指针自动移动的方向
		LCD_WriteCMD(CSRW);					//CSRW = 0x46 CSRW 代码
		LCD_WriteData(j%256);				//设置光标地址
	    LCD_WriteData(j/256);				//设置光标地址
		LCD_WriteCMD(MWRTTE);				//MWRTTE = 0x42 MWRITE 代码
		for(p = 0; p < (legth % 8); p++)
		{ 
			LCD_WriteData(0x80);				//写入合成数据
		}
	}
}

/*********************************************************************************************************
** 函数名称:void LCD_Write_ROW_Right(Ushort16 x_start, Ushort16 y_start, Ushort16 legth)
** 输 入: x坐标(<320),Y坐标(<240), 对头坐标
** 输 出: 
** 全局变量: ROW 
** 调用模块: 无
** 作 者: 邱志城
** 日 期: 2008_08_21

⌨️ 快捷键说明

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