角度传感器ADXL345程序代码AVRWord下载.docx

上传人:b****1 文档编号:5187902 上传时间:2023-05-04 格式:DOCX 页数:18 大小:16.25KB
下载 相关 举报
角度传感器ADXL345程序代码AVRWord下载.docx_第1页
第1页 / 共18页
角度传感器ADXL345程序代码AVRWord下载.docx_第2页
第2页 / 共18页
角度传感器ADXL345程序代码AVRWord下载.docx_第3页
第3页 / 共18页
角度传感器ADXL345程序代码AVRWord下载.docx_第4页
第4页 / 共18页
角度传感器ADXL345程序代码AVRWord下载.docx_第5页
第5页 / 共18页
角度传感器ADXL345程序代码AVRWord下载.docx_第6页
第6页 / 共18页
角度传感器ADXL345程序代码AVRWord下载.docx_第7页
第7页 / 共18页
角度传感器ADXL345程序代码AVRWord下载.docx_第8页
第8页 / 共18页
角度传感器ADXL345程序代码AVRWord下载.docx_第9页
第9页 / 共18页
角度传感器ADXL345程序代码AVRWord下载.docx_第10页
第10页 / 共18页
角度传感器ADXL345程序代码AVRWord下载.docx_第11页
第11页 / 共18页
角度传感器ADXL345程序代码AVRWord下载.docx_第12页
第12页 / 共18页
角度传感器ADXL345程序代码AVRWord下载.docx_第13页
第13页 / 共18页
角度传感器ADXL345程序代码AVRWord下载.docx_第14页
第14页 / 共18页
角度传感器ADXL345程序代码AVRWord下载.docx_第15页
第15页 / 共18页
角度传感器ADXL345程序代码AVRWord下载.docx_第16页
第16页 / 共18页
角度传感器ADXL345程序代码AVRWord下载.docx_第17页
第17页 / 共18页
角度传感器ADXL345程序代码AVRWord下载.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

角度传感器ADXL345程序代码AVRWord下载.docx

《角度传感器ADXL345程序代码AVRWord下载.docx》由会员分享,可在线阅读,更多相关《角度传感器ADXL345程序代码AVRWord下载.docx(18页珍藏版)》请在冰点文库上搜索。

角度传感器ADXL345程序代码AVRWord下载.docx

#defineSDA_inDDRC&

#defineSDA_outDDRC|=(1<

#defineSDA_RPINC&

(1<

#defineSCL_setPORTC|=(1<

5)

#defineSCL_clrPORTC&

#defineSCL_outDDRC|=(1<

#defineSlaveAddress0xA6//器件地址

ucharRe_data[6];

intDis_data;

floatTemp_x,Temp_y,Temp_z;

floatAngle;

/*延时*/

voidDelay(uintt)

{

while(t--)

{}

}

/*LCD12232端口初始化*/

voidPORT_Init(void)

DDRD|=BIT(6);

PORTD|=BIT(6);

DDRD|=BIT(7);

PORTD|=BIT(7);

DDRB|=BIT(0);

PORTB|=BIT(0);

/*LCD12232写指令*/

voidSend_COM(ucharCOM)

uchari,Order;

CS_clr;

Order=0xf8;

SCLK_clr;

CS_set;

for(i=0;

i<

8;

i++)

{

if(Order&

0x80)

SID_set;

else

SID_clr;

SCLK_set;

Order<

=1;

}

Order=COM;

Order&

=0xf0;

=4;

Delay(20);

/*LCD12232写数据*/

voidSend_DATA(ucharData)

Order=0xfa;

Order=Data;

/*显示一字符串*/

voidDis_str(ucharAddr,uchar*str)

Send_COM(Addr);

Delay(100);

while(*str!

='

\0'

Send_DATA(*str);

str++;

/*LCD12232初始化*/

voidInit_LCD(void)

Delay(2000);

Send_COM(0x06);

Delay(200);

Send_COM(0x02);

Send_COM(0x0c);

Send_COM(0x80);

Send_COM(0x30);

Send_COM(0x01);

/*写引脚设置*/

voidPORT_Write_Init(void)

DDRC|=BIT(4);

PORTC|=BIT(4);

DDRC|=BIT(5);

PORTC|=BIT(5);

/*读引脚设置*/

voidPORT_Read_Init(void)

DDRC&

=~BIT(4);

=~BIT(5);

/***************************************************

****************************************************

**********ADXL345角度传感器函数部分***************

****************************************************/

/*起始信号*/

voidIIC_Start(void)

SDA_out;

SDA_set;

SCL_set;

Delay(30);

SDA_clr;

SCL_clr;

/*停止信号*/

voidIIC_Stop(void)

/*发送应答信号*/

voidIIC_Send_Ack(void)

/*发送非应答信号*/

voidIIC_Send_NoAck(void)

/*接收应答信号*/

ucharIIC_Recv_Ack(void)

uchari;

SDA_in;

i=SDA_R;

returni?

1:

0;

/*IIC总线发送一个字节数据*/

voidIIC_Send_Byte(uchardata)

if(data&

data<

IIC_Recv_Ack();

/*IIC总线接收一个字节数据*/

ucharIIC_Recv_Byte(void)

ucharvalue=0;

value<

if(SDA_R)

value|=0x01;

returnvalue;

/*向ADXL345写入一个字节*/

voidADX345_Write_Byte(ucharAddr,ucharData)

IIC_Start();

IIC_Send_Byte(SlaveAddress);

IIC_Send_Byte(Addr);

IIC_Send_Byte(Data);

IIC_Stop();

/*向ADXL345读出一个字节*/

ucharADX345_Read_Byte(ucharAdd)

ucharResult;

IIC_Send_Byte(Add);

IIC_Send_Byte(SlaveAddress+1);

Result=IIC_Recv_Byte();

IIC_Send_NoAck();

returnResult;

/*连续读出ADXL345内部加速度数据,地址范围0x32~0x37*/

voidMultiple_Read_ADX345(void)

{

IIC_Send_Byte(0x32);

6;

Re_data[i]=IIC_Recv_Byte();

if(i==5)

IIC_Send_Ack();

/*ADXL345初始化*/

voidInit_ADX345(void)

ADX345_Write_Byte(0x31,0x0b);

ADX345_Write_Byte(0x2c,0x08);

ADX345_Write_Byte(0x2d,0x08);

ADX345_Write_Byte(0x2e,0x80);

ADX345_Write_Byte(0x1e,0x00);

ADX345_Write_Byte(0x1f,0x00);

ADX345_Write_Byte(0x20,0x05);

/*X轴*/

voidDisplay_X(void)

floatTemp;

Dis_data=(Re_data[1]<

8)+Re_data[0];

Send_COM(0x81);

if(Dis_data<

0)

Dis_data=-Dis_data;

Send_DATA('

-'

);

+'

Temp=(float)Dis_data*3.9;

Temp_x=Temp;

/*Y轴*/

voidDisplay_Y(void)

Dis_data=(Re_data[3]<

8)+Re_data[2];

Send_COM(0x84);

Temp_y=Temp;

/*Z轴*/

voidDisplay_Z(void)

Dis_data=(Re_data[5]<

8)+Re_data[4];

Send_COM(0x91);

Temp_z=Temp;

/*显示X、Y、Z轴*/

voidDisplay(ucharC)

floata,b,Tem;

ucharAbai,Ashi,Age,AG;

switch(C)

case0:

a=Temp_y*Temp_y+Temp_z*Temp_z;

//X轴

Tem=Temp_x;

break;

case1:

a=Temp_x*Temp_x+Temp_z*Temp_z;

//Y轴

Tem=Temp_y;

case2:

a=Temp_x*Temp_x+Temp_y*Temp_y;

//Z轴

Tem=Temp_z;

default:

break;

b=sqrt(a);

Angle=atan(b/Tem)*57.29;

//180/3.1416=57.29

AG=(uchar)Angle;

Abai=(unsignedchar)AG/100+0x30;

Ashi=(unsignedchar)AG%100/10+0x30;

Age=(unsignedchar)AG%10+0x30;

Send_COM(0x82);

Send_COM(0x85);

Send_COM(0x92);

Send_DATA(Abai);

Send_DATA(Ashi);

Send_DATA(Age);

/*主程序*/

voidmain(void)

ucharDevid;

Delay(50000);

SCL_out;

PORT_Init();

//LCD引脚初始化

Init_LCD();

//液晶初始化

//Dis_str(0x80,"

ADXL345:

"

Init_ADX345();

//初始化ADXL345

Devid=ADX345_Read_Byte(0x00);

//读出的数据为0xe5,表示正确

do

Multiple_Read_ADX345();

//连续读出数据,存储在BUF中

Display_X();

Display_Y();

Display_Z();

Delay(60000);

Display(0);

//---------显示X轴

Display

(1);

//---------显示Y轴

Display

(2);

//---------显示Z轴

while

(1);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2