PCF8591芯片的使用讲课教案
- 格式:doc
- 大小:90.00 KB
- 文档页数:11
delay();
}
return k;
D/A转换:发送给PCF8591的第三个字节被存储到DAC数据寄存器,并使用片上D/A转换器转换成对应的模拟电压。这个D/A转换器由连接至外部参考电压的具有256个接头的电阻分压电路和选择开关组成。模拟输出电压由自动清零单位增益放大器缓冲。这个缓冲放大器可通过设置控制寄存器的模拟输出允许标志来开户或关闭。在激活状态,输出电压保持到新的数据字节被发送。
/Y0~/Y7:输出端(低电平有效)
VCC:电源正
GND:地
4.电路图
5.源程序代码
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define PCF8591 0x90 //PCF8591地址
bit write=0; //写24c02的标志
void delay() //延时4-5个微秒
{;;}
void delay_1ms(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--) ;
}
void start()//开始信号
{
SDA=1;delay(来自;SCL=1;delay();
SDA=0;
delay();
PCF8591是单片、单电源低功耗8位CMOS数据采集器件,具有4个模拟输入、一个输出和一个串行I2C总线接口。3个地址引脚A0、A1和A2用于编程硬件地址,允许将最多8个器件连接至I2C总线而不需要额外硬件。器件地址、控制和数据通道通过两线双向I2C总线传输。
器件功能包括多路复用模拟量输入、片上跟踪和保持功能、8位模数转换和8位数模转换。最大转换速率取决于I2C总线的最高速率。
控制字:发送到PCF8591的第二个字节将被存储在控制寄存器,用于控制器件功能。控制寄存器的高板字节用于允许模拟输出,和将模拟输入编程为单端过查分输入。低半字节选择一个有高板字节定义的模拟输入通道。如果自动增量标志置1,每次A/D转换后通道号将自动增加。
如果自动增量模式是使用内部振荡器的应用中所需要的,那么控制字中模拟输出允许标志应置1。这要求内部振荡器持续运行,因此要防止振荡器启动延时的转换错误结果。模拟输出标志可以在其他时候复位以减少静态功耗。
A/D转换:A/D转换器采用逐次逼近转换技术。在A/D转换周期将来临时片上D/A抓换器和高增益比较器。一个A/D转换周期总是开始于发送一个有效读模式地址给PCF8591之后。A/D转换周期在应答时钟脉冲的后沿被触发,并在传输前一次转换结果时执行。一旦一个转换周期被触发,所选通道的输入电压采样将保存到芯片被转换为对应的8为二进制码。
delay();
}
void init() //初始化
{
SDA=1;
delay();
SCL=1;
delay();
}
uchar read_byte()
{
uchar i,k;
SCL=0;
delay();
SDA=1;
delay();
for(i=0;i<8;i++)
{
SCL=1;
delay();
k=(k<<1)|SDA;//先左移一位,再在最低位接受当前位
sbit SCL=P1^5; //串行时钟输入端
sbit SDA=P3^6; //串行数据输入端
sbit LS138A=P2^0;//138译码器的3位控制数码管的
sbit LS138B=P2^1;
sbit LS138C=P2^2;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //数显管字模
②利用E1、E2和E3可级联扩展成24线译码器;若外接一个反相器还可级联扩展成32线译码器。
③若将选通端中的一个作为数据输入端时,74LS138还可作数据分配器。
④可用在8086的译码电路中,扩展内存。
引脚功能:
A~C:地址输入端
STA(G1):选通端
/STB(/G2A)、/STC(/G2B):选通端(低电平有效)
我实现的AD转换是使用通道0将滑动变阻器两端的电压
AIN0~AIN3:模拟信号输入端。
A0~A2:引脚地址端。
VDD、VSS:电源端。(2.5~6V)
SDA、SCL:I2C总线的数据线、时钟线。
OSC:外部时钟输入端,内部时钟输出端。
EXT:内部、外部时钟选择线,使用内部时钟时EXT接地。
AGND:模拟信号地。
PCF8591芯片的使用
PCF8591芯片的使用
基于PCF8591的AD—DA的程序设计。本设计是通过PCF8591芯片选择通道1将滑动变阻器的电压记过A/D转换,有单片机读回,并在数码管显示,比且有这个数据再经过D/A转换成模拟电压驱动发光二极管。发光二极管的亮度与数码管显示的电压值相对。
1.PCF8591芯片
2.74HC573芯片
74HC573为八位制3态非反转透明锁存器,具有高性能硅门CMOS器件。管脚图如下:
1脚三态允许控制端低电平有效
D0~D7为数据输入端
/Q0~/Q7为数据输出端
3.74LS138芯片
74LS138为3线—8线译码器,引脚图如下:
工作原理:①当一个选通端(E1)为高电平,另两个选通端((/E2))和/(E3))为低电平时,可将地址端(A0、A1、A2)的二进制编码在Y0至Y7对应的输出端以低电平译出。比如:A2A1A0=110时,则Y6输出端输出低电平信号。
}
void stop() //停止信号
{
SDA=0;
delay();
SCL=1;
delay();
SDA=1;
delay();
}
void respons()//应答相当于一个智能的延时函数
{
uchar i;
SCL=1;
delay();
while((SDA==1)&&(i<250))
i++;
SCL=0;
AOUT:D/A转换输出端。
VREF:基准电源端。
地址:I2C总线系统中的每一片PCF8591通过发送有效地址到该器件来激活。该地址包括固定部分和可编程部分。可编程部分必须根据地址引脚A0、A1和A2来设置。在I2C总线协议中地址必须是起始条件后作为第一个字节发送。地址字节的最后一位是用于设置以后数据传输方向的读/写位。(见下图)