کد:
#include <at91sam7x256.h>
#include <delay.h>
#include <TFTLCD.h>
#include <twi.c>
#include <PIO.h>
#include <stdio.h>
#include <math.h>
char PORTRAIT = 0;
char data;
char LCD_Show_X[20],LCD_Show_Y[20],LCD_Show_Z[20];
char A=0x70;
char B=0xA0;
char C=0x00;
char Rx;
char Raw_Xout_Val_LSB=0, Raw_Yout_Val_LSB=0, Raw_Zout_Val_LSB=0;
char Raw_Xout_Val_MSB=0, Raw_Yout_Val_MSB=0, Raw_Zout_Val_MSB=0;
unsigned int X_Angle;
unsigned int Y_Angle;
unsigned int Z_Angle;
int Angle;
int main(){
tftlcd_init();
*AT91C_PMC_PCER = (1<<9);
PIO_Periph(PORT_A,1<<10 | 1<<11,0); //(6)
PIO_Opendrain(PORT_A,1<<10 | 1<<11); //(7)
Pullup(PORT_A,1<<10 | 1<<11);
TWI_Configure(100000);//100k
TWI_WriteByteIadr(BASE_TWI,0x1E,0x00,1,&A);
delay_ms (10);
// tftlcd_putchar('0',BLUE,GREEN,1);
TWI_WriteByteIadr(BASE_TWI,0x1E,0x01,1,&B);
delay_ms (10);
TWI_WriteByteIadr(BASE_TWI,0x1E,0x02,1,&C);
delay_ms (10);
while(1){
TWI_ReadByteIadr(BASE_TWI,0x1E,0x03,1,&Raw_Xout_Val_MSB);
TWI_ReadByteIadr(BASE_TWI,0x1E,0x04,1,&Raw_Xout_Val_LSB);
TWI_ReadByteIadr(BASE_TWI,0x1E,0x05,1,&Raw_Yout_Val_MSB);
TWI_ReadByteIadr(BASE_TWI,0x1E,0x06,1,&Raw_Yout_Val_LSB);
TWI_ReadByteIadr(BASE_TWI,0x1E,0x07,1,&Raw_Zout_Val_MSB);
TWI_ReadByteIadr(BASE_TWI,0x1E,0x08,1,&Raw_Zout_Val_LSB);
X_Angle = (Raw_Xout_Val_MSB<<8|Raw_Xout_Val_LSB);
Y_Angle = (Raw_Yout_Val_MSB<<8|Raw_Yout_Val_LSB);
Z_Angle = (Raw_Zout_Val_MSB<<8|Raw_Zout_Val_LSB);
//Angle= atan2((double)X_Angle,(double)Y_Angle ) * (180 / 3.14159265) + 180;
tftlcd_gotoxy(0,0);
sprintf(LCD_Show_X,"%d",X_Angle);
tftlcd_puts(LCD_Show_X,BLUE,GREEN,1);
tftlcd_gotoxy(0,1);
sprintf(LCD_Show_Y,"%d",Y_Angle);
tftlcd_puts(LCD_Show_Y,BLUE,GREEN,1);
tftlcd_gotoxy(0,2);
sprintf(LCD_Show_Z,"%d",Z_Angle);
tftlcd_puts(LCD_Show_Z,BLUE,GREEN,1);
//TWI_WriteByteIadr(BASE_TWI,0x1E,0x03,1,&Raw_Xout_Val_MSB);
delay_ms (500);
tftlcd_clear();
}
}