STC89C52与8位D/A转换器DAC0832的接口设计
一、DAC0832芯片----电流输出型D/A转换器
- 8位并行输入方式
- 分辨率19.5mV (VREF = 5V)
- 电流建立时间1μS
- 输入与TTL电平兼容
- 单一电源供电(+5V~+15V)
- 低功耗,20mw
1、引脚功能:
DI0~DI7:8位数字信号输入端,与单片机的数据总线P0口相连,用于接收单片机送来的待转换为模拟量的数字量,DI7为最高位。
:片选端,为低电平时,本芯片被选中。
ILE:数据锁存允许控制端,高电平有效。
:第一级输入寄存器写选通控制,低电平有效。当
=0,ILE=1,
=0时,待转换的数据信号被锁存到第一级8位输入寄存器中。
:数据传送控制,低电平有效。
:DAC寄存器写选通控制端,低电平有效。当
=0,
=0时,输入寄存器中待转换的数据传入8位DAC寄存器中。
IOUT1:D/A转换器电流输出1端,输入数字量全为“1”时,IOUT1最大,输入数字量全为“0”时,IOUT1最小。
IOUT2:D/A转换器电流输出2端,IOUT2 + IOUT1 = 常数。
Rfb:外部反馈信号输入端,内部已有反馈电阻Rfb,根据需要也可外接反馈电阻。
VCC:电源输入端,在+5V~+15V范围内。
2、DAC0832的结构
内部组成:
- 1个8位输入锁存器
- 1个8位DAC寄存器
- 1个8位D/A转换器
- 5个控制逻辑(2级控制)
工作过程:8位数据并行送入锁存器→在第1级控制信号作用下进入寄存器→在第2级控制信号作用下进入转换器→转换结果由Iout1电流输出。
3、DAC0832的3种控制方式
- 直通方式—— 两个寄存器都处于直通状态
- 直通方式不能直接与系统的数据总线相连,需另加锁存器,故较少应用。
- 单缓冲方式—— 一个寄存器处于直通,另一个处于受控状态
- 双缓冲方式—— 两个寄存器都分别处于受控状态
二、STC89C52与DAC0832的接口
1、直通控制方式---两个寄存器都处于直通状态
电路采用I/O口方式接线,直通控制方式——4个控制端都接低电平,ILE接高电平。数字量一旦输入,就直接进入DAC寄存器,进行D/A转换。
2、单缓冲方式---内部的两个数据缓冲器有一个处于直通方式,另一个处于受单片机控制的锁存方式。在实际应用中,如果只有一路模拟量输出,或虽是多路模拟量输出但并不要求多路输出同步的情况下,可采用单缓冲方式。
单极性输出的正负极性由VREF的极性确定。
图中ILE接+5V,IOUT2接地,IOUT1输出电流经运算放大器变换后输出单极性电压,范围为0~+5V。 DAC0832的“8位DAC寄存器”工作于直通方式。“8位输入寄存器”处于受控状态,由P2.7来控制。
当单片机执行如下指令就可在 和 上产生低电平,使DAC0832接收STC89C52送来的数字量。
MOV DPTR,#7FFFH
MOV A,#data
MOVX @DPTR,A
【例】、 DAC0832用作波形发生器。写出产生三角波和矩形波的程序。
三角波
#include <absacc.h>
#define DAC0832 XBYTE[0x7fff] //设置DAC0832的访问地址
unsigned char num;
void main() {while(1){for (num=0;num<0xff;num++) //上升段波形DAC0832=num;for (num=0xff; num > 0 ; num--) //下降段波形DAC0832=num; //DAC0832转换输出}
}
矩形波
#include<absacc.h>
#define DAC0832 XBYTE[0x7fff] //设置DAC0832的访问地址
unsigned int i;
void main() {while (1) {for(i=0;i<10000;i++) //置上限电平对应的数字量,延时DAC0832=255;for(i=0;i<20000;i++) //置下限电平对应的数字量,延时DAC0832=0;}
}
3、双缓冲方式——两个寄存器都分别处于受控状态。
对于多路D/A转换需要同步转换输出的系统,应该采用双缓冲器同步方式。DAC0832工作于双缓冲器工作方式时,数字量的输入锁存和D/A转换是分两步完成的。首先,CPU的数据总线分时地向各路D/A 转换器输入要转换的数字量并锁存在各自的输入锁存器中,然后CPU对所有的D/A 转换器发出控制信号,使各个D/A转换器输入锁存器中的数据打入DAC 寄存器,实现同步转换输出。
在需要多路D/A转换输出的场合,除了采用上述方法外,还可以采用多通道DAC芯片。这种DAC芯片在同一个封装里有两个以上相同的DAC,它们可以各自独立工作,例如AD7528是双通道8位DAC芯片,可以同时输出两路模拟量;AD7526是四通道8位DAC芯片,可以同时输出四路模拟量。
【例】、根据下图,实现两路D/A同步输出,产生上行、下行两路锯齿波。
#include <absacc.h>
#define DAC1 XBYTE[0xdfff]//设置1#DAC0832输入锁存器的访问地址
#define DAC2 XBYTE[0xbfff]//设置2#DAC0832输入锁存器的访问地址
#define DAOUT XBYTE[0x7fff]//两个DAC0832的DAC寄存器访问地址
void main (void){unsigned char num; //需要转换的数据while(1){for(num =0; num <=255; num++){DAC1 = num; //上锯齿送入1#DACDAC2 = 255-num; //下锯齿送入2#DACDAOUT = num; //两路同时进行D/A转换输出}}
}
三、双极性电压输出
在需要用到双极性电压输出的场合,可以按照图11-14接线。图中DAC0832的数字量由单片机送来,A1和A2均为运算放大器, 通过2R电阻反馈到运算放大器A2输入端,G点为虚拟地。由基尔霍夫定律列出的方程组可解得
STC89C52与8位D/A转换器DAC0832的接口设计相关推荐
- 12位A/D转换器ADS7804与51单片机的接口及程序设计
摘要:ADS7804是美国BURR-BROWN公司推出的一种新型12位A/D转换器.文中介绍了它的特性与功能, 给出了一种简洁而新颖的与51单片机的接口方法,同时给出了用C语言编写的数据采集的应用程序 ...
- c语言编程TLC2543AD采集,基于C语言的89C51与TLC2543AD转换器的驱动程序的设计 实训报告...
电子信息技术综合实训报告 竞赛题名称:基于C语言的89C51与TLC2543AD转换器的驱动程序的设计 队员名称: 评阅人签名:设计思路描述: 设计思路: 硬件部分基于80C51单片机和TLC2543 ...
- 微型计算机汇编语言与接口技术答案,32位微机原理、汇编语言及接口技术教程课后习题答案.doc...
32位微机原理.汇编语言及接口技术教程课后习题答案.doc 16/32位微机原理.汇编语言及接口技术教程部分习题参考解答第1章 微型计算机系统概述习题1.2什么是通用微处理器.单片机(微控制器).DS ...
- ultraedit许可证id 7位数字_优雅的数据库ID设计
数据库表设计是项目开发中逃不掉的问题,每一张表,我们都会设计一个ID主键字段,关于表ID的生成方式,每个人都有自己的见解,我们就来讨论如何优雅的设计数据库ID 自增ID 这种方式用起来最简单,也是很多 ...
- at89s51数码管秒表c语言程序,基于AT89C51单片机的一个2位的LED数码显示作为“秒表”设计【基于单片机系统的00-99s的定时器】...
基于AT89C51单片机的一个2位的LED数码显示作为"秒表"设计[基于单片机系统的00-99s的定时器] 工程技术学院 课程设计 题 目:用单片机AT89C51设计一个2位的LE ...
- 51单片机c语言dac0832产生波形,基于51单片机的DAC0832波形发生器设计
波形发生器是一种常用的信号源,广泛的应用于电子电路.自动控制系统和教学实验等领域,是现代测试领域内应用最为广泛的通用仪器之一.在研制.生产.测试和维修各种电子元件.部件以及整机设备时,都需要有信号源. ...
- 3位格雷码的顺序编码_FPGA 设计之 跨时钟域(四 - 格雷码)
上一篇文章总结了四种常用的多比特跨时钟域的设计.这篇我们主要来看一下 格雷码,文章目录如下: 什么是格雷码 格雷码转二进制码 二进制码转格雷码 N比特格雷码转N-1比特格雷码 什么是格雷码 ? A G ...
- 2440 8字数码管 显示0到10 c语言,51单片机对8位数码管依次显示0-7的设计
共阳极数组0~9:display[]={0xC0,0xF9,0xA4,0xB0,0x91,0xA2,0x82,0xF8,0x80,0x90} 共阳极数组A~F:display[]={0x88,0x83 ...
- 12位串行AD转换器TLC2543与单片机的接口设计与编程
第一次做光学仪器的小项目中的一部分是数据采集后经过模数转换,把采集到的电压用数字量输入到单片机中进行处理.此处总结下TLC2543的相关资料和与单片机接口方面的编程.主要的参考资料是TLC2543的d ...
最新文章
- vuerouter3种模式_Vue-router的三种传参方式
- Space X和NASA到底有什么关系?
- Tomcat 配置安装
- javamail发送邮件的简单实例[转]
- Coding: 整数反转
- redius mysql_采用Linux系统的Freeradius+MySQL实现RADIUS认证服务器
- kubernetes(三)k8s中通信和Service
- python多人游戏服务器_Python在线多人游戏开发教程
- 【华为云动态】华为云DevCloud助力DevOps标准体系建设
- 运行java黑窗口是什么意思_黑窗口运行java文件步骤
- 一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之创建项目
- 使用mysql innodb 使用5.7的json类型遇到的坑和解决办法
- jsp面试问题_JSP面试问答
- java 工具类库 Apache Commons
- 机器学习、神经网络、深度学习的关系
- 公司年终总结新年计划PPT模板
- python100天从新手到大师下载_GitHub - chenqiyi/Python-100-Days: Python - 100天从新手到大师...
- 让同事主动配合工作的三点技巧|智测优聘总结
- 按照ID降序排列方法
- NLP冻手之路(4)——pipeline管道函数的使用