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

📄 dianzifuzai.txt

📁 电子负载程序
💻 TXT
📖 第 1 页 / 共 3 页
字号:
	PORTD|=(1<<1);
}

/**控制负载是否工作**/
void kzfz(void)
{
	if((jsq&0x01)!=1)
	{
		PORTD&=~(1<<1);
		jsq++;
		PORTG&=~(1<<2);	
		delay_ms(200);
	    PORTD|=(1<<1);
		work=1;
		//PORTA&=~(1<<2);
	}
	else
		{
		PORTD&=~(1<<1);
		jsq++;
		PORTG|=(1<<2);	
		delay_ms(200);
	    PORTD|=(1<<1);
		work=0;
		//PORTA|=(1<<2);
		WriteWord1 (Digit[4],DisBuffer[18]);
		WriteWord1 (Digit[5],DisBuffer[0]);
		WriteWord1 (Digit[6],DisBuffer[0]);
		WriteWord1 (Digit[7],DisBuffer[0]);
		OCR3AH=0x03ff;//0x000设置OC1Apwm波形占空比为100%;3ff时,波形占空比是0%
        OCR3AL=0x00;
		}
}

/**键值设定子函数**/
void jzsd(void)
{
	ling=0;
	switch(keys)
	{		
		case 7:
		{
			s[3]=sd;		
			WriteWord2 (Digit[7],DisBuffer[s[3]]);
			WriteWord2 (Digit[6],DisBuffer[28]);
			WriteWord2 (Digit[5],DisBuffer[28]);
			WriteWord2 (Digit[4],DisBuffer[28]);
        }
		break;
		case 6:
		{
			if(sd<=18)
				s[2]=s[3];
			s[3]=sd;
			WriteWord2 (Digit[7],DisBuffer[s[3]]);
			WriteWord2 (Digit[6],DisBuffer[s[2]]);
			WriteWord2 (Digit[5],DisBuffer[28]);
			WriteWord2 (Digit[4],DisBuffer[28]);			
		}
		break;
		case 5:
		{
			if(sd<=18)
			{
				s[1]=s[2];
				s[2]=s[3];
			}
			s[3]=sd;
			WriteWord2 (Digit[7],DisBuffer[s[3]]);
			WriteWord2 (Digit[6],DisBuffer[s[2]]);
			WriteWord2 (Digit[5],DisBuffer[s[1]]);
			WriteWord2 (Digit[4],DisBuffer[28]);
		}
		break;
		case 4:
		{
			if(sd<=18)
			{
				s[0]=s[1];
				s[1]=s[2];
				s[2]=s[3];
			}
			s[3]=sd;
			WriteWord2 (Digit[7],DisBuffer[s[3]]);
			WriteWord2 (Digit[6],DisBuffer[s[2]]);
			WriteWord2 (Digit[5],DisBuffer[s[1]]);
			WriteWord2 (Digit[4],DisBuffer[s[0]]);
		}
		break;
		case 3:
		{
			WriteWord2 (Digit[7],DisBuffer[29]);
			WriteWord2 (Digit[6],DisBuffer[29]);
			WriteWord2 (Digit[5],DisBuffer[29]);
			WriteWord2 (Digit[4],DisBuffer[29]);
			delay_ms(300);
			WriteWord2 (Digit[7],DisBuffer[28]);
			WriteWord2 (Digit[6],DisBuffer[28]);
			WriteWord2 (Digit[5],DisBuffer[28]);
			WriteWord2 (Digit[4],DisBuffer[28]);
			delay_ms(300);
			WriteWord2 (Digit[7],DisBuffer[29]);
			WriteWord2 (Digit[6],DisBuffer[29]);
			WriteWord2 (Digit[5],DisBuffer[29]);
			WriteWord2 (Digit[4],DisBuffer[29]);
			delay_ms(300);
			WriteWord2 (Digit[7],DisBuffer[28]);
			WriteWord2 (Digit[6],DisBuffer[28]);
			WriteWord2 (Digit[5],DisBuffer[28]);
			WriteWord2 (Digit[4],DisBuffer[28]);
			delay_ms(300);
			WriteWord2 (Digit[7],DisBuffer[29]);
			WriteWord2 (Digit[6],DisBuffer[29]);
			WriteWord2 (Digit[5],DisBuffer[29]);
			WriteWord2 (Digit[4],DisBuffer[29]);
			delay_ms(300);
			WriteWord2 (Digit[7],DisBuffer[28]);
			WriteWord2 (Digit[6],DisBuffer[28]);
			WriteWord2 (Digit[5],DisBuffer[28]);
			WriteWord2 (Digit[4],DisBuffer[28]);
			WriteWord2 (Digit[4],DisBuffer[18]);
		    WriteWord2 (Digit[5],DisBuffer[0]);
		    WriteWord2 (Digit[6],DisBuffer[0]);
		    WriteWord2 (Digit[7],DisBuffer[0]);
			keys=8;
		}
		break;
	}
	keys--;
}

/**方向键控制数值设定子函数**/
void fxj(void)
{
	uchar i,j,sx;
	for(i=0;i<=6;i++)
		{
		sx=keyscan();	
		switch(sx)
			{
			case 0x79:
				{
				i=0;
				fxjd--;
				}
			break;
			case 0x14:
				{
				i=0;
				fxjd++;
				}
			break;
			case 0x44:
				{
				i=0;
				if(fxjd==7)
					sx1++;
				if(fxjd==6)
					sx2++;
				if(fxjd==5)
					sx3++;
				if(fxjd==4)
					sx4++;
				}
			break;
			case 0x81:
				{
				i=0;
				if(fxjd==7)
					sx1--;
				if(fxjd==6)
					sx2--;
				if(fxjd==5)
					sx3--;
				if(fxjd==4)
					sx4--;
				}
			break;
			}
		if(sx1==10)
			{
			sx1=0;
			sx2++;
			}
    	if(sx2==10)
			{
			sx2=0;
			sx3++;
			}
		if(sx3==10)
	    	{
			sx3=0;
			sx4++;
			}
		if(sx1==0xff)
			{
			sx1=9;
			sx2--;
			}
		if(sx2==0xff)
			{
			sx2=9;
			sx3--;
			}
		if(sx3==0xff)
			{
			sx3=9;
			sx4--;
			}
		if(sx1==17)
			{
			sx1=27;
			sx2--;
			}
		if(sx2==17)
			{
			sx2=27;
			sx3--;
			}
		if(sx3==17)
			{
			sx3=27;
			sx4--;
			}
		if(sx1==17&sx2==0)
			{
			sx1=9;
			sx2=sx2+17;
			}
		if(sx2==17&sx3==0)
			{
			sx2=9;
			sx3=sx3+17;
			}		
		if(sx3==17&sx4==0)
			{
			sx3=9;
			sx4=sx4+17;
			}
		if(sx2==28)
			{
			sx3++;
			sx2=0;
			sx1=sx1+18;
			}
		if(sx3==28)
			{
			sx4++;
			sx3=0;
			sx2=sx2+18;
			}
    	if(sx4==28)
			{
			sx4=1;
			sx1=sx2;
			sx2=sx3;
			sx3=18;
			}
		if(sx4==10&sx3>=18)
			{
			sx4=1;
			sx1=sx2;
			sx2=18;
			sx3=sx3-18;
			}
		if(sx4==10&sx2>=18)
			{
			sx4=1;
			sx1=18;
			sx2=sx2-18;
			}
		if(sx4==17)
			{
			sx1=0,sx2=0,sx3=0,sx4=18;
			}
		if(sx4==0&sx3>=18)
			{
			sx4=sx3;
			sx3=sx2;
			sx2=sx1;
			sx1=0;
			}
		if(sx4==0&sx2>=18)
			{
			sx4=sx3;
			sx3=sx2;
			sx2=0;
			sx1=0;
			}
		if(sx4==0&sx1>=18)
			{
			sx4=sx3;
			sx3=0;
			sx2=0;
			sx1=0;
			}		
		if(fxjd>7)
			{
			fxjd=fxjd-4;
			if(fxjd==12)
			fxjd=7;
			}	
		if(fxjd<4)
		    fxjd=7;
		WriteWord2 (Digit[fxjd],DisBuffer[28]);
		delay_ms(50);
		WriteWord2 (Digit[7],DisBuffer[sx1]);
		WriteWord2 (Digit[6],DisBuffer[sx2]);
		WriteWord2 (Digit[5],DisBuffer[sx3]);
		WriteWord2 (Digit[4],DisBuffer[sx4]);
		delay_ms(50);
		}
}

/*****************************************************************************
                            ADC转换并取数
******************************************************************************/

uint GetAD(uchar channel)
{
   uchar x,y;
   uint result;
   ADCSRA=0x86; //64分频
   ADMUX=channel;
   ADCSRA|=BIT(ADSC);             //启动一次哑转换
   NOP();
   ADCSRA|=BIT(ADSC);            //启动转换
   do 
   {
	;
   }
   while((ADCSRA&0x10)==0); //等待转换完毕
   x=ADCL;                   //先读取低字节
   y=ADCH;                   //再读取高字节
   result=y;
   result=x|result<<8;       //合并
   return(result);
}
uchar deal_ad(uchar chanel)
{
	uchar ad_change;
	uint ad;
	ad=GetAD(chanel);
	ad_change=ad;
	return ad_change;
}
/*****************************************************************************

***************************************************************************/

/****************************************
实际电流、电压计算
********************************/
void sjdl(uint x)
{
	uchar l[6];
	uint y,dy; 
	static float temp=4.05;
	y=(x*temp)/1024*1000;
	l[5]=y/10000;
	l[0]=y/1000;
	dy=y%10000;
	l[4]=dy/1000;
	dy=dy%1000;
	l[3]=dy/100;
	dy=dy%100;
	l[2]=dy/10;
	dy=dy%10;
	l[1]=dy;
	if(l[4]>=3&l[5]==0)
		temp=3.99;
	if(l[4]<1&l[5]==0)
		temp=4.07;
	if(l[4]>=1&l[4]<2&l[5]==0)
		temp=4.03;
	if(l[4]>=2&l[4]<3&l[5]==0)
		temp=4.001;
	l[4]=l[4]+18;
	if(l[0]<10)
	{	
		uchar m;
		WriteWord1 (Digit[4],DisBuffer[l[4]]);
		WriteWord1 (Digit[5],DisBuffer[l[3]]);
		WriteWord1 (Digit[6],DisBuffer[l[2]]);
		WriteWord1 (Digit[7],DisBuffer[l[1]]);		
		for(m=4;m>0;m--)
		{
			sj_dl[m]=l[m];
			if(sj_dl[m]>=18)
				sj_dl[m]=sj_dl[m]-18;
		}
		sj_dlz=sj_dl[4]*1000+sj_dl[3]*100+sj_dl[2]*10+sj_dl[1];
	}
	if(l[0]>=10)
	{
		uchar m;
		WriteWord1 (Digit[4],DisBuffer[l[5]]);
		WriteWord1 (Digit[5],DisBuffer[l[4]]);
		WriteWord1 (Digit[6],DisBuffer[l[3]]);
		WriteWord1 (Digit[7],DisBuffer[l[2]]);
		for(m=5;m>1;m--)
		{
			sj_dl[m]=l[m];
			if(sj_dl[m]>=18)
				sj_dl[m]=sj_dl[m]-18;
		}
		sj_dlz=sj_dl[5]*10000+sj_dl[4]*1000+sj_dl[3]*100+sj_dl[2]*10;
	}
}

void sjdy(uint x)
{
	uchar l[6];
	uint y,dy;
	static uint temp=1180;
	y=(x*4.1)/1024*temp;
	//y=x*5.846;
	l[5]=y/10000;
	l[0]=y/1000;
	dy=y%10000;
	l[4]=dy/1000;
	dy=dy%1000;
	l[3]=dy/100;
	dy=dy%100;
	l[2]=dy/10;
	dy=dy%10;
	l[1]=dy;
	if(l[4]>=6)
		temp=1170;
    else
		temp=1190;
	l[4]=l[4]+18;
	if(l[0]<10)
	{	
		uchar m;
		WriteWord (Digit[4],DisBuffer[l[4]]);
		WriteWord (Digit[5],DisBuffer[l[3]]);
		WriteWord (Digit[6],DisBuffer[l[2]]);
		WriteWord (Digit[7],DisBuffer[l[1]]);		
		for(m=4;m>0;m--)
		{
			sj_dy[m]=l[m];
			if(sj_dy[m]>=18)
				sj_dy[m]=sj_dy[m]-18;
		}
		sj_dyz=sj_dy[4]*1000+sj_dy[3]*100+sj_dy[2]*10+sj_dy[1];
	}
	if(l[0]>=10)
	{
		uchar m;
		WriteWord (Digit[4],DisBuffer[l[5]]);
		WriteWord (Digit[5],DisBuffer[l[4]]);
		WriteWord (Digit[6],DisBuffer[l[3]]);
		WriteWord (Digit[7],DisBuffer[l[2]]);		
		for(m=5;m>1;m--)
		{
			sj_dy[m]=l[m];
			if(sj_dy[m]>=18)
				sj_dy[m]=sj_dy[m]-18;
		}
		sj_dyz=sj_dy[5]*10000+sj_dy[4]*1000+sj_dy[3]*100+sj_dy[2]*10;
	}
}

/*****************************/


/*************************************************************
恒压恒阻比较程序
*************************************************************/
uchar hl()
{
	if(enactment>(sj_dlz/10))
	{
		chazhi=enactment-(sj_dlz/10);
		return(1);
	}
	else if(enactment<(sj_dlz/10))
		{
		chazhi=(sj_dlz/10)-enactment;
		return(2);
		}
	else
		return(3);	 
}
uchar hz()
{
	float dy,dl;
	dy=sj_dyz,dl=sj_dlz;
	sj_dzz=dy/dl*100;	
	uart0_tx(0x31);
	uart0_tx(0x31);
	uart0_tx(0x32);
	uart0_tx(0x32);
	uart0_tx(0x03);
    sj_dzz_fs=sj_dzz;

⌨️ 快捷键说明

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