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

📄 main.c

📁 基于8051F实现导纳分析仪,键盘,液晶,功能都全有,其中包含测频,测相,测高电平,测低电平,测幅.等多种算法思想.用C语言实现.绝对原创!
💻 C
字号:
/*===============================================================*/
/*函数名称: main.c                                              */
/*函数功能: 主函数                                              */ 
/*入口参数: P2----------------------------------------液晶数据传输
             P3------------------------------------------液晶控制脚
			 P5--------------------------------------------键盘控制
			 P5.0------------------------------------------显示电流                         
			 P5.1------------------------------------------显示电压
			 P5.2----------------------------------------显示导纳模
			 P5.3------------------------------------------显示电流						  
			 P5.3------------------------------------------显示电压
			 P5.3----------------------------------------显示导纳模
									                             */       
/*有无返回: 有                                                  */
/*修改记录: 无修改记录                                          */
/*编写作者: t483-4-19chenyong                                   */
/*编写日期: 2007-4-06                                           */
/*===============================================================*/
#include  "common.h"
#include  "TS12864A.h"
#include  "PCA.h"
#include  "ad9851.h"
#include  "delay.h"

float Current,Voltage;                //真实测量电压,电流值和导纳模
float Y_Real, Y_Image;
float Y_Abs,  Y_Phase;
unsigned char keY_Abscode;
unsigned long Pulse_Number;           //所测量的脉冲个数 
unsigned long  FrequencyLong_HZ;            
float theta;
float reactive_power;
float average_power; 

void main(void)
{
	Port_Initial();
	Initial_AD9851();			      
	liangcheng_initial();			  //range intial
    EA=1;  
	PCA_Initial();
	PCA0_Initial(); 
	LCD_Init();		                  //LCD intial
	CleanScreen();
	


	while(1)
 	{

	    keY_Abscode=keyscan();		
		switch(keY_Abscode)
		{
		    case 1:      Port_Initial();
						 LCD_Init();		             //液晶初始化 
	                     CleanScreen();						
						 EA=1; 
						 show_Current();               /*显示 电流 A*/     	   
	                     Current=(float)data_process(0);//采样电流 /*AIN0.0中固定采电流值*/
						 Show_FloatData(Current,3,3);   //显示电流值
						 delay_nms(500);
						 EA=0;						 
						 break;

 		    case 2:      Port_Initial();
						 LCD_Init();		           //液晶初始化 
	                     CleanScreen();
						 EA=1; 
						 show_Voltage();	  /*显示 电压 V*/
	                     Voltage=(float)data_process(2);//采样电压 /*2*/
          				 Show_FloatData(Voltage,3,3);   //显示电压
						 delay_nms(500);
						 EA=0; 
						 break;

 		    case 3:      Port_Initial();
						 LCD_Init();		            //液晶初始化 
	                     CleanScreen();
						 EA=1;    
						 show_Y_Abs();			        //显示 导纳模 S    
	                     Current=(float)data_process(0);//采样电流
	                     Voltage=(float)data_process(2);//采样电压
          				 Y_Abs=(float)Current/Voltage;  //计算导纳模		
						 Show_FloatData(Y_Abs,3,3);     //显示导纳模
						 delay_nms(500);
						 EA=0; 
						 break;

 		    case 4:      Port_Initial();
      	                 PCA_Initial();		    	/*捕捉*/
	                     PCA0_Initial();	   
 						 LCD_Init();		           //液晶初始化 
	                     CleanScreen();
						 EA=1;
						 Pulse_Number=PCA_Capture();   //获取高电平脉冲值 
						 show_real();				   //实部
			             Compute_REALandIMAGE();       //计算相位,实部,虚部 
						 Show_FloatData(Y_Real,3,3);   //显示实部
						 delay_nms(500);			 
						 EA=0;
						 break;

 		    case 5:      Port_Initial();
      	                 PCA_Initial();
	                     PCA0_Initial();
						 LCD_Init();		           //液晶初始化 
	                     CleanScreen();
						 EA=1;
						 Pulse_Number=PCA_Capture();   //获取高电平脉冲值 
						 show_image();
			             Compute_REALandIMAGE();       //计算相位,实部,虚部 
						 Show_FloatData(Y_Image,3,3);  //显示虚部
						 delay_nms(500);			 
						 EA=0;
						 break;

 		    case 6:      Port_Initial();
      	                 PCA_Initial();
	                     PCA0_Initial();
						 LCD_Init();		           //液晶初始化 
	                     CleanScreen();
						 EA=1;
						 Pulse_Number=PCA_Capture();   //获取高电平脉冲值 
						 show_phase();
			             Compute_REALandIMAGE();       //计算相位,实部,虚部 
						 Show_FloatData(Y_Phase,3,3);  //显示导纳角	
						 delay_nms(500);			 
						 EA=0;
						 break;

 		    case 7:      Port_Initial();
      	                 PCA_Initial();
	                     PCA0_Initial();
						 LCD_Init();		           //液晶初始化 
	                     CleanScreen();
						 EA=1;
						 Pulse_Number=PCA_Capture();   //获取高电平脉冲值 
						 show_value();
			             Compute_REALandIMAGE();       //计算相位,实部,虚部 
						 Show_FloatData(Y_Real,1,3);   //显示实部 
						 Show_FloatData(Y_Image,3,3);  //显示虚部
						 Show_FloatData(Y_Phase,5,3);  //显示导纳角	
						 delay_nms(500);			 
						 EA=0;
						 break;

 		    case 8:      Port_Initial();
      	                 PCA_Initial();
	                     PCA0_Initial();
						 LCD_Init();		                 //液晶初始化 
	                     CleanScreen();
						 EA=1;
						 Pulse_Number=PCA_Capture();         //获取高电平脉冲值
				    	 show_power();
	                     Current=(float)data_process(0);     //采样电流
	                     Voltage=(float)data_process(2);     //采样电压
          				 Compute_Power();
						 Show_FloatData(average_power,1,3);  //计算有功功率
						 Show_FloatData(reactive_power,3,3); //计算无功功率
						 Show_FloatData(theta,5,3);	         //计算功率因素	
						 delay_nms(500);				 
						 EA=0;
						 break;
		   case 9:       Port_Initial();
						 LCD_Init();		                 //液晶初始化 
	                     CleanScreen();
		                 show_window();
						 delay_nms(100);
		    default:     break;
		}

	}
}



⌨️ 快捷键说明

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