#include <C8051F340.h>
#include <string.h>
#include <absacc.h>
#include <stdio.h>
#include <stdlib.h>
#include <intrins.h>
#include <math.h>
#include "delay.h"
#include "1602.h"
#include "sca100t.h"
//----------------SPI_Delay-----------------------------
void SPI_Delay(unsigned char n)
{
while(n--);
}
//------------------SPI_Stop(同SPI_Reset)------------------------------------
void SPI_Stop( void )
{
CLK = LOW;
CSN = HIGH;
SPI_Delay(10);
}
//-----------------SPI_Start---------------------------
void SPI_Start(void)
{
CLK = LOW;
CSN = LOW;
SPI_Delay(10);
}
//-----------------SPI_WriteByte-------------------------------------
void SPI_WriteByte( unsigned char wdata )
{
unsigned char i;
for( i = 0 ; i < 8 ; ++i )
{
CLK = LOW;
SPI_Delay(10);
MOSI = wdata & 0x80;
wdata = wdata << 1;
SPI_Delay(10);
CLK = HIGH;
SPI_Delay(10);
}
CLK = LOW;
}
//-----------------SPI_ReadBits-------------------------------------
unsigned int SPI_ReadBits( unsigned char n )
{
unsigned int rtemp,i;
MISO = 1;
for( i = 0 ; i < n ; ++i )
{
rtemp <<= 1;
SPI_Delay(10);
if( MISO == 1 )
{
rtemp |= 0x0001;
}
else
{
rtemp &= 0xFFFE;
}
CLK = HIGH;
SPI_Delay(10);
CLK = LOW;
SPI_Delay(10);
}
return rtemp;
}
//-----------------SPI_GetX-------------------------------------
unsigned int SPI_GetX( void )
{
unsigned int result;
SPI_Start();
SPI_WriteByte( RDAX );
result = SPI_ReadBits(11);
SPI_Stop();
return result;
}
//--------------SPI_GetY----------------------------------------
unsigned int SPI_GetY( void )
{
unsigned int result;
SPI_Start();
SPI_WriteByte( RDAY );
result = SPI_ReadBits(11);
SPI_Stop();
return result;
}
//------------------------------------------------------
void SPI_Init( void )
{
SPI_Start();
SPI_WriteByte( MEAS );
SPI_Stop();
}
//------------------------------------------------------------------
void SCA100T_Init(void)
{
SPI_Stop();
SPI_Delay(1000);
SPI_Init();
SPI_Delay(1000);
}
//----------------------------------------------------
float Get_angleX(void)
{int Digit;
float ANGle;
Digit=SPI_GetX();
ANGle=asin((float) (Digit-1027)/818)/3.14*180;
return (ANGle);
}
float Get_angleY(void)
{int Digit;
float ANGle;
Digit=SPI_GetY();
ANGle=asin((float) (Digit-1024)/819)/3.14*180;
return (ANGle);
}
//----------------------------------------------
float XJiaSuDu(void)
{
float Jia;
int Digit;
Digit=SPI_GetX();
Jia=(Digit-1024)/819*9.8;
return (Jia);
}
//--------------------------------------------------
float YJiaSuDu(void)
{
float Jia;
int Digit;
Digit=SPI_GetY();
Jia=(Digit-1024)/819*9.8;
return (Jia);
}
使用单片机读取倾角传感器SCA100T的数据
5星 · 超过95%的资源 需积分: 11 154 浏览量
2011-12-23
23:58:37
上传
评论 7
收藏 66KB RAR 举报
njueewang90
- 粉丝: 0
- 资源: 5
- 1
- 2
- 3
前往页