📄 lpc21_lcd.c
字号:
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 + -