初级会员

- 积分
- 131
- 金钱
- 131
- 注册时间
- 2016-7-13
- 在线时间
- 17 小时
|
发表于 2016-7-21 13:55:40
|
显示全部楼层
不知道你是怎么算实际加速度值的。我算出来了。写了个计算加速度的函数,因为加速度量程初始化设置的是±2g,所以用寄存器里的加速度值除以16384,这个在6050datasheet有写,是灵敏度。我后面显示是显示1位整数,2位小数的。参考的例程。显示部分的代码也贴在后面。
[mw_shl_code=c,true]//计算实际加速度值
//accx,accy,accz为加速度原始值(16位带符号)
//ax,ay,az 为计算出来的加速度值,单位为100g
void MPU_Cal_Accelerometer(short *accx,short *accy,short *accz,float *ax,float *ay,float *az)
{
*ax = (((double)*accx)/16384)*100;
*ay = (((double)*accy)/16384)*100;
*az = (((double)*accz)/16384)*100;
}[/mw_shl_code]
[mw_shl_code=c,true]temp=ax;
if(temp<0)
{
LCD_ShowChar(30+144,200,'-',16,0); //显示负号
temp=-temp; //转为正数
}else LCD_ShowChar(30+144,200,' ',16,0); //去掉负号
LCD_ShowNum(30+144+8,200,temp/100,1,16); //显示整数部分
LCD_ShowNum(30+144+24,200,temp%100,2,16); //显示小数部分
temp=ay;
if(temp<0)
{
LCD_ShowChar(30+144,220,'-',16,0); //显示负号
temp=-temp; //转为正数
}else LCD_ShowChar(30+144,220,' ',16,0); //去掉负号
LCD_ShowNum(30+144+8,220,temp/100,1,16); //显示整数部分
LCD_ShowNum(30+144+24,220,temp%100,2,16); //显示小数部分
temp=az;
if(temp<0)
{
LCD_ShowChar(30+144,240,'-',16,0); //显示负号
temp=-temp; //转为正数
}else LCD_ShowChar(30+144,240,' ',16,0); //去掉负号
LCD_ShowNum(30+144+8,240,temp/100,1,16); //显示整数部分
LCD_ShowNum(30+144+24,240,temp%100,2,16); //显示小数部分[/mw_shl_code]
|
|