<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://w.electrodragon.com/w/index.php?action=history&amp;feed=atom&amp;title=ADXL345</id>
	<title>ADXL345 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://w.electrodragon.com/w/index.php?action=history&amp;feed=atom&amp;title=ADXL345"/>
	<link rel="alternate" type="text/html" href="https://w.electrodragon.com/w/index.php?title=ADXL345&amp;action=history"/>
	<updated>2026-07-23T06:31:35Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.37.2</generator>
	<entry>
		<id>https://w.electrodragon.com/w/index.php?title=ADXL345&amp;diff=29648&amp;oldid=prev</id>
		<title>Chao at 05:47, 19 February 2021</title>
		<link rel="alternate" type="text/html" href="https://w.electrodragon.com/w/index.php?title=ADXL345&amp;diff=29648&amp;oldid=prev"/>
		<updated>2021-02-19T05:47:49Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
== Schematic == &lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Adxl345 schematic.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Datasheet ==&lt;br /&gt;
* [[:File:ADXL345.pdf|ADXL345 Datasheet]] adxl345 datasheet&lt;br /&gt;
* [[File:ADXL335.pdf|PDF datasheet]] adxl335 datasheet&lt;br /&gt;
&lt;br /&gt;
== C51 Demo Code of ADXL335 ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
//*****************************************************&lt;br /&gt;
//名称：单片机串口输出ADXL335角度值&lt;br /&gt;
//使用单片机：stc12c5a60s2&lt;br /&gt;
//供电：电压5v&lt;br /&gt;
//晶振：11.0592m&lt;br /&gt;
//X轴-&amp;gt;(ADC0)P1.0  &lt;br /&gt;
//Y轴-&amp;gt;(ADC1)P1.1 &lt;br /&gt;
//Z轴-&amp;gt;(ADC1)P1.2&lt;br /&gt;
//用pc串口助手显示时，选择字符显示 &lt;br /&gt;
//参考宏晶网址例程&lt;br /&gt;
//*****************************************************&lt;br /&gt;
#include &amp;quot;reg51.h&amp;quot;&lt;br /&gt;
#include &amp;quot;intrins.h&amp;quot;&lt;br /&gt;
#include  &amp;lt;math.h&amp;gt;    //Keil library  &lt;br /&gt;
#include  &amp;lt;stdio.h&amp;gt;   //Keil library&lt;br /&gt;
&lt;br /&gt;
//#define FOSC    18432000L&lt;br /&gt;
#define FOSC    11059200L  //晶振11.0592M&lt;br /&gt;
#define BAUD    9600&lt;br /&gt;
&lt;br /&gt;
typedef unsigned char BYTE;&lt;br /&gt;
typedef unsigned int WORD;&lt;br /&gt;
&lt;br /&gt;
#define   uchar unsigned char&lt;br /&gt;
#define   uint unsigned int	&lt;br /&gt;
&lt;br /&gt;
/*Declare SFR associated with the ADC */&lt;br /&gt;
sfr AUXR1       =   0XA2;&lt;br /&gt;
sfr ADC_CONTR   =   0xBC;           //ADC control register&lt;br /&gt;
sfr ADC_RES     =   0xBD;           //ADC high 8-bit result register&lt;br /&gt;
sfr ADC_RESL    =   0xBE;&lt;br /&gt;
sfr ADC_LOW2    =   0xBE;           //ADC low 2-bit result register&lt;br /&gt;
sfr P1ASF       =   0x9D;           //P1 secondary function control register&lt;br /&gt;
&lt;br /&gt;
/*Define ADC operation const for ADC_CONTR*/&lt;br /&gt;
#define ADC_POWER   0x80            //ADC power control bit&lt;br /&gt;
#define ADC_FLAG    0x10            //ADC complete flag&lt;br /&gt;
#define ADC_START   0x08            //ADC start control bit&lt;br /&gt;
#define ADC_SPEEDLL 0x00            //420 clocks&lt;br /&gt;
#define ADC_SPEEDL  0x20            //280 clocks&lt;br /&gt;
#define ADC_SPEEDH  0x40            //140 clocks&lt;br /&gt;
#define ADC_SPEEDHH 0x60            //70 clocks&lt;br /&gt;
&lt;br /&gt;
void InitUart();&lt;br /&gt;
void InitADC();&lt;br /&gt;
void SendData(BYTE dat);&lt;br /&gt;
int GetADCResult(BYTE ch);&lt;br /&gt;
void Delay(WORD n);&lt;br /&gt;
uchar ge,shi,bai,qian,wan;           //显示变量&lt;br /&gt;
&lt;br /&gt;
void conversion(uint temp_data)  &lt;br /&gt;
{  &lt;br /&gt;
    wan=temp_data/10000+0x30 ;&lt;br /&gt;
    temp_data=temp_data%10000;   //取余运算&lt;br /&gt;
	qian=temp_data/1000+0x30 ;&lt;br /&gt;
    temp_data=temp_data%1000;    //取余运算&lt;br /&gt;
    bai=temp_data/100+0x30   ;&lt;br /&gt;
    temp_data=temp_data%100;     //取余运算&lt;br /&gt;
    shi=temp_data/10+0x30    ;&lt;br /&gt;
    temp_data=temp_data%10;      //取余运算&lt;br /&gt;
    ge=temp_data+0x30; 	&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*----------------------------&lt;br /&gt;
Get ADC result&lt;br /&gt;
----------------------------*/&lt;br /&gt;
int GetADCResult(BYTE ch)&lt;br /&gt;
{   int AD10bitResult; &lt;br /&gt;
    ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START;&lt;br /&gt;
    _nop_();                        //Must wait before inquiry&lt;br /&gt;
    _nop_();&lt;br /&gt;
    _nop_();&lt;br /&gt;
    _nop_();&lt;br /&gt;
    while (!(ADC_CONTR &amp;amp; ADC_FLAG));//Wait complete flag&lt;br /&gt;
    ADC_CONTR &amp;amp;= ~ADC_FLAG;         //Close ADC&lt;br /&gt;
&lt;br /&gt;
    AD10bitResult=ADC_RES;&lt;br /&gt;
    AD10bitResult&amp;lt;&amp;lt;=8;&lt;br /&gt;
    AD10bitResult|=ADC_RESL;&lt;br /&gt;
    return AD10bitResult;                  //Return 10BIT ADC result&lt;br /&gt;
}&lt;br /&gt;
/*----------------------------&lt;br /&gt;
Initial UART&lt;br /&gt;
----------------------------*/&lt;br /&gt;
void InitUart()&lt;br /&gt;
{&lt;br /&gt;
    SCON = 0x5a;                    //8 bit data ,no parity bit&lt;br /&gt;
    TMOD = 0x20;                    //T1 as 8-bit auto reload&lt;br /&gt;
    TH1 = TL1 = -(FOSC/12/32/BAUD); //Set Uart baudrate&lt;br /&gt;
    TR1 = 1;                        //T1 start running&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*----------------------------&lt;br /&gt;
Initial ADC sfr&lt;br /&gt;
----------------------------*/&lt;br /&gt;
void InitADC()&lt;br /&gt;
{&lt;br /&gt;
    P1ASF = 0xff;                   //Open 8 channels ADC function&lt;br /&gt;
&lt;br /&gt;
	AUXR1=AUXR1|0X04;              //ad值左对齐&lt;br /&gt;
    ADC_RES = 0;                    //Clear previous result&lt;br /&gt;
    ADC_CONTR = ADC_POWER | ADC_SPEEDLL;&lt;br /&gt;
    Delay(2);                       //ADC power-on and delay&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*----------------------------&lt;br /&gt;
Send one byte data to PC&lt;br /&gt;
Input: dat (UART data)&lt;br /&gt;
Output:-&lt;br /&gt;
----------------------------*/&lt;br /&gt;
void SendData(BYTE dat)&lt;br /&gt;
{&lt;br /&gt;
    while (!TI);                    //Wait for the previous data is sent&lt;br /&gt;
    TI = 0;                         //Clear TI flag&lt;br /&gt;
    SBUF = dat;                     //Send current data&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*----------------------------&lt;br /&gt;
Software delay function&lt;br /&gt;
----------------------------*/&lt;br /&gt;
void Delay(WORD n)&lt;br /&gt;
{&lt;br /&gt;
    WORD x;&lt;br /&gt;
&lt;br /&gt;
    while (n--)&lt;br /&gt;
    {&lt;br /&gt;
        x = 5000;&lt;br /&gt;
        while (x--);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//******************************************************************************&lt;br /&gt;
&lt;br /&gt;
void main()&lt;br /&gt;
{   int x,y,z;&lt;br /&gt;
	float Q,T,K,Roll,Pitch;&lt;br /&gt;
    InitUart();                     //Init UART, use to show ADC result&lt;br /&gt;
    InitADC();                      //Init ADC sfr&lt;br /&gt;
    while (1)&lt;br /&gt;
    {&lt;br /&gt;
		x=GetADCResult(0);&lt;br /&gt;
		y=GetADCResult(1);&lt;br /&gt;
		z=GetADCResult(2);&lt;br /&gt;
		// 0-5v 对应 0-1024  &lt;br /&gt;
		// 3.3v/2  = 1.65v（0g时候值）&lt;br /&gt;
		// 1.65v -&amp;gt;= 338   (AD值即0X0152)&lt;br /&gt;
		x-=0X0152; //&lt;br /&gt;
		y-=0X0152;&lt;br /&gt;
		z-=0X0152;	&lt;br /&gt;
    Q=x;&lt;br /&gt;
    T=y;&lt;br /&gt;
    K=z;&lt;br /&gt;
    Q=-Q;&lt;br /&gt;
    Roll=(float)(((atan2(K,Q)*180)/3.14159265)+180);&lt;br /&gt;
    Pitch=(float)(((atan2(K,T)*180)/3.14159265)+180);&lt;br /&gt;
    conversion(Roll);    //横滚角0-360度&lt;br /&gt;
  //conversion(Pitch); //俯仰角0-360度&lt;br /&gt;
    SendData(bai);&lt;br /&gt;
	SendData(shi);&lt;br /&gt;
	SendData(ge);&lt;br /&gt;
&lt;br /&gt;
	SendData(0x0d); &lt;br /&gt;
	SendData(0x0a);//换行，回车&lt;br /&gt;
&lt;br /&gt;
    Delay(30);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Demo code and Library ==&lt;br /&gt;
* [https://code.google.com/p/adxl345-arduino/ ADXL 345 Library]&lt;br /&gt;
* [http://mbed.org/cookbook/ADXL345-Accelerometer mbed library]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[category: Analog Accelerometer]]&lt;/div&gt;</summary>
		<author><name>Chao</name></author>
	</entry>
</feed>