91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 7KB
    文件類型: .c
    金幣: 1
    下載: 0 次
    發布日期: 2021-05-16
  • 語言: 其他
  • 標簽: ADXL345??

資源簡介

51單片機ADXL345三軸加速度傳感器源代碼

資源截圖

代碼片段和文件信息

/*
?*?ADXL345模塊
?*?用途:ADXL345模塊
?*?作者:
?*?日期:2016-05-03
?*/
#include?
#include?
#include?
#include?“ADXL345.h“

sbit?ADX_SCL=P2^1;??????//IIC時鐘引腳定義
sbit?ADX_SDA=P2^0;??????//IIC數據引腳定義


BYTE?BUF[8];??????????? //接收數據緩存區??????
unsigned?char?devid;
float?pitchroll;

/*
延時5微秒(STC90C52RC---12MHz---12T)
不同的工作環境需要調整此函數,注意時鐘過快時需要修改
當改用1T的MCU時請調整此延時函數*/

void?Delay5us(){
????_nop_();_nop_();_nop_();_nop_();
????_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();
}

?/*
延時5毫秒(STC90C52RC@12M)
不同的工作環境需要調整此函數
當改用1T的MCU時請調整此延時函數*/

void?Delay5ms(){
????WORD?n?=?560;

????while?(n--);
}

//起始信號
void?ADXL345_Start(){
????ADX_SDA?=?1;????????????????????//拉高數據線
????ADX_SCL?=?1;????????????????????//拉高時鐘線
????Delay5us();?????????????????//延時
????ADX_SDA?=?0;????????????????????//產生下降沿
????Delay5us();?????????????????//延時
????ADX_SCL?=?0;????????????????????//拉低時鐘線
}?

//停止信號

void?ADXL345_Stop(){
????ADX_SDA?=?0;????????????????????//拉低數據線
????ADX_SCL?=?1;????????????????????//拉高時鐘線
????Delay5us();?????????????????//延時
????ADX_SDA?=?1;????????????????????//產生上升沿
????Delay5us();?????????????????//延時
}

/**************************************
發送應答信號
入口參數:ack?(0:ACK?1:NAK)
**************************************/
void?ADXL345_SendACK(bit?ack){
????ADX_SDA?=?ack;??????????????????//寫應答信號
????ADX_SCL?=?1;????????????????????//拉高時鐘線
????Delay5us();?????????????????//延時
????ADX_SCL?=?0;????????????????????//拉低時鐘線
????Delay5us();?????????????????//延時
}

/**************************************
接收應答信號
**************************************/
bit?ADXL345_RecvACK(){
????ADX_SCL?=?1;????????????????????//拉高時鐘線
????Delay5us();?????????????????//延時
????CY?=?ADX_SDA;???????????????????//讀應答信號
????ADX_SCL?=?0;????????????????????//拉低時鐘線
????Delay5us();?????????????????//延時

????return?CY;
}

/**************************************
向IIC總線發送一個字節數據
**************************************/
void?ADXL345_SendByte(BYTE?dat){
????BYTE?i;

????for?(i=0;?i<8;?i++)?????????//8位計數器
????{
????????dat?<<=?1;??????????????//移出數據的最高位
????????ADX_SDA?=?CY;???????????????//送數據口
????????ADX_SCL?=?1;????????????????//拉高時鐘線
????????Delay5us();?????????????//延時
????????ADX_SCL?=?0;????????????????//拉低時鐘線
????????Delay5us();?????????????//延時
????}
????ADXL345_RecvACK();
}

/**************************************
從IIC總線接收一個字節數據
**************************************/
BYTE?ADXL345_RecvByte(){
????BYTE?i;
????BYTE?dat?=?0;

????ADX_SDA?=?1;????????????????????//使能內部上拉準備讀取數據
????for?(i=0;?i<8;?i++)?????????//8位計數器
????{
????????dat?<<=?1;
????????ADX_SCL?=?1;????????????????//拉高時鐘線
????????Delay5us();?????????????//延時
????????dat?|=ADX_SDA;?????????????//讀數據???????????????
????????ADX_SCL?=?0;????????????????//拉低時鐘線
????????Delay5us();?????????????//延時
????}
????return?dat;
}

//******單字節寫入*****************************

評論

共有 條評論