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

📄 main.c

📁 这是运用c51单片机测试电压电流的完整工程项目文件
💻 C
📖 第 1 页 / 共 3 页
字号:
	dh(4,124,52,0);
	dh(4,140,47,0);
}

//试品异常处理程序
void shipin_error3()
{
	dh(3,60,48,0); //高压保护,请重新开机!
	dh(3,76,49,0);
	dh(3,92,53,0);
	dh(3,108,54,0);
	dh(3,124,47,0);
	dh(5,60,55,0);
	dh(5,76,56,0);
	dh(5,92,57,0);
	dh(5,108,58,0);
	dh(5,124,59,0);
	dh(5,140,47,0);
}

void shipin_error_dispose()
{
	lcd_init();
	shipin_error1();
	shipin_error2();
	daCount = 0;
	Tlc5615(daCount);
	start = 1;//关闭高压模块
	while(1)
	 {
		 if ( namekey() == 4)
		 	{
		 			lcd_init();
		 			dierping();
		 			break;
			}
		}
}

void disanping()                //测试界面
{

    Battery();        						//显示电池电量
		Real_Display_Time();           //显示实时时间


		dh(0,0,33,0);               //正在测试中:
		dh(0,16,34,0);
		dh(0,32,10,0);
		dh(0,48,11,0);
		dh(0,64,35,0);
		df(0,80,24,0);
		//dh(0,80,36,0);

		df(3,58,25,0);              //U=XX.XKV
		df(3,70,26,0);              //=
		df(3,118,27,0);             //K
		df(3,126,28,0);             //V

		df(3,82,UiBuffer[0],0);  //26.8
		df(3,90,UiBuffer[1],0);
		df(3,98,22,0);
		df(3,106,UiBuffer[2],0);


		df(6,58,29,0);              //I=XXXuA
		df(6,70,26,0);              //=
		df(6,118,30,0);             //u
		df(6,126,31,0);             //A

		df(6,82,UiBuffer[3],0);  //1999
		df(6,90,UiBuffer[4],0);
		df(6,98,UiBuffer[5],0);
		df(6,106,UiBuffer[6],0);


}
void Data_Move()
{
	uchar idata i = 0;
	for ( i = 0; i < 10; i++)//将年月日时分数据共10位转移
		Rec24c64[i] = TimeBuffer[i];
  for (i = 10; i < 16; i++)//将电压(3位)电流(4位实际用3位)数据共6位转移
   	 if ( i >= 13)
   	 	 Rec24c64[i]  = UiBuffer[i - 9];//避开电流的千位不存入
   	 else
   	 	 Rec24c64[i]  = UiBuffer[i - 10];//电压3位
}
uint Number_To_Address()
{
	uint data uiAddress = 0;
	uiAddress = Serial_Number[0];
	uiAddress = ( uiAddress <<4 ) | Serial_Number[1];
	uiAddress = 	uiAddress  | Serial_Number[2];
	switch (Char_No)
			{
				 case 10 :  uiAddress = uiAddress  | 0; break;
				 case 11 :	uiAddress = uiAddress  | 1; break;
				 case 12 :	uiAddress = uiAddress  | 2;	break;
			}

	uiAddress=uiAddress<<4;
	return (uiAddress);
}
void Save_Data()
{
	uint uiA;

	Data_Move();
	uiA	=	Number_To_Address();
	AT24C64_W(Rec24c64,uiA,16);


}
void Data_Out()
{
	uint uiA;
	Data_Move();
	uiA	=	Number_To_Address();
	AT24C64_R(Rec24c64,uiA,16);

}

void Number_Set(uchar  bFlag)
{
	uchar  ucKp = 0 ;
	uchar  key = 9;
	while (1)
	 {
	 	key = namekey();
	 	 switch ( key )
	 	 {
	 	 		case 1 :  switch(ucKp)  //up
	 	 			              {
	 	 			              	case 0 :  if ( Serial_Number[0] == 9 )       //9+1=0
																				Serial_Number[0] = 0;
																		else
																				Serial_Number[0]++;
																				df(4,120,Serial_Number[0],1);
																		break;
													case	1:  if ( Serial_Number[1] == 9 )       //9+1=0
																				Serial_Number[1] = 0;
																		else
																				Serial_Number[1]++;
																				df(4,128,Serial_Number[1],1);
																		break;
													case 	2:  if ( Serial_Number[2] == 9 )       //9+1=0
																				Serial_Number[2] = 0;
																		else
																				Serial_Number[2]++;
																				df(4,136,Serial_Number[2],1);
																		break;
													case	3:  if ( Char_No == 12 )       //9+1=0
																				Char_No = 10;
																		else
																				Char_No++;
																				df(4,152,Char_No,1);
																		break;
											  }
											  break;
			case 2 :  switch(ucKp)
	 	 			              {
	 	 			              	case 0 :  if ( Serial_Number[0] == 0 )       //9+1=0
																				Serial_Number[0] = 9;
																		else
																				Serial_Number[0]--;
																				df(4,120,Serial_Number[0],1);
																		break;
													case	1:  if ( Serial_Number[1] == 0 )       //9+1=0
																				Serial_Number[1] = 9;
																		else
																				Serial_Number[1]--;
																				df(4,128,Serial_Number[1],1);
																		break;
													case 	2:  if ( Serial_Number[2] == 0 )       //9+1=0
																				Serial_Number[2] = 9;
																		else
																				Serial_Number[2]--;
																				df(4,136,Serial_Number[2],1);
																		break;
													case	3:  if ( Char_No == 10 )       //9+1=0
																				Char_No = 12;
																		else
																				Char_No--;
																				df(4,152,Char_No,1);
																		break;
											  }
											  break;
				case	3 : ucKp ++;

									if (ucKp < 3)
										{
											df(4,120+(ucKp-1)*8,Serial_Number[ucKp-1],0);


							        df(4,120+ucKp*8,Serial_Number[ucKp],1);

					      		}
					      	if (ucKp == 3)
					      		{
					      			df(4,136,Serial_Number[2],0);
					      			df(4,152,Char_No,1);
					      		}
					      	if (ucKp > 3)
					      		{
					      			df(4,120,Serial_Number[0],1);
					      			df(4,152,Char_No,0);
					      			 ucKp = 0;
					      		}

					      		break;
			  case 7: if ( bFlag == 1)
			  					{Data_Out();
			  						return;
			  					}
			  				else
			  				{	Save_Data();
			  					disiping();
			  				}
			  				break;
				default : break;

	 	 }
	 }

}
void Record_Data()
{
	lcd_init() ; //清屏,我加的
  dh(0,52,26,0); //数据存贮,我加的

	dh(0,76,27,0);

	dh(0,100,70,0);

	dh(0,124,71,0);//我加的

	 df(4,120,Serial_Number[0],1);
	 df(4,128,Serial_Number[1],0);
	 df(4,136,Serial_Number[2],0);
	 df(4,144,32,0);  //#
	 df(4,152,10,0);  //A

	Input_Serial_Number();
	Number_Set(0);
	disiping();

}

void disiping()   //测试结果
{
	 	uchar key;
	 	lcd_init();            //清屏
	 	Battery();        						//显示电池电量
		Real_Display_Time();           //显示实时时间

	 	dh(0,0,10,0);               //测试结果:
		dh(0,16,11,0);
		dh(0,32,37,0);
		dh(0,48,38,0);
		df(0,64,24,0);



		df(3,46,25,0);              //U1mA=XX.XKV
		dxz(4,54,12,0);
		dxz(4,62,13,0);
		dxz(4,70,14,0);
		df(3,82,26,0);
		df(3,130,27,0);
		df(3,138,28,0);

		df(3,94,UiBuffer[0],0);  //26.8
		df(3,102,UiBuffer[1],0);
		df(3,110,22,0);
		df(3,118,UiBuffer[2],0);


		df(6,46,29,0);              //I,I0.75U=XXXuA
		dxz(7,52,15,0);             //0.
		dxz(7,60,16,0);             //7
		dxz(7,66,17,0);             //5
		dxz(7,72,18,0);             //U
		df(6,82,26,0);             //=
		df(6,130,30,0);             //u
		df(6,138,31,0);             //A

		df(6,94, UiBuffer[3],0);  //1999
		df(6,102,UiBuffer[4],0);
		df(6,110,UiBuffer[5],0);
		df(6,118,UiBuffer[6],0);

		EA	= 0;
		ET0 = 0;
		EX1 = 0;
		EX0 = 0;


 	while(1)
		{
			switch (namekey() )
						{
							case    	4:    dierping();
															break;
						  case			5:		Record_Data();
						  								break;
						  case			6:		Print_Data();
						  								break;
						  default:  			break;
						}

		}


}

//测试过程界面  主要功能:读电压、电流 升压

void Test()
{

	uint aa=0;
	lcd_init() ; //清屏
	EA	= 1;
	ET0 = 0;
	EX1 = 1;
	EX0 = 1;
  start = 0;//启动高压模块
  u75=1;    //关闭0.75U开关
	aa = Read2543(1);

	aa = Read2543(1);

/*
	while(Read2543(1)<2048) //电流小于500uA
		{
			if(daCount>=1024)
			  shipin_error_dispose();          //电压到30KV 电流未达1MA 处理程序


			else
			{
				daCount = daCount + 64;
				Tlc5615(daCount);              //全速升压
				Shipin_U_dispose();
				Shipin_I_dispose();
				delay1ms(100);
				disanping();
			}
		}
	while(!daFlag)  //小于1mA判断
		{
			if(daCount>=1024)
			  shipin_error_dispose();          //电压到30KV 电流未达1MA 处理程序

			else
			{
				daCount = daCount + 32;
				Tlc5615(daCount);              //全速升压
				Shipin_U_dispose();
				Shipin_I_dispose();
				delay1ms(100);
				disanping();
			}
		}
	u75=0;
	Read2543(1);
	Shipin_I_dispose();
	daCount=0;
	Tlc5615(daCount);
	start = 1;//关闭高压模块
	daFlag = 0;
	*/disiping();


}

//历史查询界面
#pragma disable
void History_Data_Display()//
{
	  lcd_init();
	  df(0,0,Serial_Number[0],1);
	  df(0,8,Serial_Number[1],1);
	  df(0,16,Serial_Number[2],1);
	  df(0,24,32,1);  //#
	  df(0,32,Char_No,1);  //#

	  dh(0,44,10,0);               //测试结果:
		dh(0,60,11,0);
		dh(0,76,37,0);
		dh(0,92,38,0);
		df(0,108,24,0);



		df(3,46,25,0);              //U1mA=XX.XKV
		dxz(4,54,12,0);
		dxz(4,62,13,0);
		dxz(4,70,14,0);
		df(3,82,26,0);
		df(3,130,27,0);
		df(3,138,28,0);

		df(3,94,Rec24c64[10],0);  //26.8
		df(3,102,Rec24c64[11],0);
		df(3,110,22,0);
		df(3,118,Rec24c64[12],0);


		df(6,46,29,0);              //I,I0.75U=XXXuA
		dxz(7,52,15,0);             //0.
		dxz(7,60,16,0);             //7
		dxz(7,66,17,0);             //5
		dxz(7,72,18,0);             //U
		df(6,82,26,0);             //=
		df(6,130,30,0);             //u
		df(6,138,31,0);             //A

		  //1999
		df(6,102,Rec24c64[13],0);
		df(6,110,Rec24c64[14],0);
		df(6,118,Rec24c64[15],0);

		dxz(0,128,Rec24c64[0],0);         		//显示年月日
		dxz(0,136,Rec24c64[1],0);
		dxz(0,144,10,0);
		dxz(0,152,Rec24c64[2],0);
		dxz(0,160,Rec24c64[3],0);
		dxz(0,168,10,0);
		dxz(0,176,Rec24c64[4],0);
		dxz(0,184,Rec24c64[5],0);

		dxz(1,152,Rec24c64[6],0);          		//显示时分
		dxz(1,160,Rec24c64[7],0);
		dxz(1,168,11,0);
		dxz(1,176,Rec24c64[8],0);
		dxz(1,184,Rec24c64[9],0);
}
#pragma disable
void Input_Serial_Number()//请输入编号:
{
	dh(4,32,55,0);
	dh(4,48,66,0);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -