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 + -
显示快捷键?