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

📄 compute_reandim.lst

📁 基于8051F实现导纳分析仪,键盘,液晶,功能都全有,其中包含测频,测相,测高电平,测低电平,测幅.等多种算法思想.用C语言实现.绝对原创!
💻 LST
字号:
C51 COMPILER V8.02   COMPUTE_REANDIM                                                       04/04/2008 19:55:15 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE COMPUTE_REANDIM
OBJECT MODULE PLACED IN Compute_REandIM.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Compute_REandIM.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*===============================================================*/
   2          /*函数名称: Compute_REandIM.c                                   */
   3          /*函数功能: 计算相位,实部,虚部                                */
   4          /*参数说明: Angle_Frequncy----------------------------2*3.14156926 
   5                                   Y_Real----------------------------------网络函数的实部
   6                                   Y_Image---------------------------------网络函数的虚部
   7                                   t-------------------------------------高电平对应的时间
   8                                   Y_Phase---------------------------------电压电流相位差
   9                                   error_duty----------------------------------占空比误差
  10                                   FrequencyLong_HZ-------------------------DDS发出的频率
  11                                   Pulse_Number--------------------- 高电平对应的脉冲个数
  12                                                                           */
  13          /*修改记录: 无修改记录                                          */
  14          /*编写作者: t483-4-19chenyong                                   */
  15          /*编写日期: 2007-4-14                                           */
  16          /*===============================================================*/
  17          #include"common.h"
  18          #include"ad9851.h"
  19          #include<math.h>
  20          
  21          
  22          //#define  Frequncy      9015        //由DDS发出,在这里常数
  23          #define  Command_Time    0.48             //1/25MHz(系统时钟为25MHz)
  24          extern float Y_Real, Y_Image;
  25          extern float Y_Abs,  Y_Phase;
  26          extern float Current,Voltage;
  27          extern unsigned long Pulse_Number;    //所测量的脉冲个数   
  28          //unsigned long  Frequncy;
  29          extern unsigned long FrequencyLong_HZ; 
  30          void  Compute_REALandIMAGE()
  31          {
  32   1      
  33   1            float Angle_Frequncy=0.0;  
  34   1                float t=0.0,error_duty=0.0; 
  35   1      
  36   1                                
  37   1      //        Frequncy=ad9851(); 
  38   1            ad9851();
  39   1      //        FrequencyLong_HZ = FrequencyLong_HZ*5.99;
  40   1            Angle_Frequncy = 2*3.1415926;
  41   1                Pulse_Number = Pulse_Number*1.06358;
  42   1                Pulse_Number = Pulse_Number-6.35466;            //直线拟和后的值
  43   1      
  44   1                t = (float)0.48*Pulse_Number;               //计算相位
  45   1                t = (float)t/100;
  46   1                t = (float)t*FrequencyLong_HZ;
  47   1                t = (float)t/10;
  48   1      
  49   1      
  50   1                Y_Phase = (float)t*Angle_Frequncy;
  51   1                Y_Phase = (float)Y_Phase/1000;              //单位变成秒 
  52   1                error_duty = Y_Phase*0.12292701;
  53   1                error_duty = error_duty-0.030691098;            //误差直线拟和后的参数值
  54   1      //        Y_Phase = Y_Phase+0.092048856;              //静态误差为0.403832733
  55   1                Y_Phase = Y_Phase-error_duty;
C51 COMPILER V8.02   COMPUTE_REANDIM                                                       04/04/2008 19:55:15 PAGE 2   

  56   1                Y_Phase = (float)Y_Phase;
  57   1      
  58   1                if(Y_Phase<=3.1415926) 
  59   1                {
  60   2                            
  61   2                      Current = (float)data_process(0);           //采样电流
  62   2                      Voltage = (float)data_process(2);           //采样电压
  63   2                  Y_Abs  =  (float)Current/Voltage;           //计算导纳模
  64   2      
  65   2                  Y_Real  = (float)fabs(Y_Abs*cos(Y_Phase));  //计算实部 
  66   2                  Y_Image = (float)fabs(Y_Abs*sin(Y_Phase));  //计算虚部 
  67   2                      Y_Phase = Y_Phase*180;                      //化成弧度
  68   2                      Y_Phase = Y_Phase/3.1415926;    
  69   2                           
  70   2                }
  71   1                else
  72   1                {
  73   2                
  74   2                          Y_Phase=6.283185-Y_Phase;  
  75   2                      Current = (float)data_process(0);           //采样电流
  76   2                      Voltage = (float)data_process(2);           //采样电压
  77   2                  Y_Abs  =  (float)Current/Voltage;           //计算导纳模
  78   2      
  79   2                  Y_Real  = (float)fabs(Y_Abs*cos(Y_Phase));  //计算实部 
  80   2                  Y_Image = (float)fabs(Y_Abs*sin(Y_Phase));  //计算虚部 
  81   2                      Y_Phase = Y_Phase*180;                      //化成弧度
  82   2                      Y_Phase = Y_Phase/3.1415926;      
  83   2                
  84   2                }
  85   1      //        Show_FloatData(FrequencyLong_HZ,5,3);  
  86   1            
  87   1      
  88   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    525    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      12
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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