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

📄 progm.c

📁 这是测量接触电阻的程序
💻 C
📖 第 1 页 / 共 2 页
字号:
	sprint(0x52);sprint(0x3d);//R=
  for(i=0;i<7;i++) //打印电阻数值

//打印电压数值
	for(i=0;i<7;i++) //打印电压数值
	sprint(daRTmpBuf[i]);
	sprint(0x0d); //回车
	sprint(0x49);sprint(0x3d);//I=
	for(i=0;i<6;i++) //打印电流数值
	sprint(daiTmpBuf[i]);
	sprint(0x0d); //回车
//打印“**********”
	for(i=0;i<16;i++)
	sprint(0x2d);//打印“*************”
	sprint(0x0d); //回车
	sprint(0x1b);sprint(0x38);sprint(0x04);//选择汉字
//打印“测试员:”
	for(i=0;i<5;i++) //打印“系统:”
	sprint(ch4[i]);
	sprint(0x0d); //回车

	sprint(0x1b);
	sprint(0x66);
	sprint(0x01);
	sprint(0x01);
	sprint(0x0d); //回车
}
void print()//打印结果
{
	daima();
  dayin();
}

void test()
{
	uchar i,cishu;
	uchar tmpe;
	START=1;
	SELC=1;
	SELC=1;
	SELC=1;
	lcd_init();
	disanping();//显示正在测试中,请稍候。。。
	FM=1;
	SELC=0;
	delay1ms(255);
	delay1ms(255);
	FM=0;
	delay1ms(255);
	delay1ms(255);
	delay1ms(255);
	
	cedianliu();//测试电路回路,功能:用于故障判断
  liangcheng();//选择电压回路的量程  
	for(i=0;i<10;i++)
	{
		for(cishu=0;cishu<1;cishu++)
			{
				FM=1;
				cedianliu();//测试电路回路,功能:用于故障判断
				ceshidianzu();//交替测试电流和电压回路,并计算电阻值
				//delay1ms(20);
				FM=0;
				delay1ms(255);
				delay1ms(255);
			}
		tmpe=120-i*8;
		df(2,tmpe,23,0);
	}
	SELC=1;   //关闭恒流源
	FM=1;
	delay1ms(255);
	delay1ms(255);
	FM=0;
 	showceshijieguo();//测试结束,结果显示
 	while(1)
	 {
		if(namekey()== 6)
 	    print();
 	 }

}

void xianshi_xiao()//显示校正
{
	lcd_init();
	dh(0,16,7,0);			//电流:1.0000
	dh(0,32,20,0);
	df(0,56,17,0);
	df(0,64,xiaozhen[0],1);
	df(0,72,21,0);
	df(0,80,xiaozhen[1],0);
	df(0,88,xiaozhen[2],0);
	df(0,96,xiaozhen[3],0);
	df(0,104,xiaozhen[4],0);
	
	dh(2,16,7,0);			//电阻1:1.0000
	dh(2,32,8,0);
	df(2,48,1,0);
	df(2,56,17,0);
	df(2,64,xiaozhen[5],0);
	df(2,72,21,0);
	df(2,80,xiaozhen[6],0);
	df(2,88,xiaozhen[7],0);
	df(2,96,xiaozhen[8],0);
	df(2,104,xiaozhen[9],0);
	
	dh(4,16,7,0);			//电阻2:1.0000
	dh(4,32,8,0);
	df(4,48,2,0);
	df(4,56,17,0);
	df(4,64,xiaozhen[10],0);
	df(4,72,21,0);
	df(4,80,xiaozhen[11],0);
	df(4,88,xiaozhen[12],0);
	df(4,96,xiaozhen[13],0);
	df(4,104,xiaozhen[14],0);
	
	dh(6,16,7,0);			//电阻3:1.0000
	dh(6,32,8,0);
	df(6,48,3,0);
	df(6,56,17,0);
	df(6,64,xiaozhen[15],0);
	df(6,72,21,0);
	df(6,80,xiaozhen[16],0);
	df(6,88,xiaozhen[17],0);
	df(6,96,xiaozhen[18],0);
	df(6,104,xiaozhen[19],0);
	
}

void chuandi()//将电压电流误差系数传入内存
{
	AT24C64_R(xiaozhen,0,20);//电压电流误差系数已预先存入24c64的首20个字节里
	DIANLIUXIAO=xiaozhen[0]+xiaozhen[1]*0.1+xiaozhen[2]*0.01+xiaozhen[3]*0.001+xiaozhen[4]*0.0001;
	DIANZUXIAO1=xiaozhen[5]+xiaozhen[6]*0.1+xiaozhen[7]*0.01+xiaozhen[8]*0.001+xiaozhen[9]*0.0001;
	DIANZUXIAO2=xiaozhen[10]+xiaozhen[11]*0.1+xiaozhen[12]*0.01+xiaozhen[13]*0.001+xiaozhen[14]*0.0001;
	DIANZUXIAO3=xiaozhen[15]+xiaozhen[16]*0.1+xiaozhen[17]*0.01+xiaozhen[18]*0.001+xiaozhen[19]*0.0001;
}

uchar code Ymp[20]={64,80,88,96,104,64,80,88,96,104,64,80,88,96,104,64,80,88,96,104};		//调试参数设置界面列号
uchar code Xmp[20]={0,0,0,0,0,2,2,2,2,2,4,4,4,4,4,6,6,6,6,6};

//修改调试参数函数
#pragma disable
void xiao_Modify()

{
	uchar	 idata	KeyP = 0;  //该数据值 保存着要修改的 数值信息,光标起始位置在0列
	uchar  idata 	keydata = 0;
	while (1)
	{
		keydata = namekey();     //读键值
		switch ( keydata)
		{
			case 1 :     //上键,增加数字
						switch ( KeyP )//光标起始位置
						{
							case 0:   //光标在年的十位
									if ( xiaozhen[0] == 9 )       //9+1=0
											xiaozhen[0] = 0;
									else
											xiaozhen[0]++;
									df(Xmp[KeyP],Ymp[KeyP],xiaozhen[0],1);
									break;
							case 1:   //光标在年的个位
									if ( xiaozhen[1] == 9 )       //9+1=0
											xiaozhen[1] = 0;
									else
											xiaozhen[1]++;
									df(Xmp[KeyP],Ymp[KeyP],xiaozhen[1],1);
									break;
							case 2:  //光标在月的十位
									if ( xiaozhen[2] == 9 )       //9+1=0
											xiaozhen[2] = 0;
									else
											xiaozhen[2]++;
									df(Xmp[KeyP],Ymp[KeyP],xiaozhen[2],1);
									break;
							case 3:   //光标在月的个位
									if ( xiaozhen[3] == 9 )       //9+1=0
											xiaozhen[3] = 0;
									else
											xiaozhen[3]++;
									df(Xmp[KeyP],Ymp[KeyP],xiaozhen[3],1);
									break;
							case 4:    //光标在日的十位
									if ( xiaozhen[4] == 9 )       //9+1=0
											xiaozhen[4] = 0;
									else
											xiaozhen[4]++;
									df(Xmp[KeyP],Ymp[KeyP],xiaozhen[4],1);
									break;
							case 5:    //光标在日的个位
									if ( xiaozhen[5] == 9 )       //9+1=0
											xiaozhen[5] = 0;
									else
											xiaozhen[5]++;
									df(Xmp[KeyP],Ymp[KeyP],xiaozhen[5],1);
									break;
							case 6:    //光标在时的十位
									if ( xiaozhen[6] == 9 )       //9+1=0
											xiaozhen[6] = 0;
									else
											xiaozhen[6]++;
									df(Xmp[KeyP],Ymp[KeyP],xiaozhen[6],1);
									break;
							case 7:       //光标在时的个位
									if ( xiaozhen[7] == 9 )       //9+1=0
											xiaozhen[7] = 0;
									else
											xiaozhen[7]++;
									df(Xmp[KeyP],Ymp[KeyP],xiaozhen[7],1);
									break;
							case 8:     //光标在分的十位
									if ( xiaozhen[8] == 9 )       //9+1=0
											xiaozhen[8] = 0;
									else
											xiaozhen[8]++;
									df(Xmp[KeyP],Ymp[KeyP],xiaozhen[8],1);
									break;
							case 9:     //光标在分的个位
									if ( xiaozhen[9] == 9 )       //9+1=0
											xiaozhen[9] = 0;
									else
											xiaozhen[9]++;
									df(Xmp[KeyP],Ymp[KeyP],xiaozhen[9],1);
									break;		
							case 10:     //光标在分的个位
									if ( xiaozhen[10] == 9 )       //9+1=0
											xiaozhen[10] = 0;
									else
											xiaozhen[10]++;
									df(Xmp[KeyP],Ymp[KeyP],xiaozhen[10],1);
									break;
							case 11:     //光标在分的个位
									if ( xiaozhen[11] == 9 )       //9+1=0
											xiaozhen[11] = 0;
									else
											xiaozhen[11]++;
									df(Xmp[KeyP],Ymp[KeyP],xiaozhen[11],1);
									break;			
							case 12:     //光标在分的个位
									if ( xiaozhen[12] == 9 )       //9+1=0
											xiaozhen[12] = 0;
									else
											xiaozhen[12]++;
									df(Xmp[KeyP],Ymp[KeyP],xiaozhen[12],1);
									break;
							case 13:     //光标在分的个位
									if ( xiaozhen[13] == 9 )       //9+1=0
											xiaozhen[13] = 0;
									else
											xiaozhen[13]++;
									df(Xmp[KeyP],Ymp[KeyP],xiaozhen[13],1);
									break;		
							case 14:     //光标在分的个位
									if ( xiaozhen[14] == 9 )       //9+1=0
											xiaozhen[14] = 0;
									else
											xiaozhen[14]++;
									df(Xmp[KeyP],Ymp[KeyP],xiaozhen[14],1);
									break;		
							case 15:     //光标在分的个位
									if ( xiaozhen[15] == 9 )       //9+1=0
											xiaozhen[15] = 0;
									else
											xiaozhen[15]++;
									df(Xmp[KeyP],Ymp[KeyP],xiaozhen[15],1);
									break;		
							case 16:     //光标在分的个位
									if ( xiaozhen[16] == 9 )       //9+1=0
											xiaozhen[16] = 0;
									else
											xiaozhen[16]++;
									df(Xmp[KeyP],Ymp[KeyP],xiaozhen[16],1);
									break;		
							case 17:     //光标在分的个位
									if ( xiaozhen[17] == 9 )       //9+1=0
											xiaozhen[17] = 0;
									else
											xiaozhen[17]++;
									df(Xmp[KeyP],Ymp[KeyP],xiaozhen[17],1);
									break;
							case 18:     //光标在分的个位
									if ( xiaozhen[18] == 9 )       //9+1=0
											xiaozhen[18] = 0;
									else
											xiaozhen[18]++;
									df(Xmp[KeyP],Ymp[KeyP],xiaozhen[18],1);
									break;		
							case 19:     //光标在分的个位
									if ( xiaozhen[19] == 9 )       //9+1=0
											xiaozhen[19] = 0;
									else
											xiaozhen[19]++;
									df(Xmp[KeyP],Ymp[KeyP],xiaozhen[19],1);
									break;						
						}
						break;

			case 2 :    //下键,减少数字
						switch ( KeyP )
						{
							case 0:   //光标在年的十位
									if ( xiaozhen[0] == 0 )       //9+1=0
											xiaozhen[0] = 9;
									else
											xiaozhen[0]--;
									df(Xmp[KeyP],Ymp[KeyP],xiaozhen[0],1);
									break;
							case 1:   //光标在年的个位
									if ( xiaozhen[1] == 0 )       //9+1=0
											xiaozhen[1] = 9;
									else
											xiaozhen[1]--;
									df(Xmp[KeyP],Ymp[KeyP],xiaozhen[1],1);
									break;
							case 2:  //光标在月的十位
									if ( xiaozhen[2] == 0 )       //9+1=0
											xiaozhen[2] = 9;
									else
											xiaozhen[2]--;
									df(Xmp[KeyP],Ymp[KeyP],xiaozhen[2],1);
									break;
							case 3:   //光标在月的个位
									if ( xiaozhen[3] == 0 )       //9+1=0
											xiaozhen[3] = 9;
									else
											xiaozhen[3]--;
									df(Xmp[KeyP],Ymp[KeyP],xiaozhen[3],1);
									break;
							case 4:    //光标在日的十位
									if ( xiaozhen[4] == 0 )       //9+1=0
											xiaozhen[4] = 9;
									else
											xiaozhen[4]--;
									df(Xmp[KeyP],Ymp[KeyP],xiaozhen[4],1);
									break;
							case 5:    //光标在日的个位
									if ( xiaozhen[5] == 0 )       //9+1=0
											xiaozhen[5] = 9;
									else
											xiaozhen[5]--;
									df(Xmp[KeyP],Ymp[KeyP],xiaozhen[5],1);
									break;
							case 6:    //光标在时的十位
									if ( xiaozhen[6] == 0 )       //9+1=0
											xiaozhen[6] = 9;
									else
											xiaozhen[6]--;
									df(Xmp[KeyP],Ymp[KeyP],xiaozhen[6],1);
									break;
							case 7:       //光标在时的个位
									if ( xiaozhen[7] == 0 )       //9+1=0
											xiaozhen[7] = 9;
									else
											xiaozhen[7]--;
									df(Xmp[KeyP],Ymp[KeyP],xiaozhen[7],1);
									break;
							case 8:     //光标在分的十位
									if ( xiaozhen[8] == 0 )       //9+1=0
											xiaozhen[8] = 9;
									else
											xiaozhen[8]--;
									df(Xmp[KeyP],Ymp[KeyP],xiaozhen[8],1);
									break;
							case 9:     //光标在分的个位
									if ( xiaozhen[9] == 0 )       //9+1=0
											xiaozhen[9] = 9;
									else
											xiaozhen[9]--;
									df(Xmp[KeyP],Ymp[KeyP],xiaozhen[9],1);
									break;		
							case 10:     //光标在分的个位
									if ( xiaozhen[10] == 0 )       //9+1=0
											xiaozhen[10] = 9;
									else
											xiaozhen[10]--;
									df(Xmp[KeyP],Ymp[KeyP],xiaozhen[10],1);
									break;
							case 11:     //光标在分的个位
									if ( xiaozhen[11] == 0 )       //9+1=0
											xiaozhen[11] = 9;
									else
											xiaozhen[11]--;
									df(Xmp[KeyP],Ymp[KeyP],xiaozhen[11],1);
									break;			
							case 12:     //光标在分的个位
									if ( xiaozhen[12] == 0 )       //9+1=0
											xiaozhen[12] = 9;
									else
											xiaozhen[12]--;
									df(Xmp[KeyP],Ymp[KeyP],xiaozhen[12],1);
									break;
							case 13:     //光标在分的个位
									if ( xiaozhen[13] == 0 )       //9+1=0
											xiaozhen[13] = 9;
									else
											xiaozhen[13]--;
									df(Xmp[KeyP],Ymp[KeyP],xiaozhen[13],1);
									break;		
							case 14:     //光标在分的个位
									if ( xiaozhen[14] == 0 )       //9+1=0
											xiaozhen[14] = 9;
									else
											xiaozhen[14]--;
									df(Xmp[KeyP],Ymp[KeyP],xiaozhen[14],1);
									break;		
							case 15:     //光标在分的个位
									if ( xiaozhen[15] == 0 )       //9+1=0
											xiaozhen[15] = 9;
									else
											xiaozhen[15]--;
									df(Xmp[KeyP],Ymp[KeyP],xiaozhen[15],1);
									break;		
							case 16:     //光标在分的个位
									if ( xiaozhen[16] == 0 )       //9+1=0
											xiaozhen[16] = 9;
									else
											xiaozhen[16]--;
									df(Xmp[KeyP],Ymp[KeyP],xiaozhen[16],1);
									break;		
							case 17:     //光标在分的个位
									if ( xiaozhen[17] == 0 )       //9+1=0
											xiaozhen[17] = 9;
									else
											xiaozhen[17]--;
									df(Xmp[KeyP],Ymp[KeyP],xiaozhen[17],1);
									break;
							case 18:     //光标在分的个位
									if ( xiaozhen[18] == 0 )       //9+1=0
											xiaozhen[18] = 9;
									else
											xiaozhen[18]--;
									df(Xmp[KeyP],Ymp[KeyP],xiaozhen[18],1);
									break;		
							case 19:     //光标在分的个位
									if ( xiaozhen[19] == 0 )       //9+1=0
											xiaozhen[19] = 9;
									else
											xiaozhen[19]--;
									df(Xmp[KeyP],Ymp[KeyP],xiaozhen[19],1);
									break;	
						}
						break;
			case 3 :      //右移键
						if ( KeyP == 19)    //光标停留在分的个位
						{
								df(Xmp[KeyP],Ymp[KeyP],xiaozhen[KeyP],0);  //将该位数字正显
								KeyP		=	0;   //该值复0,即将光标移到首位(年之十位)
								df(Xmp[KeyP],Ymp[KeyP],xiaozhen[KeyP],1);//将首位数字反显
								break ;
						}
						else
							{
								df(Xmp[KeyP],Ymp[KeyP],xiaozhen[KeyP],0);  //将该位数字正显
							  KeyP++;
	              df(Xmp[KeyP],Ymp[KeyP],xiaozhen[KeyP],1);  //将该位数字反显
	              break;
            	}
			case  7:	AT24C64_W(xiaozhen,0,20);
							  return;	       
								
		}
		
	}

}

void design()
{
	AT24C64_R(xiaozhen,0,20);//电压电流误差系数已预先存入24c64的首20个字节里
	xianshi_xiao();//显示校正
	xiao_Modify();//进行校正
}

void main()
{
	FM=0;
	AV1=AV2=0;
	SELC=1;
	if(namekey()==4)design();//修正系数调整
	chuandi();//将电压电流误差系数传入内存
	lcd_init();
	diyiping();
	while(namekey()!=7);//测试键
	lcd_init();
	dierping();
	SELC=1;
	SELC=1;
	while(namekey()!=7);//测试键
	test();
	while(1);
}

⌨️ 快捷键说明

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