📄 lcd_screen.c
字号:
else
{
T_Select = 1;
}
if(T_Select > 10)
{
T_Select = 0;
Code_Vaule = 0; //没有进入设置值
change_data = 1;
}
else
{
Setup_Vaule = EquipmentName_buf[(T_Select - 1)];
Bak_Setup_Vaule = Setup_Vaule;
change_data = 2;
}
break;
case 1:
temp_Project = 25;
Screen_num = 5; //显示提示界面
break;
default:
Screen_num = 4; //显示测试界面
change_data = 4; //计算光标位置
break;
}
break;
case 3: //取消键
if(Code_Vaule == 1)
{
EquipmentName_buf[(T_Select - 1)]= Bak_Setup_Vaule;
change_data = 1;
Code_Vaule = 0;
T_Select = 0;
}
break;
}
if(change_data != 0) //计算光标
{
if((temp_Project > 1) && (temp_Project < (Parameter_Setup.Hv_tap_num + 2)))
{
Cursor_data &= 0x0000;
Cursor_data |= 0x8000;
Cursor_data |= ((temp_Project - 2) << 8);
Cursor_data |= temp_Vaule;
}
else if(temp_Project > (Parameter_Setup.Hv_tap_num + 1))
{
Cursor_data &= 0x0000;
Cursor_data |= ((temp_Project - Parameter_Setup.Hv_tap_num - 2) << 8);
Cursor_data |= temp_Vaule;
}
if(change_data == 4)
{
change_data = 0;
Cursor_num = Cursor_data;
temp_Project = 25;
}
}
if(change_data == 1)
{
change_data = 0;
Data_Disp(); //重新显示设置值
Dis_Lcd_Data(0); //重新画一次
Data_Project(1, temp_Project, T_Select, Cursor_data); //显示选中的项目
}
else if(change_data == 2)
{
change_data = 0;
Data_Disp(); //重新显示设置值
Dis_Lcd_Data(0); //重新画一次
Data_Modify(1, temp_Project, T_Select, Cursor_data); //选中修改的值
}
}
}
/*********************************************************************************************************
** 函数名称:void Dis_Lcd_Start(void)
** 输 入:
T_Type显示类型 0表示8*8的字体,1表示16*8的字体
Date_time显示的温度.
** 输 出:
** 全局变量: 无
** 调用模块: 无
** 作 者: 邱志城
** 日 期: 2008_08_21
** 功能描述: 写温度16*8
********************************************************************************************************/
void Deal_Lcd_HisData(void)
{
Uchar8 temp_Project, change_data;
change_data = 0;
Data_Disp(); //显示设置值
Dis_Lcd_Data(1); //重新画一次
temp_Project = 0;
LCD_WR_string_16x16(1, FanHuiScreen_16x16_addr_x, FanHuiScreen_16x16_addr_y, 4, (Uchar8 *)&HisDeal_code_16[0][0]); //显示“返回”
while((Screen_num == 6) && (temp_Project != 5))
{
Key_Code = Key_Num(Key_Normal_code);
switch(Key_Code)
{
case 6: //表示向上键
case 8: //表示左移键
if(temp_Project == 0) temp_Project = 1;
else if(temp_Project == 1) temp_Project = 0;
change_data = 1;
break;
case 4: //表示向下键
case 2: //表示右移键
if(temp_Project == 0) temp_Project = 1;
else if(temp_Project == 1) temp_Project = 0;
change_data = 1;
break;
case 7: //表示按确定键
switch(temp_Project)
{
case 0: //表示返回
Screen_num = 0; //显示历史索引界面
temp_Project = 5;
break;
default:
Screen_num = 7; //删除界面
temp_Project = 5;
break;
}
break;
}
if(change_data == 1)
{
change_data = 0;
Data_Disp(); //重新显示设置值
Dis_Lcd_Data(1); //重新画一次
if(temp_Project == 0)
{
LCD_WR_string_16x16(1, FanHuiScreen_16x16_addr_x, FanHuiScreen_16x16_addr_y, 4, (Uchar8 *)&HisDeal_code_16[0][0]); //显示“返回主界面”
}
else
{
LCD_WR_string_16x16(1, FanHuiScreen_16x16_addr_x + 8, FanHuiScreen_16x16_addr_y, 4, (Uchar8 *)&HisDeal_code_16[4][0]); //显示“返回主界面”
}
}
}
}
/*********************************************************************************************************
** 函数名称:void Dis_Lcd_Start(void)
** 输 入:
T_Type显示类型 0表示8*8的字体,1表示16*8的字体
Date_time显示的温度.
** 输 出:
** 全局变量: 无
** 调用模块: 无
** 作 者: 邱志城
** 日 期: 2008_08_21
** 功能描述: 写温度16*8
********************************************************************************************************/
void Dis_Lcd_Data(Uchar8 Dis_s)
{
Uchar8 m, T_Len, temp_buf[26];
LCD_WR_string_16x16(0, SheBeiBianHao_16x16_addr_x, SheBeiBianHao_16x16_addr_y, 5, (Uchar8 *)&SheBeiBianHao_code_16[0][0]); //显示“设备编号”
if(Dis_s == 0) //显示当前数据
{
LCD_WR_string_16x16(0, FanHuiScreen_16x16_addr_x, FanHuiScreen_16x16_addr_y, 8, (Uchar8 *)&FanHuiScreen_code_16[0][0]); //显示“返回主界面”
}
else //显示历史数据
{
LCD_WR_string_16x16(0, FanHuiScreen_16x16_addr_x, FanHuiScreen_16x16_addr_y, 4, (Uchar8 *)&HisDeal_code_16[0][0]); //显示“返回主界面”
LCD_WR_string_16x16(0, FanHuiScreen_16x16_addr_x + 8, FanHuiScreen_16x16_addr_y, 4, (Uchar8 *)&HisDeal_code_16[4][0]); //显示“返回主界面”
}
if(Parameter_Setup.Hv_tap_num == 0) Parameter_Setup.Hv_tap_num = 1;
if(Parameter_Setup.Lv_tap_num == 0) Parameter_Setup.Lv_tap_num = 1;
if(Parameter_Setup.Hv_tap_num >= 19)
{
Parameter_Setup.Hv_tap_num = 19;
Parameter_Setup.Lv_tap_num = 1;
}
else if(Parameter_Setup.Hv_tap_num == 18)
{
Parameter_Setup.Lv_tap_num = 1;
}
else
{
if(Parameter_Setup.Lv_tap_num > (19 - Parameter_Setup.Hv_tap_num))
{
Parameter_Setup.Lv_tap_num = 19 - Parameter_Setup.Hv_tap_num;
}
}
if(Parameter_Setup.Hv_tap_num == 19)
{
T_Len = (Parameter_Setup.Hv_tap_num + Parameter_Setup.Lv_tap_num + 2) * 9;
}
else
{
T_Len = (Parameter_Setup.Hv_tap_num + Parameter_Setup.Lv_tap_num + 3) * 9;
}
LCD_Write_ROW_Left(0, 15, T_Len); //画左边的线
LCD_Write_ROW_Left(3, 15, T_Len); //画左边的线
LCD_Write_ROW_Left(13, 15, T_Len); //画左边的线
LCD_Write_ROW_Left(23, 15, T_Len); //画左边的线
LCD_Write_ROW_Left(33, 15, T_Len); //画左边的线
LCD_Write_ROW_Right(39, 15, T_Len); //画右边的线
temp_buf[0] = CHAR_H; //写“H”
temp_buf[1] = CHAR_v; //写“v”
temp_buf[2] = CHAR_L; //写“H”
temp_buf[3] = CHAR_v; //写“v”
temp_buf[5] = CHAR_R; //写“R”
temp_buf[6] = CHAR_a; //写“a”
temp_buf[7] = CHAR_b; //写“b”
temp_buf[8] = CHAR_R; //写“R”
temp_buf[9] = CHAR_b; //写“b”
temp_buf[10] = CHAR_c; //写“c”
temp_buf[11] = CHAR_R; //写“R”
temp_buf[12] = CHAR_c; //写“c”
temp_buf[13] = CHAR_a; //写“a”
temp_buf[14] = CHAR_R; //写“R”
temp_buf[15] = CHAR_a; //写“a”
temp_buf[16] = CHAR_o; //写“o”
temp_buf[17] = CHAR_R; //写“R”
temp_buf[18] = CHAR_b; //写“b”
temp_buf[19] = CHAR_o; //写“o”
temp_buf[20] = CHAR_R; //写“R”
temp_buf[21] = CHAR_c; //写“c”
temp_buf[22] = CHAR_o; //写“o”
temp_buf[23] = CHAR_E; //写“E”
temp_buf[24] = 65; //写“ ”
temp_buf[25] = 72; //写“%”
if(Parameter_Setup.Hv_Channels == 0) //单通道
{
LCD_WR_string_8x8(0, Data_0_addr_x11, Data_0_addr_y0, 3, (Uchar8 *)&temp_buf[5]); //显示“Rab”
LCD_WR_string_8x8(0, Data_0_addr_x21, Data_0_addr_y0, 3, (Uchar8 *)&temp_buf[8]); //显示“Rbc”
LCD_WR_string_8x8(0, Data_0_addr_x31, Data_0_addr_y0, 3, (Uchar8 *)&temp_buf[11]); //显示“Rca”
}
else //三通道
{
LCD_WR_string_8x8(0, Data_0_addr_x11, Data_0_addr_y0, 3, (Uchar8 *)&temp_buf[14]); //显示“Ra0”
LCD_WR_string_8x8(0, Data_0_addr_x21, Data_0_addr_y0, 3, (Uchar8 *)&temp_buf[17]); //显示“Rbo”
LCD_WR_string_8x8(0, Data_0_addr_x31, Data_0_addr_y0, 3, (Uchar8 *)&temp_buf[20]); //显示“Rco”
}
LCD_WR_string_8x8(0, Hv_8x8_addr_x, Data_0_addr_y0, 2, temp_buf); //显示“Hv”
LCD_WR_string_8x8(0, Data_0_addr_x41, Data_0_addr_y0, 3, (Uchar8 *)&temp_buf[23]); //显示“E %”
for(m = 0; m < (Parameter_Setup.Hv_tap_num + 2); m++) //画高压侧的横线
{
LCD_Write_Line(0, ((m * 9) + 15), 40); //画横线
Account_num(2, m); //计算分接数
if((m > 0) && (m < (Parameter_Setup.Hv_tap_num + 1)))
{
LCD_WR_string_8x8(0, 1, ((m * 9) + 17), 2, num_buf);
}
}
if(Parameter_Setup.Hv_tap_num < 19)
{
for(m = 2; m < (Parameter_Setup.Lv_tap_num + 4); m++)
{
LCD_Write_Line(0, ((m + Parameter_Setup.Hv_tap_num) * 9) + 15, 40); //画横线
Account_num(2, (m - 2)); //计算分接数
if((m > 2) && (m < (Parameter_Setup.Lv_tap_num + 3)))
{
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 + 2) * 9) + 16, 3, (Uchar8 *)&temp_buf[5]); //显示“Rab”
LCD_WR_string_8x8(0, Data_0_addr_x21, ((Parameter_Setup.Hv_tap_num + 2) * 9) + 16, 3, (Uchar8 *)&temp_buf[8]); //显示“Rbc”
LCD_WR_string_8x8(0, Data_0_addr_x31, ((Parameter_Setup.Hv_tap_num + 2) * 9) + 16, 3, (Uchar8 *)&temp_buf[11]); //显示“Rca”
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -