1.数模/模数转换的目的:生活中常见的物理量如温度、流量、压力、位移、速度等都是一种模拟量。但是,计算机只能处理0、1的数字量,此时就需要将模拟量转为数字量。与此同时,MCU对模拟量设备进行控制时,如控制电动调节阀、模拟记录仪等,需要将MCU输出的数字量转为模拟量。
2.DAC简介:数模转换器DAC(Digital to Analog Converter)是一种能够将数字信号转换成正比的电压或者电流信号,即模拟信号。
3.数模转换器DAC0832:DAC0832是一种常见的模数转换器,其结构图如下。
DAC0832与单片机有三种接线方式,本文中采用的是直通方式。具体的操作可自行查看DAC0832的数据手册。
4.本文中是利用DAC0832生成三角波。需要注意的时,在DAC0932后面需要连接一个运算放大器将电流信号转为电压信号。DAC0832与AT89C52的电路图如下:
5.代码如下:
#include <reg52.h>
#include <absacc.h>
#define uint unsigned int
#define uchar unsigned char
#define DAC0832 XBYTE[0x7fff] //定义端口地址
void DelayMS(uint ms)
{
uchar i;
while(ms--)
{
for(i = 0;i < 120;i++)
{
;
}
}
}
void main()
{
uchar i,k;
while(1)
{
if(k == 0)
{
i++;
DAC0832 = i;
// DAC0832 = 1;
if(i == 255)
{
k = ~k;
}
// k = ~k;
DelayMS(1);
}
else
{
i--;
DAC0832 = i;
//DAC0832 = -1;
if(i == 0)
{
k = ~k;
}
// k = ~k;
DelayMS(1);
}
}
}
6.运行结果:
7.总结:DAC与ADC转换在MCU中是十分重要的。因为计算机只能处理0、1的数字量,所以需要将输入的模拟量转为数字量。同理,计算机只能输出0、1的数字量,对于需要模拟量控制的设备,需要将计算机输出的数字量转为模拟量。