PCF8591是单片、单电源低功耗8位CMOS数据采集器件,具有4个模拟输入、一个输出和一个串口I2C总线接口。3个地址引脚A0、A1、A2用于硬件地址编址,允许将最多8个器件连接至I2C总线而不需要额外硬件。器件的地址、控制和数据通过两线双向I2C总线传输。器件功能包括多路复用模拟输入、片上跟踪和保持功能、8位模数转换和8位数模转换。最大转换速率取决于I2C总线的最高速率。
(1)引脚定义
1、2、3、4引脚为4个8位ADC通道,可通过软件选择读取的通道号。5、6、7引脚为地址输入脚,分别接地或接高,确定器件硬件地址。PCF8591的地址分为固定部分和可编辑部分,高四位固定为1001,低半字节前三位分别由A2、A1、A0确定,最低位为读/写选择位,“0”时为写操作,“1”时为读操作。器件地址必须是起始条件后第一个发送的字节。8、16引脚分别接地和电源。13、14引脚分别为模拟地和参考电压。9、10引脚为I2C总线的数据线和时钟线,需接10K上拉电阻,以使信号线保持高电平。11号引脚为外部时钟输入脚,当使用内部时钟方式时悬空。12号引脚为外部时钟选择脚,当其接高时选择外部时钟工作方式。15号脚为模拟信号输出脚,由控制字的第二位使能模拟输出。
(2)控制字
跟随于器件地址之后的第二个字节数据,存储于控制寄存器,控制器件功能。控制字最高位和第五位必须为0,第二位为模拟出书使能位,“1”时允许模拟输出,第3、4位为输入模式选择,第六位为自动增量位,"1"时,每次AD转换后通道号自动增加。最低两位为ADC通道选择位。
(3)AD转换
PCF8591采用8位初次逼近式ADC,一个AD转换周期总是开始于发送一个控制字之后,一旦一个转换周期被触发,所选通道的输入电压采样将保存到芯片并被转换为对应的8位二进制码。转换结果被保存在ADC数据寄存器等待传输。最高AD转换速率取决于实际的I2C总线速度。
操作时序:
/****************************************************************
函数名称:Read_ADC
函数功能:读取AD转换后的8位数值
入口参数:channel //选择ADC通道(0-3)
出口参数:value //AD转换后的8 bit数字量
备 注:
*****************************************************************/
unsigned char Read_ADC(unsigned char channel)
{
unsigned char value;
Start_I2c();
Send_Byte(0x90);//发送器件地址
Send_Byte(0x40+channel);//发送控制字
Start_I2c();
Send_Byte(0x91);//发送器件地址,最低位置1,表示读数据
value=Rcv_Byte();//将读取的数据赋给value变量
NoAck_I2c();//主机发送非应答信号
Stop_I2c();
return (value);
}
(4)DA转换
发送给PCF8591的第三字节被存储到DAC数据存储器,并使用片上DA转换器转换成对应的模拟电压。使用DA转换需将控制字第二位置1,使能模拟输出。
/****************************************************************
函数名称:Write_DAC
函数功能:向PCF8591发送8位数字量进行DA转换
入口参数:dat //需转换的数字量
出口参数:
备 注:
*****************************************************************/
void Write_DAC(unsigned char dat)
{
Start_I2c();
Send_Byte(0x90); //发送器件地址,最低位为0,表示向从机械数据
Send_Byte(0x40);//发送控制字,第四位必须置1,表示允许模拟输出
Send_Byte(dat); //发送8位数字量
Stop_I2c();
}
用户1822132 2014-11-28 13:02
用户377235 2013-12-25 15:22
有几个地方写错了。但总体写的很好,对初学者很有帮助
用户448811 2013-8-12 09:00
有点简略
用户1687272 2013-1-28 10:04
用户377235 2012-11-5 20:54
图片依然看不见
用户420485 2012-11-1 15:35
用户1675826 2012-10-21 20:47
用户1406942 2012-9-6 08:19
用户347025 2012-8-24 16:34
用户418381 2012-4-19 21:47
多谢分享