找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2779|回復(fù): 0
收起左側(cè)

ADX345加速度傳感器源程序

[復(fù)制鏈接]
ID:189657 發(fā)表于 2017-4-14 20:58 | 顯示全部樓層 |閱讀模式
#include "stm32f10x.h"
#include "key.h"
#include "led.h"
#include "system.h"
#include "usart.h"
#include "gui.h"
#include "flash.h"
#include "adx345.h"
#include "math.h"

int16_t Xval, Yval, Zval, Xang, Yang, Zang;
double Xg,Yg,Zg;
uint8_t ShowData[6] = {0, 0, 0, 0, 0, 0};

void GUI_DisplayInit(void);
void GUI_DisplayData(void);

/****************************************************************************
* Function Name  : main
* Description    : Main program.
* Input          : None
* Output         : None
* Return         : None
****************************************************************************/

int main(void)
{
    uint8_t ledState;
      uint32_t i;

    /* ³õʼ»¯ */
    TFT_Init();
    FLASH_Init();
    SYSTICK_Config();
    USART1_Config(9600);
    LED_Config();
    while(ADX345_Init())
    {
        GUI_Show12Char(60, 42, "ADX345 ERROR£¡", RED, BLACK);
        SYSTICK_Delay1ms(100);        
    }
    GUI_DisplayInit();
      
    ADX345_Adjust();
    while(1)
    {
        i++;
        if(i > 0x02FFFF)
        {
            /* ¶ÁÈ¡X,Y,ZµÄ¼ÓËÙ¶ÈÖµ */
            ADX_GetXYZData(&Xval, &Yval, &Zval);
            printf(" x:%d \n", Xval);
            printf(" y:%d \n", Yval);
            printf(" z:%d \n", Zval);

            /* ½«¶ÁÈ¡µ½µÄ¼ÓËÙ¶Èֵת»»Îª½Ç¶ÈÖµ */
            Xang=ADX_GetAngle(Xval, Yval, Zval,1);   
                        Yang=ADX_GetAngle(Xval, Yval, Zval,2);   
                        Zang=ADX_GetAngle(Xval, Yval, Zval,0);
            GUI_DisplayData();

            i = 0;
            if(ledState == 0xFE)
            {
                ledState = 0xFF;
            }
            else
            {
                ledState = 0xFE;
            }
            LED_SetState(ledState);
        }
    }
}

/****************************************************************************
* Function Name  : GUI_DisplayInit
* Description    : ³õʼ»¯²ÊÆÁÏÔʾ
* Input          : None
* Output         : None
* Return         : None
****************************************************************************/

void GUI_DisplayInit(void)
{
    TFT_ClearScreen(BLACK);
    GUI_Show16Chinese(80, 0, "¼ÓËÙ¶È´«¸ÐÆ÷", RED, BLACK);
    //GUI_Show12Char(90, 21, "PRECHIN", RED, BLACK);
    //GUI_Show12Char(60, 42, "123456", RED, BLACK);
    GUI_Show12Char(40, 63, "ADX345¼ÓËÙ¶È´«¸ÐÆ÷", RED, BLACK);
    GUI_Show12Char(0, 84, "X VAL:", RED, BLACK);
    GUI_Show12Char(0, 105, "Y VAL:", RED, BLACK);
    GUI_Show12Char(0, 126, "Z VAL:", RED, BLACK);
    GUI_Show12Char(0, 147, "X ANG:", RED, BLACK);
    GUI_Show12Char(0, 168, "Y ANG:", RED, BLACK);
    GUI_Show12Char(0, 189, "Z ANG:", RED, BLACK);
}

/****************************************************************************
* Function Name  : GUI_DisplayData
* Description    : ÏÔʾ¶ÁÈ¡µÄÊý¾Ý
* Input          : None
* Output         : None
* Return         : None
****************************************************************************/

void GUI_DisplayData(void)
{
    int16_t value;
    uint8_t num = 6;
    while(num)
    {
        switch(num)
        {
            case(1):
                value = Zang;
                break;
            case(2):
                value = Yang;
                break;
            case(3):
                value = Xang;
                break;
            case(4):
                value = Zval;
                break;
            case(5):
                value = Yval;
                break;
            case(6):
                value = Xval;
                break;
            default:
               break;
        }
        if(value > 0)
        {
            ShowData[0] = '+';
        }
        else
        {
            ShowData[0] = '-';
            value = abs(value);//Çó³ö¾ø¶ÔÖµ
        }
        ShowData[1] = (value % 10000 /1000) + '0';
        ShowData[2] = (value % 1000 /100) + '0';
        ShowData[3] = (value % 100 /10) + '0';
        ShowData[4] = (value % 10) + '0';
        
        GUI_Show12Char(48, (210 - num*21), ShowData, RED, BLACK);
        num--;   
    }
   
        
              Xg=Xval/256.00;
                Yg=Yval/256.00;
                Zg=Zval/256.00;
                if(Xg<-0.2 && Yg>0.2)
                {
                    GUI_Show12Char(0, 210, "Ïò×ó", RED, BLACK);
                    //SYSTICK_Delay1ms(1000);
                    //GUI_Show12Char(0, 210, "", RED, BLACK);
                }
                if(Xg<-0.2&&Yg<-0.2)
                {
                    GUI_Show12Char(0, 210, "ÏòÓÒ", RED, BLACK);
                    //SYSTICK_Delay1ms(1000);
                    //GUI_Show12Char(0, 210, "", RED, BLACK);
                }
                if(Yg>-0.2&&Yg<0.2)
                {
                    GUI_Show12Char(0, 210, "Ö±ÐÐ", RED, BLACK);
                    //SYSTICK_Delay1ms(1000);
                    //GUI_Show12Char(0, 210, "", RED, BLACK);
                }
        
}


回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表