精华内容
下载资源
问答
  • 51 单片机和DAC0832输出方波、矩形波和正弦波由液晶1602显示的C语言程序
  • 用的是直通方式,程序非常简单一看就懂,通过对程序的修改可产生方波,三角波等
  • 从DAC0832内部工作原理探索DAC0832输出电压的方法

    万次阅读 多人点赞 2018-04-29 13:14:46
    2,开发环境:Keil uv53、参考文献:http://www.dzsc.com/dzbbs/20060112/200765185329109342.html最近在通过51单片机利用DAC0832方波,发现信号无输出DAC0832这款DA芯片虽然物美价廉,使用直通方式的话几乎不需要...
    开发环境(蓝色粗体字为特别注意内容)
    1,开发板:STC12C5A60S2,DAC0832。
    2,开发环境:Keil uv5

    3、参考文献:http://www.dzsc.com/dzbbs/20060112/200765185329109342.html

    最近在通过51单片机利用DAC0832方波,发现信号无输出,DAC0832这款DA芯片虽然物美价廉,使用直通方式的话几乎不需要外接元件就能够输出电流,使用起来着实方便,但是这款芯片是电流输出,这一点着实坑人!!!一般应用中主要是电压输出为主,所以一般应用中会在IO1,IO2输出引脚接一个运放,来把电流输出转化为电压输出,但是这样问题就来了,由DAC0832的datasheet我们知道,按照直通方式的标准用法:


    实际使用方式如下:


    我们知道输出电压

    Vout=-(Iout1*Rfb)
        =-Vref(DIGITAL_INPUT)10/256

    Vref为参考电压,其中Rfb为DAC0832内部反馈电阻,10表示数字量的10进制表示,DIGITAL_INPUT表示D0到D7的输入数字量,一共8位可以表示0-255。

    由此我们可以知道Vref取VCC的时候,运放应该是输出负电压的,其值为-Vref~0,这一点很关键,上面的电路图我没有仿真过,也没有动手实验过(因为需要用到正负电源,我手头没有正负电源),网上的大部分资料的基本原理也是基于以上电路的,因此电路应该是没问题的。

    但是,当你运放的电源不是正负电源的话,就会发生非常奇怪的种种问题,以前调试了好几天最后不得不放弃,现在被迫向这个难题发起挑战,下面我们来一步一步分析一下。

    单电源使用电路图如下:


    上面的电路图我们可以发现运放358的4脚接地,这一点很关键。说明该运放使用单电源供电,即输出总是大于0,不可能输出负电压的,于是乎就遇到了类似大多数网友所遇到的问题------DAC0832无输出的问题。此时如果我们用示波器观察Io1引脚的波形,我们可以看到运放如下波形(我利用单片机输出方波,VCC=5V)


    从示波器,我们可以看到输出几乎为0v,这也就印证了运放单电源供电方式无法输出负电压,于是我们测量IO1引脚,可以看到有信号输出:


    虽然有信号输出,但是方波显然不太对劲,幅度为1.5V左右。

    单片机程序如下:

    unsigned int Count = 0; //计数器
    unsigned int Squ_Per = 256;
    Square_wave(Squ_Per, &Count);
    Count += 4;
    
    
    #define DATA P2
    void Square_wave(unsigned int Per, unsigned int *Count)
    {
    	//DATA=0x5f;
    	if(*Count >= Per) *Count = 0;
    	if(*Count < Per / 2)
    	{
    		DATA = 0x00;
    	}
    	else
    	{
    		DATA = 0xFF;
    	}
    
    }

    如果,Io1接上一个LED,可以通过设置P2口的数值来改变LED的亮度,利用这种方式也可以检验DAC0832是否正常工作。电路如下:


    回到我们一开始的问题,本文的目的是从DAC0832的数模变换原理来探索出利用单电源使得芯片输出满足要求的电压信号的使用方式。因此我们不得不深入了解DAC0832的工作方式,这方面的资料,网上有很多,但是都是抄来抄去的,理解起来比较费劲,大家也可以作为参考资料看看。下面我们从datasheet里面分析。该datasheet我已经放到文章后面的下载连接里了,需要的朋友可以点击下载。


    由于该芯片是8位的,可以理解为控制着8个小开关,如上如图,为了更加直观,我们画成下面这样:

    当某一位数据为0的时候,该位对应的小开关打向左边(和Iout2连接),为1的时候则打向右边。从芯片内部的这个结构,我们很容易就能够理解DAC0832电流输出方式的工作原理,根据此原理,我们稍微调整一下思路,略施小计,做一下小小的改动,就能够让这玩意输出电压,而不是讨厌的电流,关键就在于Io1接上一个稳压二极管,设稳压二极管的击穿电压为Vdc,则DAC0832的输出电压为

    Vdc*(DIGITAL_INPUT)/256

    下图是我接上一个3.3v的稳压二极管,但是测试发现,Io1引脚的电压却是2.0v左右,测试该引脚波形如下:

    看来还真的得使用高精度稳压二极管。

    输出波形如下:


    基本可以,但是很奇怪,有个细节需要注意一下,从示波器上看,波形不是0~2v而是200mv~1.8v!!!!!

    查了半天,最后发现是D5引脚和单片机P2.7的连线断路!!!!!!!大哭

    把线路连接起来之后就正常了:)


    这下就完美了:)))))

    电源不纯净,有点纹波:


    我示波器接地的时候也有20mv左右的幅度,电源不纯净的原因,所以低电平是正常的。

    例如我们需要输出0~5V则我们可以接上一个5V的稳压二极管,直接就能够输出我们所需要的电压,这种使用方式甚至连运放都可以省掉。很是巧妙,芯片输出正电压以后,后面就好办了,该怎么处理就怎么处理,加个单电源同相放大器就行,这样就能够实现单电压工作,电路图,以及相关资料我已经打包,供需要的朋友下载。

    DAC0832+LM358 +5v单电源使用方式相关资料

    展开全文
  • 单片机实验:利用DAC0832输出一个幅值为5,周期为1KHZ的连续方波
  • (一)非常感谢:89C51与ad0832 输出...(三)输出方波 (四)输出锯齿波 (五)输出三角波 (六)输出正玄波 (七)程序 #include <absacc.h> #include <reg52.h> #define DA0832 P2 #define D...

    (一)非常感谢:89C51与ad0832 输出正弦波,三角波,矩形波,锯齿波

    (二)在上面的情况下进行程序的修改,实现50HZ的输出

    (三)电路图
    在这里插入图片描述

    (三)输出方波
    在这里插入图片描述

    (四)输出锯齿波
    在这里插入图片描述

    (五)输出三角波
    在这里插入图片描述

    (六)输出正玄波
    在这里插入图片描述

    (七)程序

    #include <absacc.h>
    #include <reg52.h>
     
    #define DA0832 P2
    #define DATA 57          //定时器延时 
     
    #define uchar unsigned char
    #define uint unsigned int
     
    sbit S1 = P1^0;
    sbit S2 = P1^1;
    //00锯齿波;01方波;10三角波;11正弦波
     
    uchar code sin_tab[] =        //正弦波输出表
    {
         0x80,0x83,0x86,0x89,0x8D,0x90,0x93,0x96,0x99,0x9C,0x9F,0xA2,0xA5,0xA8,0xAB,0xAE,
         0xB1,0xB4,0xB7,0xBA,0xBC,0xBF,0xC2,0xC5,0xC7,0xCA,0xCC,0xCF,0xD1,0xD4,0xD6,0xD8,
         0xDA,0xDD,0xDF,0xE1,0xE3,0xE5,0xE7,0xE9,0xEA,0xEC,0xEE,0xEF,0xF1,0xF2,0xF4,0xF5,
         0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
         0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFD,0xFC,0xFB,0xFA,0xF9,0xF8,0xF7,0xF6,
         0xF5,0xF4,0xF2,0xF1,0xEF,0xEE,0xEC,0xEA,0xE9,0xE7,0xE5,0xE3,0xE1,0xDF,0xDD,0xDA,
         0xD8,0xD6,0xD4,0xD1,0xCF,0xCC,0xCA,0xC7,0xC5,0xC2,0xBF,0xBC,0xBA,0xB7,0xB4,0xB1,
         0xAE,0xAB,0xA8,0xA5,0xA2,0x9F,0x9C,0x99,0x96,0x93,0x90,0x8D,0x89,0x86,0x83,0x80,
         0x80,0x7C,0x79,0x76,0x72,0x6F,0x6C,0x69,0x66,0x63,0x60,0x5D,0x5A,0x57,0x55,0x51,
         0x4E,0x4C,0x48,0x45,0x43,0x40,0x3D,0x3A,0x38,0x35,0x33,0x30,0x2E,0x2B,0x29,0x27,
         0x25,0x22,0x20,0x1E,0x1C,0x1A,0x18,0x16,0x15,0x13,0x11,0x10,0x0E,0x0D,0x0B,0x0A,
         0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
         0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,
         0x0A,0x0B,0x0D,0x0E,0x10,0x11,0x13,0x15,0x16,0x18,0x1A,0x1C,0x1E,0x20,0x22,0x25,
         0x27,0x29,0x2B,0x2E,0x30,0x33,0x35,0x38,0x3A,0x3D,0x40,0x43,0x45,0x48,0x4C,0x4E,
         0x51,0x55,0x57,0x5A,0x5D,0x60,0x63,0x66,0x69,0x6C,0x6F,0x72,0x76,0x79,0x7C,0x7E
    };
     
    void stair(void);//锯齿波 
    void square(void);//方波 
    void trian();//三角波 
    void sin();//正弦波 
    void scan();//扫描函数 
    void Timer0Init(void);        //75微秒@11.0592MHz
    uchar flag = 0;
    
    
    void main()
    {    
        P2 = 0xff;
        Timer0Init();
        while(1)
        {
        //逐个测试 
        //stair();        /*锯齿波*/
        //    square();  /*方波*/
      // trian();    /*三角波*/
        //    sin();  /*正弦波*/
        scan();
        }
    }
     
    void Timer0Init(void)        //75微秒@11.0592MHz
    {
    
        TMOD = 0x01;        //设置定时器模式
        TH0  = (65536 - DATA) / 256;        //设置定时初值
        TL0  = (65536 - DATA) % 256;        //设置定时初值
        ET0  = 1;            //TF0标志
        TR0  = 1;            //定时器0开始计时
        EA   = 1;
    }
    void timer0_ISR(void) interrupt 1
    {
        TH0  = (65536 - DATA) / 256;        //设置定时初值
        TL0  = (65536 - DATA) % 256;        //设置定时初值
        TR0  = 0;
        flag = 1;
    }
    
    
    void scan()
    {
        if((0 == S1) &&(0 == S2))
            stair();
        else if((1 == S1) && (0 == S2))
            square();
        else if((0 == S1) && (1 == S2))
            trian();
        else
            sin();
            
    }
    
    
    void stair(void)
    {
        uchar i;
        for(i = 0 ;i < 255; i++)
        {
          DA0832 = i;
            TR0  = 1;
            while(flag == 0);
            flag = 0;
        }
         
    }
     
    void square(void)
    {
        int i;
        DA0832 = 0xff;
        for(i = 0;i < 125;i++)
        {
            TR0  = 1;
            while(flag == 0);
            flag = 0;        
        }
        DA0832 = 0x00;
        for(i = 0;i < 125;i++)
        {
            TR0  = 1;
            while(flag == 0);
            flag = 0;        
        }
    }
     
    void trian(void)
    {
        uchar i;
        for(i = 0 ;i < 125; i++)
        {
            DA0832 = i;
                TR0  = 1;
              while(flag == 0);
              flag = 0;
        }
        
        for(i=125 ;i > 0; i--)
        {
            DA0832 = i;
              TR0  = 1;
              while(flag == 0);
              flag = 0;
        }
    }
     
    void sin()
    {
        uchar i;
        for(i = 0; i < 255; i++)
        {
            DA0832 = sin_tab[i];
            TR0  = 1;
            while(flag == 0);
            flag = 0;        
        }
    }
    

    (八)工程源码下载

    https://download.csdn.net/download/xiaoguoge11/10742925

    在这里插入图片描述

    展开全文
  • Proteus 8微机接口仿真模拟实验,8086,8255A,DAC0832输出四种波形 一、设计名称: 利用D/A、 A/D转换产生波形并显示 二、设计要求: 1、产生锯齿波、三角波、方波、正弦波。 2、将以上四种波形显示在屏幕上。 电路...

    Proteus 8微机接口仿真模拟实验,8086,8255A,DAC0832输出四种波形

    一、设计名称:
    利用D/A、 A/D转换产生波形并显示
    二、设计要求:
    1、产生锯齿波、三角波、方波、正弦波。
    2、将以上四种波形显示在屏幕上。

    电路连接图

    在这里插入图片描述
    注意:8086,设置size 选项为0x10000在这里插入图片描述

    代码

    代码编写之后需要编译!
    在这里插入图片描述
    Build Project编译结果,下侧窗口显示Compiled successfully成功。
    在这里插入图片描述

    DATA SEGMENT
    SIN_NUM DB 80H,8CH,98H,0A5H,0B0H,0BCH,0C7H,0D1H
    DB 0DAH,0E2H,0EAH,0F0H,0F6H,0FAH,0FDH,0FFH
    DB 0FFH,0FDH,0FAH,0F6H,0F0H,0EAH,0E2H,0DAH
    DB 0D1H,0C7H,0BCH,0B0H,0A5H,98H,8CH,80H
    DB 7FH,73H,67H,5AH,4FH,43H,38H,2EH
    DB 25H,1DH,15H,0FH,09H,05H,02H,00H
    DB 00H,02H,05H,09H,0FH,15H,1DH,25H
    DB 2EH,38H,43H,4FH,5AH,67H,73H,7FH
    DATA ENDS
    CODE SEGMENT PUBLIC ‘CODE’
    ASSUME CS:CODE,DS:DATA
    START:
    ; Write your code here
    MOV AX,DATA
    MOV DS,AX
    ;--------------------------------------8255A初始化
    MOV AL,90H ;方式控制字 10010000B
    MOV DX,0906H
    OUT DX,AL
    ;--------------------------------------检测8255端口
    AGAIN: MOV DX,0900H
    IN AL,DX
    TEST AL,01H
    JZ SQRW ;方波
    TEST AL,02H
    JZ TW ;三角波
    TEST AL,04H
    JZ STW ;锯齿波
    TEST AL,08H
    JZ SINW ;正弦波
    JMP AGAIN
    ;--------------------------------------
    SQRW: MOV AL,0FFH ;方波
    MOV DX,0800H
    OUT DX,AL
    CALL DELAY
    MOV AL,00H
    MOV DX,0800H
    OUT DX,AL
    CALL DELAY
    JMP AGAIN
    ;--------------------------------------
    TW: MOV AL,00H ;三角波
    MOV DX,0800H
    OUT DX,AL
    TWLP1: INC AL
    OUT DX,AL
    CMP AL,0FFH
    JNZ TWLP1
    TWLP2: DEC AL
    OUT DX,AL
    CMP AL,00H
    JNZ TWLP2
    JMP AGAIN
    ;--------------------------------------
    STW: MOV AL,0FFH ;锯齿波
    MOV DX,0800H
    OUT DX,AL
    STWLP: DEC AL
    OUT DX,AL
    CMP AL,00H
    JNZ STWLP
    JMP AGAIN
    ;--------------------------------------
    SINW: MOV CX,0040H
    MOV BX,OFFSET DS:[SIN_NUM]
    SINWLP: MOV AL,DS:[BX]
    MOV DX,0800H
    OUT DX,AL
    INC BX
    LOOP SINWLP
    JMP AGAIN
    ;-------------------
    DELAY PROC
    MOV CL,0FFH
    LP: LOOP LP
    RET
    DELAY ENDP
    CODE ENDS
    END START

    四种波形

    方波:
    在这里插入图片描述
    三角波:
    在这里插入图片描述
    锯齿波:
    在这里插入图片描述
    正弦波:
    在这里插入图片描述

    展开全文
  • 基于51单片机dac0832.c

    2020-01-31 13:00:43
    基于51单片机驱动DA转换芯片DAC0832,用于模拟量输出 工程使用,可以直接移植 可以产生正弦波、方波、锯齿波、三角波
  • 利用8255A和DAC0832,当相应开关拨动时,8个LED数码管的显示(显示要求:0832――0x)x为0、1、2、3中的1个数,DAC0832的输出波形要求: 00-输出方波; 01-输出锯齿波; 10-输出三角波; 11-输出正弦波。
  • 8255、DAC0832的输出波形。 00-输出方波; 01-输出锯齿波; 10-输出三角波; 11-输出正弦波。 实验报告
  • 1.输出4种波形:方波、锯齿波、三角波和正弦波; 2.幅值调节范围为:2V-10V; 3.频率调节范围为:20Hz-80Hz; 内容简介 信号发生器仿真系统由51单片机最小系统、LCD12864液晶模块、DAC0832波形转换模块(包括波形幅值...

    注:获取全套设计资源,请见文末说明…
    设计要求
    1.输出4种波形:方波、锯齿波、三角波和正弦波;
    2.幅值调节范围为:2V-10V;
    3.频率调节范围为:20Hz-80Hz;

    内容简介
    信号发生器仿真系统由51单片机最小系统、LCD12864液晶模块、DAC0832波形转换模块(包括波形幅值与频率转换)、按键控制模块以及示波器测量模块构成。通过Keil平台下的C语言编程,单片机控制输出的数字信号经工作在直通方式下的DAC0832数模转换,输出方波、正弦波、锯齿波、三角波4种电压波形,且波形幅值、频率可调。波形的切换、频率和幅值的增减可通过按键模块实现,同时当前的波形信息可实时更新在LCD12864显示模块上,波形形象可通过示波器测量模块展现。整个设计由Proteus仿真实现,并能满足设计内容及要求。

    本设计内容详细,涵盖 单片机最小系统设计原理、按键与LCD12864液晶设计、DAC0832幅值控制电路、频率控制电路设计、频率控制算法原理、仿真结果分析 等内容。

    整体的框架
    在这里插入图片描述
    系统仿真电路图
    在这里插入图片描述
    仿真运行分析
    图1:幅值为4V,频率为20Hz的方波输出信号
    在这里插入图片描述
    在这里插入图片描述
    图2 幅值为5V,频率为50Hz的锯齿波输出信号
    在这里插入图片描述
    在这里插入图片描述
    图3 幅值为10V,频率为80Hz的正弦波输出信号
    在这里插入图片描述
    在这里插入图片描述
    图4 幅值为6V,频率为60Hz的三角波输出信号
    在这里插入图片描述
    在这里插入图片描述
    部分程序

    
    ```c
    intmain(void)
    
    {
    
    uchar data i=0;
    
     uchar idata strtemp[35];
    
    SP=0xA0;
    
    for(i=0; i<7; i++)
    
     {
    
      //从20Hz开始,到80Hz,步长为10Hz,共7个频率数据,最高只能做到80Hz,同时由于启动中断会占用一定时间,所以补偿25us。
    
      freq[i]=65535-(1000000/(20+i*10)/256)+25;
    
     }
    
     TMOD=0x11;
    
     ET0=1;
    
     ET1=0;
    
    EA=1;
    
    TL0=freq[index_freq]%256;
    
     TH0=freq[index_freq]/256;
    
    TR0=1;
    
    IT0=0;
    
     EX0=1;
    
    LE1=0;
    
     P2=amplitude[index_amp];
    
     EA=0;
    
     LE1=1;
    
     LCDinit12864();
    
    LCD_DispStrWide(0x00,"波形:1方波");
    
     LCD_DispStrWide(0x10,"频率:20Hz");
    
     LCD_DispStrWide(0x08,"幅值:2.0V");
    
     LCD_DispStrWide(0x18,"波形 频率 +-");
    
     LE1=0;   
    
     EA=1;
    
     while(1)
    
     {
    
      if(K_WAVE==1)
    
      {  
    
        K_WAVE=0;
    
    C_WAVE++;
    
    if(C_WAVE>=4) C_WAVE=0;  //0:方波1:锯齿波 2:三角波3:正弦波
    
        sprintf(strtemp,"%s%s","波形:",disp_wave[C_WAVE]);
    
        LE1=1;
    
        EA=0;
    
        LCD_DispStrWide(0x00,strtemp);
    
        EA=1;
    
        LE1=0;
    
       }  
    
      else if(K_FREQ_AMP==1)
    
      {  
    
         K_FREQ_AMP=0;
    
         C_FREQ_AMP++;
    
         if(C_FREQ_AMP >= 2) C_FREQ_AMP=0;
    
         LE1=1;
    
         EA=0;
    
         if(C_FREQ_AMP == 0)
    
          LCD_DispStrWide(0x18,"波形 频率 +-");  //0:频率
    
         else
    
          LCD_DispStrWide(0x18,"波形 幅值 +-");  //1:幅值
    
         EA=1;
    
         LE1=0;
    
      }
    
      else if(K_ADD == 1)
    
      {        
    
         K_ADD=0;
    
         if(C_FREQ_AMP == 0)
    
         {//在7种频率之间切换 20Hz,30Hz,40Hz,50Hz,60Hz,70Hz,80Hz  
    
         index_freq++;
    
         if(index_freq>=7) index_freq=0;
    
         sprintf(strtemp,"%s%d%s","频率:",(int)(20+index_freq*10),"Hz");
    
         LE1=1;
    
         EA=0;
    
          LCD_DispStrWide(0x10,strtemp);
    
         EA=1;
    
         LE1=0;
    
         }
    
         else
    
         {
    
          //在9种幅值之间切换  1V,2V,3V,4V,5V,6V,7V,8V,9V,10V
    
         index_amp++;
    
      if(index_amp > 8) index_amp=0;   
    
    sprintf(strtemp,"%s%.1f%s","幅值:",(float)(1+index_amp*0.5)*2,"V ");
    
         LE1=1;
    
         EA=0;
    
          LCD_DispStrWide(0x08,strtemp);
    
          LCD_DispStrWide(0x10,"频");
    
         EA=1;
    
          LE1=0;
    
         P2=amplitude[index_amp];
    
         }
    
      }
    
      else if(K_REDUCE==1)
    
      {       
    
         K_REDUCE=0;
    
         if(C_FREQ_AMP == 0)
    
         {  
    
          if(index_freq > 0)
    
          index_freq--;
    
          sprintf(strtemp,"%s%d%s","频率:",(int)(20+index_freq*10),"Hz");
    
          LE1=1;
    
          EA=0;
    
         LCD_DispStrWide(0x10,strtemp);
    
         EA=1;
    
         LE1=0;
    
         }
    
         else
    
         {
    
         if(index_amp > 0)
    
         index_amp--;
    
         sprintf(strtemp,"%s%.1f%s","幅值:",(float)(1+index_amp*0.5)*2,"V ");
    
          LE1=1;
    
          EA=0;
    
         LCD_DispStrWide(0x08,strtemp);
    
         LCD_DispStrWide(0x10,"频");
    
         EA=1;
    
         LE1=0;
    
         P2=amplitude[index_amp];
    
         }
    
      }
    
     } return 0;
     }
    

    分享内容
    (1)基于51单片机与DAC0832的信号发生器Proteus仿真设计【完整版文档】
    (2)Proteus仿真文件
    (3)Keil C语言程序文件
    (4)DAC0832 技术手册
    (5)Visio绘制的流程图

    资源截图
    在这里插入图片描述
    在这里插入图片描述
    KEIL C程序
    在这里插入图片描述
    在这里插入图片描述
    资源获取方法
    资源获取方法
    资源获取方法
    重要的事情说三遍!!!!!!!!!!!
    由于本设计为作者原创设计,
    获取完整的Word论文报告、Proteus仿真、Keil C程序、Visio流程图文件和技术手册等资料。
    请微信搜索关注公众号:交院小智

    展开全文
  • DAC0832控制输出电压,用lcd1602显示,可输出多种波形,正弦波,锯齿波,三角波,方波,梯形波
  • AT89C51使用DAC0832数模转换,波形发生器

    千次阅读 热门讨论 2020-06-19 17:02:21
      使用51单片机和DAC0832构建按键波形发生器,按下不同的按键能够产生不同波形,可以产生波形为阶梯波、三角波、方波、正弦波。 DAC0832简介   DAC0832是采样频率为八位的D/A转换器件,芯片内有两级输入寄存器,...
  • 在Proteus8.6下,基于8086,使用8255+DAC0832模拟波形发生器,实现多种波形的输出演示:使用开关选择,依次可输出锯齿波,三角波,方波,脉冲波,梯形波。
  • dac0832应用程序

    2008-08-21 15:07:50
    ******************************************************************************** <br>fangbo.ASM...........DAC0832方波发生器 zhengxuan.ASM........DAC0832正旋波发生器 sanjiao.ASM..........DAC...
  • 方波:实验要求在DOUT端输出方波信号,方波信号的周期由延时时间常数确定。 根据Vout =-〔VREF×(输入数字量的十进制数)〕/256,当数字量的十进制数为256(FFH)时,由于VREF =-5V,Vout = +5V。当数字量的十...
  • 汇编实验(8086)--DAC0832实验

    千次阅读 2018-12-11 11:16:43
    D/A数模转换实验--输出方波 ; D/A CS ------ 端口地址 300CS ; D/A AOUT ---- L1 CS0832 EQU 0300H ;DAC0832端口地址 CODE SEGMENT ASSUME CS:CODE START: MOV DX,CS0832 MOV AL,0 ;输出低电平(灯...
  • 好久没有写博客了,因为回家休息了三天,哈哈,现在从新恢复正常,恢复正常的第一个任务就是做个... 方案:通过按键控制函数信号发生器输出的波形,有正弦波,三角波,锯齿波,方波…并且控制步进10HZ,100HZ,500...
  • 方波:实验要求在DOUT端输出方波信号,方波信号的周期由延时时间常数确定。 根据Vout =-〔VREF×(输入数字量的十进制数)〕/256,当数字量的十进制数为256(FFH)时,由于VREF =-5V,Vout = +5V。当数字量的十...
  • 简易信号发生器能够频率可变的方波、锯齿波和正弦波信号。 其中方波信号独立输出,锯齿波和正弦波信号可通过一个按键选择输出。频率通过两个按键分别进行加减输出
  • - 产生正弦波、方波、锯齿波、三角波四种波形; - 输出频率在100Hz~100kHz; - 输出正弦波信号的电压峰-峰值Vopp在0~5V内可调; 详情信息参考我的博客:...
  • 目录一、设计要求二、设计原理三、仿真验证 ...产生正弦波、方波、锯齿波、三角波四种波形; 输出频率在100Hz~100kHz; 输出正弦波信号的电压峰-峰值Vopp在0~5V内可调; 二、设计原理 三、仿真验证 ...
  • 1.基于Proteus仿真平台,用汇编语言和DAC0832实现数模转换,实现了直流输出方波输出、锯齿波输出和三角波输出。 2. 使用MASM32进行编译, 已经做好makefile文件,并有详细说明。 3.内附详细8086仿真设计图、汇编...
  • 0832和0809组合应用.doc

    2008-12-28 12:22:06
    (4)通过ADC0809采样DAC0832输出,在屏幕上画出图形。示器查看波形发生器的输出和屏幕上的图形比较。 2. 提高要求 (1)增加输出波形的类型。 (2)扩展输出波形频率范围。 (3)减少幅度范围的步进量。
  • 我们通过控制P0口的电平进而使DAC0832输出电压变化 再经过LM324运放输出. 下面是波形发生的程序。 /* * @description : 方波 * @param : 无 * @return : 无 */ void fb() { P0=0x00; delay_ms(fb_fre); ...
  • ①查阅资料,了解波形输出...②采用单片机AT89S51控制DAC0832产生正弦波、方波、三角波、梯形波和锯齿波。单片机P1.0~P1.4引脚接五个按键,当按键按下时,分别产生对应的波形。 ③扩展:添加按键,可进行频率的大小调节
  • 这是输出方波: 这是输出三角波(注意:输出三角波的功能函数稍加变化就可以输出梯形波,大家可以自己改): 这是输出正弦波: 输出的波形还可以吧,嘿嘿,下面是手绘的原理图: 原理图上接P2.7脚的那条导线可以直接接地...
  • 设计使用DAC0832实现,信号可实现方波、锯齿波、正弦波、三角波的波形输出。其中占空比10%-90%可调。
  • 3.方波和正弦波是应用中常见的两种信号源,掌握利用数模转换芯片产生方波及正弦波的方法。通过编写汇编程序在数据段中预存需要输岀的波形数据,按波形要求输出。理解不同的输出电路连接方式下电压
  • 用单片机与DAC0832 构成的波形发生器,可产生方波、三角波、锯齿波、正弦波等多种波形,波形的周期可用程序改变,并可根据需要选择单极性输出或双极性输出,具有线路简单、结构紧凑、性能优越等特点。
  • 51单片机完整的正弦波 方波 三角波 锯齿波 完整的仿真文件 其中下载文件可以直接下载在单片机中运行(需按照原理图连接,也可接其中一个DAC0832。几种波形可同时输出

空空如也

空空如也

1 2 3
收藏数 51
精华内容 20
关键字:

dac0832输出方波