📄 datachange.c
字号:
//#include "dataChange.h"
#include "AD.h"
unsigned int KeyCount=0;
//作有符号数处理
unsigned int *DataChange(int data, unsigned int *BcdCode, unsigned int n,unsigned int MaxValue) {
int j=0;
unsigned int Datatemp;
if(data<0)
{
BcdCode[j++]='-';
data*=-1;
}
else
BcdCode[j++]='';
Datatemp=((long)data*MaxValue*100+16384)>>15; //Q15*Q0*100--->Q0格式
data=Datatemp/10000;
BcdCode[j++] =data; //百位
Datatemp=Datatemp-data*10000;
data=Datatemp;
Datatemp=data/1000; //十位
BcdCode[j++] =Datatemp;
Datatemp=data-Datatemp*1000;
data=Datatemp;
Datatemp=data/100; //个位
BcdCode[j++] =Datatemp;
// if(j == 3)
BcdCode[j++] =10; //小数点,10表示小数点
Datatemp=data-Datatemp*100;
data=Datatemp;
Datatemp=data/10; //0.1位
BcdCode[j++] =Datatemp;
Datatemp=data-Datatemp*10; //0.01位
if(j<n) //0.1位精度
{
BcdCode[j++] =Datatemp; //0.01位
while(j <= (n-1))
{ //其余填0
BcdCode[j++] = 0;
}
}
else
BcdCode[j-1] +=(Datatemp>5?1:0); //四舍五入
return BcdCode;
} //数据转换Q15转BCD码
int DataToFloat(unsigned int *BcdCode, unsigned int n,unsigned int step) //步进将数组改成Q15保存
{
int retvalue=(long)SumArray(BcdCode,n)*step>>11;
return retvalue;
}
int SumArray(unsigned int *BcdCode,unsigned int n)
{
int sign=1,j=0;
int retvalue=0;
if(BcdCode[j++]=='-')
sign=-1;
//百位
while(j<4) //整数部分
{
retvalue=retvalue*10+BcdCode[j++];
}
j++; //略过小数点
while(j<n)
{
retvalue=retvalue*10+BcdCode[j++];
}
retvalue*=sign;
return retvalue;
}
//将BCD转ASCII码
unsigned int *CodeChange(unsigned int *CodeIn, unsigned int *CodeOut, unsigned int n) {
int j = 0;
int Hide=0;
int HideCount=0;
for(j=1; j < (n-3); j++)
{
if ( CodeOut[j]==0 && Hide==0)
{
CodeOut[j] = 0; //0表示隐藏
HideCount++;
}
else
{
CodeOut[j] = CodeIn[j]+0x30;
Hide=j;
}
}
if (Hide==0)
{
CodeOut[j-1]=0x30; // 0.显示
CodeOut[j-2]=CodeOut[0] ; //显示符号位
}
else
{
if (HideCount!=0)
{
CodeOut[HideCount]=CodeOut[0] ; //显示符号位
CodeOut[0]=0;
}
}
CodeOut[j] = 0x2e; //小数点
for(j=(n-2); j < n; j++)
CodeOut[j] = CodeIn[j]+0x30;
return CodeOut;
}
int Display_Value(int x,int y,int value,int num,int Max)
{
unsigned int DisplayBuf[7] ; //6位显示
//显示数据
DataChange(value, DisplayBuf, 7,Max);
CodeChange(DisplayBuf, DisplayBuf, 7); //格式转换
DispData(x,y, DisplayBuf,7); //显示数据
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -