📄 lcd_screen.c
字号:
else //三通道
{
LCD_WR_string_8x8(0, Data_0_addr_x11, ((Parameter_Setup.Hv_tap_num + 2) * 9) + 16, 3, (Uchar8 *)&temp_buf[14]); //显示“Rao”
LCD_WR_string_8x8(0, Data_0_addr_x21, ((Parameter_Setup.Hv_tap_num + 2) * 9) + 16, 3, (Uchar8 *)&temp_buf[17]); //显示“Rbo”
LCD_WR_string_8x8(0, Data_0_addr_x31, ((Parameter_Setup.Hv_tap_num + 2) * 9) + 16, 3, (Uchar8 *)&temp_buf[20]); //显示“Rco”
}
LCD_WR_string_8x8(0, Hv_8x8_addr_x, ((Parameter_Setup.Hv_tap_num + 2) * 9) + 16, 2, (Uchar8 *)&temp_buf[2]); //显示"Lv"
LCD_WR_string_8x8(0, Data_0_addr_x41, ((Parameter_Setup.Hv_tap_num + 2) * 9) + 16, 3, (Uchar8 *)&temp_buf[23]); //显示“E %”
}
else
{
for(m = 1; m < (Parameter_Setup.Lv_tap_num + 3); m++)
{
LCD_Write_Line(0, ((m + Parameter_Setup.Hv_tap_num) * 9) + 15, 40); //画横线
Account_num(2, (m - 1)); //计算分接数
if((m > 1) && (m < (Parameter_Setup.Lv_tap_num + 2)))
{
LCD_WR_string_8x8(0, 1, ((m + Parameter_Setup.Hv_tap_num) * 9) + 17, 2, num_buf);
}
}
if(Parameter_Setup.Lv_Channels == 0) //单通道
{
LCD_WR_string_8x8(0, Data_0_addr_x11, ((Parameter_Setup.Hv_tap_num + 1) * 9) + 16, 3, (Uchar8 *)&temp_buf[5]); //显示“Rab”
LCD_WR_string_8x8(0, Data_0_addr_x21, ((Parameter_Setup.Hv_tap_num + 1) * 9) + 16, 3, (Uchar8 *)&temp_buf[8]); //显示“Rbc”
LCD_WR_string_8x8(0, Data_0_addr_x31, ((Parameter_Setup.Hv_tap_num + 1) * 9) + 16, 3, (Uchar8 *)&temp_buf[11]); //显示“Rca”
}
else //三通道
{
LCD_WR_string_8x8(0, Data_0_addr_x11, ((Parameter_Setup.Hv_tap_num + 1) * 9) + 16, 3, (Uchar8 *)&temp_buf[5]); //显示“Rao”
LCD_WR_string_8x8(0, Data_0_addr_x21, ((Parameter_Setup.Hv_tap_num + 1) * 9) + 16, 3, (Uchar8 *)&temp_buf[8]); //显示“Rbo”
LCD_WR_string_8x8(0, Data_0_addr_x31, ((Parameter_Setup.Hv_tap_num + 1) * 9) + 16, 3, (Uchar8 *)&temp_buf[11]); //显示“Rco”
}
LCD_WR_string_8x8(0, Hv_8x8_addr_x, ((Parameter_Setup.Hv_tap_num + 1) * 9) + 16, 2, (Uchar8 *)&temp_buf[2]); //显示"Lv"
LCD_WR_string_8x8(0, Data_0_addr_x41, ((Parameter_Setup.Hv_tap_num + 1) * 9) + 16, 3, (Uchar8 *)&temp_buf[23]); //显示“E %”
}
LCD_WR_string_16x16(0, DataHVCe_16x16_addr_x, DataHVCe_16x16_addr_y, 4, (Uchar8 *)&HVCe_code_16[0][0]); //显示“高压侧”
LCD_WR_string_16x16(0, DataLVCe_16x16_addr_x, DataLVCe_16x16_addr_y, 4, (Uchar8 *)&LVCe_code_16[0][0]); //显示“低压侧”
}
/*********************************************************************************************************
** 函数名称:void Dis_Lcd_Start(void)
** 输 入:
T_Cursor光标的位置 最高位为1表示HV,0表示LV ,高位的低七位表示行(< 19),低位表示列( < 3);
T_Data1,数据1,单通道三通道此位数据都有效
T_Data2,数据1,三通道此位数据都有效,单通道无效
T_Data3,数据1,三通道此位数据都有效,单通道无效
** 输 出:
** 全局变量: 无
** 调用模块: 无
** 作 者: 邱志城
** 日 期: 2008_08_21
** 功能描述: 写温度16*8
********************************************************************************************************/
void Dis_Lcd_Data_Wr(Ushort16 T_Cursor, Uint32 *T_Data)
{
Uchar8 temp_x, temp_y, temp_v, m;
Uint32 T_Data1, T_Data2, T_Data3;
temp_v = (T_Cursor& 0x8000) >> 8; //记算是 HV还是LV;
temp_x = (T_Cursor >> 8) & 0x7f; //记算X的位置
temp_y = T_Cursor & 0x00ff; //记算y的位置
if(temp_x > 19) temp_x = 19;
if(temp_y > 2) temp_y = 2;
T_Data1 = *T_Data;
T_Data++;
T_Data2 = *T_Data;
T_Data++;
T_Data3 = *T_Data;
T_Data++;
if(temp_v == 0x80) //表示高压侧
{
if((Parameter_Setup.Hv_Channels == 0)&&(T_Data1 != 0xffffffff)) //表示单通道
{
Hv_Data_buf[temp_x][temp_y] = T_Data1;
}
else
{
Hv_Data_buf[temp_x][0] = T_Data1;
Hv_Data_buf[temp_x][1] = T_Data2;
Hv_Data_buf[temp_x][2] = T_Data3;
}
for(m = 0; m < Parameter_Setup.Hv_tap_num; m++)
{
Account_resistance(Hv_Data_buf[m][0]);
LCD_WR_string_8x8(0, Data_0_addr_x1, (Data_0_addr_y1 + m * 9), 9, (Uchar8 *)&Disp_buf[0]); //显示第一列
Account_resistance(Hv_Data_buf[m][1]);
LCD_WR_string_8x8(0, Data_0_addr_x2, (Data_0_addr_y1 + m * 9), 9, (Uchar8 *)&Disp_buf[0]); //显示第二列
Account_resistance(Hv_Data_buf[m][2]);
LCD_WR_string_8x8(0, Data_0_addr_x3, (Data_0_addr_y1 + m * 9), 9, (Uchar8 *)&Disp_buf[0]); //显示第三列
if((Hv_Data_buf[m][0] != 0xffffffff) && (Hv_Data_buf[m][1] != 0xffffffff) && (Hv_Data_buf[m][2] != 0xffffffff))
{
Hv_Data_buf[m][3] = Account_rate(Hv_Data_buf[m][0], Hv_Data_buf[m][1], Hv_Data_buf[m][2]);
LCD_WR_string_8x8(0, Data_0_addr_x4, (Data_0_addr_y1 + m * 9), 5, (Uchar8 *)&Disp_buf[0]); //显示比例
}
}
for(m = Parameter_Setup.Hv_tap_num; m < 19; m++)
{
Hv_Data_buf[m][0] = 0xffffffff; //初始化高压侧显示数据的缓存器
Hv_Data_buf[m][1] = 0xffffffff; //初始化高压侧显示数据的缓存器
Hv_Data_buf[m][2] = 0xffffffff; //初始化高压侧显示数据的缓存器
}
}
else //表示低压侧
{
if((Parameter_Setup.Lv_Channels == 0)&&(T_Data1 != 0xffffffff)) //表示单通道
{
Lv_Data_buf[temp_x][temp_y] = T_Data1;
}
else
{
Lv_Data_buf[temp_x][0] = T_Data1;
Lv_Data_buf[temp_x][1] = T_Data2;
Lv_Data_buf[temp_x][2] = T_Data3;
}
for(m = 0; m < Parameter_Setup.Lv_tap_num; m++)
{
if(Parameter_Setup.Hv_tap_num < 19) //计算低压侧的数据显示位置,中间空了一行
{
temp_y = ((Parameter_Setup.Hv_tap_num + m + 2) * 9) + Data_0_addr_y1;
}
else
{
temp_y = ((Parameter_Setup.Hv_tap_num + m + 1) * 9) + Data_0_addr_y1;
}
Account_resistance(Lv_Data_buf[m][0]);
LCD_WR_string_8x8(0, Data_0_addr_x1, temp_y, 9, (Uchar8 *)&Disp_buf[0]); //显示第一列
Account_resistance(Lv_Data_buf[m][1]);
LCD_WR_string_8x8(0, Data_0_addr_x2, temp_y, 9, (Uchar8 *)&Disp_buf[0]); //显示第二列
Account_resistance(Lv_Data_buf[m][2]);
LCD_WR_string_8x8(0, Data_0_addr_x3, temp_y, 9, (Uchar8 *)&Disp_buf[0]); //显示第三列
if((Lv_Data_buf[m][0] != 0xffffffff) && (Lv_Data_buf[m][1] != 0xffffffff) && (Lv_Data_buf[m][2] != 0xffffffff))
{
Lv_Data_buf[m][3] = Account_rate(Lv_Data_buf[m][0], Lv_Data_buf[m][1], Lv_Data_buf[m][2]);
LCD_WR_string_8x8(0, Data_0_addr_x4, temp_y, 5, (Uchar8 *)&Disp_buf[0]); //显示比例
}
}
for(m = Parameter_Setup.Lv_tap_num; m < 17; m++)
{
Lv_Data_buf[m][0] = 0xffffffff; //初始化高压侧显示数据的缓存器
Lv_Data_buf[m][1] = 0xffffffff; //初始化高压侧显示数据的缓存器
Lv_Data_buf[m][2] = 0xffffffff; //初始化高压侧显示数据的缓存器
}
}
}
/*********************************************************************************************************
** 函数名称:void Dis_Lcd_Start(void)
** 输 入:
T_Cursor光标的位置 最高位为1表示HV,0表示LV ,高位的低七位表示行(< 19),低位表示列( < 3);
T_Data1,数据1,单通道三通道此位数据都有效
T_Data2,数据1,三通道此位数据都有效,单通道无效
T_Data3,数据1,三通道此位数据都有效,单通道无效
** 输 出:
** 全局变量: 无
** 调用模块: 无
** 作 者: 邱志城
** 日 期: 2008_08_21
** 功能描述: 写温度16*8
********************************************************************************************************/
void Dis_Lcd_Test(void)
{
LCD_Write_rectangle(0,0, 40,240);
LCD_WR_Singer_24x24(0, TongDaoCheShi_24x24_addr_x, TongDaoCheShi_24x24_addr_y, 4, (Uchar8 *)&TongDaoCheShi_code_24[0][0]); //显示“通道测试”
LCD_WR_string_16x16(0, CurrentFenJieAddress_16x16_addr_x, CurrentFenJieAddress_16x16_addr_y, 7, (Uchar8 *)&CurrentFenJieAddress_code_16[0][0]); //显示“当前分接位置:”
LCD_WR_string_16x16(0, CurrentFenJieAddress_16x16_addr_x1, CurrentFenJieAddress_16x16_addr_y, 2, (Uchar8 *)&Testing_Address_code_16[0][0]); //显示“压侧:”
LCD_WR_string_16x16(0, CurrentFenJieAddress_16x16_addr_x2, CurrentFenJieAddress_16x16_addr_y, 1, (Uchar8 *)&Testing_Address_code_16[2][0]); //显示“第:”
LCD_WR_string_16x16(0, CurrentFenJieAddress_16x16_addr_x3, CurrentFenJieAddress_16x16_addr_y, 3, (Uchar8 *)&Testing_Address_code_16[3][0]); //显示“分接:”
LCD_WR_string_16x16(0, JieDianBianHao_16x16_addr_x, JieDianBianHao_16x16_addr_y, 5, (Uchar8 *)&JieDianBianHao_code_16[0][0]); //显示“接点标号:”
LCD_WR_string_16x16(0, DirCurrentResistance_16x16_addr_x, DirCurrentResistance_16x16_addr_y, 5, (Uchar8 *)&DirCurrentResistance_code_16[0][0]); //显示“直流电阻:”
LCD_WR_string_16x16(0, RealTimeVoltage_16x16_addr_x, RealTimeVoltage_16x16_addr_y, 5, (Uchar8 *)&RealTimeVoltage_code_16[0][0]); //显示“实时电压:”
LCD_WR_string_16x16(0, RealTimeAmper_16x16_addr_x, RealTimeAmper_16x16_addr_y, 5, (Uchar8 *)&RealTimeAmper_code_16[0][0]); //显示“实时电流:”
LCD_WR_string_16x16(0, ResistanceChangeRate_16x16_addr_x, ResistanceChangeRate_16x16_addr_y, 6, (Uchar8 *)&ResistanceChangeRate_code_16[0][0]); //显示“电阻变化率:”
LCD_WR_string_16x16(0, CarryingAmperTime_16x16_addr_x, CarryingAmperTime_16x16_addr_y, 5, (Uchar8 *)&CarryingAmperTime_code_16[0][0]); //显示“载流时间:”
LCD_WR_string_16x16(0, CarryingAmperTime_16x16_addr_x1, CarryingAmperTime_16x16_addr_y, 1, (Uchar8 *)&Time_code_16[0][0]); //显示“时:”
LCD_WR_string_16x16(0, CarryingAmperTime_16x16_addr_x2, CarryingAmperTime_16x16_addr_y, 1, (Uchar8 *)&Time_code_16[1][0]); //显示“时:”
LCD_WR_string_16x16(0, CarryingAmperTime_16x16_addr_x3, CarryingAmperTime_16x16_addr_y, 1, (Uchar8 *)&Time_code_16[2][0]); //显示“时:”
LCD_WR_Singer_24x24(0, Testing_24x24_addr_x, Testing_24x24_addr_y, 6, (Uchar8 *)&Testing_code_24[0][0]); //显示“测试进行中”
LCD_WR_Singer_24x24(0, TestingEnd_24x24_addr_x, TestingEnd_24x24_addr_y, 9, (Uchar8 *)&TestingEnd_code_24[0][0]); //显示“或按确定键退出测试”
WR_Date(1, Time16_addr_x, Time16_addr_y, (Uchar8 *)&Time_Data.YE); //显示8*8的时间
WR_temperature(1, Temper_num); //显示8*8的温度
}
/*********************************************************************************************************
** 函数名称:void Dis_Lcd_Start(void)
** 输 入:
T_Cursor光标的位置 最高位为1表示HV,0表示LV ,高位的低七位表示行(< 19),低位表示列( < 3);
T_Data1,数据1,单通道三通道此位数据都有效
T_Data2,数据1,三通道此位数据都有效,单通道无效
T_Data3,数据1,三通道此位数据都有效,单通道无效
** 输 出:
** 全局变量: 无
** 调用模块: 无
** 作 者: 邱志城
** 日 期: 2008_08_21
** 功能描述: 写温度16*8
********************************************************************************************************/
void Dis_Lcd_Test_Wr(Ushort16 T_Cursor, Uint32 *Test_Data)
{
Uchar8 temp_x, temp_y, temp_v, m, n;
Uchar8 temp_buf[20];
Uint32 Temp_Test_buf[3][3]; //测试数据
Uint32 Temp_Test_bak_buf[3][3]; //测试数据
Uint32 temp_data, temp_data1; //算比率用
temp_v = (T_Cursor& 0x8000) >> 8; //记算是 HV还是LV;
temp_x = (T_Cursor >> 8) & 0x7f; //记算X的位置
temp_y = T_Cursor & 0x00ff; //记算y的位置
if(temp_x > 18) temp_x = 18;
if(temp_y > 2) temp_y = 2;
Scan_num++; //为了计算比率用
if(Scan_num > 0xfffffff0)
{
Scan_num = 2;
}
for(m = 0; m < 3; m++)
{
for(n = 0; n < 3; n++)
{
Temp_Test_buf[m][n] = *Test_Data;
Test_Data++;
}
}
temp_buf[0] = CHAR_R; //写“R”
temp_buf[1] = CHAR_a; //写“a”
temp_buf[2] = CHAR_b; //写“b”
temp_buf[3] = CHAR_R; //写“R”
temp_buf[4] = CHAR_b; //写“b”
temp_buf[5] = CHAR_c; //写“c”
temp_buf[6] = CHAR_R; //写“R”
temp_buf[7] = CHAR_c; //写“c”
temp_buf[8] = CHAR_a; //写“a”
temp_buf[9] = CHAR_R; //写“R”
temp_buf[10] = CHAR_a; //写“a”
temp_buf[11] = CHAR_o; //写“o”
temp_buf[12] = CHAR_R; //写“R”
temp_buf[13] = CHAR_b; //写“b”
temp_buf[14] = CHAR_o; //写“o”
temp_buf[15] = CHAR_R; //写“R”
temp_buf[16] = CHAR_c; //写“c”
temp_buf[17] = CHAR_o; //写“o”
temp_buf[18] = (temp_x + 1) / 10; //显示分接点的位置
temp_buf[19] = (temp_x + 1) % 10;
if(temp_v == 0x80) //表示高压侧
{
LCD_WR_string_16x16(0, CurrentFenJieAddress_16x16_addr_x4, CurrentFenJieAddress_16x16_addr_y, 1, (Uchar8 *)&Testing_Voltage_code_16[0][0]); //显示“高”
}
else //表示低压侧
{
LCD_WR_string_16x16(0, CurrentFenJieAddress_16x16_addr_x4, CurrentFenJieAddress_16x16_addr_y, 1, (Uchar8 *)&Testing_Voltage_code_16[1][0]); //显示“低”
}
LCD_WR_string_8x8(0, CurrentFenJieAddress_16x16_addr_x5, CurrentFenJieAddress_16x16_addr_y1, 2, (Uchar8 *)&temp_buf[18]); //显示“分接点号”
if(Parameter_Setup.Work_Mode == 0) //表示手动
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -