之前一直没做过da转换,于是想仿真来看看,谁知道严格按照datasheet来做,仿真结果还是出不来,我看啊看,想啊想,还是想不通,这是我刚开始的仿真图:
检查了十几二十遍都觉得没有问题,由此苦恼了两个星期,今天茅塞顿开,发现了是GND和VCC的问题,仿真图中的GND和VCC太多了,而他们在仿真时并不是默认是同一个,而且dac0832还有数字地和模拟地之分,于是我把原理图简化规范如下:
我把所有的GND和VCC都接在一起了(通过网络标号),芯片马上正常工作,其实这只是protues使用的错误,要是的画板,上面两个图是一样的。
我的程序如下,来产生一个三角波:
#include<reg52.h>
#define uchar unsigned char
#define uint unsinged int
sbit cs=P2^0;
sbit wr1=P2^1;
sbit wr2=P2^2;
uchar i,j;
//延时ims函数
void delay( int i)
{
int x,y;
for(x=29;x>0;x--)
for(y=i;y>0;y--) ;
}
void init()
{
cs=0;
wr1=0;
wr2=0;//直通方式
}
void main()
{
init();
while(1)
{
for(i=0;i<0xff;i++)
{
P0=i;
delay(10);
}
for(j=0xff;j>0;j--)
{
P0=j;
delay(10);
}
}
}
仿真如下:
这次的仿真让我对protues的使用更了解了。。。。。。。。。
写日记只为给生活留下点回忆,此外,一无是处。