HDL语言及源代码
根据对DAC0832的数据锁存器和DAC寄存器的不同的控制方式,DAC0832有三种工作方式:直通方式、单缓冲方式和双缓冲方式。
1、单缓冲方式。单缓冲方式是控制输入寄存器和DAC寄存器同时接收资料,或者只用输入寄存器而把DAC寄存器接成直通方式。此方式适用只有一路模拟量输出或几路模拟量异步输出的情形。
2、双缓冲方式。双缓冲方式是先使输入寄存器接收资料,再控制输入寄存器的输出资料到DAC寄存器,即分两次锁存输入资料。此方式适用于多个D/A转换同步输出的情节。
3、直通方式。直通方式是资料不经两级锁存器锁存,即 CS*,XFER* ,WR1* ,WR2* 均接地,ILE接高电平。此方式适用于连续反馈控制线路和不带微机的控制系统,不过在使用时,必须通过另加I/O接口与CPU连接,以匹配CPU与D/A转换。[1]
DAC0832引脚功能电路应用原理图DAC0832是采样频率为八位的D/A转换芯片,集成电路内有两级输入寄存器,使DAC0832芯片具备双缓冲、单缓冲和直通三种输入方式,以便适于各种电路的需要(如要求多路D/A异步输入、同步转换等)。
所以这个芯片的应用很广泛,关于DAC0832应用的一些重要资料: D/A转换结果采用电流形式输出。若需要相应的模拟电压信号,可通过一个高输入阻抗的线性运算放大器实现。运放的反馈电阻可通过RFB端引用片内固有电阻,也可外接。DAC0832逻辑输入满足TTL电平,可直接与TTL电路或微机电路连接。
/*0832各种波型输出演示
P1.1P1.0 = 00时 正弦波
P1.1P1.0 = 01时 锯齿波
P1.1P1.0 = 10时 方波
P1.1P1.0 = 11时 三角波
需要连接的导线:(1)译码器Y0接DAC0832的CS
(2)P3.6即XWR插孔接DAC0832的WR
(3)8芯的排线连接8排针的P0口和DAC0832的D7-D0
(4)串并转换区的+5v接DAC0832的参考电压Vref插孔 */
#include 《reg51.h》
sbit P1_1=P1^1;
sbit P1_0=P1^0;
#include 《ABSACC.H》//absacc.h是C51中绝对地址访问函数的头文件
#define daport XBYTE[0x8000]//将daport定义为外部I/O口,地址为8000H,则74ls138的
Y0有效
unsigned char i,j,k;
bit updown; //三角波的上升/下降
unsignedchar code
sinn[64]={198,204,210,216,222,228,233,237,242,245,249,251,253,255,255,255,
255,254,252,250,247,243,239,235,230,224,219,213,207,201,194,188, 181,175,169,163,158,152,147,143,139,136,133,131,129,128,128,128, 129,130,132,135,138,142,146,151,156,162,168,174,180,186,193,199};
//正弦的数值在128-255之间,所以输出的正弦幅值在0-5v
void main(void)
{
updown=0;
i=128; j=0;
while(1)
{
if (P1_1==1)
{
if (P1_0==0) //输出占空比为25%的方波
{
if (j《=40) i=255;//i=255时输出的电压为+5v
else if(j《=160) i=0;//i=0时输出的电压为-5v
else j=0;
}
else //输出-5v—+5v的三角波
{
if (updown==0) //上升
{
if (i==255) updown=1;
else i=i+5;//i++;
}
else //下降
{
if (i==0) updown=0;//if(i==128) updown=0;i=128输出的电压为0
else i=i-5;//i--;
}
}
}
else
{
if (P1_0==0) //正弦波
{
i=sinn[j];
if (j》=63) j=0;
}
else //锯齿波
{
if (i==255) i=128;
else i++;
}
}
daport=i;
for (k=0;k《2;k++);
j++;
}
}
全部0条评论
快来发表一下你的评论吧 !