📄 lcd.c
字号:
}
else
{sign_Display(1);}
DisplayNum(8,DisplayData[2],0,0);
DisplayNum(9,DisplayData[3],0,0);
DisplayNum(10,DisplayData[4],1,0);
DisplayNum(11,DisplayData[5],0,0);
DisplayNum(12,DisplayData[6],0,0);
break;
case 4:
if(DisplayData[0]==10)
{
DisplayNum(7,DisplayData[1],1,0);
}
else
{sign_Display(1);}
DisplayNum(8,DisplayData[2],0,0);
DisplayNum(9,DisplayData[3],0,0);
DisplayNum(10,DisplayData[4],0,0);
DisplayNum(11,DisplayData[5],1,0);
DisplayNum(12,DisplayData[6],0,0);
break;
case 5:
if(DisplayData[0]==10)
{
DisplayNum(7,DisplayData[1],1,0);
}
else
{sign_Display(1);}
DisplayNum(8,DisplayData[2],0,0);
DisplayNum(9,DisplayData[3],0,0);
DisplayNum(10,DisplayData[4],0,0);
DisplayNum(11,DisplayData[5],0,0);
DisplayNum(12,DisplayData[6],1,0);
break;
}
}
/******************************************************************
*函数描述:电流电压数值送显
*局部变量:Point:电流 电压值小数点; Value: 电流电压值
*返回变量:
******************************************************************/
void I_VDisplay(unsigned char Point, long Value)
{
unsigned char DisplayData[7] = {0,0,0,0,0,0,0};
DisplayData[0] = 0; DisplayData[1] = 0;
DisplayData[2] = 0; DisplayData[3] = 0;
DisplayData[4] = 0; DisplayData[5] = 0;
DisplayData[6] = 0;
if(Value >= 0)
{
DisplayData[0] = 10; // 正号
}
else
{
DisplayData[0] = 11; // 负号
Value = -Value;
}
DisplayData[1] = Value / 100000;
Value %= 100000;
DisplayData[2] = Value / 10000;
Value %= 10000;
DisplayData[3] = Value / 1000;
Value %= 1000;
DisplayData[4] = Value / 100;
Value %= 100;
DisplayData[5] = Value / 10;
Value %= 10;
DisplayData[6] = Value;
if(DisplayData[0] == 10)
WriteData(DOWN, 0, Number1_3[DisplayData[1]][0]);
else
WriteData(DOWN, 0, Number1_3[DisplayData[1]][0] | 0x08);
WriteData(DOWN, 1, Number1_3[DisplayData[1]][1]);
WriteData(DOWN, 3, Number1_3[DisplayData[2]][1]);
WriteData(DOWN, 5, Number1_3[DisplayData[3]][1]);
WriteData(DOWN, 20, Number4_6[DisplayData[4]][0]);
WriteData(DOWN, 18, Number4_6[DisplayData[5]][0]);
WriteData(DOWN, 16, Number4_6[DisplayData[6]][0]);
switch(Point)
{
case 1:
WriteData(DOWN, 2, Number1_3[DisplayData[2]][0] | 0x08);
WriteData(DOWN, 4, Number1_3[DisplayData[3]][0]);
WriteData(DOWN, 21, Number4_6[DisplayData[4]][1]);
WriteData(DOWN, 19, Number4_6[DisplayData[5]][1]);
WriteData(DOWN, 17, Number4_6[DisplayData[6]][1]);
break;
case 2:
WriteData(DOWN, 2, Number1_3[DisplayData[2]][0]);
WriteData(DOWN, 4, Number1_3[DisplayData[3]][0] | 0x08);
WriteData(DOWN, 21, Number4_6[DisplayData[4]][1]);
WriteData(DOWN, 19, Number4_6[DisplayData[5]][1]);
WriteData(DOWN, 17, Number4_6[DisplayData[6]][1]);
break;
case 3:
WriteData(DOWN, 2, Number1_3[DisplayData[2]][0]);
WriteData(DOWN, 4, Number1_3[DisplayData[3]][0]);
WriteData(DOWN, 21, Number4_6[DisplayData[4]][1] | 0x08);
WriteData(DOWN, 19, Number4_6[DisplayData[5]][1]);
WriteData(DOWN, 17, Number4_6[DisplayData[6]][1]);
break;
case 4:
WriteData(DOWN, 2, Number1_3[DisplayData[2]][0]);
WriteData(DOWN, 4, Number1_3[DisplayData[3]][0]);
WriteData(DOWN, 21, Number4_6[DisplayData[4]][1]);
WriteData(DOWN, 19, Number4_6[DisplayData[5]][1] | 0x08);
WriteData(DOWN, 17, Number4_6[DisplayData[6]][1]);
break;
case 5:
WriteData(DOWN, 2, Number1_3[DisplayData[2]][0]);
WriteData(DOWN, 4, Number1_3[DisplayData[3]][0]);
WriteData(DOWN, 21, Number4_6[DisplayData[4]][1]);
WriteData(DOWN, 19, Number4_6[DisplayData[5]][1]);
WriteData(DOWN, 17, Number4_6[DisplayData[6]][1] | 0x08);
break;
case 6:
WriteData(DOWN, 2, Number1_3[DisplayData[2]][0]);
WriteData(DOWN, 4, Number1_3[DisplayData[3]][0]);
WriteData(DOWN, 21, Number4_6[DisplayData[4]][1]);
WriteData(DOWN, 19, Number4_6[DisplayData[5]][1]);
WriteData(DOWN, 17, Number4_6[DisplayData[6]][1]);
default:
break;
}
}
/******************************************************************
*函数描述:显示校准压力 电压 电流
*局部变量:P_V_I 0:不显示
1:显示校准压力
2:显示校准电压
3:显示校准电流
*返回变量:
******************************************************************/
void CalibrateDisplay(unsigned char P_V_I)
{
if(P_V_I == 0)
WriteData(DOWN, 14, 0x00);
else if(P_V_I == 1)
WriteData(DOWN, 14, 0x03);
else if(P_V_I == 2)
WriteData(DOWN, 14, 0x05);
else if(P_V_I == 3)
WriteData(DOWN, 14, 0x09);
}
/******************************************************************
*函数描述:显示校准步骤
*局部变量:number: 校准步数; step: 0:不显示校准步数 1:显示校准步数
*返回变量:
******************************************************************/
void CalibStepDisplay(unsigned char number, unsigned char step)
{
unsigned char i = 0;
i = number / 10;
number -= i * 10;
if(step == 0)
{
WriteData(DOWN, 10, 0x00);
WriteData(DOWN, 11, 0x00);
WriteData(DOWN, 12, 0x00);
WriteData(DOWN, 13, 0x00);
}
else
{
WriteData(DOWN, 10, Number13_16[i][0]);
WriteData(DOWN, 11, Number13_16[i][1]);
WriteData(DOWN, 12, Number13_16[number][0]);
WriteData(DOWN, 13, Number13_16[number][1]);
}
}
/******************************************************************
*函数描述:压力数值送显,Value为KPA值或Pa
*局部变量:
*返回变量:
******************************************************************/
void PressureDisplay(unsigned char unit, unsigned char Point, float Value)
{
float tmp = 0;
if(ZeroFlag == 1)
{
Value -= SecondZero;
}
tmp = Value;
if(tmp < 0)
{
tmp = -tmp;
}
if(P_RangeFlag == MPA)
{
// MPA模块一般小数点在第5位,默认是KPA显示
// MMH2O,PA超出6位
switch(unit)
{
case MPA:
Point -= 3;
break;
case MMHG:
Value *= 7.5006;
break;
case MBAR:
Value *= 10;
break;
case BAR:
Point -= 2;
break;
case PSI:
Value *= 1.45038;
--Point;
break;
case KGF:
Value *= 1.019716;
Point -= 2;
break;
default:
break;
} // END SWITCH
}
else if(P_RangeFlag == KPA)
{
// KPA模块一般小数点在第4位,默认是KPA显示
// MMH2O,PA超出6位
switch(unit)
{
case PA:
Value *=1000 ;
break;
case MPA:
Point -= 3;
break;
case MMHG:
if(Value > 1330) // 大于1330KPA,小数点右移一位
++Point;
Value *= 7.5006;
break;
case MBAR:
Value *= 10;
++Point;
break;
case BAR:
Value *= 10;
Point -= 2;
break;
case PSI:
if(Value < 6894)
{
Value *= 14.50377;
--Point;
}
else
{
Value *= 1.450377;
}
break;
case KGF:
Value *= 0.010197162;
Point -= 2;
break;
default:
break;
} // END SWITCH
}
else // PA
{
if(Point == 4) // 传进来的Point值已经+1
{
// PA模块小数点在第3位
// MPA,KPA,BAR无显示
switch(unit)
{
case MMHG:
Value *= 75.006;
Point -= 2;
break;
case MBAR:
Value *= 0.01;
break;
case MMH2O:
Value *= 0.10197162;
Point -= 2;
break;
case PSI:
Value *= 1.45;
Point -= 2;
break;
case KGF:
Value *= 0.1;
Point -= 2;
break;
default:
break;
}
}
}
if(Value >= 0)
{
DisplayData[0] = 10; // 正号
}
else
{
DisplayData[0] = 11; // 负号
Value = -Value;
}
DisplayData[1] = Value / 100000;
if(DisplayData[1] > 13)
{
Value = 1;
}
DisplayData[1] = Value / 100000;
Value -= DisplayData[1] * 100000;
DisplayData[2] = Value / 10000;
Value -= (long)DisplayData[2]*10000;
DisplayData[3] = Value / 1000;
Value -= (long)DisplayData[3]*1000;
DisplayData[4] = Value / 100;
Value -= (long)DisplayData[4]*100;
DisplayData[5] = Value / 10;
Value -= (long)DisplayData[5]*10;
DisplayData[6] = Value;
if(unit == MMH2O)
{
if(DisplayData[0] == 10)
WriteData(UP, 14, Number[DisplayData[0]][0] | 0x08);
else
WriteData(UP, 14, Number[DisplayData[0]][0] | 0x0C);
}
else
{
if(DisplayData[0] == 10)
WriteData(UP, 14, Number[DisplayData[0]][0]);
else
WriteData(UP, 14, Number[DisplayData[0]][0] | 0x04);
}
WriteData(UP, 0, Number[DisplayData[1]][0]);
WriteData(UP, 2, Number[DisplayData[2]][0]);
WriteData(UP, 4, Number[DisplayData[3]][0]);
WriteData(UP, 6, Number[DisplayData[4]][0]);
WriteData(UP, 8, Number[DisplayData[5]][0]);
WriteData(UP,10, Number[DisplayData[6]][0]);
WriteData(UP,11, Number[DisplayData[6]][1]);
switch(Point)
{
case 1:
WriteData(UP, 1, Number[DisplayData[1]][1] | 0x01);
WriteData(UP, 3, Number[DisplayData[2]][1]);
WriteData(UP, 5, Number[DisplayData[3]][1]);
WriteData(UP, 7, Number[DisplayData[4]][1]);
WriteData(UP, 9, Number[DisplayData[5]][1]);
break;
case 2:
WriteData(UP, 1, Number[DisplayData[1]][1]);
WriteData(UP, 3, Number[DisplayData[2]][1] | 0x01);
WriteData(UP, 5, Number[DisplayData[3]][1]);
WriteData(UP, 7, Number[DisplayData[4]][1]);
WriteData(UP, 9, Number[DisplayData[5]][1]);
break;
case 3:
WriteData(UP, 1, Number[DisplayData[1]][1]);
WriteData(UP, 3, Number[DisplayData[2]][1]);
WriteData(UP, 5, Number[DisplayData[3]][1] | 0x01);
WriteData(UP, 7, Number[DisplayData[4]][1]);
WriteData(UP, 9, Number[DisplayData[5]][1]);
break;
case 4:
WriteData(UP, 1, Number[DisplayData[1]][1]);
WriteData(UP, 3, Number[DisplayData[2]][1]);
WriteData(UP, 5, Number[DisplayData[3]][1]);
WriteData(UP, 7, Number[DisplayData[4]][1] | 0x01);
WriteData(UP, 9, Number[DisplayData[5]][1]);
break;
case 5:
WriteData(UP, 1, Number[DisplayData[1]][1]);
WriteData(UP, 3, Number[DisplayData[2]][1]);
WriteData(UP, 5, Number[DisplayData[3]][1]);
WriteData(UP, 7, Number[DisplayData[4]][1]);
WriteData(UP, 9, Number[DisplayData[5]][1] | 0x01);
break;
case 6:
WriteData(UP, 1, Number[DisplayData[1]][1]);
WriteData(UP, 3, Number[DisplayData[2]][1]);
WriteData(UP, 5, Number[DisplayData[3]][1]);
WriteData(UP, 7, Number[DisplayData[4]][1]);
WriteData(UP, 9, Number[DisplayData[5]][1]); // 无小数点
break;
default:
break;
}
DisplayUnit(unit);
}
/******************************************************************
*函数描述:主函数
******************************************************************/
/*void main()
{
WriteCommand(ALL, 0x00); // 关闭振荡器关LCD显示进入静态模式
WriteCommand(ALL, 0x02); // 关LCD显示
WriteCommand(ALL, 0x14); // 外部振荡
WriteCommand(ALL, 0x01); // 开启系统振荡器
ClearRAM(ALL);
WriteCommand(ALL, 0x03); // 开启LCD偏压发生器,开LCD显示
WriteCommand(ALL, 0x29);
}
*/
/******************************************************************
*******************************************************************
*函数描述:显示压力单位,需要传压力值过去判断符号
为了显示mmH2O时不覆盖负号
*局部变量:
*返回变量:
*******************************************************************
******************************************************************/
void DisplayUnit(unsigned char unit)
{
//unsigned char symbol;
switch(unit)
{
case KPA:
WriteData(UP, 14, 3<<3);
WriteData(UP, 12, 0x08);
WriteData(UP, 13, 0x00);
break;
case MPA:
WriteData(UP, 12, 0x04);
WriteData(UP, 13, 0x00);
break;
case PA:
WriteData(UP, 12, 0x02);
WriteData(UP, 13, 0x00);
break;
case PSI:
WriteData(UP, 12, 0x01);
WriteData(UP, 13, 0x00);
break;
case KGF:
WriteData(UP, 12, 0x00);
WriteData(UP, 13, 0x01);
break;
case BAR:
WriteData(UP, 12, 0x00);
WriteData(UP, 13, 0x02);
break;
case MBAR:
WriteData(UP, 12, 0x00);
WriteData(UP, 13, 0x04);
break;
case MMHG:
WriteData(UP, 12, 0x00);
WriteData(UP, 13, 0x08);
break;
case MMH2O:
WriteData(UP, 12, 0x00);
WriteData(UP, 13, 0x00);
WriteData(UP, 14, 0x08 | (3<<3));
break;
default:
break;
}
}
/*if(P_RangeFlag == KPA)
{
// KPA模块一般小数点在第4位,默认是KPA显示
// MMH2O,PA超出6位
switch(unit)
{
case PA:
Point += 3;
break;
case MPA:
Point -= 3;
// Point -= 3;
break;
case BAR:
Point -= 2;
// Point -= 2;
break;
case MBAR:
++Point;
break;
case KGF:
Point -= 2;
Value *= 1.0197162;
//Point -= 2;
break;
case MMHG:
Value *= 7.5006;
//--Point;
break;
case MMH2O:
Value *= 1.0197162;
Point += 2;
break;
case PSI:
--Point;
Value *= 1.450377;
// --Point;
break;
default:
break;
}
}*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -