记录开发过程中的问题和功能。毕se代做,小家电开发。 收徒带做企业级项目,帮助毕业生和转行人员顺利找到工作。

LiSun

记录开发过程中的问题和功能。毕se代做,小家电开发。 收徒带做企业级项目,帮助毕业生和转行人员顺利找到工作。

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


/* -----------------------------------------宏定义-----------------------------------------*/

/* -----------------------------------------头文件-----------------------------------------*/
#include "main.h"

/* -----------------------------------------结构体定义-------------------------------------*/
code IIC_TYPE PCA9540BD = {2, 0xE0};
/* -----------------------------------------全局变量定义-----------------------------------*/

/* -----------------------------------------应用程序---------------------------------------*/
void PCA9540BD_Init(void)
{
    IIC_Init();          // I2C初始化
}

/*********************************************
函数名:PCA9540BD_Write_DATA
功  能:写 地址 数据
形  参:addr 地址   dat 数据
返回值:
备  注:
作  者:薛建强
时  间:2020/05/09
**********************************************/
void PCA9540BD_Write_DATA(const uint8_t addr, const uint8_t DATA)
{
    if (addr);
    IIC_Start();                 // 启动
    IIC_WriteByte(PCA9540BD.ADDR); // 设备地址
    IIC_Wait_ACK();              // 等待数据响应
    IIC_WriteByte(DATA);         // 发送数据
    IIC_Wait_ACK();              // 等待数据响应
    IIC_Stop();                  // 停止
}
/*********************************************
函数名:PCA9540BD_Read_DATA
功  能:读地址数据
形  参:addr--寄存器地址
返回值:
备  注:
作  者:薛建强
时  间:2020/05/09
**********************************************/
uint8_t PCA9540BD_Read_DATA(const uint8_t addr)
{
    uint8_t GET_DATA = 0;
    if (addr);
    IIC_Start();                        // 启动
    IIC_WriteByte(PCA9540BD.ADDR | 1);  // 发送地址
    IIC_Wait_ACK();                     // 等待数据响应

    GET_DATA = IIC_ReadByte();          // 获取数据
    IIC_Wait_ACK();                     // 等待数据响应

    IIC_Stop();                         // 停止
    return GET_DATA;
}

/*********************************************
函数名:PCA9540BD_Switch_Ch
功  能:选择IIC通道
形  参:0--IIC0 1--IIC1
返回值:
备  注:
作  者:薛建强
时  间:2020/05/09
使  用:
**********************************************/
void PCA9540BD_Switch_Ch(const uint8_t ch)
{
    if (ch == 0)
    {
        PCA9540BD_Write_DATA(0, 0x04);
    }
    else if (ch == 1)
    {
        PCA9540BD_Write_DATA(0, 0x05);
    }
}


/*********************************************
函数名:PCA9540BD_Switch_Ch
功  能:关闭IIC通道
形  参:
返回值:
备  注:
作  者:薛建强
时  间:2020/05/09
使  用:
**********************************************/
void PCA9540BD_Off_Ch(void)
{
    PCA9540BD_Write_DATA(0, 0x00);
}
#ifndef _PCA9540BD_H
#define _PCA9540BD_H
/* -----------------------------------------宏定义-----------------------------------------*/

/* -----------------------------------------头文件-----------------------------------------*/
#include "main.h"

/* -----------------------------------------结构体定义-------------------------------------*/

/* -----------------------------------------全局变量定义-----------------------------------*/

/* -----------------------------------------应用程序---------------------------------------*/
void    PCA9540BD_Init(void);
void    PCA9540BD_Write_DATA(const uint8_t addr, const uint8_t DATA);
uint8_t PCA9540BD_Read_DATA(const uint8_t addr);
void PCA9540BD_Switch_Ch(const uint8_t ch);
void PCA9540BD_Off_Ch(void);
#endif

posted on 2022-08-13 11:01  嵌入式单片机实验室  阅读(58)  评论(0)    收藏  举报
记录开发过程中的问题和功能。毕se代做,小家电开发。 收徒带做企业级项目,帮助毕业生和转行人员顺利找到工作。