编程技术分享平台

网站首页 > 技术教程 正文

基于proteus的51单片机开发实例37-DAC0832

xnh888 2024-11-03 15:47:18 技术教程 48 ℃ 0 评论



1. 基于proteus的51单片机开发实例37-DAC0832

1.1. 实验目的

之前我们学习了数模转换芯片DAC0808,今天我们继续学习另一种D/A转换芯片DAC0832。

1.2. 设计思路



本例中使用51单片机控制D/A转换芯片DAC0832,通过单片机输出一系列的数字信号到DAC0832,DAC0832把这些数字信号转换成模拟信号,以电流的形式输出。

1.3. 基础知识

1.3.1. DAC0832的引脚说明

下图是DAC0832的引脚图,



DI0~DI7:8位数据输入端。

ILE:数据锁存允许信号输入端,高电平有效。

CS:片选端,低电平有效。

WR1:输入锁存器写选通信号输入端。

WR2:DAC寄存器写选通信号输入端。

XFER:数据传送控制信号输入端,低电平有效。

IOUT2:模拟电流输出端2.

IOUT1:模拟电流输出端1.

RFB:反馈信号输入端。

VCC:电源端。

VREF:基准电压输入端。

AGND:模拟地。

DGND:数字地。

1.3.2. DAC0832与51单片机的接口

VCC、ILE同时接到+5V,WR1和WR2同时接到单片机的同一个端口P3.6;CS和XFER也同时接到单片机的一个端口P2.7。这种接法使DAC0832相当于一个单片机的外部扩展存储器,其地址为0x7fff。只要采用对片外存储器寻址的方法将数据写入该地址,DAC0832就会自动开始数模转换。

1、选中DAC0832,单片机通过P2.7引脚送出一个低电平到DAC0832的CE和XFER,P3.6引脚送低电平到WR1和WR2。DAC0832就被选中。

2、向DAC0832写入数据,单片机通过P0口送入数据。

3、DAC0832对送来的数字量进行数模转换,并从IOUT1引脚输出信号电流。

DAC0832输出的信号是电流型的,当实际应用中需要的是电压信号。所以电路中需要采用运算放大器来实现电流-电压转换。



1.4. 电路设计

本实例的电路图如图1所示。51单片机的P0口的8位直接连到DAC0832的8位数据输入端口DI0~DI7。DAC0832的输出端I0UT1和IOUT2分别连接运算放大器的2、3引脚。

1.5. 程序设计

本实例程序代码如下。

#include<reg51.h>       //包含单片机寄存器的头文件
#include<absacc.h>     //包含对片外存储器地址进行操作的头文件


sbit CS=P2^7;          //将CS位定义为P2.7引脚
sbit WR12=P3^6;        //将WR12位定义为P3.6引脚


void main(void)
{
	unsigned char i;
   CS=0;    //输出低电平以选中DAC0832
   WR12=0;  //输出低电平以选中DAC0832
   while(1)
     {
       for(i=0;i<255;i++)
        XBYTE[0x7fff]=i; 	 //将数据i送入片外地址07FFFH ,实际上就是通过P0口将数据送入DAC0832 
	  }
}

1.6. 实例仿真

按照前面实例中所介绍的在proteus环境下的仿真方法,对本实例进行仿真,观察仿真结果,验证电路和程序的正确性。

1.7. 总结

从实例36开始,我们已经学习了四种模数和数模转换芯片的电路设计及程序控制。这四种芯片都是模数、数模转换的基础芯片,用意使大家熟悉A/D和D/A的基础知识和电路、程序方法。后续我们将会继续学习相关知识


Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表