DAC0832数模转换芯片介绍及使用教程

1.芯片简介

        DAC0832是采样频率为八位的D/A转换芯片,集成电路内有两级输入寄存器,使DAC0832芯片具备双缓冲、单缓冲和直通三种输入方式。D/A转换结果采用电流形式输出。若需要相应的模拟电压信号,可通过一个高输入阻抗的线性运算放大器实现。运放的反馈电阻可通过RFB端引用片内固有电阻,也可外接。DAC0832逻辑输入满足TTL电平,可直接与TTL电路或微机电路连接。

主要特点如下

  • 8 位分辨率,双通道 A/D 转换;

  • 输入输出电平与 TTL/CMOS 相兼容;

  • 5V 电源供电时输入电压在 0~5V 之间;

  • 功耗仅为 15mW,工作频率为 250KHZ,转换时间为 32μS;

2.DAC0832引脚定义

  1. DI0~DI7:8位数据输入线,TLL电平;

  2. ILE:数据锁存允许控制信号输入线,高电平有效;

  3. CS:片选信号输入线(选通数据锁存器),低电平有效;

  4. WR1:为输入寄存器的写选通信号;

  5. XFER:数据传送控制信号输入线,低电平有效;

  6. WR2 :为DAC寄存器写选通输入线;

  7. Iout1:电流输出线。当输入全为1时Iout1最大;

  8. Iout2:电流输出线。其值与Iout1之和为一常数;

  9. Rfb:反馈信号输入线,芯片内部有反馈电阻;

  10. Vcc:电源输入线  (范围为+5v~+15v);

  11. Vref:基准电压输入线  (-10v~+10v) ;

  12. AGND:模拟地,摸拟信号和基准电源的参考地;

  13. AGND:数字地,两种地线在基准电源处共地比较好;

3.原理图   

        以下原理图为单极性电压输出,即Vref=5V,放大增益为1时,由运算放大器进行电流->电压转换,使用内部反馈电阻。输出电压值Vout和输入数字量D的关系:

Vout=Vref*D/256; 

4.DAC0832驱动程序

        DAC0832控制程序相对简单,上电后只需对D0-D7写入对应的数字后,即可输出相应的电压。

如需资料可在该账号下载频道下载,或关注公众号-单片机实例设计,发送“DAC0832”获取。

  • 16
    点赞
  • 136
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
AT89C51是一种8位单片机,而DAC0832是一种8位数模转换芯片。您可以将AT89C51与DAC0832连接,以实现波形发生器的功能。 要控制频率,您可以使用定时器/计数器来生成周期性的中断。使用定时器/计数器,您可以将输出波形的频率设置为100Hz到10kHz之间。您可以使用AT89C51的PWM模块来控制波形的幅度和占空比。 以下是一个简单的AT89C51代码示例,该示例使用DAC0832生成三角波: ``` #include <REG51.H> sbit LDAC = P1^0; // DAC0832的LDAC引脚 sbit SCLK = P1^1; // DAC0832的SCLK引脚 sbit CS = P1^2; // DAC0832的CS引脚 unsigned int freq = 1000; // 波形频率 void init_timer(void); void timer_isr(void) interrupt 1; void main(void) { init_timer(); // 初始化定时器/计数器 while(1) { // 生成三角波 for(int i = 0; i < 255; i++) { CS = 0; // 选中DAC0832 P0 = i; // 设置DAC0832的输入数据 SCLK = 0; // 将数据写入DAC0832 SCLK = 1; CS = 1; // 取消选中DAC0832 } for(int i = 255; i > 0; i--) { CS = 0; // 选中DAC0832 P0 = i; // 设置DAC0832的输入数据 SCLK = 0; // 将数据写入DAC0832 SCLK = 1; CS = 1; // 取消选中DAC0832 } } } void init_timer(void) { TMOD = 0x01; // 定时器0工作在模式1 TH0 = 256 - (11059200 / 12 / freq); // 设置定时器初值,计算公式: 2^16 - (clock / 12 / freq) TL0 = TH0; // 设置定时器初值 ET0 = 1; // 允许定时器0中断 EA = 1; // 开启总中断 TR0 = 1; // 启动定时器0 } void timer_isr(void) interrupt 1 { TH0 = 256 - (11059200 / 12 / freq); // 重新设置定时器初值 TL0 = TH0; } ``` 该代码将AT89C51的P0口与DAC0832的输入端连接。中断服务程序将每个周期生成一个三角波。通过更改freq变量的值,您可以控制波形的频率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值