蓝桥杯-adc和dac使用(小白专享)

 本文参考该博主而写,这位博主大大写的十分详细,大家有兴趣可以去参考

PCF8591详解(蓝桥杯单片机模块(IIC总线))_WillPower-CSDN博客_pcf8591https://willpower.blog.csdn.net/article/details/115285842

我之所以再 画蛇添足 写这个是因为我想记录一下我作为小白视角如何去使用


很多同学刚开始写的时候,看到pcf8951参数手册一定都是晕的,不知道怎么写,怎么办!其实我也是,我在写这篇文章的时候,依旧搞不清楚!!!但是,这不影响我参加比赛(除非规则改了),正常来说,我们能写出来就行,不用搞原理!!!如果你也是这种心态,那么就继续看下去叭。如果不是,请看上面的博客!!!

强调!有了这篇文章,你不需要再看pcf8951介绍!!!你已经可以进行时间的存放读取数据了!!!

关于这个这个传感器,我们分为两部分进行学习!

注意:DAC部分程序可以实现ADC读取和DAC输出,也就是背DAC就行

ADC部分

(1)写自己驱动

(2)串口验证

DAC部分

(1)写自己驱动

(2)串口验证

ADC部分(不推荐使用)

(1)写自己驱动

这里的驱动也很简单,因为不长,这边建议直接理解背下来!!!

代码已经放在下面!!,我会稍微解释一下,方便你理解记忆!!!

bit b_AdcStart(uchar addr)
{
		bit OK = 0;
		IIC_Start();
		IIC_SendByte(ADCW);
		if(!IIC_WaitAck());
		{
			IIC_SendByte(addr);	
			if(!IIC_WaitAck());
			{
				IIC_Stop();
				IIC_Start();
				IIC_SendByte(ADCR);
				if(!IIC_WaitAck())
				{
					OK = 1;
				}
			}
		}
		return OK;
}


通道函数代码解读:

1:定义标志位 ok

2:开始

3:发送ADC写 0x90

4:判断是否响应成功

5:发送 控制的通道数

6:判断是否响应成功

7:停止

8:开始

9:发送ADC读 0x91

10:判断是否响应成功

11 ok=1

12返回结果

 现在根据芯片资料对代码分析如上

uchar c_AdcRead()
{
	uchar _data;
	_data = IIC_RecByte();
	IIC_SendAck(0);
	return _data;
}

读取函数代码解读:

1:定义接收数据变量

2:读取数据

3:sendack

4:返回结果

(2)串口验证

 DAC部分(推荐使用)

写该部分即可完成ADC读取+DAC输出

 (1)写自己驱动

void DAC_Init(uchar addr,uchar dat)
{
	
	IIC_Start();
	IIC_SendByte(0x90);
	IIC_WaitAck();
	IIC_SendByte(addr);
	IIC_WaitAck();
	IIC_SendByte(dat);
	IIC_WaitAck();
	IIC_Start();
	IIC_SendByte(0x91);
	IIC_WaitAck();
	ADC_init_temp=IIC_RecByte();
    //其中ADC_init_temp是全局变量

}

DAC函数代码解读:

 

1.定义返回变量

2:开始

3:发送ADC写 0x90

4:等待

5:发送地址

6:等待

7:发送数据 +9

8:等待

9:开始

10:发送ADC读 0x91

11:等待

12:返回结果

ADC部分读取

 注意事项:(1)如果温度值不对,可以在发送数据+9基础上进行修改

                   (2)DAC代码参考 at24c02写函数

蓝桥杯-at24c02使用(小白专享)_m0_60524373的博客-CSDN博客https://blog.csdn.net/m0_60524373/article/details/123340419?spm=1001.2014.3001.5501

(3)串口验证

这里的话,就是把读取的数据放到串口上进行打印,方便我们在测试的时候用!

 

 通过DA口电压值判断正确

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值