旋转检测主程序
0赞
发表于 3/3/2012 4:26:25 PM
阅读(4218)
下面把进行旋转检测的主程序代码和大家分享一下
#include "main.h" #include "xl345.h" #include "Common.h" #include "irq_arm.c" #include "myxl345.h" #include//Three Axis Acceleration Flag #define X_CHANNEL 0 #define Y_CHANNEL 1 #define Z_CHANNEL 2 unsigned int r_data[20]; unsigned int fifo_flag; long long_r_data[30]; long temp[30]; unsigned int xl345_all[29]; long mean_x; long mean_y; long mean_z; long static_x; long static_y; long static_z; int main(void) { int i; lcd_initial(); ADuC7026_Initiate(); ADuC7026_once_2(); fifo_flag = 0; ADuC7026_static_rotate(); disp_str(0,0,"static"); while(1) { if(fifo_flag==1) { SPI_ADXL345_READ(XL345_INT_SOURCE); SPI_ADXL345_WRITE(XL345_INT_ENABLE,0x00); mean_x = 0; mean_y = 0; mean_z = 0; for(i=0; i<1; i++) { ADuC7026_once(); long_r_data[6+i] = long_r_data[0]; long_r_data[7+i] = long_r_data[1]; long_r_data[8+i] = long_r_data[2]; mean_x+=long_r_data[0]; mean_y+=long_r_data[1]; mean_z+=long_r_data[2]; } mean_x/=1; mean_y/=1; mean_z/=1; mean_x-=static_x; mean_y-=static_y; mean_z-=static_z; fifo_flag=0; long_delay(500000); ADuC7026_once_2(); if(static_z>200||static_z<-200) { if(mean_x+mean_y>0) disp_str(0,0,"left "); else if(mean_x+mean_y<=0) disp_str(0,0,"right "); } else if(static_x>200||static_x<-200) { if(static_x>200)disp_str(0,0,"x down "); else disp_str(0,0,"x up "); } else if(static_y>200||static_y<-200) { if(static_y>200)disp_str(0,0,"y down "); else disp_str(0,0,"y up "); } else { disp_str(0,0,"wait ... "); } long_delay(50000); ADuC7026_static_rotate(); } }; }