单片机d/a变换_霍夫变换 单片机 - CSDN
  • ORG 0000H DATAR0 EQU 50H ;定义保存采集现场数据单元 LJMP MAIN ORG 000BH ;定义定时/计数器 T0 中断入口地址 LJMP T0P ORG 0100H MAIN : MOV SP , #60H
    ORG     0000H 
    DATAR0  EQU     50H         ;定义保存采集现场数据单元 
            LJMP    MAIN 
            ORG     000BH       ;定义定时/计数器 T0 中断入口地址 
            LJMP    T0P 
            ORG     0100H 
    MAIN :  MOV     SP , #60H    ;设置中断指针 
            MOV     TMOD,#01H   ;设置定时/计数器 T0 为工作方式 1、定时 
            MOV     TL0 ,#0D0H  ;设置定时常数 
            MOV     TH0 ,#80H 
            SETB    TR0         ;开启定时/计数器 T0 
            SETB    ET0         ;打开定时/计数器 T0 中断允许开关 
            SETB    EA          ;打开总开关 
            MOV     DPTR,#3000H  ;设置第三通道地址                   
            MOVX    @DPTR,A     ;启动第三通道转换       
    LOOP:   LCALL   DATA1 
            LCALL   DISPLAY 
            SJMP    LOOP 
    T0P:    MOV    TL0,#0D0H    ;重新设置定时常数 
            MOV    TH0,#80H 
            MOV    DPTR,#3000H  ;将第三通道地址送 DPTR 
            MOVX   A,@DPTR      ;读取转换值 
            MOV    DATAR0,A     ;保留转换值 
            MOVX   @DPTR,A      ;重启第三通道转换 
            RETI 
            DATA1:              ;显示格式转换子程序 
            MOV     79H,#03H 
            MOV     7AH,#11H 
            MOV     A,DATAR0 
            ANL     A,#0F0H 
            SWAP    A 
            MOV     7BH,A 
            MOV     A,DATAR0 
            ANL     A,#0FH 
            MOV     7CH,A             
            RET        
    DISPLAY:                  
          MOV    R0,#79H       ;显示缓冲区首地址送 R0 
          MOV    R3,#01H       ;字位码送 R3 保存 
          MOV    A,R3 
    LD0:  MOV    P2,A          ;字位码送位码端口 P2,点亮该位 
          MOV    A,@R0         ;取出一位要显示的数据 
          MOV    DPTR,#TAB1    ;表首地址送 DPTR 
          MOVC   A,@A+DPTR     ;查表获取该数据的字型码            
    DIR1: MOV    P0,A          ;字型码送段码端口 P0 
          ACALL  DL11          ;调用延时子程序 
          INC    R0            ;缓冲区地址+1 
          MOV    A,R3          ;取出位码 
          JB     ACC.5,LD1     ;判断 6 位数码管显示完吗?显示完转 LD1 
          RL     A             ;未完,左移一位 
          MOV    R3,A          ;保存位码 
          AJMP   LD0 
    LD1:  RET                  ;子程序返回 
    TAB1: DB     0C0H,0F9H,0A4H,0B0H,99H,92H 
          DB     82H,0F8H,80H,90H,88H,83H,0C6H,0A1H            
          DB     86H,8EH,0BFH,0FFH,0FFH 
    DL11: MOV    R7,#02H 
    DL:   MOV    R6,#0FFH 
    DL6:  DJNZ   R6,DL6 
          DJNZ   R7,DL 
          RET 
          END 

    这里写图片描述

    ORG 0000H
    LJMP MAIN
    ORG 000BH
    AJMP LOOP
    ORG 001BH
    AJMP LOOP1
    ORG 0030H
    MAIN:MOV SP,#60H
         MOV DPTR,#7FFFH
         MOV TMOD,#11H
         MOV TH0,#3CH
         MOV TL0,#0B0H
         MOV TH1,#3CH
         MOV TL1,#0B0H
         SETB EA
         SETB ET0
         SETB ET1
         SETB TR0
         SJMP $
    LOOP:MOV A,#0F2H
         MOVX @DPTR,A
         CLR TR0
         MOV TH0,#3CH
         MOV TL0,#0B0H
         SETB TR1
         RETI
    LOOP1:MOV A,#01H
         MOVX @DPTR,A
         CLR TR1
         MOV TH1,#3CH
         MOV TL1,#0B0H
         SETB TR0
         RETI
         END
    

    这里写图片描述

    这里写图片描述

    展开全文
  • 一、什么是a/dd/a转换: 随着数字技术,特别是信息技术的飞速发展与普及,在现代控制、通信及检测等领域,为了提高系统的性能指标,对信号的处理广泛采用了数字计算机技术。由于系统的实际对象往往都是一些模拟...

    一、什么是a/d、d/a转换:

    随着数字技术,特别是信息技术的飞速发展与普及,在现代控制、通信及检测等领域,为了提高系统的性能指标,对信号的处理广泛采用了数字计算机技术。由于系统的实际对象往往都是一些模拟量(如温度、压力、位移、图像等),要使计算机或数字仪表能识别、处理这些信号,必须首先将这些模拟信号转换成数字信号;而经计算机分析、处理后输出的数字量也往往需要将其转换为相应模拟信号才能为执行机构所接受。这样,就需要一种能在模拟信号与数字信号之间起桥梁作用的电路--模数和数模转换器。

    将模拟信号转换成数字信号的电路,称为模数转换器(简称a/d转换器或adc,analog to digital converter);将数字信号转换为模拟信号的电路称为数模转换器(简称d/a转换器或dac,digital to analog converter);a/d转换器和d/a转换器已成为信息系统中不可缺俚慕涌诘缏贰?br> 为确保系统处理结果的精确度,a/d转换器和d/a转换器必须具有足够的转换精度;如果要实现快速变化信号的实时控制与检测,a/d与d/a转换器还要求具有较高的转换速度。转换精度与转换速度是衡量a/d与d/a转换器的重要技术指标。随着集成技术的发展,现已研制和生产出许多单片的和混合集成型的a/d和d/a转换器,它们具有愈来愈先进的技术指标。

    二、d/a和a/d转换器的相关性能参数:

    d/a转换器是把数字量转换成模拟量的线性电路器件,已做成集成芯片。由于实现这种转换的原理和电路结构及工艺技术有所不同,因而出现各种各样的d/a转换器。目前,国外市场已有上百种产品出售,他们在转换速度、转换精度、分辨率以及使用价值上都各具特色。

    d/a转换器的主要参数:

    衡量一个d/a转换器的性能的主要参数有:

    (1)分辨率

    是指d/a转换器能够转换的二进制数的位数,位数多分辨率也就越高。

    (2)转换时间

    指数字量输入到完成转换,输出达到最终值并稳定为止所需的时间。电流型d/a转换较快,一般在几ns到几百ns之间。电压型d/a转换较慢,取决于运算放大器的响应时间。

    (3)精度

    指d/a转换器实际输出电压与理论值之间的误差,一般采用数字量的最低有效位作为衡量单位。

    (4)线性度

    当数字量变化时,d/a转换器输出的模拟量按比例关系变化的程度。理想的d/a转换器是线性的,但是实际上是有误差的,模拟输出偏离理想输出的最大值称为线性误差。

    a/d转换器的功能是把模拟量变换成数字量。由于实现这种转换的工作原理和采用工艺技术不同,因此生产出种类繁多的a/d转换芯片。a/d转换器按分辨率分为4位、6位、8位、10位、14位、16位和bcd码的31/2位、51/2位等。按照转换速度可分为超高速(转换时间≤330ns),次超高速(330~3.3μs),高速(转换时间3.3~333μs),低速(转换时间>330μs)等。a/d转换器按照转换原理可分为直接a/d转换器和间接a/d转换器。所谓直接a/d转换器,是把模拟信号直接转换成数字信号,如逐次逼近型,并联比较型等。其中逐次逼近型a/d转换器,易于用集成工艺实现,且能达到较高的分辨率和速度,故目前集成化a/d芯片采用逐次逼近型者多;间接a/d转换器是先把模拟量转换成中间量,然后再转换成数字量,如电压/时间转换型(积分型),电压/频率转换型,电压/脉宽转换型等。其中积分型a/d转换器电路简单,抗干扰能力强,切能作到高分辨率,但转换速度较慢。有些转换器还将多路开关、基准电压源、时钟电路、译码器和转换电路集成在一个芯片内,已超出了单纯a/d转换功能,使用十分方便。

    展开全文
  • 通过全桥移相高频变换,采用高品质的D/A变换器——MAX531,解决了单片机与移相控制电路的接口问题,使整流模块的稳压精度达到≤0.1%的水平。 DZW02型整流模块的基本结构框图如图1所示。它由主电路、PWM控制电路、...
  • A/DD/A接口芯片是实现工业过程控制的重要组成部分,在工业生产中,需要测量和控制的对象往往是连续变化的物理量,如温度、压力、流量、位移等。为了利用计算机实现对工业生产过程的自动监测和控制,首先必须要能够...

    基础简介:

    A/D和D/A接口芯片是实现工业过程控制的重要组成部分,在工业生产中,需要测量和控制的对象往往是连续变化的物理量,如温度、压力、流量、位移等。为了利用计算机实现对工业生产过程的自动监测和控制,首先必须要能够将生产过程中监测设备输出的连续变化的模拟量转化为计算机巩固识别和接受的数字量。其次,还要能够将计算机发出的控制命令转换为相应的模拟信号,去驱动模拟调节执行机构,这样两个过程就需要模拟量的输入和输出通道来完成。

    • 模数转换器:简称位ADC,即 Analog-to-digital converter,代表芯片0809
    • 数模转换器:又简称为DAC,即Digital-to-Anolog converter,代表的芯片0832
    • 模拟量:连续变化的物理量
    • 数字量:时间和数值上都离散的量

    模/数与数/模转换通道的组成:

    一般模/数转换通道由传感器、信号处理、多路转换开关、采样保持器以及A/D转换器组成。

    • 传感器(Transducer ) :能够把非电物理量转换成电量(电流或电压)的器件,一般传感器由电容、电阻、电感或敏感材料组成,输出连续变化的电流或电压与非电物理量的变化成正比。一般传感器与放大电路制作在一起,输出统标准的0~ 10mA或4~ 20mA电流,或0~ 5V电压,以便传输或直接送A/D转换器进行A/D转换。电流型传感器比电压型传感器抗干扰能力强,易于远距离传输,即4~ 20mA标准电流输出的传感器较为普遍。
    • 信号放大处理:信号放大处理电路,接在A/D转换器与传感器之间,主要解决A/D转换器与传感器电压不匹配、电流信号到电压信号的转换以及滤除叠加在传感器输出信号上的高频干扰信号等问题。
    • 多路转换开关(Multiplexer):实现一片A/D转换芯片,轮流采集多路模拟输入信号
    • 采样保持器(Sample Holder):在A/D转换器进行采样期间,保持被转换输入信号不变的电路。A/D转换器完成一次转换所需要的时间称为转换时间。
    • A/D转换器(Analog to Digit):A/D转换器是模/数转换通道的核心环节,其功能是将模拟输入电信号转换成数字量(二进制数或BCD码等),以便由计算机读取、分析处理,并依据它发出对生产过程的控制信号。
    • 驱动器:进行功率放大、信号隔离和匹配、以及动作时间协调等工作

    主要技术指标:

    • 分辨率(重点)
      分辨率是当输入数字量发生单位数码变化(即1LSB)时,所对应的输出模拟量的变化量,即等于模拟量输出的满量程值的1/2N(N为数字量位数)。分辨率也可以用相对值(1/2N)百分率表示。在实际应用中,又常用数字量的位数来表示分辨率。 如:8位、10位等。

    • 转换精度
      转换精度是指一个实际的D/A转换器与理想的D/A转换器相比较的转换误差。其主要误差有失调误差、增益误差、非线性误差和微分非线性误差。

    精度反映D/A转换的精确程度,可分为绝对精度和相对精度:

    ①绝对精度(Absolute Accuracy):是指对应于给定的数字量,D/A输出端实际测得的模拟输出值(电流或电压)与理论值之差,由D/A转换的增益误差、线性误差和噪声等综合因素决定。

    ②相对精度(Relative Accuracy):是指在零点和满量程值校准后,各种数字输入的模拟量输出与理论值之差,可把各种输入的误差画成曲线。对线性D/A而言,相对精度就是非线性度。
    分辨率和转换精度是两个不同的概念。分辨率取决于D/A转换器位数,而精度取决于构成D/A转换器各个部件的精度与稳定性。分辨率高的D/A转换器并不一定具有高的精度。

    A/D转换器的主要性能指标:

    • (1)分辨率
      习惯上以输出的二进制位数或BCD码位数表示分辨率。 如一个输出为8位二进制数的A/D 转换器,称其分辨率为8位。也可以用对应于1 LSB的输入模拟电压来表示分辨率。分辨率还可以用百分数来表示,例如8位A/D转换器的分辨率百分数为 (1/256)×100%=0.39%。
    • (2)量化误差:
      A/D转换是用数字量对模拟量进行量化。由于存在最小量化单位,在转换中就会出现误差。
    • (3)非线性误差:
      A/D转化器的非线性误差是指在整个变换量程范围内,数字量所对应的模拟输入信号的实际值与理论值之间的最大差值。
    • (4)转换精度:
      转换精度是指一个实际的A/D转换器与理想的A/D转换器相比的转换误差。绝对精度一般以1LSB为单位给出。相对精度则是绝对精度与满量程的比值。
    • (5)转换时间:
      转换时间是指完成一次A/D转换所需的时间,即由发出启动转换命令信号到转换结束信号开始有效的时间间隔。转换时间的倒数称为转换速率。例如 AD570的转换时间为25μs其转换速率为40KHz 。
    • (6)电源灵敏度:
      电源灵敏度是指A/D转换芯片的供电电源的电压发生变化时,产生的转换误差。一般用电源变化1%时相当的模拟量变化的百分数表示。
    • (7)量程:
      量程是指所能转换的模拟输入电压范围,分单极性、双极性两种类型。例如:单极性量程为0~+5V 、0~+10V、0~+20V; 双极性:量程为-5~+5V、-10~+10V。
    • (8)输出逻辑电平:
      多数A/D转换器的输出逻辑电平与TTL电平兼容。在考虑数字输出与微处理器的数据总线接口时,应注意是否要三态逻辑输出,是否要对数据进行锁存等。
    • 工作温度范围:
      由于温度会对比较器、运算放大器、电阻网络等产生影响,故只在一定的温度范围内才能保证额定精度指标。一般A/D转换器的工作温度范围为(0~70℃),军用品的工作温度范围为(-55~+125℃)。
    展开全文
  • 这篇大概介绍一下A/DD/A转换的原理以及相应的电路连接方法。 模拟信号的幅度一般随时间变化而连续变化。以下就是不同性质模拟量的波形 而单片机中一般运算用的是数字量(0/1的组合),这就涉及到了外围电路需要有...

    这篇大概介绍一下A/D转换的原理以及相应的电路连接方法。

    模拟信号的幅度一般随时间变化而连续变化。以下就是不同性质模拟量的波形
    在这里插入图片描述

    而单片机中一般运算用的是数字量(0/1的组合),这就涉及到了外围电路需要有一个模数转换的过程。顾名思义是把输入的模拟信号尽可能无失真地转化为数字量。

    如果把数字量形容成是一个个分块储存信息的模块,那模拟量这种连续的信息在转换过程中要尽可能避免信息的丧失。处不来讲转换的思路就是把数字量分块,以数字的形式转换至数字量中。如数字量为有六位(000000-111111),那么就可以把模拟量均等分为64份,每份中储存着转换过来的相应信息。

    但是这个只是我们的初步思路,从原理上讲,一般的A/D转换分为采样保持,量化和编码三个过程。采样的量一般是电压(电流不好取),通过一定的采样保持时间过后把采样的电压量转换为数字量,并按一定形式的0/1编码顺序给出转换结果,这就是得到了相应的数字信号。框图如下:

    在这里插入图片描述
    下面分别介绍相应的理论知识。

    1.采样定理:(信号里面基本接触过,还可以参考无失真系统需要具备的条件等知识)

    采样定理反映了采样信号频率与输入信号频率之间的制约关系,可理解为采样信号的频谱(低通滤波器)一定要包含输入信号频谱的全部内容。
    在这里插入图片描述因为每次将采样电压转化为数字量需要一定的时间,所以采样后也必须把采样电压保持一段时间,故在采样过程中最后反应出的Vi都是采样结束时候的值。

    2.量化与编码

    数字信号一定是在数值上离散的。且任何一个数字量都会是一个基础数字量的整数倍。

    故选取一个最小的变量作为单位变量。将模拟电压与之相除后就能得出相应的数字二进制代码,经推算也可以得出对应的模拟电平。

    在这里插入图片描述

    上图的单位变量就为1/8V,量化误差(每两个单位间隔中可能出现的最大误差)也是1/8.

    这其中有一个小知识点。怎么设计电路使其有采样和保持的功能。

    简单的采样保持电路如下图所示,其将MOS管作为启动和停止的开关,将信号通过反相放大器后得出输出电压。

    在这里插入图片描述
    在这里插入图片描述

    这里的场效应管也有反相截止的功能。即当输入由高转低时,电流无法通过场效应管。

    对于这种采样速度低的电路,可以有以下改进

    在这里插入图片描述

    VL引脚控制着开关的闭合,当为高电平时开关打开。模拟电压可经过两级跟随器传至Vo

    当VL由高变低时,还有电容Ch放电提供相应电压,电平得以维持。

    当输入的电压比较大,超出了开关所能承受的最大电压时,引入一个二极管电路,通过单向导通的性质可以起到分压的作用,且当电压合适时该电路不起分压作用。

    常用的A/D转换器有直接A/D转换器(并行型/反馈比较型)以及间接A/D(需要转成T,f等中间变量后再转换)

    1.直接

    (1)并行A/D:由电压比较器,寄存器以及编码器三部分组成

    [
    电压比较器是对输入电压进行分类,如图所示,运放的负极接模拟电平大小为2n-1/15(n=1,2,……7)的端口,分压电阻每两个电阻之间的节点都接在VI引出的这条总线上。进行电压比较后将比较结果数据传到寄存器。寄存器设置的目的是因为比较结果可能会有变化,待稳定后通过译码器部分对相应的结果转化为二进制数字变量。各种变量之间的对应关系如下

    在这里插入图片描述
    这种电路特点是传输速度较快,但缺点是随着二进制数字量位数的增加,需要比较器的数量呈指数型增长(2^n-1),且自带采样保持功能

    (2)反馈比较型A/D

    在这里插入图片描述

    引入一个D/A转换器和一个计数器,计数器传送数字信号至D/A,转为模拟信号后在电压比较器这里与VI按位做比较,若一致就直接传送至计数器,不一致通过比较器后也会变为正确的那一项,按位比较重复多次后,计数器将数据传送至输出寄存器。因为在比较过程中数字不断变化,故设置了输出寄存器。这样就可以起到逐步逼近模拟量的功能。

    (3)逐次比较器

    为了进一步提升比较的速度,设计了逐次比较器。下图是三位逐次比较器的原理图
    在这里插入图片描述

    引入了具有锁存功能的d触发器,三位得出比较结果分别上接三个RS触发器,在比较器C的正极输入前又加入了累加器,减去了半个量化误差。当要输出的位数越小时,时钟端的频率就越高,处理速度就会越快

    2.间接比较器

    一般使用的是V-T比较和V-F比较两类

    在这里插入图片描述

    剩下一个问题是关于A/D转换的参数指标。

    大致有分辨率(转换器对输入信号的分辨能力),转换误差(实际输出与理论输出之间的差别)转换精度及转换时间四类。主要介绍分辨率及转换时间

    1.分辨率:输入位数越多,转换位数越多,分辨率就越高。

    eg:5V是一个转换器的输入最大值,若要输入8位二进制数,则有分辨率5/2^8V=19.53mV

    2.转换时间:

    在这里插入图片描述
    即在实际运用中,需要综合考虑选用哪一种转换器最为合适

    eg:
    在这里插入图片描述

    每个热电偶平均1/16s的转换时间,上述比较器都能用。

    从0.1°C可知该转换器要求的分辨率为1/4500 通过最大电压范围0.025/2^n<=1/4500就可得出位数。

    接着介绍集成A/D转换器的工作原理及实现方法。

    因为不同的集成方式下对接口可以有不同的处理方式,一般逐次性转换器用的比较多,常用型号是ADC0804,实物图如下

    在这里插入图片描述

    需要注意的端口如下:

    A/D转换器,故DB0-DB7为数据输出端口。具有三态功能

    CLKR为内部时钟发生的外接电阻端,可与CLK配合由芯片产生时钟

    AGND和DGND是模拟和数字量的端口,通常都接地

    VIN(+)V_{IN(+)}VIN()V_{IN(-)} 是模拟量的输入端口

    VREFV_{REF} 为基准电压, VREF2\frac{V_{REF}}{2} 是参考电平输入,它可以决定量化单位

    ADC0804的芯片手册上电路的连接方法如下,在模拟信号的接口前加了滑动电阻,输出及如CS\overline{CS} 等接口由与微处理器相连的总线相连接

    在这里插入图片描述
    因为本人使用的是郭天祥老师的TX-1C增强版,现给出该开发板上ADC0804的接口方法

    在这里插入图片描述
    引入了74HC573锁存器,他的Q7端(12引脚)接了AD芯片的片选端口,则可通过控制锁存器来控制AD

    ADIN与AD芯片之间连接要加限流电阻,以免因为电流过大烧毁芯片

    而引入R和C,在CLK,CLKR以及GND之间构建振荡电路,是为芯片提供工作所需的脉冲

    也要记住WR\overline{WR}RD\overline{RD} 分别接了单片机的P3.6和P3.7接口,这个在编程中定义端口时要用到

    在这里十分重要的是芯片启动的时序图,在编程中需要对图中的先后次序以及涉及到机器周期方面的细节有所体现,这才算告诉编译器一个时序变化的全过程

    下图是写入数据时的过程

    在这里插入图片描述

    可知当CS\overline{CS} 低电平后,还需要等低电平有效的WR\overline{WR} 打低后,内部等待一段时间后开始转换状态,中断请求端INTR\overline{INTR} 在转换状态开始后一定处于高电平状态,在转换结束后低电平,触发中断。

    (不过在TX-1C上INTR\overline{INTR} 是未连接的,该实验版上也未用中断法)

    我们在写单片机程序启动AD时应该遵循上面的时序

    下面是读取数据的过程

    在这里插入图片描述

    跟上面差不多,待CS\overline{CS}RD\overline{RD} 打低后开始数据传送

    在这个板子中INTR\overline{INTR} 是自动变化的 可以自动低/高

    下面是一道例题
    在这里插入图片描述
    分析:1.数码管三位显示,表明需要构造一个display()以及通过dula和wela传送段选和位选信息

    2.要通过模数转换,就得有WR\overline{WR}RD\overline{RD} ,分别对应着P3.6和P3.7

    需要通过延时函数在main中将WR,RD的高低电平变换过程表示出来,AD芯片因为这里是读信息,在RD\overline{RD} 处于0时将模拟量信息传至中间变量,再将 RD\overline{RD} 置1,则中间变量中存储的信息改变为数字量

    具体代码如下

    #include<reg52.h>
    #include<intrins.h>
    #define uchar unsigned char
    #define uint unsigned int
    sbit dula=P2^6;
    sbit wela=P2^7;
    sbit adwr=P3^6; //读写的端口定义
    sbit adrd=P3^7;
    uchar code table[]=
    {0x3f,0x06,0x5b,0x4f,
     0x66,0x6d,0x7d,0x77,
     0x7f,0x6f,0x77,0x7c,
     0x39,0x5e,0x79,0x71
    };
    
    void delayms(uint xms)
    {
    	uint i,j;
    	for(i=xms;i>0;i--)
    		for(j=110;j>0;j--);
    }
    
    void display(uchar bai,uchar shi,uchar ge)
    {
    	dula=1;
    	P0=table[bai];
    	dula=0;
    	wela=1;
    	P0=0x7e;//从右到左,为0的位是所选中位
    	wela=0;
    	delayms(5);
    	
    	dula=1;
    	P0=table[ge];
    	dula=0;
    	wela=1;
    	P0=0x7d;
    	wela=0;
    	delayms(5);
    	
    	
    	dula=1;
    	P0=table[ge];
    	dula=0;
    	wela=1;
    	P0=0x7b;
    	wela=0;
    	delayms(5);//记得加延时
    }
    
    	void main()
    	{
    		uchar a,A1,A2,A3,adval;//A1-A3为三位显示在主函数中的变量名
    		//adval是中间变量
    		wela=1;
    		P0=0x7f;//初值
    		wela=0;
    		while(1)
    		{
    			adwr=1;//写的全过程(类似于波形)
    			_nop_();
    			adwr=0;
    			_nop_();
    			adwr=1;
    			for(a=10;a>0;a--)//由于开发板频率较低,搞出点延时来
    			{
    				display(A1,A2,A3);
    			}
    			P1=0xff;//初始化
    			adrd=1;//读过程
    			_nop_();//机器周期延时
    			adrd=0;
    			_nop_();
    			adval=P1;//把P1的值读入
    			adrd=1;//高电平抬起
    			A1=adval/100;
    			A2=adval%100/10;
    			A3=adval%10;
    			
    		}
    	}
    			l=P1;//把P1的值读入
    			adrd=1;//高电平抬起
    			A1=adval/100;
    			A2=adval%100/10;
    			A3=adval%10;
    			
    		}
    	}
    	
    

    这里的nop_()表示一个机器延时的意思,且包含在头文件intrins.h中

    展开全文
  • 一个电路分析(转)  ...分析的主要部分不是在单片机内部结构和程序如何,而在于以运放为中心,整个电路的组织和联系。 图 1 在分析这个电路之前,我先简单介绍一下C8051F330单片

    一个电路分析(转)  

    即将要分析的电路如下,这个电路本人觉得设计的很经典。这个电路主要完成的任务就是监测流经Q1和采样电阻R6中的电流。单片机C8051F330对电流的各种情况做出动作和反应。分析的主要部分不是在单片机内部结构和程序如何,而在于以运放为中心,整个电路的组织和联系。

    一个电路分析(转) - 懵懂者 - 懵懂者s blog

    图 1

    在分析这个电路之前,我先简单介绍一下C8051F330单片机遇LT2051运放的接口部分的电器特征。首先,由于C8051F330内部具有10位高精度的A/D转换器。它的输入可以通过内部的交叉开关配置到P1.5端口。但是注意,输入的模拟量一点要小于3.3V,否则会损坏管脚。同时,C8051F330配置有内部的电压基准,可以供给内部ADC和DAC使用,也可以驱动输出至VREF引脚供外部电路。典型的输出电压为2.44V(VDD=3.0V)。P1.6端口通过交叉开关配置为通用I/O端口,具体配置是根据具体任务而改变的。

    好了,有了上面的这些基础,让我们看一下这个电路到底经典在什么地方。

    一、单电源运放怎么用

    LTC2051是凌力尔特公司的一款双路零漂移的集成运算放大器。这款运放到底还有什么更好的特性,读者有兴趣可以自己去感受。这里,我只提到一点:它是一款Rail-to-Rail单电源运算放大器。也就是说,它的输出电压范围是满摆幅的即[0-3]V。它采用背靠背NPN和PNP输入晶体管和双折式共射共基放大电路使输入可达到每一个电源端点的几个毫伏之内。虽说轨至轨,但它不能在Uin=0时使Uout=0。所以,我们就不能像用双电源运放一样幻想着不采取一定措施的情况下输入为0的情况下输出也为0。为了控制精度,我们一般会在信号的正负输入端加各加VCC/2直流偏置电路如图2,这样的输出Uout= VCC/2+Aod*Uin。但是如果是从单端加入直流偏置,这样的偏置与信号一起被放大输出,Uout= Aod(VCC/2+Uin),如图3。

    在单电源运放的应用中,直流偏置电压电路通常有三种:电阻分压法、运放电压跟随器法和射级电压跟随器法,如图4。读者可自行进行分析和选用。

    一个电路分析(转) - 懵懂者 - 懵懂者s blog 

    图 2

    一个电路分析(转) - 懵懂者 - 懵懂者s blog

    图 3

    一个电路分析(转) - 懵懂者 - 懵懂者s blog

    图 4

    从图1中我们也可以看出它是采用了最常用的电阻分压法,为运放提供单端直流偏置电压。这种电路不仅简单,而且成本低。但是,这种电源的输出阻抗大,输出电流的变化对偏置电压的精度影响很大。从电路图中可以看出它所提供的偏置电压并不是VCC/2,而是对单片机内部ADC参考电压VREF进行分压。另外,偏置电压的输出也不时VREF/2。因为是单端提供直流偏置电压,是要经过放大后输出的,而VREF/2太大了。经过下面的计算就可以知道这个值到底是多少。

    计算之前,有必要交待一下此时P1.6端口的状态。对于C8051F330单片机所有的通用端口都是全双向口。所以,这里P1.6作为输入端口时,端口寄存器中的值不会影响D点电压,只作为输入。另外2N7002导通的典型门级电压为2.15V,所以在电路工作在正常状态时2N7002不会导通。不导通,   Q1的高电平控制信号就是有效的,Q1就会正常导通工作。做了这些铺垫后,我们来看一下A点的电压怎么来计算。

    如图5,这应该是一个正向输入的运放加法电路。从电路计算依据上我们可以在A点应用基尔霍夫电流定理。所以有:

    (Uin-UA)/R2+(VREF-UA)R1=UA/R3

    为了方便起见,我们用R3代表R3+R4。结果应该是:

    UA=R1//R2//R3(Uin/R2+VRER/R1)。

    下面我们给它换个形式,即:

    UA=Uin/(R2/R3+R2/R1+1)+VREF/(R1/R2+1+R2/R3)

    由于R2/R3<<1,R2/R1<<1所以Uin/(R2/R3+R2/R1+1)≈Uin。式子△U=VREF/(R1/R2+1+R2/R3)中的各个参数都是已知的,最后计算出△U=16.2mv。也即此电路图在输入信号的基础上叠加了一个16.2mv的直流偏置电压。这样即使Uin=0时,由于直流偏置的存在,输出电压不会是等于电源地,而是(1+RF/R)△U。从而提高了信号在0点附近的精度。

    一个电路分析(转) - 懵懂者 - 懵懂者s blog

    图 5

    为了证明这一点,本人用MultiSim EWB 10做了电路仿真结果完全正确。如图6,正输入端的信号用50mv的电源代替,直流偏置电压用2.4v的电源代替。LTC2051的电源用3V的单电源供电。其中,示波器的channelA测的是U+,即信号与直流偏置分压后的叠加信号。ChannelB通道测的是运放的输出电压。

    一个电路分析(转) - 懵懂者 - 懵懂者s blog

    图 6

    从图7中我们可以看到叠加后的信号刚好是20mv+16.1mv≈36.016。运放的放大倍数Au=1+R3/R2=24.5。测得的运放输出Uo=36.016*24.5≈880.354mv。依此来说明了以上分析是正确的。

    一个电路分析(转) - 懵懂者 - 懵懂者s blog

    图 7

    二、P1.6和Q2是用来干什么的

    刚才说P1.6是作为输入的,那么P1.6、Q2  到底是用来做什么的呢?我们来看,如果E点(也就是采样电阻两端)的电压是2.2V,则2N7002的门级电压(也就是D点的电位)就已经达到让2N7002的导通,并且P1.6端口的输入电压为高电平。一旦Q2导通,Q1的门级电压也就被拉低,Q1截止,使负载回路断开。也就是说O2、P1.6是负载电流的硬件监测电路。当负载电流到达一个极限值时,一方面硬件电路迅速动作,断开负载;另一方面告诉CPU采取必要的管理动作。

    三、P1.6口的第二个作用

    当采样电阻上的压降为0时,如果配置P1.6端口为推挽输出(能够输出10ma的电流),并且输出一个3v的高电平(VREF引脚配置高阻态),那么你猜A点电位是多少?很显然是3000mv*[R2/(R2+R5)]=58.8mv。我们也知道此时的Q2是导通的。这个就叫做BIT,即自检测功能。一个是检测运放、内部AD,另外可能也有采样值校准的功能。

    四、运放的低通滤波

    这个运放除了具有信号放大功能外,还是一个正向输入的低通滤波器。是通过C1、R1、R4的共同作用来完成的。好接下来分析一下它的幅频特性。我们用幅频域来表示放大倍数则有:

    Au=1+Zf/Z1

    这里的Z1=R4,1/Zf=jwC1+1/R1,所以有:

    一个电路分析(转) - 懵懂者 - 懵懂者s blog

    从上式中可以看出,对于信号的输出端总会叠加一个输入端的信号,无论信号的频率是多高。好我们只来分析后半部分,设等于A:

    一个电路分析(转) - 懵懂者 - 懵懂者s blog

    经过计算有:

    一个电路分析(转) - 懵懂者 - 懵懂者s blog

    由上式可求出它的截止频率:

    一个电路分析(转) - 懵懂者 - 懵懂者s blog

    上述只是理论上的分析,接下来看一下软件仿真波形。这样可以比较直观的看到它对信号的放大和低通滤波的功能了。在仿真中,如图8所示用幅值为15mv的交流信号来模拟高频干扰信号,15mv的直流偏置模拟有用信号。通过仿真来现实的感觉一下这个电路时如何对信号放大和如何抑制高频干扰的。其中,示波器的channelB测的是U+,即信号与直流偏置分压后的叠加信号。ChannelA通道测的是运放的输出电压。如图9,先来看一下干扰信号为的频率100Hz是的运放输出。此时,是有用信号和干扰信号叠加后为零点,只剩下了VREF提供的偏置电位16.1mV,输出电压=16.8*24.5=394.556mV。图10是有用信号上叠加了干扰信号的正半周期,所以此时的输入信号应该是=30+16.1≈45.930mv,输出电压45.930*24.5≈1.123v。可见在干扰信号为100hz时,并没有明显的抑制效果。

                                                                                   

    一个电路分析(转) - 懵懂者 - 懵懂者s blog

    图 8

    一个电路分析(转) - 懵懂者 - 懵懂者s blog

    图 9

    一个电路分析(转) - 懵懂者 - 懵懂者s blog

    图 10

    接下来将信号的频率改成50KHZ,看看它的滤波效果。如图11,将输入信号的直流偏置(模拟有用信号)和VREF提供的偏置在显示部分去掉,只显示交流部分,输出信号也同样处理,这样看起来更加明显。在图中可以看出在输入信号为14.691mv时,输出信号只有69.899mv。放大倍数为4.76,衰减了14dB。当干扰信号改为500khz时,由图12可以看出,输出信号就只剩下直流分量了。

    到现在为止,我的分析就全部完成了。经过这样一个完整的电路分析过程不仅对这个电路有了更深了解,而且让我学习和了解了更多的模拟电路的知识。很有意思。

    一个电路分析(转) - 懵懂者 - 懵懂者s blog

    图 11

    一个电路分析(转) - 懵懂者 - 懵懂者s blog

    图12


    展开全文
  • D/A转换器 1.二进制权电阻网络型D/A转换器 基准电压Vref 数据D(d3d2d1d0) 输出模拟电压V0  i0 = Vref/8R i1 =Vref/4R i2 =Vref/2R i3 =Vref/R  i∑ = i0+i1+i2+i3 = Vref * (d3*2^3 + d2*2^2+ d1*2^1+d0*2^0...
  • 转换电路由比较器C、D/A 转换器、计数器、脉冲源、控制门G以及输出寄存端等几部分组成。转换开始前先用复位信号将计数器置0,且转换信号停留在V1=0的状态,这时候G门被封锁,计数器不工作。计数器加给DAC的全是0信号...
  •   AD的选择,首先看精度和速度,然后看是几路的,什么输出的比如SPI或者并行的,差分还是单端输入的,输入范围是多少,这些都是选AD需要考虑的。... 在进行电路设计时,面对种类繁多的A/DD/A芯片,如何选择你所
  •        声明:本篇文章只是个人知识盲区、知识弱点、重点部分的归纳总结,望各位大佬不喜勿喷。梳理顺序是按照书籍的实际顺序梳理,转载请注明出处。 ...如温度、压力、位移、图像...
  • A/DD/A转换芯片PCF8591

    2019-03-08 09:12:38
    这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、...
  • 六:请利用ADC0808芯片实现A/D转换。按照下图接线,当输入模拟2.5V电压输入时,A/D转换得出数字量7FH,并在数码管中显示 来。 #include "AT89X52.H" main() { while(1) { P2_2=0;P2_2=1;P2_2=0; while(P2_0...
  • 如何选择A/D芯片

    2010-12-06 09:42:00
    A/D器件和芯片是实现单片机数据采集的常用外围器件。A/D转换器的品种繁多、性能各异,在设计数据采集系统时,首先碰到的就是如何选择合适的A/D转换器以满足系统设计要求的问题。选择A/D转换器件需要考虑器件本身的...
  • 摘要:ADS7804是美国BURR-BROWN公司推出的一种新型12位A/D转换器。文中介绍了它的特性与功能, 给出了一种简洁而新颖的与51单片机的接口方法,同时给出了用C语言编写的数据采集的应用程序。 关键词:模/数转换...
  • 双极性工作是指DA转换器可以转换有正有负的数据。计算机中的数字量表示为双极性的方法很多,如用原码、补码、反码和二进制码等,其中,补码和偏移二进制码用于DA转换器。下面介绍偏移二进制码和双极性转换。  ...
  • A/D转换器

    2019-07-31 15:28:23
    A/D转换接口类型(按转换原理分):双积分型、逐次逼近型、∑—Δ调制型、电容阵列逐次比较型及压频变换型... 双积分型:MC14433、ICL7135 精度可以做得很高,具有抑制高频噪声和固定低频干扰(50HZ、60HZ)的能力...
  • (1)干扰源,指产生干扰的元件、设备或信号,用数学语言描述如下:du/dt,di/dt大的地方就是干扰源。如:雷电、继电器、可控硅、电机、高频时钟等都...如:A/DD/A变换器,单片机,数字IC,弱信号等。   抗干扰设
  • 形成干扰的基本要素有三个: (1)干扰源,指产生干扰的元件、设备或信号,用数学语言描述如下:du/dt,di/dt大的地方就是干扰源。如:雷电、继电器、可控硅、...如:A/DD/A变换器,单片机,数字IC,弱信号等。 抗干...
  • D/A转换器由8位输入锁存器、8位DAC寄存器、8位D/A转换电路及转换控制电路构成。 D0~D7:8位数据输入线,TTL电平,有效时间应大于90ns(否则锁存器的数据会出错); ILE:数据锁存允许控制信号输入线,高电平有效...
  • 计算机控制系统及各类用单片机(或微处理器)构成的智能式仪器仪表中,外部的各种模拟信号必须通过转换器变换为数字信号后送入计算机。在许多关于单片机应用的文献资料中,介绍了8位、10位或12位的...
1 2 3 4 5 ... 20
收藏数 1,860
精华内容 744
关键字:

单片机d/a变换