⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd.c

📁 24位AD压力实验板 protell99se打开
💻 C
📖 第 1 页 / 共 2 页
字号:
            }
         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 + -