第十三届蓝桥杯单片机组—PCF8591使用

00_了解PCF8591

    蓝桥杯的PCF8591是ADC/DAC驱动芯片,大家一定熟看手册,因为考试的时候是没有书籍和程序参考的,只能看手册来编写。
PCF8591芯片手册

01_PCF8591手册主要部分解读

在这里插入图片描述
    上图是fixed part 为PCF8591的器件地址,固定为0x90,后面A2-A0为可编程部分,在蓝桥杯比赛中可以不用管,因为给的单片机开发板是固定为000,如下图;所以我只用关心R/|W来实现读写。由芯片手册可以看出来,R/|W位为高电平时是读操作,低电平时是写操作。
在这里插入图片描述

控制字节

    控制字节一共八位,主要用来控制A/D and D/A 转换,选择所输入输出的通道,别的作用在竞赛中大可不必了解,也没必要。我们得秉承一个原则,“有用的我们学,没用的就只看看”。从左往右,我把各位编号为D1-D8,从下图可以看出,D1和D5被固定设置为0,所以现在我们只用关心没有被固定设置的部分。
在这里插入图片描述
在这里插入图片描述

02_程序部分

ADC部分程序

unsigned char PCF8591_ADC(void){
	unsigned char temp;
	
	IIC_Start();
	IIC_SendByte(0x90);//device address
	IIC_WaitAck();
	
	IIC_SendByte(0x03); //选择输出通道
	IIC_WaitAck();
	
	IIC_Start();
	IIC_SendByte(0x91);//设置RW为高电平,则表示读数据
	IIC_WaitAck();
	
	temp = IIC_RecByte();
	IIC_SendAck(1);
	IIC_Stop();
	return temp;
}

DAC部分程序

void PCF8591_DAC(unsigned char dac){
	
	IIC_Start();
	IIC_SendByte(0x90);//device address
	IIC_WaitAck();
	
	//0x43 = 0x40 + 0x03,0x40表示使能DAC,0X03表示三号输入通道
	IIC_SendByte(0x43);
	IIC_WaitAck();
	
	IIC_SendByte(dac);
	IIC_WaitAck();
	IIC_Stop();
}

03_总结

    蓝桥杯中,对PCF8591的考察不难,我们只用知道器件地址,通道设置,读写设置等主要部分,其他的位只用了解即可。除此之外,我们最重要的还是要了解IIC的工作流程,才能学会如何调用函数。大家动手做一遍吧!

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沉迷学习的拿铁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值