• 大小: 62KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-06-07
  • 语言: 其他
  • 标签: VL53l0x  51单片机  ToF  

资源简介

VL53l0x的51单片机程序;单片机使用STC15F104E

资源截图

代码片段和文件信息

#include“i2c.h“

/*******************************************************************************
* 函 数 名         : Delay1us()
* 函数功能    : 延时
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/

void I2C_Delay10us()
{
    unsigned char i;

    _nop_();
    _nop_();
    _nop_();
    i = 24;
    while (--i);
}
/*******************************************************************************
* 函 数 名         : I2C_Start()
* 函数功能    : 起始信号:在I2C_SCL时钟信号在高电平期间I2C_SDA信号产生一个下降沿
* 输    入         : 无
* 输    出         : 无
* 备    注         : 起始之后I2C_SDA和I2C_SCL都为0
*******************************************************************************/

void I2C_Start()
{
    I2C_SDA = 1;
    I2C_Delay10us();
    I2C_SCL = 1;
    I2C_Delay10us();//建立时间是I2C_SDA保持时间>4.7us
    I2C_SDA = 0;
    I2C_Delay10us();//保持时间是>4us
    I2C_SCL = 0;
    I2C_Delay10us();
}
/*******************************************************************************
* 函 数 名           : I2C_Stop()
* 函数功能          : 终止信号:在I2C_SCL时钟信号高电平期间I2C_SDA信号产生一个上升沿
* 输    入           : 无
* 输    出           : 无
* 备    注           : 结束之后保持I2C_SDA和I2C_SCL都为1;表示总线空闲
*******************************************************************************/

void I2C_Stop()
{
    I2C_SDA = 0;
    I2C_Delay10us();
    I2C_SCL = 1;
    I2C_Delay10us();//建立时间大于4.7us
    I2C_SDA = 1;
    I2C_Delay10us();
}
/*******************************************************************************
* 函 数 名           : I2cSendByte(uchar num)
* 函数功能           : 通过I2C发送一个字节。在I2C_SCL时钟信号高电平期间,
*                    * 保持发送信号I2C_SDA保持稳定
* 输    入           : num ack
* 输    出           : 0或1。发送成功返回1,发送失败返回0
* 备    注           : 发送完一个字节I2C_SCL=0 需要应答则应答设置为1,否则为0
*******************************************************************************/

uchar I2C_SendByte(uchar dat)
{
    uchar a = 0b = 0;//最大255,一个机器周期为1us,最大延时255us。

    for(a=0; a<8; a++)//要发送8位,从最高位开始
    {
        dat <<= 1;
        I2C_SDA=CY;
        I2C_Delay10us();
        I2C_SCL = 1;
        I2C_Delay10us();//建立时间>4.7us
        I2C_SCL = 0;
        I2C_Delay10us();//时间大于4us
    }

    //I2C_SDA = 1;
    //I2C_Delay10us();
    I2C_SCL = 1;
    I2C_Delay10us();
    CY=I2C_SDA;
    I2C_SCL = 0;
    I2C_Delay10us();
    return CY;
}
/*******************************************************************************
* 函 数 名           : I2cReadByte()
* 函数功能       : 使用I2c读取一个字节
* 输    入           : 无
* 输    出           : dat
* 备    注           : 接收完一个字节I2C_SCL=0
*******************************************************************************/

uchar I2C_ReadByte()
{
    uchar a = 0dat = 0;
    I2C_SDA = 1; //起始和发送一个字节之后I2C_SCL都是0
    I2C_Delay10us();
    for(a=0; a<8; a++)//接收8个字节
    {
        I2C_SCL = 1;
        I2C_Delay10us();
        dat <<= 1;
        dat |= I2C_SDA;
        I2C_Delay10us();
        I2C_SCL

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       3625  2017-02-28 16:36  VL53l0x激光测距\i2c.c

     文件       3441  2017-02-28 16:04  VL53l0x激光测距\i2c.c.orig

     文件        451  2017-02-28 16:36  VL53l0x激光测距\i2c.h

     文件        452  2017-02-28 16:18  VL53l0x激光测距\i2c.h.orig

     文件       6297  2017-02-28 21:16  VL53l0x激光测距\i2c.LST

     文件       5393  2017-02-28 21:16  VL53l0x激光测距\i2c.OBJ

     文件       5793  2017-02-28 21:16  VL53l0x激光测距\main.c

     文件      10684  2017-02-28 21:16  VL53l0x激光测距\main.LST

     文件      14076  2017-02-28 21:16  VL53l0x激光测距\main.OBJ

     文件       6376  2009-05-07 14:37  VL53l0x激光测距\STARTUP.A51

     文件      14048  2017-02-28 21:16  VL53l0x激光测距\STARTUP.LST

     文件        749  2017-02-28 21:16  VL53l0x激光测距\STARTUP.OBJ

     文件       9130  2017-01-13 14:50  VL53l0x激光测距\stc.h

     文件      21515  2017-02-28 21:16  VL53l0x激光测距\VL53L0X

     文件        750  2017-02-28 21:16  VL53l0x激光测距\VL53L0X.build_log.htm

     文件        864  2017-02-28 18:05  VL53l0x激光测距\VL53L0X.c

     文件       8233  2017-02-28 16:33  VL53l0x激光测距\VL53L0X.c.orig

     文件        643  2017-02-28 18:05  VL53l0x激光测距\VL53L0X.h

     文件       3521  2017-02-28 21:16  VL53l0x激光测距\VL53L0X.hex

     文件         72  2017-02-28 21:16  VL53l0x激光测距\VL53L0X.lnp

     文件       2072  2017-02-28 21:16  VL53l0x激光测距\VL53L0X.LST

     文件      26010  2017-02-28 21:16  VL53l0x激光测距\VL53L0X.M51

     文件       5172  2017-02-28 21:16  VL53l0x激光测距\VL53L0X.OBJ

    .......     72167  2017-02-28 21:16  VL53l0x激光测距\VL53L0X.uvgui.wnn12

    .......     72165  2017-02-28 18:08  VL53l0x激光测距\VL53L0X.uvgui_wnn12.bak

    .......      6500  2017-02-28 21:16  VL53l0x激光测距\VL53L0X.uvopt

    .......     14267  2017-02-28 18:07  VL53l0x激光测距\VL53L0X.uvproj

    .......      6498  2017-02-28 18:08  VL53l0x激光测距\VL53L0X_uvopt.bak

    .......     14105  2017-02-28 16:36  VL53l0x激光测距\VL53L0X_uvproj.bak

     目录          0  2017-02-28 21:16  VL53l0x激光测距

............此处省略3个文件信息

评论

共有 条评论