ADXL345加速度传感器参考程序1602显示Word格式文档下载.docx

上传人:b****5 文档编号:21141223 上传时间:2023-01-27 格式:DOCX 页数:13 大小:17.23KB
下载 相关 举报
ADXL345加速度传感器参考程序1602显示Word格式文档下载.docx_第1页
第1页 / 共13页
ADXL345加速度传感器参考程序1602显示Word格式文档下载.docx_第2页
第2页 / 共13页
ADXL345加速度传感器参考程序1602显示Word格式文档下载.docx_第3页
第3页 / 共13页
ADXL345加速度传感器参考程序1602显示Word格式文档下载.docx_第4页
第4页 / 共13页
ADXL345加速度传感器参考程序1602显示Word格式文档下载.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

ADXL345加速度传感器参考程序1602显示Word格式文档下载.docx

《ADXL345加速度传感器参考程序1602显示Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《ADXL345加速度传感器参考程序1602显示Word格式文档下载.docx(13页珍藏版)》请在冰豆网上搜索。

ADXL345加速度传感器参考程序1602显示Word格式文档下载.docx

voidDisplayOneChar(ucharX,ucharY,ucharDData);

voidconversion(uinttemp_data);

voidSingle_Write_ADXL345(ucharREG_Address,ucharREG_data);

//单个写入数据

ucharSingle_Read_ADXL345(ucharREG_Address);

//单个读取内部寄存器数据

voidMultiple_Read_ADXL345();

//连续的读取内部寄存器数据

//------------------------------------

voidDelay5us();

voidDelay5ms();

voidADXL345_Start();

voidADXL345_Stop();

voidADXL345_SendACK(bitack);

bitADXL345_RecvACK();

voidADXL345_SendByte(BYTEdat);

BYTEADXL345_RecvByte();

voidADXL345_ReadPage();

voidADXL345_WritePage();

//-----------------------------------

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

voidconversion(uinttemp_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;

}

voiddelay(unsignedintk)

{

unsignedinti,j;

for(i=0;

i<

k;

i++)

{

for(j=0;

j<

121;

j++)

{;

}}

voidWaitForEnable(void)

{

DataPort=0xff;

LCM_RS=0;

LCM_RW=1;

_nop_();

LCM_EN=1;

while(DataPort&

0x80);

LCM_EN=0;

}

voidWriteCommandLCM(ucharCMD,ucharAttribc)

if(Attribc)WaitForEnable();

LCM_RW=0;

DataPort=CMD;

voidWriteDataLCM(uchardataW)

WaitForEnable();

LCM_RS=1;

DataPort=dataW;

}

voidInitLcd()

WriteCommandLCM(0x38,1);

WriteCommandLCM(0x08,1);

WriteCommandLCM(0x01,1);

WriteCommandLCM(0x06,1);

WriteCommandLCM(0x0c,1);

}

voidDisplayOneChar(ucharX,ucharY,ucharDData)

Y&

=1;

X&

=15;

if(Y)X|=0x40;

X|=0x80;

WriteCommandLCM(X,0);

WriteDataLCM(DData);

}

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

延时5微秒(STC90C52RC@12M)

不同的工作环境,需要调整此函数,注意时钟过快时需要修改

当改用1T的MCU时,请调整此延时函数

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

voidDelay5us()

{

_nop_();

延时5毫秒(STC90C52RC@12M)

不同的工作环境,需要调整此函数

voidDelay5ms()

WORDn=560;

while(n--);

起始信号

voidADXL345_Start()

SDA=1;

//拉高数据线

SCL=1;

//拉高时钟线

Delay5us();

//延时

SDA=0;

//产生下降沿

SCL=0;

//拉低时钟线

停止信号

voidADXL345_Stop()

//拉低数据线

//产生上升沿

发送应答信号

入口参数:

ack(0:

ACK1:

NAK)

voidADXL345_SendACK(bitack)

SDA=ack;

//写应答信号

接收应答信号

bitADXL345_RecvACK()

CY=SDA;

//读应答信号

returnCY;

向IIC总线发送一个字节数据

voidADXL345_SendByte(BYTEdat)

BYTEi;

for(i=0;

i<

8;

i++)//8位计数器

{

dat<

<

=1;

//移出数据的最高位

SDA=CY;

//送数据口

}

ADXL345_RecvACK();

从IIC总线接收一个字节数据

BYTEADXL345_RecvByte()

BYTEdat=0;

//使能内部上拉,准备读取数据,

dat|=SDA;

//读数据

returndat;

//******单字节写入*******************************************

voidSingle_Write_ADXL345(ucharREG_Address,ucharREG_data)

ADXL345_Start();

//起始信号

ADXL345_SendByte(SlaveAddress);

//发送设备地址+写信号

ADXL345_SendByte(REG_Address);

//内部寄存器地址,请参考中文pdf22页

ADXL345_SendByte(REG_data);

//内部寄存器数据,请参考中文pdf22页

ADXL345_Stop();

//发送停止信号

//********单字节读取*****************************************

ucharSingle_Read_ADXL345(ucharREG_Address)

{ucharREG_data;

//发送存储单元地址,从0开始

ADXL345_SendByte(SlaveAddress+1);

//发送设备地址+读信号

REG_data=ADXL345_RecvByte();

//读出寄存器数据

ADXL345_SendACK

(1);

//停止信号

returnREG_data;

//

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

voidMultiple_read_ADXL345(void)

{uchari;

ADXL345_SendByte(0x32);

//发送存储单元地址,从0x32开始

6;

i++)//连续读取6个地址数据,存储中BUF

BUF[i]=ADXL345_RecvByte();

//BUF[0]存储0x32地址中的数据

if(i==5)

//最后一个数据需要回NOACK

else

ADXL345_SendACK(0);

//回应ACK

Delay5ms();

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

//***********************初始化ADXL345*****************************

voidInit_ADXL345()

Single_Write_ADXL345(0x31,0x0B);

//测量范围,正负16g,13位模式

Single_Write_ADXL345(0x2C,0x08);

//速率设定为12.5

Single_Write_ADXL345(0x2D,0x08);

//选择电源模式

Single_Write_ADXL345(0x2E,0x80);

//使能DATA_READY中断

Single_Write_ADXL345(0x1E,0x00);

//X偏移量根据测试传感器的状态写入

Single_Write_ADXL345(0x1F,0x00);

//Y偏移量根据测试传感器的状态写入

Single_Write_ADXL345(0x20,0x05);

//Z偏移量根据测试传感器的状态写入

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

//显示x轴

voiddisplay_x()

{floattemp;

dis_data=(BUF[1]<

8)+BUF[0];

//合成数据

if(dis_data<

0){

dis_data=-dis_data;

DisplayOneChar(10,0,'

-'

);

//显示正负符号位

elseDisplayOneChar(10,0,'

'

//显示空格

temp=(float)dis_data*3.9;

//计算数据和显示,

conversion(temp);

//转换出显示需要的数据

DisplayOneChar(8,0,'

X'

DisplayOneChar(9,0,'

:

'

DisplayOneChar(11,0,qian);

DisplayOneChar(12,0,'

.'

DisplayOneChar(13,0,bai);

DisplayOneChar(14,0,shi);

DisplayOneChar(15,0,'

//显示y轴

voiddisplay_y()

dis_data=(BUF[3]<

8)+BUF[2];

DisplayOneChar(2,1,'

elseDisplayOneChar(2,1,'

//计算数据和显示

DisplayOneChar(0,1,'

Y'

//第1行,第0列显示y

DisplayOneChar(1,1,'

DisplayOneChar(3,1,qian);

DisplayOneChar(4,1,'

DisplayOneChar(5,1,bai);

DisplayOneChar(6,1,shi);

DisplayOneChar(7,1,'

//显示z轴

voiddisplay_z()

floattemp;

dis_data=(BUF[5]<

8)+BUF[4];

DisplayOneChar(10,1,'

//显示负符号位

elseDisplayOneChar(10,1,'

DisplayOneChar(8,1,'

Z'

//第0行,第10列显示Z

DisplayOneChar(9,1,'

DisplayOneChar(11,1,qian);

DisplayOneChar(12,1,'

DisplayOneChar(13,1,bai);

DisplayOneChar(14,1,shi);

DisplayOneChar(15,1,'

//******主程序********

voidmain()

{

uchardevid;

delay(500);

//上电延时

InitLcd();

//液晶初始化ADXL345

DisplayOneChar(0,0,'

A'

DisplayOneChar(1,0,'

D'

DisplayOneChar(2,0,'

DisplayOneChar(3,0,'

L'

DisplayOneChar(4,0,'

3'

DisplayOneChar(5,0,'

4'

DisplayOneChar(6,0,'

5'

Init_ADXL345();

//初始化ADXL345

devid=Single_Read_ADXL345(0X00);

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

while

(1)//循环

{

Multiple_Read_ADXL345();

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

display_x();

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

display_y();

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

display_z();

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

delay(200);

//延时

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

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1