MS-DTU/Anjiehui7_Set_ZNY/User/display.c

436 lines
7.7 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "includes.h"
// 显示一个8段码
// pos: Fld1为0~3从左到右真值表1~4)Fld2为4~6真值表5~7
// Fld3为7~9真值表8~10Fld4为10~12真值表11~13)
void Disp_DispChar(u8 pos, char c)
{
if(pos == 0)
HT1621_WriteChar(c, 243, 233, 235, 246, 245, 244, 234);
else if(pos == 1)
HT1621_WriteChar(c, 223, 213, 215, 226, 225, 224, 214);
else if(pos == 2)
HT1621_WriteChar(c, 203, 193, 195, 206, 205, 204, 194);
else if(pos == 3)
HT1621_WriteChar(c, 183, 174, 176, 186, 185, 184, 175);
else if(pos == 4)
HT1621_WriteChar(c, 131, 132, 112, 101, 111, 121, 122);
else if(pos == 5)
HT1621_WriteChar(c, 133, 134, 114, 103, 113, 123, 124);
else if(pos == 6)
HT1621_WriteChar(c, 135, 136, 116, 105, 115, 125, 126);
else if(pos == 7)
HT1621_WriteChar(c, 41, 42, 22, 12, 21, 31, 32);
else if(pos == 8)
HT1621_WriteChar(c, 43, 44, 24, 14, 23, 33, 34);
else if(pos == 9)
HT1621_WriteChar(c, 45, 46, 26, 16, 25, 35, 36);
else if(pos == 10)
HT1621_WriteChar(c, 66, 65, 85, 95, 86, 76, 75);
else if(pos == 11)
HT1621_WriteChar(c, 64, 63, 83, 93, 84, 74, 73);
else if(pos == 12)
HT1621_WriteChar(c, 62, 61, 81, 91, 82, 72, 71);
}
// 显示差压数据
void Disp_Fld1Text(s8 *text)
{
u8 len = strlen(text), i = 0, c;
if(len < 4) // 千位
c = ' ';
else
c = text[i++];
Disp_DispChar(0, c);
if(len < 3) // 百位
c = ' ';
else
c = text[i++];
Disp_DispChar(1, c);
if(len < 2) // 十位
c = ' ';
else
c = text[i++];
Disp_DispChar(2, c);
if(len < 1) // 个位
c = ' ';
else
c = text[i++];
Disp_DispChar(3, c);
}
// 显示小数点或x10
void Disp_Fld1PointMultiOn(u8 posOrMulti)
{
if(posOrMulti < 1 || posOrMulti > 4)
return;
Disp_Fld1PointMultiOff();
if(posOrMulti == 1) // 小数点1位
HT1621_WriteBuf(236, 1);
else if(posOrMulti == 2) // 小数点2位
HT1621_WriteBuf(216, 1);
else if(posOrMulti == 3) // 小数点3位
HT1621_WriteBuf(196, 1);
else // 显示x10
HT1621_WriteBuf(145, 1);
}
void Disp_Fld1PointMultiOff()
{
HT1621_WriteBuf(236, 0);
HT1621_WriteBuf(216, 0);
HT1621_WriteBuf(196, 0);
HT1621_WriteBuf(145, 0);
}
void Disp_Fld1PointOff()
{
HT1621_WriteBuf(236, 0);
HT1621_WriteBuf(216, 0);
HT1621_WriteBuf(196, 0);
}
// 显示压力数据
void Disp_Fld2Text(s8 *text)
{
u8 len = strlen(text), i = 0, c;
if(len < 3) // 百位
c = ' ';
else
c = text[i++];
Disp_DispChar(4, c);
if(len < 2) // 十位
c = ' ';
else
c = text[i++];
Disp_DispChar(5, c);
if(len < 1) // 个位
c = ' ';
else
c = text[i++];
Disp_DispChar(6, c);
}
// 显示小数点
void Disp_Fld2PointOn(u8 pos)
{
if(pos == 1)
HT1621_WriteBuf(104, 1);
else if(pos == 2)
HT1621_WriteBuf(102, 1);
}
void Disp_Fld2PointOff()
{
HT1621_WriteBuf(104, 0);
HT1621_WriteBuf(102, 0);
}
// 显示单位
void Disp_Fld2UnitOn(TPresVacuUnit unit)
{
if(unit == UNIT_PV_PA)
HT1621_WriteBuf(146, 1);
else if(unit == UNIT_PV_MPA)
HT1621_WriteBuf(106, 1);
}
void Disp_Fld2UnitOff()
{
HT1621_WriteBuf(146, 0);
HT1621_WriteBuf(106, 0);
}
// 显示温度数据
void Disp_Fld3Text(s8 *text)
{
u8 len = strlen(text), i = 0, c;
// 符号位
if(len < 4)
HT1621_WriteBuf(11, 0);
else
{
HT1621_WriteBuf(11, 1);
i++;
}
if(len < 3) // 百位
c = ' ';
else
c = text[i++];
Disp_DispChar(7, c);
if(len < 2) // 十位
c = ' ';
else
c = text[i++];
Disp_DispChar(8, c);
if(len < 1) // 个位
c = ' ';
else
c = text[i++];
Disp_DispChar(9, c);
}
// 显示小数点
void Disp_Fld3PointOn(u8 pos)
{
if(pos == 1)
HT1621_WriteBuf(15, 1);
else if(pos == 2)
HT1621_WriteBuf(13, 1);
}
void Disp_Fld3PointOff()
{
HT1621_WriteBuf(15, 0);
HT1621_WriteBuf(13, 0);
}
// 显示单位
void Disp_Fld3UnitOn(TPresTempUnit unit)
{
if(unit == UNIT_PT_C)
HT1621_WriteBuf(55, 1);
else if(unit == UNIT_PT_F)
HT1621_WriteBuf(54, 1);
else if(unit == UNIT_PT_MPA)
HT1621_WriteBuf(56, 1);
}
void Disp_Fld3UnitOff()
{
HT1621_WriteBuf(55, 0);
HT1621_WriteBuf(54, 0);
HT1621_WriteBuf(56, 0);
}
// 显示温度数据
void Disp_Fld4Text(s8 *text)
{
u8 len = strlen(text), i = 0, c;
// 符号位
if(len < 4)
HT1621_WriteBuf(96, 0);
else
{
HT1621_WriteBuf(96, 1);
i++;
}
if(len < 3) // 百位
c = ' ';
else
c = text[i++];
Disp_DispChar(10, c);
if(len < 2) // 十位
c = ' ';
else
c = text[i++];
Disp_DispChar(11, c);
if(len < 1) // 个位
c = ' ';
else
c = text[i++];
Disp_DispChar(12, c);
}
// 显示小数点
void Disp_Fld4PointOn(u8 pos)
{
if(pos == 1)
HT1621_WriteBuf(92, 1);
else if(pos == 2)
HT1621_WriteBuf(94, 1);
}
void Disp_Fld4PointOff()
{
HT1621_WriteBuf(92, 0);
HT1621_WriteBuf(94, 0);
}
// 显示单位
void Disp_Fld4UnitOn(TPresTempUnit unit)
{
if(unit == UNIT_PT_C)
HT1621_WriteBuf(51, 1);
else if(unit == UNIT_PT_F)
HT1621_WriteBuf(52, 1);
else if(unit == UNIT_PT_MPA)
HT1621_WriteBuf(53, 1);
}
void Disp_Fld4UnitOff()
{
HT1621_WriteBuf(51, 0);
HT1621_WriteBuf(52, 0);
HT1621_WriteBuf(53, 0);
}
// 差压显示切换
void Disp_SwitchDiffUnit(TDiffUnit unit)
{
HT1621_WriteBuf(182, 0); // %
HT1621_WriteBuf(181, 0); // L
HT1621_WriteBuf(171, 0); // m3
HT1621_WriteBuf(173, 0); // kg
HT1621_WriteBuf(172, 0); // kPa
HT1621_WriteBuf(141, 0); // mmH2O
HT1621_WriteBuf(142, 0); // inH2O
HT1621_WriteBuf(144, 0); // PSI
HT1621_WriteBuf(143, 0); // CAL
if(unit == UNIT_CAL)
HT1621_WriteBuf(143, 1);
else if(unit == UNIT_PSI)
HT1621_WriteBuf(144, 1);
else if(unit == UNIT_INH2O)
HT1621_WriteBuf(142, 1);
else if(unit == UNIT_MMH2O)
HT1621_WriteBuf(141, 1);
else if(unit == UNIT_KPA)
HT1621_WriteBuf(172, 1);
else if(unit == UNIT_KG)
HT1621_WriteBuf(173, 1);
else if(unit == UNIT_M3)
HT1621_WriteBuf(171, 1);
else if(unit == UNIT_L)
HT1621_WriteBuf(181, 1);
else // 百分比%
HT1621_WriteBuf(182, 1);
}
// 显示液源
void Disp_SwitchSource(TDispSource src)
{
HT1621_WriteBuf(212, 0);
HT1621_WriteBuf(201, 0);
HT1621_WriteBuf(202, 0);
HT1621_WriteBuf(191, 0);
HT1621_WriteBuf(192, 0);
HT1621_WriteBuf(156, 0);
if(src == SOURCE_LNG)
HT1621_WriteBuf(212, 1);
else if(src == SOURCE_O2)
HT1621_WriteBuf(201, 1);
else if(src == SOURCE_N2)
HT1621_WriteBuf(202, 1);
else if(src == SOURCE_AR)
HT1621_WriteBuf(191, 1);
else if(src == SOURCE_CO2)
HT1621_WriteBuf(192, 1);
else // H2
HT1621_WriteBuf(156, 1);
}
void Disp_WriteNeedle(u8 val)
{
HT1621_WriteBuf(256, val >= 1);
HT1621_WriteBuf(255, val >= 2);
HT1621_WriteBuf(254, val >= 3);
HT1621_WriteBuf(253, val >= 4);
HT1621_WriteBuf(252, val >= 5);
HT1621_WriteBuf(251, val >= 6);
HT1621_WriteBuf(241, val >= 7);
HT1621_WriteBuf(242, val >= 8);
HT1621_WriteBuf(232, val >= 9);
HT1621_WriteBuf(231, val >= 10);
}
// 写电量数据
void Disp_WriteBattery(u8 val)
{
HT1621_WriteBuf(155, 1);
HT1621_WriteBuf(152, val >= 1);
HT1621_WriteBuf(151, val >= 2);
HT1621_WriteBuf(153, val >= 3);
HT1621_WriteBuf(154, val >= 4);
}
// 写信号强度
void Disp_WriteStrength(u8 val)
{
HT1621_WriteBuf(161, 1);
HT1621_WriteBuf(162, val >= 1);
HT1621_WriteBuf(163, val >= 2);
HT1621_WriteBuf(164, val >= 3);
HT1621_WriteBuf(165, val >= 4);
}
// 写通讯状态
void Disp_WriteCommunication(u8 val)
{
HT1621_WriteBuf(166, val != 0);
}
// 写告警状态
void Disp_WriteAlarm(u8 val)
{
HT1621_WriteBuf(221, val != 0);
}
// 写错误状态
void Disp_WriteError(u8 val)
{
HT1621_WriteBuf(222, val != 0);
}
// 写充装状态
void Disp_WriteFill(u8 val)
{
HT1621_WriteBuf(211, val != 0);
}
// 清屏
void Disp_Clear()
{
memset(&VideoBuf, 0, sizeof(VideoBuf));
}
// 设置闪烁
void Disp_SetBlinkVisible(u8 visible)
{
VideoBuf.blink_visible = visible;
}
void Disp_Fld1Blink(u8 blink)
{
VideoBuf.fld1_blink = blink;
}
void Disp_Fld2Blink(u8 blink)
{
VideoBuf.fld2_blink = blink;
}
void Disp_Fld3Blink(u8 blink)
{
VideoBuf.fld3_blink = blink;
}
void Disp_Fld4Blink(u8 blink)
{
VideoBuf.fld4_blink = blink;
}
void Disp_BatteryBlink(u8 blink)
{
VideoBuf.battery_blink = blink;
}