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

📄 glclxs.c

📁 这是一个功率计重视用的模数转换程序
💻 C
字号:
#include "yamei.h"

void discharge()   //初始上电后的放电过程
{
	uchar m = 0;
	uint i;
	num = 0;
	for(i = 0; i < 64; i ++)
	{
		num += max1282();
	}
	do
		{
			disp_power();
			m ++;
			if(m > 50)
			{
				disp_power();
				adnum = 0;
			}
		}
	while(adnum != 0);
}

void Zero()     //调零子程序
{
	uchar m = 110, n;
	switch_probe = 1;   //关掉探头
	bottom = 0;
	do{
		n = 4;
		while(n --)
		{
			{
                     	disp_diode(0x04);      //点亮调0指示灯
				disp_led(0x00, LED_Data[10]);
				Dlms(3);
				disp_led(0x01, LED_Data[10]);
				Dlms(3);
				disp_led(0x02, LED_Data[10]);
				Dlms(3);
				disp_led(0x03, LED_Data[10]);
				Dlms(3);
				if(unit == 1)
				{
					disp_diode(0x20);   //点亮mW指示灯
				}
				else if((unit == 2))
				{
					disp_diode(0x10);  //点亮的W指示灯
				}
				else
				{
					disp_diode(0x08);     //点亮KW指示灯
				}
			}
		}
			da08(m);
			Dlms(500);
			adnum = max1282();
			m = m + 2;
			if(m == 0) 	//?????????? 128?????????
			{
				bottom = adnum;
				adnum = 0;
			}
	}while(adnum > 1);
	bottom = adnum;
	switch_probe = 0;
}

void TableRead()  //表格读取子程序
{
	uchar i, adhigh, adlow;
	frequency = (uint)(Read24LC16P(0xa0, 0xfc)) * 256 + (uint)(Read24LC16P(0xa0, 0xfd));
	if((frequency > 85)&&(frequency <= 90))  pinduan = 0;
	else if((frequency > 90)&&(frequency <= 95))  pinduan = 1;
	else if((frequency > 95)&&(frequency <= 100))   pinduan = 2;
	else if((frequency > 100)&&(frequency <= 105))  pinduan = 3;
	else if((frequency > 105)&&(frequency <= 110))  pinduan = 4;
	else if((frequency > 110)&&(frequency <= 115))  pinduan = 5;
	else if((frequency > 115)&&(frequency <= 120))  pinduan = 6;
	else if((frequency > 120)&&(frequency <= 125))  pinduan = 7;
	else if((frequency > 125)&&(frequency <= 130))  pinduan = 8;
	if(pinduan < 5)    //存放于BLOCK 0
	{
		for(i = 0; i < 22; i ++)
		{
			adhigh = Read24LC16P(0xa0, (pinduan*44 + i*2));
			adlow = Read24LC16P(0xa0, (pinduan*44 + i*2 + 1));
			Volt[i] = (uint)(adhigh) * 256 + (uint)(adlow);
		}
	}
	else  //存放于 BLOCK 1
	{
		for(i = 0; i < 22; i ++)
		{
			adhigh = Read24LC16P(0xa2, ((pinduan - 5)*44 + i*2));
			adlow = Read24LC16P(0xa2, ((pinduan - 5)*44 + i*2 + 1));
			Volt[i] = (uint)(adhigh) * 256 + (uint)(adlow);
		}
	}
  	attenuation = (uint)(Read24LC16P(0xa0, 0xfe)) * 256 + (uint)(Read24LC16P(0xa0, 0xff));
	if(!((attenuation == 0) ||((attenuation >= 2800)&&(attenuation <= 3200)) ||((attenuation >= 4800)&&(attenuation <= 5200))))
	{
		disp_err();
	}
	if(attenuation == 0) unit = 1;
	else if((attenuation >= 2800)&&(attenuation <= 3200))  unit = 2;
	else unit = 4;
}

void KeyRead()    //按键读取子程序
{
	uchar i, m, n, adhigh, adlow;
	uchar qianwei, baiwei, shiwei, gewei;
	key_ctrl = 1;
	P0 = 0xff;
	setup = 0;
	if(!key_ctrl)
	{
		Dlus(100);
		if(!key_ctrl)
             	{
			setup = 1;
			zero = 0;
			if(!key_ctrl)
			{
				Dlms(10);
				if(!key_ctrl)
				{
					for(m = 0; m < 200; m ++)
      					{
						disp_led(0x00, LED_Data[10]);
						Dlms(4);
						disp_led(0x01, 0);
						Dlms(4);
						disp_led(0x02, 0);
						Dlms(4);
						disp_led(0x03, 0);
						Dlms(4);
						disp_diode(0x20/unit);
					}
					if(!key_ctrl)
					{
             					for(m = 0; m < 200; m ++)
      	    					{
							disp_led(0x00, LED_Data[10]);
							Dlms(4);
							disp_led(0x01, LED_Data[10]);
							Dlms(4);
							disp_led(0x02, 0);
							Dlms(4);
							disp_led(0x03, 0);
							Dlms(4);
							disp_diode(0x20/unit);
						}
			       		if(!key_ctrl)
						{
            						for(m = 0; m < 200; m ++)
      	    						{
								disp_led(0x00, LED_Data[10]);
								Dlms(4);
								disp_led(0x01, LED_Data[10]);
								Dlms(4);
								disp_led(0x02, LED_Data[10]);
								Dlms(4);
								disp_led(0x03, 0);
								Dlms(4);
								disp_diode(0x20/unit);
							}
							if(!key_ctrl)
							{
             							for(m = 0; m < 200; m ++)
      	    							{
									disp_led(0x00, LED_Data[10]);
									Dlms(4);
									disp_led(0x01, LED_Data[10]);
									Dlms(4);
									disp_led(0x02, LED_Data[10]);
									Dlms(4);
									disp_led(0x03, LED_Data[10]);
									Dlms(4);
									disp_diode(0x20/unit);
           							}
							}
					              qianwei = (uchar)(attenuation/1000);
							baiwei = (uchar)((attenuation%1000)/100);
							shiwei = (uchar)(((attenuation%1000)%100)/10);
							gewei = (uchar)(((attenuation%1000)%100)%10);
							while(!key_ctrl)   //等待按键释放
							{
								for(m = 0; m < 200; m ++)
				      	    			{
				      	    				disp_diode(0x01);
									if(m < 100) disp_led(0x00, LED_Data[qianwei]);
									else disp_led(0x00, 0);
									Dlms(5);
									disp_led(0x01, (LED_Data[baiwei] |0x80));
									Dlms(5);
									disp_led(0x02, LED_Data[shiwei]);
									Dlms(5);
									disp_led(0x03, LED_Data[gewei]);
									Dlms(5);
									disp_diode(0x20/unit);
								}
							}
							zero = 1;
							setup = 0;
							while(!key_ctrl)   //等待按键释放
							{
								for(m = 0; m < 200; m ++)
				      	    			{
				      	    				disp_diode(0x01);
									if(m < 100) disp_led(0x00, LED_Data[qianwei]);
									else disp_led(0x00, 0);
									Dlms(5);
									disp_led(0x01, (LED_Data[baiwei] |0x80));
									Dlms(5);
									disp_led(0x02, LED_Data[shiwei]);
									Dlms(5);
									disp_led(0x03, LED_Data[gewei]);
									Dlms(5);
									disp_diode(0x20/unit);
								}
							}
							n = 0;    //闪烁的位置
							while(key_ctrl)  //如果设置键未按下
							{
								setup = 1;
								for(m = 0; m < 200; m ++)
				      	    			{
									if(n == 0)
									{
										disp_diode(0x01);
										if(m < 100) disp_led(0x00, LED_Data[qianwei]);
										else disp_led(0x00, 0);
										Dlms(5);
										disp_led(0x01, (LED_Data[baiwei] |0x80));
										Dlms(5);
										disp_led(0x02, LED_Data[shiwei]);
										Dlms(5);
										disp_led(0x03, LED_Data[gewei]);
										Dlms(5);
										disp_diode(0x20/unit);
									}
									else if(n == 1)
									{
										disp_diode(0x01);
										disp_led(0x00, LED_Data[qianwei]);
										Dlms(5);
										if(m < 100) disp_led(0x01, (LED_Data[baiwei] |0x80));
										else disp_led(0x01, 0);
										Dlms(5);
										disp_led(0x02, LED_Data[shiwei]);
										Dlms(5);
										disp_led(0x03, LED_Data[gewei]);
										Dlms(5);
										disp_diode(0x20/unit);
									}
									else if(n == 2)
									{
										disp_diode(0x01);
										disp_led(0x00, LED_Data[qianwei]);
										Dlms(5);
										disp_led(0x01, (LED_Data[baiwei] |0x80));
										Dlms(5);
										if(m < 100) disp_led(0x02, LED_Data[shiwei]);
										else disp_led(0x02, 0);
										Dlms(5);
										disp_led(0x03, LED_Data[gewei]);
										Dlms(5);
										disp_diode(0x20/unit);
									}
									else
									{
										disp_diode(0x01);
										disp_led(0x00, LED_Data[qianwei]);
										Dlms(5);
										disp_led(0x01, (LED_Data[baiwei] |0x80));
										Dlms(5);
										disp_led(0x02, LED_Data[shiwei]);
										Dlms(5);
										if(m < 100) disp_led(0x03, LED_Data[gewei]);
										else disp_led(0x03, 0);
										Dlms(5);
										disp_diode(0x20/unit);
									}
								}
								P0 = 0xff;
								zero = 0;
								if(!key_ctrl)
								{
									n = (n + 1)%4;
								}
								zero = 1;
								add = 0;
								if(!key_ctrl)
								{
									if(n == 0)  qianwei = (qianwei + 1)%10;
									else if(n == 1)  baiwei = (baiwei + 1)%10;
									else if(n == 2)  shiwei = (shiwei + 1)%10;
									else gewei = (gewei + 1)%10;
								}
								add = 1;
								sub = 0;
								if(!key_ctrl)
								{
									if(n == 0) qianwei = (qianwei + 9)%10;
									else if(n == 1)  baiwei = (baiwei + 9)%10;
									else if(n == 2)  shiwei = (shiwei+ 9)%10;
									else gewei = (gewei + 9)%10;
								}
								sub = 1;
								setup = 0;
							}
							attenuation = (uint)(qianwei)*1000 + (uint)(baiwei)*100 + (uint)(shiwei)*10 + (uint)(gewei);
							if(attenuation == 0) unit = 1;
							else if((attenuation >= 2800)&&(attenuation <= 3200))  unit = 2;
							else if((attenuation >= 4800)&&(attenuation <= 5200))  unit = 4;
							if((unit == 1)||(unit == 2)||(unit == 4))
							{
								Write24LC16P(0xa0, 0xfe, (uchar)(attenuation/256));
								Write24LC16P(0xa0, 0xff, (uchar)(attenuation%256));
							}
							baiwei = (uchar)((frequency%1000)/100);
							shiwei = (uchar)(((frequency%1000)%100)/10);
							gewei = (uchar)(((frequency%1000)%100)%10);
							while(!key_ctrl)   //等待按键释放
							{
								setup = 1;
								for(m = 0; m < 200; m ++)
				              	    	{
									disp_diode(0x02);
									if(m < 100) disp_led(0x01, (LED_Data[baiwei] |0x80));
									else disp_led(0x01, 0);
									Dlms(5);
									disp_led(0x02, LED_Data[shiwei]);
									Dlms(5);
									disp_led(0x03, LED_Data[gewei]);
									Dlms(5);
									disp_diode(0x20/unit);
								}
							}
							n = 0;    //闪烁的位置
							while(key_ctrl)   //频率设置
							//如果设置键未按下
							{
								setup = 1;
								for(m = 0; m < 200; m ++)
				              		        {
									if(n == 0)
									{
										disp_diode(0x02);
										if(m < 100) disp_led(0x01, (LED_Data[baiwei] |0x80));
										else disp_led(0x01, 0);
										Dlms(5);
										disp_led(0x02, LED_Data[shiwei]);
										Dlms(5);
										disp_led(0x03, LED_Data[gewei]);
										Dlms(5);
										disp_diode(0x20/unit);
									}
									else if(n == 1)
									{
										disp_diode(0x02);
										disp_led(0x01, (LED_Data[baiwei] |0x80));
										Dlms(5);
										if(m < 100) disp_led(0x02, LED_Data[shiwei]);
										else disp_led(0x02, 0);
										Dlms(5);
										disp_led(0x03, LED_Data[gewei]);
										Dlms(5);
										disp_diode(0x20/unit);
									}
									else
									{
										disp_diode(0x02);
										disp_led(0x01, (LED_Data[baiwei] |0x80));
										Dlms(5);
										disp_led(0x02, LED_Data[shiwei]);
										Dlms(5);
										if(m < 100) disp_led(0x03, LED_Data[gewei]);
										else disp_led(0x03, 0);
										Dlms(5);
										disp_diode(0x20/unit);
									}
								}
								P0 = 0xff;
								zero = 0;
								if(!key_ctrl)
								{
									n = (n + 1)%3;
								}
								zero = 1;
								add = 0;
								if(!key_ctrl)
								{
									if(n == 0)  baiwei = (baiwei + 1)%10;
									else if(n == 1)  shiwei = (shiwei + 1)%10;
									else gewei = (gewei + 1)%10;
								}
								add = 1;
								sub = 0;
								if(!key_ctrl)
								{
									if(n == 0)  baiwei = (baiwei + 9)%10;
									else if(n == 1)  shiwei = (shiwei+ 9)%10;
									else gewei = (gewei + 9)%10;
								}
								sub = 1;
								setup = 0;
							}
							frequency = (uint)(baiwei)*100 + (uint)(shiwei)*10 + (uint)(gewei);
							if((frequency > 85)&&(frequency <= 90))  pinduan = 0;
							else if((frequency > 90)&&(frequency <= 95))  pinduan = 1;
							else if((frequency > 95)&&(frequency <= 100))   pinduan = 2;
							else if((frequency > 100)&&(frequency <= 105))  pinduan = 3;
							else if((frequency > 105)&&(frequency <= 110))  pinduan = 4;
							else if((frequency > 110)&&(frequency <= 115))  pinduan = 5;
							else if((frequency > 115)&&(frequency <= 120))  pinduan = 6;
							else if((frequency > 120)&&(frequency <= 125))  pinduan = 7;
							else if((frequency > 125)&&(frequency <= 130))  pinduan = 8;
							if((frequency > 85)&&(frequency <= 130))
							{
								Write24LC16P(0xa0, 0xfc, (uchar)(frequency/256));
								Write24LC16P(0xa0, 0xfd, (uchar)(frequency%256));
							}
							if(pinduan < 5)    //存放于BLOCK 0
							{
								for(i = 0; i < 22; i ++)
								{
									adhigh = Read24LC16P(0xa0, (pinduan*44 + i*2));
									adlow = Read24LC16P(0xa0, (pinduan*44 + i*2 + 1));
									Volt[i] = (uint)(adhigh) * 256 + (uint)(adlow);
								}
							}
							else  //存放于 BLOCK 1
							{
								for(i = 0; i < 22; i ++)
								{
									adhigh = Read24LC16P(0xa2, ((pinduan - 5)*44 + i*2));
									adlow = Read24LC16P(0xa2, ((pinduan - 5)*44 + i*2 + 1));
									Volt[i] = (uint)(adhigh) * 256 + (uint)(adlow);
								}
							}
				              }
					}
				}
			}
		}
	}
	setup = 1;
	zero = 0;
	if(!key_ctrl)
	{
		Dlms(10);
		if(!key_ctrl)   Zero();
	}
	zero = 1;
        return;
}

⌨️ 快捷键说明

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