单片机da数模转换_da数模转换单片机 - CSDN
  • 51单片机的AD/DA转换

    2017-02-09 17:31:42
    一、A/D(模数)、D/A(数模转换 (一)、引脚 AOUT:模拟输出 Vref:参考电压 AGND:模拟地 EXT:接地 OSC:悬空 SCL,SDA:IIC AIN0、AIN1、AIN2:模拟输入口 (二)、电路图 从电路图...
    一、A/D(模数)、D/A(数模)转换
    (一)、引脚

    AOUT:模拟输出
    Vref:参考电压
    AGND:模拟地
    EXT:接地
    OSC:悬空
    SCL,SDA:IIC
    AIN0、AIN1、AIN2:模拟输入口

    (二)、电路图

    从电路图可以看出,A0,A1,A2接地,所以当写入的时候地址应该是0X90,读取的时候应该是0X91

    (三)、AGND和DGND

    模拟地和数字地隔离开,消除干扰

    (四)、控制字节

    (五)、AD读数据函数
    #include <reg52.h>
    #include "delay.h"
    #include "iic.h"

    #define SUCC 1
    #define FAIL 0

    unsigned char ad_read_byte(unsigned char device_addr,unsigned char channel)
    {
        unsigned char result;
          unsigned char temp;

          iic_start();
          result = iic_send_byte(device_addr);
          if(result == FAIL)
            {
                  return FAIL;
            }

          result = iic_send_byte(0x44 + channel);
          if(result == FAIL)
            {
                  return FAIL;
            }

            iic_start();

            result = iic_send_byte(device_addr + 1);
          if(result == FAIL)
            {
                  return FAIL;
            }

        temp = iic_rcv_byte();

        iic_noack();
            iic_stop();
        return temp;        
    }

    (六)、AD写数据函数
    unsigned char ad_write_byte(unsigned char deviceaddr, unsigned char num)
    {
          unsigned char result;
          iic_start();

          result = iic_send_byte(deviceaddr);
          if(result == FAIL) return FAIL;

          result = iic_send_byte(0x40);
          if(result == FAIL) return FAIL;

          result = iic_send_byte(num);
          if(result == FAIL) return FAIL;

          iic_stop();

          return SUCC;
    }









    展开全文
  • CSDA BIT P3.2 WRR BIT P3.6 WELA BIT P2.7 DULA BIT P2.6 ORG 0000H LOOP0: MOV P0,#0FFH ;关数码管显示 SETB WELA CLR WELA CLR DULA SETB CSDA SETB WR MOV A,#0 LOOP1: ...CLR WRR
    CSDA BIT P3.2
    WRR BIT P3.6
    WELA BIT P2.7
    DULA BIT P2.6
    
    ORG 0000H
    LOOP0:
    MOV P0,#0FFH ;关数码管显示
    SETB WELA
    CLR WELA
    CLR DULA
    SETB CSDA
    SETB WR
    MOV A,#0
    LOOP1:
    MOV P0,A
    CLR CSDA 
    CLR WRR
    LCALL DELAY
    SETB WRR
    SETB CSDA
    INC A
    SJMP LOOP1
    DELAY:    ;延时 
    SETB RS1
    MOV R2,#04H
    DELAY2:
    MOV R1,#10
    DELAY1:
    MOV R0,#250
    DELAY0:
    NOP
    NOP 
    DJNZ R0,DELAY0
    DJNZ R1,DELAY1
    //DJNZ R2,DELAY2
    CLR RS1
    RET
    END

    展开全文
  • 基于51单片机DA数模转换--New,包含说明书,布线,源码,烧录文件
  • 单片机 AD/DA数模转换

    2019-05-03 11:05:44
    模拟量:自然界连续变化的物理量。所谓连续,包含两个方面的含义; 一方面从时间上来说,它是随时间连续变化的;...D/A 数模转换器 (Digital - Analog Convert) A/D 模拟转换器(Analog - Digital Con...
    • 模拟量:自然界连续变化的物理量。所谓连续,包含两个方面的含义;

      一方面从时间上来说,它是随时间连续变化的;
      另一方面从数值上来说,它的数值也是连续变化的。这种连续变化的物理量通常称为模拟量。

    • 数字量:计算机中处理的是不连续变化的量,离散性的数字量。

    • D/A 数模转换器 (Digital - Analog Convert)

    • A/D 模拟转换器(Analog - Digital Convert)

    A/D转换器的主要技术指标

    1、分辨率
    ADC的分辨率是指使输出数字量变化一个相邻数码所需输入模拟电压的变化量。常用二进制的位数表示。例如12位ADC的分辨率就是12位,或者说分辨率为满刻度FS的1/2^12。

    一个10V满刻度的12位ADC能分辨输入电压变化最小值是10V×1/2^12=2.4mV。
    2、量化误差
    ADC把模拟量变为数字量,用数字量近似表示模拟量,这个过程称为量化。量化误差是ADC的有限位数对模拟量进行量化而引起的误差。实际上,要准确表示模拟量,ADC的位数需很大甚至无穷大。一个分辨率有限的ADC的阶梯状转换特性曲线与具有无限分辨率的ADC转换特性曲线(直线)之间的最大偏差即是量化误差。
    在这里插入图片描述
    3、偏移误差
    偏移误差是指输入信号为零时,输出信号不为零的值,所以有时又称为零值误差。假定ADC没有非线性误差,则其转换特性曲线各阶梯中点的连线必定是直线,这条直线与横轴相交点所对应的输入电压值就是偏移误差。
    4、满刻度误差
    满刻度误差又称为增益误差。ADC的满刻度误差是指满刻度输出数码所对应的实际输入电压与理想输入电压之差。
    5、线性度
    线性度有时又称为非线性度,它是指转换器实际的转换特性与理想直线的最大偏差。
    6、绝对精度
    在一个转换器中,任何数码所对应的实际模拟量输入与理论模拟输入之差的最大值,称为绝对精度。对于ADC而言,可以在每一个阶梯的水平中点进行测量,它包括了所有的误差。
    7、转换速率
    ADC的转换速率是能够重复进行数据转换的速度,即每秒转换的次数。而完成一次A/D转换所需的时间(包括稳定时间),则是转换速率的倒数。
    A/D转换器的转速速度主要取决于转换电路的类型,不同类型的A/D转换器的转换速度相差很大。

    • 双积分A/D转换器的转换速度最慢,需几百毫秒左右;
    • 逐次逼近式A/D转换器的转换速度最快,需十几微秒;
    • 并行比较型A/D转换器的转换速度最快,仅需几十纳秒。

    逐次逼近式ADC的转换原理

    在这里插入图片描述
    逐次逼近式AD转换器与计数式A/D转换类似,只是数字量由“逐次逼近寄存器SAR”产生。SAR使用“对分搜索法”产生数字量,以8位数字量为例,SAR首先产生8位数字量的一半,即10000000B,试探模拟量Vi的大小,若Vn>Vi,清除最高位,若Vn<Vi,保留最高位。在最高位确定后,SAR又以对分搜索法确定次高位,即以低7位的一半y1000000B(y为已确定位) 试探模拟量Vi的大小。在bit6确定后,SAR以对分搜索法确定bit5位,即以低6位的一半yy100000B(y为已确定位) 试探模拟量的大小。重复这一过程,直到最低位bit0被确定,转换结束。

    PCF8591的介绍

    PCF8591 是单电源,低功耗8 位CMOS 数据采集器件,具有4 个模拟输入、一个输出和一个串行I2C 总线接口。3 个地址引脚A0、A1 和A2 用于编程硬件地址,允许将最多8 个器件连接至I2C总线而不需要额外硬件。PCF8591由于其使用的简单方便和集成度高,在单片机应用系统中得到了广泛的应用。
    特点:

    • 单电源供电
    • 工作电压:2.5 V ~ 6 V
    • I2C总线串行输入/输出
    • 通过3个硬件地址引脚编址
    • 采样速率取决于 I2C 总线传输速率决定
    • 4个模拟输入可编程为单端或差分输入
    • 自动增量通道选择
    • 8位逐次比较型A/D 转换
      在这里插入图片描述

    管脚定义:

    AIN0~AIN3:模拟量输入通道
    AOUT:模拟输出通道
    A0~A2:硬件设备地址
    VDD:电源正极
    VSS:电源负极
    VREF:参考电压输入。
    EXT:振荡器输入时,内部/外部的切换开关。
    OSC:振荡器输入/输出。
    SCL:I2C BUS时钟输入。
    SDA:I2C BUS 数据输入/输出。
    AGND:模拟地,模拟信号和基准电源的参考地

    控制字格式

    在这里插入图片描述
    最高位默认为0

    第6位是选择是否允许模拟电压输出,在DA转换时设置为1,AD转换时设置为0或1均可

    第5/4位是选择模拟电压输出方式,一般选择00单端输入方式,其他的几种方式如下图所示
    在这里插入图片描述
    第3位默认为0

    第2位是自动增量使能位,如果自动增量(auto-increment)标志置1,每次A/D 转换后通道号将自动增加。

    第1/0为是在AD转换时选择哪一个通道输入的电压转换为数字量.

    PCF8591的器件地址

    每一个IIC器件都有一个器件地址,来区分不同的IIC设备,下面是PCF8591的地址
    在这里插入图片描述
    在这里插入图片描述
    它的地址是由1001和A2A1A0组成的,在原理图中可以看出,A2A1A0均为0,所以器件地址为0x90/0x91,最后一位是读写方向位,0表示下一个字节往总线上写数据,1表示下一个字节从总线上读取数据.

    展开全文
  • 数模转换芯片DA0832直通方式驱动一个发光二极管,由暗到亮循环
  • 与模数转换相对应的是数模转换数模转换是模数转换的逆过程,在一般的工业应用系统中传感器把非电量的模拟信号变成与之对应的模拟信号,然后经模拟(Analog)到数字(Digital)转换电路将模拟信号转成对应的数字...

    模数转换

    模拟信号只有通过A/D转化为数字信号后才能用软件进行处理,这一切都是通过A/D转换器(ADC)来实现的。与模数转换相对应的是数模转换,数模转换是模数转换的逆过程,在一般的工业应用系统中传感器把非电量的模拟信号变成与之对应的模拟信号,然后经模拟(Analog)到数字(Digital)转换电路将模拟信号转成对应的数字信号送微机处理。这就是一个完整的信号链,模拟到数字的转换过程就是我们经常接触到的ADC电路。

    在51单片机模数转换实验中主要的工作是:

    • 完成对XPT2046的初始化以及读取过程的设置
    • 完成对读取到AD值的数码管显示

    数模转换

    根据所需的功能完成PWM编码(PWM 是一种对模拟信号电平进行数字编码的方法。)然后通过DA电路转换成模拟电路进行呼吸灯显示。


    以上过程其实根本没有涉及到数模转换的原理,只是一个简单的设置过程。当时学完之后感觉自己好像学会一个好厉害的转换过程,回头想想感觉自己也没学到什么,仔细分析了一下,原来是实验中根本就没有用到AD/DA的原理,此过程由XPT2046芯片和DA电路完成。以后更复杂的调试中应该会用到转换原理。


    学习过后要知道自己学到了什么,这样学到的东西才能对应自己的知识体系存进去,一定要认真分析自己所学的东西是什么,有什么用处,怎么用。不然学完课程就像听了一场戏,也许一时涨了见识,过后会忘得毛都不剩。

    这一部分的内容差点就这样糊弄过去了,只是知道了AD/DA这两个名词,还好硬着头皮回顾了一下,后面再补充知识也知道从何开始了。


    展开全文
  • 1,DAC0832数模转换芯片 2,MCU STC89C52 显示效果: 1,控制DAC0832后的模拟负载LED亮/灭闪烁 相关知识点: 1,类似DA芯片的操作 ************************************************/
  • 实验21:DA数模转换

    2020-03-06 19:15:32
    实验21:DA数模转换 /************************************************************************************** * DA-PWM输出实验 * 实现现象:下载程序后DA模块上的指示灯呈呼吸灯效果,由暗变亮再...
  • stm32 DA 数模转换

    2016-08-31 21:34:53
    stm32并不是所有的型号都有DAC功能,只有stm32f103xC/D/E系列 才有DAC转换功能。由于库函数手册中没有相关说明,所以只能通过在MDK提供的相关库文件 stm32f10x_dac.c 中找到相应的DAC函数,做了一番尝试。  折腾了...
  • 一、D/A转换器的原理及主要技术指标 一、D/A转换器的基本原理及分类 T型电阻网络D/A转换器 : 由图可知,运放两个输入端为“虚地”,所以电位都约为0。所以无论开关在0或者1,最后两个2R都是并联得R,和电阻R...
  • 使用C语言编写结合AT89C52单片机和DAC0832芯片实现的DA数模转换(注意是DA转换),仿真包含两种连接形式,单极性和双极性连接,资源内含proteus仿真以及keil项目,烧录之后可正常仿真,具有一定的参考价值(特别是...
  • 数模转换原理

    2014-11-17 15:53:10
    数模转换和模数转换原理
  • 51单片机上的AD-DA转换程序,分别由汇编和C编写。经验证,能成功运行
  •    本系列共6篇文章,本文作为本系列的第五篇文章,介绍实验五 :A/D 0809模数转换和DA0832数模转换实验,本系列文章基于Dais-52PRO实验箱。 一、实验目的:    了解模/数转换基本原理,掌握ADC0809的使用方法...
  • 程序内有详细的讲解文档,很好的学习资料,欢迎大家下载学习
  • 点击转入Github
  • 市面上常用的开发板基本上都自带AD转换,然而有的却不带DA功能,比如前几天刚入手的DSPf28335,在某宝上购入了这个DA模块,物美价廉。 硬件准备 1 .STM32F103C8T6; 2. TLC5615 DA成品模块; 3. 低通滤波器(抗锯齿...
  • 应用1:用ADC0808作为A/D转换器对滑动变阻器进行测电压。数码管显示范围为0-255。 应用2:用ADC0808制作简易的电压表
  • 单片机AD-DA转换

    2016-09-18 20:55:04
    #include #include "../iic/iic.h" unsigned char AD_read() { unsigned char temp; iic_start(); iic_send_byte(0x90); if(0 == ack) { return ERR; } iic_send_byte(0x40);... iic_
  • 51单片机复习:DA转换

    2019-08-09 07:52:38
    DAC转换器的原理 T型电阻网络DAC转换器: 运放两个输入端为“虚地”,所以电位都约为零。 从右往左看,第一个电阻2R和第二个电阻2R并联等效为一个电阻为R的电阻 与上方的电阻R串联为2R,然后继续重复前面的操作,...
1 2 3 4 5 ... 20
收藏数 500
精华内容 200
关键字:

单片机da数模转换