functions.c

来自「本人是刚刚毕业的学生」· C语言 代码 · 共 513 行 · 第 1/2 页

C
513 行
字号
#include "config.h"
#include "math.h"
#include "ZIMO.h"
extern INT16U ADData0[PointNumber];
extern INT16U ADData1[PointNumber];
extern float Max;
extern float Min;
extern int32 BaseLine0;
extern uint32 frequence;
float a = 0;
extern uint32 Auto_Flag;
extern uint32 DATA0[4];
extern uint32 ThisSignalTypeFlag;
extern char CHAR[8];

void MaxMinOfArray(uint16 *Array,uint32 n)
{ uint32 i =0;
    Max = *Array;
    Min = *Array;
    for (i = 1; i < n; i++)
    { if (Max <= (*(Array + i)))
        { Max = (*(Array + i));
        }
        else if(Min >= (*(Array + i)))
        { Min = (*(Array + i));
        }
}
}
uint32 FengFengZhi(uint16 *ShuZu,uint32 n)     
{   uint32 fengfengzhi = 0;
    if (ThisSignalTypeFlag == DC_Wave)
    { fengfengzhi = Max * 3300 / 1024;
    }
    else
    { fengfengzhi = (Max - Min) * 3300 / 1024;
    }
return fengfengzhi;               //Max为峰峰值,单位为mV
}
uint32 YouXiaoZhi(uint16 *ShuZu, uint32 n, uint32 baseline0)       //计算有效值,ShuZu为被计算数组首地址,n为数组大小
{ uint32 i;
   float YouXiaoZhi;
    for(i = 0; i < n; i++)
   { YouXiaoZhi += (*(ShuZu + i) - baseline0) * (*(ShuZu + i) - baseline0);
   }
  YouXiaoZhi = sqrt(YouXiaoZhi / n);
  YouXiaoZhi = YouXiaoZhi * 3300 / 1024;     //YouXiaoZhi为有效值,单位为mV
   return YouXiaoZhi;
}
uint32 ConvBCD(uint32 num)               //把num转换成BCD码,num为被转换数据,num默认为最多四位有效数字
{ DATA0[0] = num/1000;				  //取千位	
    DATA0[1] = num%1000/100;			  //取百位
    DATA0[2] = num%100/10;			  //取十位
    DATA0[3] = num%10/1;				//取个位
     return 0;	
}
uint32 CountZero(uint32 *ShuZu,uint32 n)   
{ uint32 i,k=0;
    for(i=0;i<n;i++)
    {if(*(ShuZu+i)!=0)
          break;
       else
          k++;
    }
     return k;
}
void  ChangeBlockColour(uint32 Left_Up_X,uint32 Left_Up_Y,uint32 Right_Low_X,uint32 Right_Low_Y,TCOLOR Colour)
{  uint32 i, j;
     for (j = Left_Up_Y; j <= Right_Low_Y; j++)
     {for (i = Left_Up_X; i <= Right_Low_X; i++)
         { GUI_Point(i ,j, Colour);
         }
     }
}
void Timer1CAPIint(void)
{T1IR=0xffffffff;
     T1MCR=0x00;
     T1CCR=0x05;             /* P0.10引脚选择CAP1.0,上升沿捕获 */
     T1TCR=0x02;
     T1TCR=0x01;
}
void Timer1MATInit(uint32 data)
{    T1TC = 0;
     T1PR = 0;
     T1MR0 = data;
     T1CCR = 0x00;
     T1IR = 0xffffffff;
     T1MCR = 0x03;
     T1TCR=0x02; 
}
void EINTInit(void)
{ PINSEL1 = PINSEL1 & (~(0x03 << 8)) | (0x03 << 8);        //P0.20引脚设置为外部中断3
     EXTWAKE = 0;
     EXTINT = 0x0F ;                             //清除中断标志
     EXTMODE = 0x0F;
     EXTPOLAR = 0x0F;
}
void ConvertToASCII(double a,uint32 j)
 {uint32 num;
if (j != 4)
	{ switch (j)
	   { 	 case 0:
	   	       if ((a>=0)&&(a<10))
	            {   num = (uint32)(a*1000);
	   	            CHAR[0] = (char)(num/1000 + 48);				
	                CHAR[1] = '.';	
                    CHAR[2] = (char)(num%1000/100 + 48);			
                    CHAR[3] = (char)(num%100/10 + 48);			
                    CHAR[4] = (char)(num%10/1 + 48);				
                    CHAR[5] = 'H';
                    CHAR[6] = 'z';
                    CHAR[7] = ' ';
	            }
	            else if ((a>=10)&&(a<100))
	            {   num = (uint32)(a*100);
	   	            CHAR[0] = (char)(num/1000 + 48);					
                    CHAR[1] = (char)(num%1000/100 + 48);			
                    CHAR[2] = '.';
                    CHAR[3] = (char)(num%100/10 + 48);			
                    CHAR[4] = (char)(num%10/1 + 48);				
                    CHAR[5] = 'H';
                    CHAR[6] = 'z';
                    CHAR[7] = ' ';
	            }
	             else if ((a>=100)&&(a<1000))
	            {   num = (uint32)(a*10);
	   	            CHAR[0] = (char)(num/1000 + 48);				
                    CHAR[1] = (char)(num%1000/100 + 48);			
                    CHAR[2] = (char)(num%100/10 + 48);			
                    CHAR[3] = '.';	
                    CHAR[4] = (char)(num%10/1 + 48);				
                    CHAR[5] = 'H';
                    CHAR[6] = 'z';
                    CHAR[7] = ' ';
	            }
	            else if ((a>=1000)&&(a<10000))
	            {   num = (uint32)(a*1);
	   	            CHAR[0] = (char)(num/1000 + 48);				
	                CHAR[1] = '.';	
                    CHAR[2] = (char)(num%1000/100 + 48);			
                    CHAR[3] = (char)(num%100/10 + 48);			
                    CHAR[4] = (char)(num%10/1 + 48);				
              		CHAR[5] = 'K';
           			CHAR[6] = 'H';
           			CHAR[7] = 'z';
	   			}
	   			else if ((a>=10000)&&(a<100000))
	   			{num = (uint32)(a*1);
	   	            CHAR[0] = (char)(num/10000 + 48);				
           			CHAR[1] = (char)(num%10000/1000 + 48);			
           			CHAR[2] = '.';	
           			CHAR[3] = (char)(num%1000/100 + 48);			
           			CHAR[4] = (char)(num%100/10 + 48);				
           			CHAR[5] = 'K';
           			CHAR[6] = 'H';
           			CHAR[7] = 'z';
	   			}
	   			else if ((a>=100000)&&(a<1000000))
	   			{	num = (uint32)(a*1);
	   	            CHAR[0] = (char)(num/100000 + 48);					
           			CHAR[1] = (char)(num%100000/10000 + 48);			
           			CHAR[2] = (char)(num%10000/1000 + 48);			
           			CHAR[3] = '.';
           			CHAR[4] = (char)(num%1000/100 + 48);				
           			CHAR[5] = 'K';
           			CHAR[6] = 'H';
           			CHAR[7] = 'z';
	   			}
	   			else
	   			{   CHAR[0] = ' ';				
	                CHAR[1] = ' ';	
                    CHAR[2] = '0';			
                    CHAR[3] = 'H';			
                    CHAR[4] = 'z';				
                    CHAR[5] = ' ';
                    CHAR[6] = ' ';
                    CHAR[7] = ' ';	   				
	   			}
	   			break;
 case 1:
	         if ((a>=1)&&(a<10))
	            { num = (uint32)(a*1000);
	   	         CHAR[0] = (char)(num/1000 + 48);				
	             CHAR[1] = '.';	
                  CHAR[2] = (char)(num%1000/100 + 48);			
                  CHAR[3] = (char)(num%100/10 + 48);			
                  CHAR[4] = (char)(num%10/1 + 48);				
                  CHAR[5] = 'm';
                  CHAR[6] = 'S';
                  CHAR[7] = ' ';
	            }
	            else if ((a>=10)&&(a<100))
	            {   num = (uint32)(a*100);
	   	            CHAR[0] = (char)(num/1000 + 48);					
                    CHAR[1] = (char)(num%1000/100 + 48);			
                    CHAR[2] = '.';
                    CHAR[3] = (char)(num%100/10 + 48);			
                    CHAR[4] = (char)(num%10/1 + 48);				
                    CHAR[5] = 'm';
                    CHAR[6] = 'S';
                    CHAR[7] = ' ';
	            }
	            else if ((a>=100)&&(a<1000))
	            {   num = (uint32)(a*10);
	   	            CHAR[0] = (char)(num/1000 + 48);				
                    CHAR[1] = (char)(num%1000/100 + 48);			
                    CHAR[2] = (char)(num%100/10 + 48);			
                    CHAR[3] = '.';	
                    CHAR[4] = (char)(num%10/1 + 48);				
                    CHAR[5] = 'm';
                    CHAR[6] = 'S';
                    CHAR[7] = ' ';
	            }
	            else if ((a>=1000)&&(a<10000))
	            { num = (uint32)(a*1);
	   	            CHAR[0] = ' ';
	   	            CHAR[1] = (char)(num/1000 + 48);				
	                CHAR[2] = '.';	
                    CHAR[3] = (char)(num%1000/100 + 48);			
                    CHAR[4] = (char)(num%100/10 + 48);			
                    CHAR[5] = (char)(num%10/1 + 48);				
              		CHAR[6] = 'S';
           			CHAR[7] = ' ';
           			}
	   			else if ((a>=10000)&&(a<100000))
	   			{num = (uint32)(a*1);
	   	            CHAR[0] = ' ';
	   	   			CHAR[1] = (char)(num/1000 + 48);				
           			CHAR[2] = (char)(num%1000/100 + 48);			
           			CHAR[3] = '.';	
           			CHAR[4] = (char)(num%100/10 + 48);			
           			CHAR[5] = (char)(num%10/1 + 48);				
           			CHAR[6] = 'S';
           			CHAR[7] = ' ';
	   			}
	   			else if ((a>=0.001)&&(a<1))
	   			{    num = (uint32)(a*10000);
	   	             if ((a>=0.001)&&(a<0.01))
	   	            {   CHAR[0] = ' ';
	   	            	CHAR[1] = ' ';
	   	            }
	   	            else if ((a>=0.01)&&(a<0.1))
	   	            {   CHAR[0] = ' ';
	   	            	CHAR[1] = CHAR[1] = (char)(num%1000/100 + 48);
	   	            }
	   	            else
	   	            {   CHAR[0] = (char)(num/1000 + 48);					
           			    CHAR[1] = (char)(num%1000/100 + 48);
           			}			
           			    CHAR[2] = (char)(num%100/10 + 48);			
           			    CHAR[3] = '.';
           			    CHAR[4] = (char)(num%10/1 + 48);				
           			    CHAR[5] = 'u';
           			    CHAR[6] = 'S';
           			    CHAR[7] = ' ';
	   			}
	   			else
	   			{      CHAR[0] = ' ';				

⌨️ 快捷键说明

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