📄 lcd_screen.c
字号:
#include "LCD.H"
#include "key.h"
#include "LCD_SCREEN.h"
/*********************************************************************************************************
** 函数名称:void WR_temperature(Uchar8 T_Type, Uchar8 *Date_time)
** 输 入:
T_Type显示类型 0表示8*8的字体,1表示16*8的字体
Date_time显示的温度.
** 输 出:
** 全局变量: 无
** 调用模块: 无
** 作 者: 邱志城
** 日 期: 2008_08_21
** 功能描述: 写温度16*8
********************************************************************************************************/
void WR_Ver(Ushort16 T_Ver)
{
Uchar8 temp_buf[11], m;
temp_buf[0] = 70; //字符“(”
temp_buf[1] = CHAR_V; //字符“V”
temp_buf[2] = CHAR_e; //字符“e”
temp_buf[3] = CHAR_r; //字符“r”
temp_buf[4] = 63; //字符“:”
temp_buf[5] = 65; //字符“:”
Account_num(4, T_Ver);
for(m = 0; m < 4; m++)
{
temp_buf[m + 6] = num_buf[m];
}
temp_buf[10] = 71; //字符“(”
LCD_WR_string_16x8(0, Ver_16x16_addr_x, Ver_16x16_addr_y, 11, temp_buf);
}
/*********************************************************************************************************
** 函数名称:void WR_temperature(Uchar8 T_Type, Uchar8 *Date_time)
** 输 入:
T_Type显示类型 0表示8*8的字体,1表示16*8的字体
Date_time显示的温度.
** 输 出:
** 全局变量: 无
** 调用模块: 无
** 作 者: 邱志城
** 日 期: 2008_08_21
** 功能描述: 写温度16*8
********************************************************************************************************/
void WR_Tel(Ushort16 Tle_C, Uint32 Tle_num)
{
Uchar8 temp_buf[18], m;
temp_buf[0] = CHAR_T; //字符“V”
temp_buf[1] = CHAR_e; //字符“e”
temp_buf[2] = CHAR_l; //字符“r”
temp_buf[3] = 63; //字符“:”
temp_buf[4] = 65; //字符“ ”
Account_num(4, Tle_C);
for(m = 0; m < 4; m++)
{
temp_buf[m + 5] = num_buf[m];
}
temp_buf[9] = 62; //字符“-”
Account_num(8, Tle_num);
for(m = 0; m < 8; m++)
{
temp_buf[m + 10] = num_buf[m];
}
LCD_WR_string_16x8(0, Tel_16x16_addr_x, Tel_16x16_addr_y, 18, temp_buf);
}
/*********************************************************************************************************
** 函数名称:void WR_temperature(Uchar8 T_Type, Uchar8 *Date_time)
** 输 入:
T_Type显示类型 0表示8*8的字体,1表示16*8的字体
Date_time显示的温度.
** 输 出:
** 全局变量: 无
** 调用模块: 无
** 作 者: 邱志城
** 日 期: 2008_08_21
** 功能描述: 写温度16*8
********************************************************************************************************/
void Dis_Lcd_Start(void)
{
LCD_WR_String_20x40(0, Name_20x40_addr_x, Name_20x40_addr_y, 6, (Uchar8 *)&Name_code_20x40[0][0]); //显示“ct3310”
LCD_WR_String_40x40(0, Name_40x40_addr_x, Name_40x40_addr_y, 6, (Uchar8 *)&Name_code_40x40[0][0]); //显示“三通道直阻仪”
WR_Ver(Ver_code); //写版本号
LCD_WR_string_16x16(0, Factory_16x16_addr_x, Factory_16x16_addr_y, 10, (Uchar8 *)&factory_code_16[0][0]); //显示“杭州高电科技有限公司”
WR_Tel(Tel_code1, Tel_code2); //写电话号码
}
/*********************************************************************************************************
** 函数名称:void Dis_Lcd_Start(void)
** 输 入:
T_Type显示类型 0表示8*8的字体,1表示16*8的字体
Date_time显示的温度.
** 输 出:
** 全局变量: 无
** 调用模块: 无
** 作 者: 邱志城
** 日 期: 2008_08_21
** 功能描述: 写温度16*8
********************************************************************************************************/
void Dis_Lcd_Set(Uchar8 Cursor)
{
LCD_Write_rectangle(0, 0, 40, 240); //画矩形
LCD_Write_Line(0, 32, 40); //画横线
LCD_WR_string_16x16(0, ShuJu_16x16_addr_x, ShuJu_16x16_addr_y, 2, (Uchar8 *)&ShuJu_code_16[0][0]); //显示“数据”
LCD_WR_string_16x16(0, CheShi_16x16_addr_x, CheShi_16x16_addr_y, 2, (Uchar8 *)&CheShi_code_16[0][0]); //显示“测试”
LCD_WR_string_16x16(0, XiTong_16x16_addr_x, XiTong_16x16_addr_y, 2, (Uchar8 *)&XiTong_code_16[0][0]); //显示“系统”
if(Cursor == 0)
{
//数据界面项目
LCD_WR_string_16x16(0, SaveState_16x16_addr_x, SaveState_16x16_addr_y, 5, (Uchar8 *)&SaveNum_code_16[0][0]); //显示“存储状态”
LCD_WR_string_16x16(0, SaveState_16x16_addr_x + 11, SaveState_16x16_addr_y, 2, (Uchar8 *)&State_code_16[0][0]); //显示“已用”
LCD_WR_string_16x16(0, SaveState_16x16_addr_x + 17, SaveState_16x16_addr_y, 2, (Uchar8 *)&State_code_16[2][0]); //显示“条”
LCD_WR_string_16x16(0, SaveState_16x16_addr_x + 21, SaveState_16x16_addr_y, 2, (Uchar8 *)&State_code_16[4][0]); //显示“还剩”
LCD_WR_string_16x16(0, SaveState_16x16_addr_x + 27, SaveState_16x16_addr_y, 1, (Uchar8 *)&State_code_16[6][0]); //显示“条”
LCD_WR_string_16x16(0, DanQian_16x16_addr_x, DanQian_16x16_addr_y, 3, (Uchar8 *)&DanQian_code_16[0][0]); //显示“当前”
LCD_WR_string_16x16(0, LiShi_16x16_addr_x, LiShi_16x16_addr_y, 3, (Uchar8 *)&LiShi_code_16[0][0]); //显示“历史”
LCD_WR_string_16x16(0, FanHui_16x16_addr_x, FanHui_16x16_addr_y, 2, (Uchar8 *)&FanHui_code_16[0][0]); //显示“返回”
}
else if(Cursor == 1)
{
//测试设置界面项目
LCD_WR_string_16x16(0, CSTongDao_16x16_addr_x, CSTongDao_16x16_addr_y, 5, (Uchar8 *)&CSTongDao_code_16[0][0]); //显示“测试通道”
LCD_WR_string_16x16(0, HVCe_16x16_addr_x, HVCe_16x16_addr_y, 4, (Uchar8 *)&HVCe_code_16[0][0]); //显示“高压侧”
LCD_WR_string_16x16(0, HV_FenJie_16x16_addr_x, HV_FenJie_16x16_addr_y, 3, (Uchar8 *)&FenJie_code_16[0][0]); //显示“分接”
LCD_WR_string_16x16(0, HV_CSDianLiu_16x16_addr_x, HV_CSDianLiu_16x16_addr_y, 5, (Uchar8 *)&CSDianLiu_code_16[0][0]); //显示“测试电流”
LCD_WR_string_16x16(0, LVCe_16x16_addr_x, LVCe_16x16_addr_y, 4, (Uchar8 *)&LVCe_code_16[0][0]); //显示“低压侧”
LCD_WR_string_16x16(0, LV_FenJie_16x16_addr_x, LV_FenJie_16x16_addr_y, 3, (Uchar8 *)&FenJie_code_16[0][0]); //显示“分接”
LCD_WR_string_16x16(0, LV_CSDianLiu_16x16_addr_x, LV_CSDianLiu_16x16_addr_y, 5, (Uchar8 *)&CSDianLiu_code_16[0][0]); //显示“测试电流”
LCD_WR_string_16x16(0, ZZTiaoJian_16x16_addr_x, ZZTiaoJian_16x16_addr_y, 5, (Uchar8 *)&ZZTiaoJian_code_16[0][0]); //显示“终止条件”
LCD_WR_string_16x16(0, Che_16x16_addr_x, CSCheShi_16x16_addr_y, 1, (Uchar8 *)&Che_code_16[0][0]); //显示“测”
LCD_WR_string_16x16(0, (Che_16x16_addr_x + 2), CSCheShi_16x16_addr_y, 1, (Uchar8 *)&Kong_code_16[0][0]); //显示“”
LCD_WR_string_16x16(0, Shi_16x16_addr_x, CSCheShi_16x16_addr_y, 1, (Uchar8 *)&Shi_code_16[0][0]); //显示“试”
LCD_WR_string_16x16(0, Fan_16x16_addr_x, CSFanHui_16x16_addr_y, 1, (Uchar8 *)&Fan_code_16[0][0]); //显示“返”
LCD_WR_string_16x16(0, (Fan_16x16_addr_x + 2), CSFanHui_16x16_addr_y, 1, (Uchar8 *)&Kong_code_16[0][0]); //显示“”
LCD_WR_string_16x16(0, Hui_16x16_addr_x, CSFanHui_16x16_addr_y, 1, (Uchar8 *)&Hui_code_16[0][0]); //显示“回”
}
else
{
//系统设置界面项目
LCD_WR_string_16x16(0, DateTime_16x16_addr_x, DateTime_16x16_addr_y, 5, (Uchar8 *)&DateTime_code_16[0][0]); //显示“日期时间”
WR_Date(1, (DateTime_16x16_addr_x + 11), DateTime_16x16_addr_y, (Uchar8 *)&Time_Data.YE); //显示16*8的时间
LCD_WR_string_16x16(0, CHECK_16x16_addr_x, CHECK_16x16_addr_y, 5, (Uchar8 *)&CHECK_code_16[0][0]); //显示“精度校准”
LCD_WR_string_16x16(0, (CHECK_16x16_addr_x + 11), CHECK_16x16_addr_y, 6, (Uchar8 *)&PutMiMa_code_16[0][0]); //显示“精度校准”
LCD_WR_string_16x16(0, Auto_16x16_addr_x, Auto_16x16_addr_y, 5, (Uchar8 *)&Auto_code_16[0][0]); //显示“自动参数”
LCD_WR_string_16x16(0, (Auto_16x16_addr_x + 11), Auto_16x16_addr_y, 6, (Uchar8 *)&ResistanceChange_code_16[0][0]); //显示“电阻变化率”
LCD_WR_string_16x16(0, (Auto_16x16_addr_x + 26), Auto_16x16_addr_y, 5, (Uchar8 *)&TimeDistance_code_16[0][0]); //显示“时间间隔”
LCD_WR_string_16x16(0, CheShiRenYuan_16x16_addr_x, CheShiRenYuan_16x16_addr_y, 5, (Uchar8 *)&CheShiRenYuan_code_16[0][0]); //显示“测试人员”
LCD_WR_string_16x16(0, CheShiAddress_16x16_addr_x, CheShiAddress_16x16_addr_y, 5, (Uchar8 *)&CheShiAddress_code_16[0][0]); //显示“测试地点”
LCD_WR_string_16x16(0, XTFan_16x16_addr_x, XTFanHui_16x16_addr_y, 1, (Uchar8 *)&Fan_code_16[0][0]); //显示“返”
LCD_WR_string_16x16(0, (XTFan_16x16_addr_x + 2), XTFanHui_16x16_addr_y, 1, (Uchar8 *)&Kong_code_16[0][0]); //显示“”
LCD_WR_string_16x16(0, (XTFan_16x16_addr_x + 4), XTFanHui_16x16_addr_y, 1, (Uchar8 *)&Kong_code_16[0][0]); //显示“”
LCD_WR_string_16x16(0, XTHui_16x16_addr_x, XTFanHui_16x16_addr_y, 1, (Uchar8 *)&Hui_code_16[0][0]); //显示“回”
}
WR_Date(1, Time16_addr_x, Time16_addr_y, (Uchar8 *)&Time_Data.YE); //显示16*8的时间
WR_temperature(1, Temper_num); //显示16*8的温度
}
/*********************************************************************************************************
** 函数名称:void Test_DisSetUp_Data(void)
** 输 入:
** 输 出:
** 全局变量: 无
** 调用模块: 无
** 作 者: 邱志城
** 日 期: 2008_08_21
** 功能描述: 显示设置项的内容
********************************************************************************************************/
void Data_Disp(void)
{
Uchar8 m, temp_y;
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;
for(m = 0; m < 10; m++)
{
num_buf[0] = EquipmentName_buf[m];
if(num_buf[0] > 35) num_buf[0] = 65; //为空格
LCD_WR_string_16x8(0, (SheBeiBianHao_16x16_addr_x + 12 + m), SheBeiBianHao_16x16_addr_y, 1,(Uchar8 *)&num_buf[0]); //显示“设备编号”
}
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 = 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]); //显示比例
}
}
//高压侧“单通道,三通道”
LCD_WR_string_16x16(0, (DataHVCe_16x16_addr_x + 8), DataHVCe_16x16_addr_y, 3, (Uchar8 *)&SetupTongDao_code_16[Parameter_Setup.Hv_Channels][0]); //选择显示高压侧的“单通道,三通道”
//高压侧“测试电流”
Account_num(2, Parameter_Setup.Hv_Ampen);
num_buf[2] = CHAR_A;
LCD_WR_string_16x8(0, (DataHVCe_16x16_addr_x + 15), DataHVCe_16x16_addr_y, 3,(Uchar8 *)&num_buf[0]); //显示“测试电流值”
//低压侧“单通道,三通道”
LCD_WR_string_16x16(0, (DataLVCe_16x16_addr_x + 8), DataLVCe_16x16_addr_y, 3, (Uchar8 *)&SetupTongDao_code_16[Parameter_Setup.Lv_Channels][0]); //选择显示低压侧“单通道,三通道”
//低压侧“测试电流”
Account_num(2, Parameter_Setup.Lv_Ampen);
num_buf[2] = CHAR_A;
LCD_WR_string_16x8(0, (DataLVCe_16x16_addr_x + 15), DataLVCe_16x16_addr_y, 3,(Uchar8 *)&num_buf[0]); //显示“测试电流值”
WR_Date(0, Time8_addr_x, Time8_addr_y, (Uchar8 *)&Parameter_Setup.Time_Data.YE); //显示8*8的时间
WR_temperature(0, Parameter_Setup.Temper_num); //显示8*8的温度
}
/*********************************************************************************************************
** 函数名称:void Test_DisSetUp_Data(void)
** 输 入:
** 输 出:
** 全局变量: 无
** 调用模块: 无
** 作 者: 邱志城
** 日 期: 2008_08_21
** 功能描述: 显示设置项的内容
********************************************************************************************************/
void Data_Modify(Uchar8 T_tpey, Uchar8 temp_Data, Uchar8 temp_Data2, Ushort16 T_Cursor)
{
Uchar8 temp_x, temp_y, temp_v, Account_y;
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;
switch(temp_Data)
{
case 0: //设备编号
num_buf[0] = EquipmentName_buf[(temp_Data2 - 1)];
if(num_buf[0] > 35) num_buf[0] = 65; //为空格
LCD_WR_string_16x8(T_tpey, (SheBeiBianHao_16x16_addr_x + 11 + temp_Data2), SheBeiBianHao_16x16_addr_y, 1,(Uchar8 *)&num_buf[0]); //显示“设备编号”
break;
default:
if(temp_v == 0x80) //表示高压侧
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -