PCF8591组件(A/D和D/A转换)


PCF8591.h

#ifndef _PCF8591_H
#define _PCF8591_H

uint8_t getADCvalue(uint8_t chn);
void uint8_tToArray(uint8_t * arry, uint8_t val);

#endif

PCF8591.c

#include <stc15f2k60s2.h>      //检查是否有误
#include "stdint.h"
#include "I2C.h"        //需要用到I2C通信协议
#include "PCF8591.h"

/* 读取当前的ADC转换值,chn-ADC通道号0~3 */
uint8_t getADCvalue(uint8_t chn) {
    uint8_t val;

    I2Cstart();
    if (I2Cwrite(0x48 << 1) == 0) {	//寻址PCF8591,如未应答,则停止操作并返回0
        I2Cstop();
        return 0;
    }
    I2Cwrite(0x40 | chn);	//写入控制字节,选择转换通道
    I2Cstart();
    I2Cwrite((0x48 << 1) | 0x01);  //寻址PCF8591,指定后续为读操作
    I2CreadAck();              //先空读一个字节,提供采样转换时间
    val = I2CreadNak();        //读取刚刚转换完的值
    I2Cstop();

    return val;
}
/* ADC转换值转为实际电压值的BCD码形式,arry-数组指针
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值