📄 lpc21_lcd.c
字号:
Disp_buf[6] = num_buf[4]; //移位数据
Disp_buf[7] = CHAR_m; //显示"m "
}
else //毫欧
{
Account_num(4, Data1);
Disp_buf[0] = 65; //显示" "
Disp_buf[1] = 65; //显示" "
Disp_buf[2] = num_buf[0]; //移位数据
Disp_buf[3] = 64; //显示". "
Disp_buf[4] = num_buf[1]; //移位数据
Disp_buf[5] = num_buf[2]; //移位数据
Disp_buf[6] = num_buf[3]; //移位数据
Disp_buf[7] = CHAR_m; //显示"m "
}
Disp_buf[8] = 66; //显示"电阻(欧) "
}
else
{
for(m = 0; m < 9; m++)
{
Disp_buf[m] = 65; //显示" "
}
}
}
/*********************************************************************
** 函数名称: Account_rate(Uint32 T_Data1, Uint32 T_Data2, Uint32 T_Data3)
** 输 入: x坐标(<320),Y坐标(<240), 数据长度, 所在定值
** 输 出:
** 全局变量: 无
** 调用模块: 无
** 作 者: 邱志城
** 日 期: 2008_08_21
** 功能描述:
1、 计算实时电压
************************************************************/
void Account_R_V_A_RATE(Uchar8 Tpte, Uint32 Data1)
{
Uchar8 m;
if(Data1 != 0xffffffff)
{
if(Data1 > 0xee6b2800)
{
Disp_buf[0] = 68; //显示">"
Disp_buf[1] = CHAR_4;
for(m = 2; m < 8; m++)
{
Disp_buf[m] = CHAR_0;
}
Disp_buf[7] = 65; //显示" "
}
else if(Data1 > 999999999) //千欧
{
Account_num(10, Data1);
Disp_buf[0] = num_buf[0]; //移位数据
Disp_buf[1] = num_buf[1]; //移位数据
Disp_buf[2] = num_buf[2]; //移位数据
Disp_buf[3] = num_buf[3]; //移位数据
Disp_buf[4] = 64; //显示". "
Disp_buf[5] = num_buf[4]; //移位数据
Disp_buf[6] = 65; //显示" "
}
else if(Data1 > 99999999) //百欧
{
Account_num(9, Data1);
Disp_buf[0] = num_buf[0]; //移位数据
Disp_buf[1] = num_buf[1]; //移位数据
Disp_buf[2] = num_buf[2]; //移位数据
Disp_buf[3] = 64; //显示". "
Disp_buf[4] = num_buf[3]; //移位数据
Disp_buf[5] = num_buf[4]; //移位数据
Disp_buf[6] = 65; //显示" "
}
else if(Data1 > 9999999) //十欧
{
Account_num(8, Data1);
Disp_buf[0] = num_buf[0]; //移位数据
Disp_buf[1] = num_buf[1]; //移位数据
Disp_buf[2] = 64; //显示". "
Disp_buf[3] = num_buf[2]; //移位数据
Disp_buf[4] = num_buf[3]; //移位数据
Disp_buf[5] = num_buf[4]; //移位数据
Disp_buf[6] = 65; //显示" "
}
else if(Data1 > 999999) //欧
{
Account_num(7, Data1);
Disp_buf[0] = num_buf[0]; //移位数据
Disp_buf[1] = 64; //显示". "
Disp_buf[2] = num_buf[1]; //移位数据
Disp_buf[3] = num_buf[2]; //移位数据
Disp_buf[4] = num_buf[3]; //移位数据
Disp_buf[5] = num_buf[4]; //移位数据
Disp_buf[6] = 65; //显示" "
}
else if(Data1 > 99999) //百毫欧
{
Account_num(6, Data1);
Disp_buf[0] = num_buf[0]; //移位数据
Disp_buf[1] = num_buf[1]; //移位数据
Disp_buf[2] = num_buf[2]; //移位数据
Disp_buf[3] = 64; //显示". "
Disp_buf[4] = num_buf[3]; //移位数据
Disp_buf[5] = num_buf[4]; //移位数据
Disp_buf[6] = CHAR_m; //显示"m "
}
else if(Data1 > 9999) //十毫欧
{
Account_num(5, Data1);
Disp_buf[0] = num_buf[0]; //移位数据
Disp_buf[1] = num_buf[1]; //移位数据
Disp_buf[2] = 64; //显示". "
Disp_buf[3] = num_buf[2]; //移位数据
Disp_buf[4] = num_buf[3]; //移位数据
Disp_buf[5] = num_buf[4]; //移位数据
Disp_buf[6] = CHAR_m; //显示"m "
}
else //毫欧
{
Account_num(4, Data1);
Disp_buf[0] = 65; //显示" "
Disp_buf[1] = num_buf[0]; //移位数据
Disp_buf[2] = 64; //显示". "
Disp_buf[3] = num_buf[1]; //移位数据
Disp_buf[4] = num_buf[2]; //移位数据
Disp_buf[5] = num_buf[3]; //移位数据
Disp_buf[6] = CHAR_m; //显示"m "
}
if(Tpte == 0) //表示电阻计算
{
Disp_buf[7] = 66; //显示"电阻(欧) "
}
else if(Tpte == 1) //表示电压计算
{
Disp_buf[7] = CHAR_V; //显示"电压 "
}
else if(Tpte == 2) //表示电流计算
{
Disp_buf[7] = CHAR_A; //显示"电压 "
}
else if(Tpte == 3) //表示比率计算
{
Disp_buf[6] = 72; //显示"% "
Disp_buf[7] = 64; //显示". "
if(Data1 > 99999999) //百欧
{
Account_num(9, Data1);
Disp_buf[0] = 68; //显示">"
Disp_buf[1] = CHAR_9; //移位数据
Disp_buf[2] = CHAR_9; //移位数据
Disp_buf[3] = CHAR_9; //移位数据
Disp_buf[4] = CHAR_9; //移位数据
Disp_buf[5] = CHAR_9; //移位数据
}
else if(Data1 > 9999999) //十欧
{
Account_num(8, Data1);
Disp_buf[0] = 65; //显示" "
Disp_buf[1] = num_buf[0]; //移位数据
Disp_buf[2] = num_buf[1]; //移位数据
Disp_buf[3] = num_buf[2]; //移位数据
Disp_buf[4] = num_buf[3]; //移位数据
Disp_buf[5] = num_buf[4]; //移位数据
}
else if(Data1 > 999999) //欧
{
Account_num(7, Data1);
Disp_buf[0] = num_buf[0]; //移位数据
Disp_buf[1] = num_buf[1]; //移位数据
Disp_buf[2] = num_buf[2]; //移位数据
Disp_buf[3] = num_buf[3]; //移位数据
Disp_buf[4] = 64; //显示". "
Disp_buf[5] = num_buf[4]; //移位数据
}
}
}
else
{
for(m = 0; m < 9; m++)
{
Disp_buf[m] = 65; //显示" "
}
}
}
/*********************************************************************
** 函数名称: Account_rate(Uint32 T_Data1, Uint32 T_Data2, Uint32 T_Data3)
** 输 入: x坐标(<320),Y坐标(<240), 数据长度, 所在定值
** 输 出:
** 全局变量: 无
** 调用模块: 无
** 作 者: 邱志城
** 日 期: 2008_08_21
** 功能描述:
1、 计算比列
************************************************************/
Uint32 Account_rate(Uint32 T_Data1, Uint32 T_Data2, Uint32 T_Data3)
{
Uint32 max, min, average;
if(T_Data1 > T_Data2)
{
max = T_Data1;
min = T_Data2;
}
else
{
max = T_Data2;
min = T_Data1;
}
if(T_Data3 > max)
{
max = T_Data3;
}
else if(T_Data3 < min)
{
min = T_Data3;
}
average = (T_Data1 + T_Data2 +T_Data3) / 3;
max = (max - min);
max = (max * 100000) / average;
if(max > 100000)
{
Disp_buf[0] = 65; //显示" "
Disp_buf[1] = 68; //显示">"
Disp_buf[2] = CHAR_1;
Disp_buf[3] = CHAR_0;
Disp_buf[4] = CHAR_0;
}
else if(max > 9999)
{
Account_num(5, max);
Disp_buf[0] = num_buf[0]; //显示"0"
Disp_buf[1] = num_buf[1]; //显示"0"
Disp_buf[2] = 64; //显示". "
Disp_buf[3] = num_buf[2]; //显示"0"
Disp_buf[4] = num_buf[3]; //显示"0"
}
else
{
Account_num(4, max);
Disp_buf[0] = num_buf[0]; //显示"0"
Disp_buf[1] = 64; //显示". "
Disp_buf[2] = num_buf[1]; //显示"0"
Disp_buf[3] = num_buf[2]; //显示"0"
Disp_buf[4] = num_buf[3]; //显示"0"
}
return max;
}
/*********************************************************************
** 函数名称: Account_rate(Uint32 T_Data1, Uint32 T_Data2, Uint32 T_Data3)
** 输 入: x坐标(<320),Y坐标(<240), 数据长度, 所在定值
** 输 出:
** 全局变量: 无
** 调用模块: 无
** 作 者: 邱志城
** 日 期: 2008_08_21
** 功能描述:
1、 计算误差
************************************************************/
Uint32 Account_error(Uint32 T_Data1, Uint32 T_Data2)
{
Uint32 max, min;
if(T_Data1 > T_Data2)
{
max = T_Data1;
min = T_Data2;
}
else
{
max = T_Data2;
min = T_Data1;
}
max = max - min;
max = (max * 1000000) / T_Data1;
return max;
}
/*********************************************************************
** 函数名称: void LCD_WR_string_16x16(Uchar8 x, Uchar8 y, Uchar8 unm, Uchar8 *font)
** 输 入: x坐标(<320),Y坐标(<240), 数据长度, 所在定值
** 输 出:
** 全局变量: 无
** 调用模块: 无
** 作 者: 邱志城
** 日 期: 2008_08_21
** 功能描述:
1、 在指定的位置中写16*8字符
************************************************************/
void LCD_WR_string_16x16(Uchar8 type, Uchar8 x, Uchar8 y, Uchar8 unm, Uchar8 *font)
{
Ushort16 j;
Uchar8 m, temp_x, temp_row;
Uchar8 *temp_font;
temp_x = x;
temp_row = ROW;
temp_font = font;
for(m = 0; m < unm; m++)
{
j= temp_row * y + temp_x;
WR_Num16x16(type, j, temp_font);
temp_x+= 2; //字与字之间间隔8个点
temp_font += 32;
}
}
/*********************************************************************
** 函数名称: void LCD_WR_char_string_8x8(Uchar8 x, Uchar8 y, Uchar8 unm, Uchar8 *font)
** 输 入: x坐标(<320),Y坐标(<240), 数据长度, 所在定值
** 输 出:
** 全局变量: 无
** 调用模块: 无
** 作 者: 邱志城
** 日 期: 2008_08_21
** 功能描述:
1、 在指定的位置中写8*8字符
************************************************************/
void LCD_WR_string_8x8(Uchar8 type, Uchar8 x, Uchar8 y, Uchar8 unm, Uchar8 *font)
{
Ushort16 j;
Uchar8 m, temp_row;
temp_row = ROW;
j= temp_row * y + x;
for(m = 0; m < unm; m++)
{
WR_Num8x8(type, j, (Uchar8 *)&ASCII_NUM_8[*font][0]);
font++;
j++;
}
}
/*********************************************************************
** 函数名称: void LCD_Write16_16(Ushort16 x, Uchar8 y, Uchar8 data)
** 输 入: x坐标(<320),Y坐标(<240), 所在定值
** 输 出:
** 全局变量: 无
** 调用模块: 无
** 作 者: 邱志城
** 日 期: 2008_08_21
** 功能描述:
3、 24*24点阵中文写入
************************************************************/
void LCD_WR_Singer_24x24(Uchar8 type, Uchar8 x, Uchar8 y, Uchar8 num, Uchar8 *font)
{
Ushort16 j;
Uchar8 temp_row, temp_x, m;
Uchar8 *temp_font;
temp_row = ROW;
temp_font = font;
temp_x = x;
for(m = 0; m < num; m++)
{
j= temp_row * y + temp_x;
WR_Num24x24(type, j, temp_font);
temp_x+= 3; //字与字之间间隔8个点
temp_font += 72;
}
}
/*********************************************************************
** 函数名称: void LCD_WR_String20_40(Ushort16 x, Uchar8 y, Uchar8 data)
** 输 入: x坐标(<320),Y坐标(<240), 所在定值
** 输 出:
** 全局变量: 无
** 调用模块: 无
** 作 者: 邱志城
** 日 期: 2008_08_21
** 功能描述:
1、 40*40点阵中文写入函数字符串
************************************************************/
void LCD_WR_String_20x40(Uchar8 type, Uchar8 x, Uchar8 y, Uchar8 num, Uchar8 *font)
{
Uchar8 temp_x, m;
Uchar8 *temp_font;
Uchar8 temp_row;
Ushort16 j;
temp_row = ROW;
temp_x = x;
temp_font = font;
for(m = 0; m < num; m++)
{
j= temp_row * y + temp_x;
WR_Num20x40(type, j, temp_font);
temp_x+= 4; //字与字之间间隔8个点
temp_font += 120;
}
}
/*********************************************************************
** 函数名称: void LCD_Write16_16(Ushort16 x, Uchar8 y, Uchar8 data)
** 输 入: x坐标(<320),Y坐标(<240), 所在定值
** 输 出:
** 全局变量: 无
** 调用模块: 无
** 作 者: 邱志城
** 日 期: 2008_08_21
** 功能描述:
1、 40*40点阵中文写入函数字符串
************************************************************/
void LCD_WR_String_40x40(Uchar8 type, Uchar8 x, Uchar8 y, Uchar8 num, Uchar8 *font)
{
Uchar8 temp_x, m;
Uchar8 *temp_font;
Uchar8 temp_row;
Ushort16 j;
temp_row = ROW;
temp_x = x;
temp_font = font;
for(m = 0; m < num; m++)
{
j= temp_row * y + temp_x;
WR_Num40x40(type, j, 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(Uchar8 x_start, Uchar8 y_start, Uchar8 legth)
{
Ushort16 j;
Uchar8 temp_row, p;
temp_row = ROW;
j= temp_row * y_start + x_start;
if((legth + x_start) > 40) //防止数据溢出
{
legth = legth - ((legth + x_start) - 40);
}
for(p = 0; p < legth; p++)
{
j= temp_row * y_start + x_start;
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 代码
LCD_WriteData(0xff); //写入合成数据
x_start++;
}
}
/*********************************************************************************************************
** 函数名称: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(Uchar8 x_start, Uchar8 y_start, Uchar8 legth)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -