PCF8591芯片在数模转换电路中的应用研究
2016-03-03徐锦钢鄢江西师范大学科学技术学院江西机电职业技术学院
徐锦钢鄢 妍/.江西师范大学科学技术学院 .江西机电职业技术学院
PCF8591芯片在数模转换电路中的应用研究
徐锦钢1鄢 妍2/1.江西师范大学科学技术学院 2.江西机电职业技术学院
本文阐述了PCF8591芯片在数模转换电路中的软硬件设计方法,设计和绘制了使用PCF8591生成正弦波信号的电路图,并使用proteus仿真软件进行了测试,通过使用虚拟示波器观察波形的方法验证了数模转换电路设计的正确性,并给出了电路图和部分C语言源程序代码。
PCF8591;数模转换;仿真
引言
数模转换(D/A)是将离散的数字信号转化为连续变化的模拟信号,例如我们在单片机系统中经常要将输出的数字量转化为具有一定波形规律的电流、电压等模拟信号(正弦波、方波等),从而驱动负载进行工作。在具体设计中,通常采用专用的D/A芯片完成数模转换功能,D/A芯片种类繁多,本文以PCF8591为例,阐述数模转换电路的软硬件设计方法。
1.PCF8591芯片简介
PCF8591是一种兼有A/D模数转换和D/A数模转换功能的芯片,转换精度为8bits。它具有4个模拟输入、1个模拟输出和1个IIC总线接口。最大转换速率由IIC总线的最大速率决定。
2.电路连接
图1 电路连接图
电路连接如上图1所示,使用proteus绘制,主要包括PCF8591、1个发光二极管和1个观察波形用的虚拟示波器。PCF8591的第9脚(SDA)和第10脚(SCL)分别接单片机的P2.0和P2.1,表示PCF8591和单片机通过IIC总线形式进行信息的读写交互,在做D/A转换时,单片机通过SDA和SCL引脚将数字量送人PCF8591中去等待数模转换;第5脚(A0)、第6脚(A1)和第7脚(A2)接地,表示PCF8591的外部器件地址为0;第12脚(EXT)接地,表示PCF8591使用其内部时钟进行工作;第15脚(AOUT)为转换完后对外输出的模拟量[1],为便于观察转换效果,该引脚外接了1个发光二极管和1个虚拟示波器,如果电路设计合理并且程序编写正确的话,发光二极管应该产生从暗渐变为亮的效果,同时虚拟示波器上可以观察到规则的正弦波。
3.PCF8591数模转换测试程序
本文编写了一个完整的PCF8591数模转换测试程序,主要包括IIC总线启动函数、IIC总线停止函数、IIC总线应答函数、发送字节函数以及写入DA数模转换函数。下面给出其中的2个函数作为示例,并给出程序注释。
void Start()//IIC总线启动函数
{
Sda=1;//Sda、Scl先置高
_nop_();
Scl=1;
_nop_();
Sda=0;//Sda、Scl再清零
_nop_();
Scl=0;
}
Sda、Scl先置高,后清零就完成了IIC总线的启动工作[2]。
void Send(unsigned char Data)//发送1个字节函数
{
unsigned char BitCounter=8;
unsigned char temp;
do
{
temp=Data;//Data为要发送的数
Scl=0;
_nop_();
if((temp&0x80)==0x80)//如果Data最高位为1
Sda=1;//将Sda置为1
else
Sda=0;//否则将Sda清为0
Scl=1;
temp=Data<<1;//Data
Data=temp;
BitCounter--;
}
while(BitCounter);
Scl=0;
}
4.电路功能测试
按照图1搭好电路后,将下面的正弦波编码通过IIC总线送入到PCF8591中去,数模转换后,AOUT口就能输出按照正弦波规律变化的模拟电压信号,最后在示波器上呈现出正弦波,同时发光二极管也会出现亮、灭、较暗、较亮的状态变化,见下图2所示。
uchar code SinWave[32]= {//正弦波编码
127, 152, 176, 198, 217, 233, 245, 252,
图2 测试结果
5.结束语
本文采用AT89S52单片机作为控制器,设计了基于PCF8591的数模转换电路,论述了PCF8591的工作原理,给出了部分测试程序,并加以注释。通过测试,该电路能够正常工作。
[1]PCF8591芯片手册[DB/OL].百度文库,1997-04.
[2]黄智伟.全国大学生电子设计竞赛训练教程[M].北京:电子工业出版社,2006-06.
徐锦钢(1983-),男,江西高安人,讲师,硕士研究生,研究方向:自动化装置软硬件研制。