D/A: 基于STC89C52与DAC0832的D/A设计详解

发布者:琴弦悠扬最新更新时间:2016-03-08 来源: eefocus关键字:STC89C52  DAC0832 手机看文章 扫描二维码
随时随地手机看文章
一. 硬件设计详解

 
1) D/A转换原理
数字量是用二进制代码按数位组合起来表示的,对于有权码,每位代码都有一定的权。为了将数字量转换
成模拟量,必须将每1位的代码按其权的大小转换成相应的模拟量,然后将这些模拟量相加,即可以得到与
数字量成正比的总模拟量,从而实现数模转换。
2) D/A转换器类型
D/A转换器包括权电阻网络D/A转换器,倒T形电阻网络D/A转换器,具有双极性输出的D/A转换器。
3) D/A转换器的参数指标
a. 分辨率
D/A转换器模拟输出电压可能被分离的等级数。n位D/A转换器的分辨率可表示为1/(2的n次方-1)
b. 转换误差
表示D/A转换器实际输出的模拟量与理论输出模拟量之间的差别。
c. 建立时间
输入数字量变化时,输出电压变化到相应稳定电压值所需时间。
d. 转换速率
大信号工作状态下模拟电压的变化率。
e. 温度系数
输入不变的情况下,输出模拟电压随温度变化产生的变化量。
一般用满刻度输出条件下温度每升高1度,输出电压变化的百分数作为温度系数。
4) DAC0832说明
a. 引脚图

/CS - 片选信号输入端,低电平有效
/WR1 - 输入寄存器的写选通输入端,负脉冲有效(脉冲宽度应大于500ns). 当CS为0,ILE为1,WR1有效时
DI0~DI7状态被锁存到输入寄存器。
DI0~DI7 - 数据输入端,TTL电平,有效时间应大于90ns.
Vref - 基准电压输入端,电压范围为-10V~+10V
Rrb - 反馈电阻端,芯片内部此端与Iout1接有一个15k欧姆的电阻。
Iout1 - 电流输出端,当输入全1时,其电流最大。
Iout2 - 电路输出端,其值与Iout1端电流之和为一常数。
/XFER - 数据传输控制信号输入端,低电平有效
/WR2 - DAC寄存器的写选通输入端,负脉冲有效(脉冲宽度应大于500ns).当XEFR为0且WR2有效时,
输入寄存器的状态被传到DAC寄存器中。
ILE - 数据锁存允许信号输入端,高电平有效。
Vcc - 电源电压端,电压范围+5V~+15V
GND - 模拟地和数字地,模拟地为模拟信号与基准电源参考地;数字地为工作电源地与数字逻辑地
(两地最好在基准电源处一点共地)
b. dac0832操作时序图

/cs为低电平后,数据总线上数据才开始保持有效,然后再将/WR置低,从Iout1线上可看出,在/WR置地ts后
D/A转换结束,Iout输出稳定。若只控制完成一次转换的话,接下来将/WR和/CS拉高即可,若连续转换则
只需要改变数字端输入数据。
 
二. 实例详解
实例1:用单片机控制DAC0832芯片输出电流,让发光二极管D12(D12与数据输出接口相连,
即DA转换的结果可以通过D12反应出来)由灭均匀变到最亮,再由最亮均匀熄灭,完成这个周期时间控制在5s左右,循环变化。
程序模块说明:
    DA
 
程序源码:
#include
 
#define uchar unsigned char
#define uint unsigned int
 
sbit dula = P2 ^ 6;
sbit wela = P2 ^ 7;
sbit dawr = P3 ^ 6;
sbit dacs = P3 ^ 2;
 
void delayms(uint xms);
 
void main()
{
    uchar val, flag;
 
    dula = 0;
    wela = 0;
    dacs = 0;
    dawr = 0;
    P0 = 0;
    while (1)
    {
        if (flag == 0)
        {
            val += 5;
            P0 = val;
            if (val == 255)
            {
                flag = 1;
            }
            delayms(50);
        }
        else
        {
            val -= 5;
            P0 = val;
            if (val == 0)
            {
                flag = 0;
            }
            delayms(50);
        }
    }
}
 
void delayms(uint xms)
{
    uint i, j;
 
    for (i = xms; i > 0; i--)
        for (j = 110; j > 0; j--)
            ;
}
 
程序小结:
1)标志位flag判断单片机执行灯变亮程序还是变暗。
2) val += 5; val -= 5 实现数据的均匀变化。
3) 延时计数, 255共有51个5,每次延时50ms,共计50*51=2551ms,即半个周期为2.5s, 那么一个周期刚好约5s.
4) P0用于向DAC0832送入数据。
5) dula = 0; wela = 0关闭数码管段选,位选,防止P0送入的数据影响到数码管。
关键字:STC89C52  DAC0832 引用地址:D/A: 基于STC89C52与DAC0832的D/A设计详解

上一篇:串行口通信(STC89C52+MAX232):串行口通信硬件设计详解
下一篇:A/D: 基于STC89C52与ADC0804的A/D设计详解

推荐阅读最新更新时间:2024-03-16 14:46

如何实现高精度高稳定性的DA输出
在实际应用中,很多时候需要输出电压,电流等信号,特别是在工控行业中,4-20mA的转换经常要用到,如果采用AD421芯片来做的话,可以轻易实现一个16位的DA输出电路,但是成本颇高,在很多的项目中用不上如此昂贵的芯片。   既然现在很多的仪表中都使用了单片机,为何不用单片机的PWM输出来做一个DA呢?   实践表明,这样完全可行,PWM可以通过定时器来产生,然后经过一个转换电路,可以实现一个隔离的DA输出。   后页是该电路:   该电路来源于实际应用!用该电路做隔离的4-20mA或者是1-5V的变换电路,可以达到0.5‰的精度以下,同时成本很低。   PWM经过光耦隔离后,由于波形可能发生畸变,所以,经过一个门电路来整形。然后经
[工业控制]
如何实现高精度高稳定性的<font color='red'>DA</font>输出
51单片机—DAC0832—06—①
DAC0832~相信大家都不陌生,想整理整理这个,三种方法吗~~所以这个也得两三篇吧~~慢慢来~~ 这一篇还是比较简单的介绍,不过也有注意的~~ 1、DAC0832的简介 1)DAC0832的引脚 当然第一就得是引脚,由于网上的这个东西比较多,那我就粘贴了~~ 2)DAC0832的内部结构(这个对于理解1还是很重要的~~ ,呵呵,这个应该放在1处) 这里一定注意了: 8位输入寄存器用于存放CPU送来的数字量,使得输入的数字量得到缓冲和锁存,由/LE1来控制。 8位DAC寄存器用于存放待转换的数字量,由/LE2控制 都是低电平有效啊~~ (当他们所对应的引脚都有效的时候,它们俩是高电平~~
[单片机]
51单片机—<font color='red'>DAC0832</font>—06—①
【51单片机STC89C52】IO口模拟PWM控制SG90舵机
一、PWM PWM ,英文名 Pulse Width Modulation ,是脉冲宽度调制缩写,它是通过对一系列脉冲的宽度进 行调制,等效出所需要的波形(包含形状以及幅值),对模拟信号电平进行数字编码,也就是说通 过调节占空比的变化来调节信号、能量等的变化,占空比就是指在一个周期内,信号处于高电平的 时间占据整个信号周期的百分比,例如方波的占空比就是50%. 占空比 : 一个周期内,高电平占据时长的百分比 STC89C52没有集成PWM功能,可以通过IO口软件模拟,相对硬件PWM来说精准度略差 二、关于舵机控制原理 舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围内的
[单片机]
【51单片机<font color='red'>STC89C52</font>】IO口模拟PWM控制SG90舵机
中规模集成电路功能测试仪的设计方案
  集成电路的测试技术随着集成电路开发应用的飞速发展而发展。集成电路测试仪也从最初测试小规模集成电路发展到测试中规模、大规模和超大规模集成电路。集成电路测试仪按测试门类可分为:数字集成电路测试仪、存储器测试仪、模拟与混合信号电路测试仪、在线测试系统和验证系统等。目前市场上的测试仪产品功能较单一,价格非常昂贵,给电路的测试、维护带来不便。因此,研究开发简单快捷、具有一定智能化的集成电路测试仪有很高的实用价值 。   在高等学校的电子实验教学中,经常要用到如模数转换器(ADC )、数模转换器(DAC)、555集成定时电路、3524开关电源控制器等中规模集成电路。由于学生通常是初次接触使用芯片,经常会由于操作不当造成电路芯片的损伤或损
[测试测量]
中规模集成电路功能测试仪的设计方案
STC89C52RC单片机控制步进电机仿真与程序
本单片机是STC89C52RC,本程序应用于step motor--28BYJ,小型步进电机, 供电电压DC5V,可直接接于单片机通过ul2003驱动芯片驱动,数码管是共阴极接口, 控制步进电机启动/停止,正反转,加减速,并有运行,及转换状态显示。 是初学者的好例程。 实物图: 仿真原理图如下 单片机源程序如下: /*本单片机是STC89C52RC,本程序应用于step motor--28BYJ,小型步进电机, 供电电压DC5V,可直接接于单片机通过ul2003驱动芯片驱动,数码管是共阴极接口,*/ #include STC89C5xRC.H #define uchar unsi
[单片机]
<font color='red'>STC89C52</font>RC单片机控制步进电机仿真与程序
基于脉冲计数法的多量程电容电阻测试仪的设计
  常用的 测量电阻 和电容的方法主要有纯模拟电路法、PLC法。采用纯模拟电路法设计电阻电容测试仪,可以避免编程的麻烦,但是电路复杂、灵活性差、测量精度低;采用PLC法设计的电阻电容测试仪速度快、体积小、可靠性和精度好,但是价格昂贵。采用“脉冲计数法”设计电阻、电容测试仪,把电子元件的参数转换成频率信号,用单片机计数后再求出电阻或电容值,而频率是单片机很容易处理的数字量。本文采用“脉冲计数法”设计电阻 电容测试仪 ,此测试仪不仅能克服传统测试仪的种种弊端,而且增设了记忆功能和警示信号功能,使测试仪更加智能化。   1 系统总体设计   本文设计的电阻电容测试仪的系统结构框架如图1所示,系统主要由用户控制端、单片机、液晶屏、电阻
[单片机]
基于脉冲计数法的多量程电容电阻测试仪的设计
STC89C52RC单片机额外篇 | 04 - 认识头文件<intrins.h>与_nop_函数
1 intrins.h 头文件 头文件 intrins.h 在我们51单片机日常开发中经常使用,特别是_nop_()函数,以下是 intrins.h 的内容: /*-------------------------------------------------------------------------- INTRINS.H Intrinsic functions for C51. Copyright (c) 1988-2010 Keil Elektronik GmbH and ARM Germany GmbH All rights reserved. --------------------------------
[单片机]
<font color='red'>STC89C52</font>RC单片机额外篇 | 04 - 认识头文件<intrins.h>与_nop_函数
51单片机-STC89C52系列学习第二篇之寄存器学习
学习单片机实际上就是学习如何操作寄存器。 51单片机使用sfr来定义具有特殊功能的寄存器。 如:sfr P1 = 0x90; 如果你想使用P1口的第1位来点亮LED灯,假设高电平点亮,可以这样做: 法一: sfr P1 = 0x90;//定义P1寄存器的地址 sbit P1.0 = 0x90;//定义P1寄存器的第一位的地址 P1.0 = 1;//点亮LED灯 法二: sfr P1 = 0x90;//定义P1寄存器的地址 sbit LED = P1^0; LED = 1; 下面为一些常用寄存器:
[单片机]
51单片机-<font color='red'>STC89C52</font>系列学习第二篇之寄存器学习
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved