GY-61 ADXL335模塊發送資料
ADXL335引腳圖:
0.png (29.28 KB, 下載次數: 48)
下載附件
2017-6-2 18:06 上傳
GY-61模塊資料:
0.png (123.37 KB, 下載次數: 40)
下載附件
2017-6-2 18:06 上傳
0.png (64.67 KB, 下載次數: 49)
下載附件
2017-6-2 18:07 上傳
單片機串口輸出ADXL335角度值源程序如下:
- //*****************************************************
- //名稱:單片機串口輸出ADXL335角度值
- //使用單片機:stc12c5a60s2
- //供電:電壓5v
- //晶振:11.0592m
- //X軸->(ADC0)P1.0
- //Y軸->(ADC1)P1.1
- //Z軸->(ADC1)P1.2
- //用pc串口助手顯示時,選擇字符顯示
- //參考宏晶網址例程
- //*****************************************************
- #include "reg51.h"
- #include "intrins.h"
- #include <math.h> //Keil library
- #include <stdio.h> //Keil library
- //#define FOSC 18432000L
- #define FOSC 11059200L //晶振11.0592M
- #define BAUD 9600
- typedef unsigned char BYTE;
- typedef unsigned int WORD;
- #define uchar unsigned char
- #define uint unsigned int
- /*Declare SFR associated with the ADC */
- sfr AUXR1 = 0XA2;
- sfr ADC_CONTR = 0xBC; //ADC control register
- sfr ADC_RES = 0xBD; //ADC high 8-bit result register
- sfr ADC_RESL = 0xBE;
- sfr ADC_LOW2 = 0xBE; //ADC low 2-bit result register
- sfr P1ASF = 0x9D; //P1 secondary function control register
- /*Define ADC operation const for ADC_CONTR*/
- #define ADC_POWER 0x80 //ADC power control bit
- #define ADC_FLAG 0x10 //ADC complete flag
- #define ADC_START 0x08 //ADC start control bit
- #define ADC_SPEEDLL 0x00 //420 clocks
- #define ADC_SPEEDL 0x20 //280 clocks
- #define ADC_SPEEDH 0x40 //140 clocks
- #define ADC_SPEEDHH 0x60 //70 clocks
- void InitUart();
- void InitADC();
- void SendData(BYTE dat);
- int GetADCResult(BYTE ch);
- void Delay(WORD n);
- uchar ge,shi,bai,qian,wan; //顯示變量
- void conversion(uint temp_data)
- {
- wan=temp_data/10000+0x30 ;
- temp_data=temp_data%10000; //取余運算
- qian=temp_data/1000+0x30 ;
- temp_data=temp_data%1000; //取余運算
- bai=temp_data/100+0x30 ;
- temp_data=temp_data%100; //取余運算
- shi=temp_data/10+0x30 ;
- temp_data=temp_data%10; //取余運算
- ge=temp_data+0x30;
- }
- /*----------------------------
- Get ADC result
- ----------------------------*/
- int GetADCResult(BYTE ch)
- { int AD10bitResult;
- ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START;
- _nop_(); //Must wait before inquiry
- _nop_();
- _nop_();
- _nop_();
- while (!(ADC_CONTR & ADC_FLAG));//Wait complete flag
- ADC_CONTR &= ~ADC_FLAG; //Close ADC
- AD10bitResult=ADC_RES;
- AD10bitResult<<=8;
- AD10bitResult|=ADC_RESL;
- return AD10bitResult; //Return 10BIT ADC result
- }
- /*----------------------------
- Initial UART
- ----------------------------*/
- void InitUart()
- {
- SCON = 0x5a; //8 bit data ,no parity bit
- TMOD = 0x20; //T1 as 8-bit auto reload
- TH1 = TL1 = -(FOSC/12/32/BAUD); //Set Uart baudrate
- TR1 = 1; //T1 start running
- }
- /*----------------------------
- Initial ADC sfr
- ----------------------------*/
- void InitADC()
- {
- P1ASF = 0xff; //Open 8 channels ADC function
- AUXR1=AUXR1|0X04; //ad值左對齊
- ADC_RES = 0; //Clear previous result
- ADC_CONTR = ADC_POWER | ADC_SPEEDLL;
- Delay(2); //ADC power-on and delay
- }
- /*----------------------------
- Send one byte data to PC
- Input: dat (UART data)
- Output:-
- ----------------------------*/
- void SendData(BYTE dat)
- {
- while (!TI); //Wait for the previous data is sent
- TI = 0; //Clear TI flag
- SBUF = dat; //Send current data
- }
- /*----------------------------
- Software delay function
- ----------------------------*/
- void Delay(WORD n)
- {
- WORD x;
- while (n--)
- {
- x = 5000;
- while (x--);
- }
- }
- //******************************************************************************
- void main()
- { int x,y,z;
- float Q,T,K,Roll,Pitch;
- InitUart(); //Init UART, use to show ADC result
- InitADC(); //Init ADC sfr
- while (1)
- {
- x=GetADCResult(0);
- y=GetADCResult(1);
- z=GetADCResult(2);
- // 0-5v 對應 0-1024
- // 3.3v/2 = 1.65v(0g時候值)
- // 1.65v ->= 338 (AD值即0X0152)
- x-=0X0152; //
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
GY-61 ADXL335模塊發送資料.rar
(672.39 KB, 下載次數: 33)
2017-6-2 17:18 上傳
點擊文件名下載附件
輸出角度值 下載積分: 黑幣 -5
|