ATC89C51 仿真 数模转换器DAC0832
实训报告十一
实训目的:
通过DAC0832作为D/A转换器,在虚拟显示正弦波或三角波,从而了解DAC0832的工作方式,把数字量转化为模拟量,学会利用c语言编程实现输出正弦波、三角波等波形。 实训原理图:
ATC89C51 仿真 数模转换器DAC0832
实训步骤:
1. 在ptoteus平台找出所需的元器件
2. 理解该实验的原理,按照原理图画出仿真图;
3. 根据实验要求写出如下程序:
#include <reg51.H>
#include<absacc.h>
#define DAC0832 XBYTE[0X12ef]
unsigned char sindot[64]=
{0x80,0x8c,0x98,0xa5,0xb0,0xbc,0xc7,0xd1,
0xda,0xe2,0xea,0xf0,0xf6,0xfa,0xfd,0xff,
0xff,0xff,0xfd,0xfa,0xf6,0xf0,0xea,0xe3,
0xda,0xd1,0xc7,0xbc,0xb1,0xa5,0x99,0x8c,
0x80,0x73,0x67,0x5b,0x4f,0x43,0x39,0x2e,
0x25,0x1d,0x15,0xf,0x9,0x5,0x2,0x0,0x0,
0x0,0x2,0x5,0x9,0xe,0x15,0x1c,0x25,0x2e,
0x38,0x43,0x4e,0x5a,0x66,0x73};//正弦代码表
sbit K1=P2^7;//控制开关,
void delay(unsigned char m)//延时
{ unsigned char i;
for(i=0;i<m;i++);
}
void main(void)
{unsigned char k;
while(1)
ATC89C51 仿真 数模转换器DAC0832
{ if (K1==0)//K1为1时,输出三角波,K1为0时,输出为正弦波
{for(k=0;k<64;)
{ DAC0832=sindot[k];//取正弦代码并输出
k++;
delay(10);
}
}
else
{ for(k=0;k<255;)
{ DAC0832=k;
k+=5;
delay(1);
}
for(k=255;k>0;)
{ DAC0832=k;
k-=5;
delay(1);
}
}
}
}
总结:
经过此次的实验,通过DAC0832作为D/A转换器,在虚拟显示正弦波或三角波,深刻地理解了DAC0832的结构以及工作方式。在C语言的设计上进一步理解了D/A的工作时钟模式从而进行模拟数据采样,对三角波、正弦波的设计方式有深刻地体会。