蓝桥杯单片机CT107D ADC

ADC转换需要写入PCF8591三个字节:
(1)0x90,器件地址及写控制位;
(2)0x01光敏电阻(0x03电位器),选择输入控制位;
(3)0x91,器件地址及读控制位;
在这里插入图片描述
固定地址部分为 ‘1001’,
可编程地址部分为A2、A1、A0为‘000’;
地址+读= 1001 0001 即‘0x91’;
地址+写= 1001 0000 即‘0x90’;

光敏电阻接AIN1 0x01
Rb2电位器接AIN3 0x03
在这里插入图片描述
主要分两步
第一步:adc初始化 adc_init()

void adc_init(uint8 ch)  //ch为0x01时光敏电阻,ch为0x03时Rb2电位器
{
	IIC_Start(); 
	IIC_SendByte(0x90); // 地址+写
	IIC_WaitAck();
	IIC_SendByte(ch);  //写入选择输入控制位;
	IIC_WaitAck();
	IIC_Stop();
}

第二步:读取ADC转换值 uint8 get_adc()

uint8 get_adc()
{
	uint8 dat;
	IIC_Start(); 
	IIC_SendByte(0x91); // 地址+读
	IIC_WaitAck();
	dat=IIC_RecByte();   //读取转换值
	IIC_Ack(0); 
	IIC_Stop();
	return dat;
}

最后可以加一个DAC转换 void adc_set(uint8 dat)
DAC转换需要写入PCF8591三个字节:
(1)0x90,器件地址及写控制位;
(2)0x40,DAC输出模式;
(3)dat,输入要转换的数据(0~255);
模拟输出量Vout= VREF/255*dat; (VREF为参考电压mv)

void adc_set(uint8 dat)
{
	IIC_Start(); 
	IIC_SendByte(0x90); // 地址+写
	IIC_WaitAck();
	IIC_SendByte(0x40);// DAC输出模式
	IIC_WaitAck();
	
	IIC_SendByte(dat);  ;//DAC写入数据
	IIC_WaitAck();
	IIC_Stop();
}

工程模板:https://download.csdn.net/download/qq_41676952/11126460

  • 8
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值