【蓝桥杯单片机进阶强化-02】PCF8591的基本原理与A/D转换应用

【1】PCF8591功能概述

      PCF8591是具有IIC接口的8位A/D和D/A转换芯片,具有4路模拟输入一路DAC输出和一个IIC总线接口。其主要的功能特性如下:
      ●单电源供电,典型值为5V。
      ●通过3个硬件地址引脚编址。
      ●8位逐次逼近式A/D转换
      ●片上跟踪与保持电路,采样速率取决与IIC总线速度。
      ●4路模拟输入可编程为单端输入或查分输入。
      ●自动增量通道选择。
      ●带一个模拟输出的乘法DAC

      【蓝桥杯单片机进阶强化-02】PCF8591的基本原理与A/D转换应用

【2】设备地址

      PCF8591的设备地址包括固定部分可编程部分。可编程部分需要根据硬件引脚A0、A1和A2来设置。设备地址的最后一位用于设置数据传输的方向,即读/写位。格式如下图:

      【蓝桥杯单片机进阶强化-02】PCF8591的基本原理与A/D转换应用

      在IIC总线协议中,设备地址是起始信号后第一个发送的字节。如果硬件地址引脚A0、A1、A2均接地,那么,PCF8591的设备的读操作地址为:0x91;而写操作地址则为:0x90

【3】控制寄存器

      在设备地址之后,发送到PCF8591的第二个字节将被存储在控制寄存器中,用于控制器件功能。该寄存器的具体定义如下:

【蓝桥杯单片机进阶强化-02】PCF8591的基本原理与A/D转换应用

      在蓝桥杯单片机设计与开发赛项使用的CT107D单片机开发平台中,PCF8591的三个硬件引脚地址均接地,两路模拟信号均为单端输入,分别是:
      电位器Rb2接到AIN1,通道1;控制寄存器应写入:0x01
      光敏传感器接到AIN3,通道3;控制寄存器应写入:0x03

【4】 A/D转换应用开发流程

      一个A/D转换的周期的开始,总是在发送有效的读设备地址给PCF8591之后,A/D转换在应答时钟脉冲的后沿被触发。PCF8591的A/D转换程序设计流程,可以分为四个步骤:
      1--发送写设备地址,选择IIC总线上的PCF8591器件。
      2--发送控制字节,选择模拟量输入模式和通道。
      3--发送读设备地址,选择IIC总线上的PCF8591器件。
      4--读取PCF8591中目标通道的数据。

    下面以蓝桥杯单片机设计与开发竞赛中,采样可变电阻Rb2的电压为例,展示PCF8591的A/D转换具体代码实现:

void Read_AIN3()
{
	IIC_Start();		//IIC总线起始信号							
	IIC_SendByte(0x90); 	//PCF8591的写设备地址		
	IIC_WaitAck();  	//等待从机应答		
	IIC_SendByte(0x03); 	//写入PCF8591的控制字节		
	IIC_WaitAck();  	//等待从机应答						
	IIC_Stop(); 		//IIC总线停止信号					
	
	IIC_Start();		//IIC总线起始信号									
	IIC_SendByte(0x91); 	//PCF8591的读设备地址		
	IIC_WaitAck(); 		//等待从机应答		
	dat = IIC_RecByte();	//读取PCF8591通道3的数据 			
	IIC_Ack(0); 		//产生非应答信号				
	IIC_Stop(); 		//IIC总线停止信号					
}

【5】进阶强化实训

【蓝桥杯单片机进阶强化-02】PCF8591的基本原理与A/D转换应用

小蜜蜂笔记:广东职业技术学院  欧浩源  [email protected]

【蓝桥杯单片机进阶强化-02】PCF8591的基本原理与A/D转换应用