📄 main.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 + -