基于51单片机驱动ADXL346 (LCD1602显示)
一、ADXL346传感器介绍
1.实物图
2.产品说明
ADXL346是一款小而薄的超低功耗3轴加速度计,分辨率 高(13位),测量范围达±16 g。数字输出数据为16位二进制补码格式,可通过SPI(3线或4线)或I2 C®数字接口访问。 ADXL346非常适合移动设备应用。它可以在倾斜检测应用 中测量静态重力加速度,还可以测量运动或冲击导致的动 态加速度。它具有高分辨率(4 mg/LSB),能够分辨不到1.0°的倾斜度变化。
3.电气参数
芯片型号:ADXL346
工作电压:3~5V
通信方式:IIC/SPI
4.通信协议
此处用的是IIC,通信时序图如下:
二、驱动代码
1.引脚定义
可在此更改引脚定义
sbit SCL=P1^0; //IIC时钟引脚定义
sbit SDA=P1^1; //IIC数据引脚定义
2.初始化函数
//初始化ADXL345,根据需要请参考pdf进行修改************************
void Init_ADXL345()
{
Single_Write_ADXL345(0x31,0x0B); //测量范围,正负16g,13位模式
Single_Write_ADXL345(0x2C,0x08); //速率设定为12.5 参考pdf13页
Single_Write_ADXL345(0x2D,0x08); //选择电源模式 参考pdf24页
Single_Write_ADXL345(0x2E,0x80); //使能 DATA_READY 中断
Single_Write_ADXL345(0x1E,0x00); //X 偏移量 根据测试传感器的状态写入pdf29页
Single_Write_ADXL345(0x1F,0x00); //Y 偏移量 根据测试传感器的状态写入pdf29页
Single_Write_ADXL345(0x20,0x05); //Z 偏移量 根据测试传感器的状态写入pdf29页
}
3.主函数
/*********************************************************
//******主程序********
//*********************************************************/
void main()
{
uchar devid;
delay(500); //上电延时
InitLcd(); //液晶初始化ADXL345
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); //延时
}
}
三、实验现象
四、总结
1.当显示无变化时检查接线是否有接触不良
2.用LCD1602显示注意引脚定义要适配对应开发板
需要完整工程的可下方留言邮箱获取