基于51单片机+DAC0832的信号/波形发生器(汇编语言+Protuse仿真)

一、设计要求

  • 产生正弦波、方波、锯齿波、三角波四种波形;
  • 输出频率在100Hz~100kHz;
  • 输出正弦波信号的电压峰-峰值Vopp在0~5V内可调;

二、设计原理

1、DS0832工作原理

DAC0832是使用非常普遍的8位D/A转换器,其转换时间为1us,工作电压为+5V~+15V,基准电压为士10V。它主要由两个8位寄存器和一个8位D/A转换器组成。使用两个寄存器(输入寄存器和DAC寄存器)的好处是可以进行两级缓冲操作,使该操作有更大的 灵活性,其转换原理与T型解码网络一样,由于其片内有输入数据寄存器,故可以直接与单片机接口。DAC0832以电流形式输出,当输出需要转换为电压时,可外接运算放大器。属于该系列的芯片还有DAC0830,DAC0831,它们可以相互代换,DAC0832主要

  • 特性如下:
    • 8位分辨率;
    • 电流建立时间1us;
    • 数据输入可采用双缓冲、单缓冲或直通方式;
    • 输出电流线性度可在满量程下调节;
    • 逻辑点平输入与TTL电平兼容;
    • 单一电源供电(+5V~+15V);
    • 低功耗,20mW。

DAC0832芯片位20脚双列直插式封装,其引脚分布如图,各引脚定义如下:

  • CS一片选信号输入端,低电平有效。
  • WRI一输入寄存器的写选通输入端,负脉冲有效(脉冲宽度应大于500ns)。当CS为0,ILE为1,WRl有效时DIO~DI7状态被锁存到输入寄存器。
  • DIO-DI7一数据输入端,TTL电平,有效时间应大于90ms。
  • VREF—基准电压输入端,电压范围为-10V~+10V。

2、Protuse仿真原理图

Protuse 仿真图

3、代码设计

      ORG  0000H
      LJMP MAIN;主函数入口
      ORG  0100H
MAIN: JNB  P1.0,P10;方波模式按键选择
      JNB  P1.1,P11;锯齿波模式按键选择
      JNB  P1.2,P12;三角波模式按键选择
      JNB  P1.3,P13;正弦波模式按键选择
      LJMP MAIN

P10:  MOV   R7,#00H;按键消抖
      LCALL SQU
      LJMP  MAIN
P11:  MOV   R7,#01H
      LCALL SAW
      LJMP  MAIN
P12:  MOV   R7,#02H
      LCALL TRI
      LJMP  MAIN
P13:  MOV   R7,#03H
      LCALL SIN
      LJMP  MAIN

SQU:  JNB  P1.1,N1;判断模式,方波入口
      JNB  P1.2,N2
      JNB  P1.3,N3
      LJMP SSQU
N1:   MOV  R7,#01H;误判处理
      LJMP TC0
N2:   MOV  R7,#02H
      LJMP TC0
N3:   MOV  R7,#03H
      LJMP TC0
SSQU: CJNE R7,#00H,TC0

      MOV  R0,#00H
      ;MOV  DPTR,#7FFFH
K00:  ;MOV  A,#0FFH
      ;MOVX @DPTR,A 
      MOV  P0,#0FFH;传输数据
      MOV  P2,#0FFH;
      MOV  A,P2;输出信号频率控制
      CPL  A
      MOV  R3,A
L00:  DEC  R3
      CJNE R3,#255,L00
      INC  R0
      INC  R0
      CJNE R0,#254,K00
      MOV  R0,#00H
K01:  ;MOV  A,#00H
      ;MOVX @DPTR,A
      MOV  P0,#00H
      MOV  P2,#0FFH
      MOV  A,P2
      CPL  A
      MOV  R3,A
L01:  DEC  R3
      CJNE R3,#255,L01
      INC  R0
      INC  R0
      CJNE R0,#254,K01
      LJMP SQU
TC0:  RET


SAW:  JNB  P1.0,N4;判断模式,锯齿波入口
      JNB  P1.2,N5
      JNB  P1.3,N6
      LJMP SSAW
N4:   MOV  R7,#00H
      LJMP TC1
N5:   MOV  R7,#02H
      LJMP TC1
N6:   MOV  R7,#03H
      LJMP TC1
SSAW: CJNE R7,#01H,TC1	 

      MOV  R0,#0FFH
      ;MOV  DPTR,#7FFFH
K10:  ;MOV  A,R0
      ;MOVX @DPTR,A 
      MOV  P0,R0
      MOV  P2,#0FFH
      MOV  A,P2
      CPL  A
      MOV  R3,A
L10:  DEC  R3
      CJNE R3,#255,L10
      INC  R0
      CJNE R0,#255,K10
      LJMP SAW
TC1:  RET

TRI:  JNB  P1.0,N7;判断模式,三角波入口
      JNB  P1.1,N8
      JNB  P1.3,N9
      LJMP TTRI
N7:   MOV  R7,#00H
      LJMP TC2
N8:   MOV  R7,#01H
      LJMP TC2
N9:   MOV  R7,#03H
      LJMP TC2
TTRI: CJNE R7,#02H,TC2

      MOV  R0,#00H
      ;MOV  DPTR,#7FFFH
K20:  ;MOV  A,R0
      ;MOVX @DPTR,A
      MOV  P0,R0
      MOV  P2,#0FFH
      MOV  A,P2
      CPL  A
      MOV  R3,A
L20:  DEC  R3
      CJNE R3,#255,L20
      INC  R0
      INC  R0
      CJNE R0,#254,K20
K21:  ;MOV  A,R0
      ;MOVX @DPTR,A
      MOV  P0,R0
      MOV  P2,#0FFH
      MOV  A,P2
      CPL  A
      MOV  R3,A
L21:  DEC  R3
      CJNE R3,#255,L21
      DEC  R0
      DEC  R0
      CJNE R0,#0,K21
      LJMP TRI
TC2:  RET

SIN:  JNB  P1.0,N10;正弦波入口
      JNB  P1.1,N11
      JNB  P1.2,N12
      LJMP SSIN
N10:  MOV  R7,#00H
      LJMP TC3
N11:  MOV  R7,#01H
      LJMP TC3
N12:  MOV  R7,#02H
      LJMP TC3
SSIN: CJNE R7,#03H,TC3	 

      MOV  R0,#00H
      ;MOV  DPTR,#7FFFH
K30:  MOV  A,R0
      MOV  DPTR,#TAB  
      MOVC A,@A+DPTR
      ;MOV  DPTR,#7FFFH
      ;MOVX @DPTR,A
      MOV  P0,A
      INC  R0
      MOV  P2,#0FFH
      MOV  A,P2
      CPL  A
      MOV  R3,A
L30:  DEC  R3
      CJNE R3,#255,L30
      CJNE R0,#255,K30
      LJMP SIN
TC3:  RET

TAB:  DB 80H,82H,84H,86H,88H,8AH,8CH,8EH,90H,92H,94H,96H,98H,9AH,9CH,9EH
      DB 0A0H,0A2H,0A4H,0A6H,0A8H,0AAH,0ABH,0ADH,0AFH,0B1H,0B2H,0B4H,0B6H,0B7H,0B9H,0BAH
      DB 0BCH,0BDH,0BFH,0C0H,0C1H,0C3H,0C4H,0C5H,0C6H,0C8H,0C9H,0CAH,0CBH,0CCH,0CDH,0CEH
      DB 0CEH,0CFH,0D0H,0D1H,0D1H,0D2H,0D2H,0D3H,0D3H,0D4H,0D4H,0D4H,0D4H,0D5H,0D5H,0D5H
      DB 0D5H,0D5H,0D5H,0D5H,0D4H,0D4H,0D4H,0D4H,0D3H,0D3H,0D2H,0D2H,0D1H,0D1H,0D0H,0CFH
      DB 0CEH,0CEH,0CDH,0CCH,0CBH,0CAH,0C9H,0C8H,0C6H,0C5H,0C4H,0C3H,0C1H,0C0H,0BFH,0BDH
      DB 0BCH,0BAH,0B9H,0B7H,0B6H,0B4H,0B2H,0B1H,0AFH,0ADH,0ABH,0AAH,0A8H,0A6H,0A4H,0A2H
      DB 0A0H,9EH,9CH,9AH,98H,96H,94H,92H,90H,8EH,8CH,8AH,88H,86H,84H,82H
      DB 80H,7DH,7BH,79H,77H,75H,73H,71H,6FH,6DH,6BH,69H,67H,65H,63H,61H
      DB 5FH,5DH,5BH,59H,57H,55H,54H,52H,50H,4EH,4DH,4BH,49H,48H,46H,45H
      DB 43H,42H,40H,3FH,3EH,3CH,3BH,3AH,39H,37H,36H,35H,34H,33H,32H,31H
      DB 31H,30H,2FH,2EH,2EH,2DH,2DH,2CH,2CH,2BH,2BH,2BH,2BH,2AH,2AH,2AH
      DB 2AH,2AH,2AH,2AH,2BH,2BH,2BH,2BH,2CH,2CH,2DH,2DH,2EH,2EH,2FH,30H
      DB 31H,31H,32H,33H,34H,35H,36H,37H,39H,3AH,3BH,3CH,3EH,3FH,40H,42H
      DB 43H,45H,46H,48H,49H,4BH,4DH,4EH,50H,52H,54H,55H,57H,59H,5BH,5DH
      DB 5FH,61H,63H,65H,67H,69H,6BH,6DH,6FH,71H,73H,75H,77H,79H,7BH,7DH
  	
      END

三、仿真验证

1、方波输出

100KHz–5Vpp 方波信号
在这里插入图片描述
100Hz–5Vpp 方波信号
在这里插入图片描述

2、锯齿波输出

100KHz–5Vpp 锯齿波信号
在这里插入图片描述

100Hz–5Vpp 锯齿波信号
在这里插入图片描述

3、三角波输出

100KHz–5Vpp 三角波信号
在这里插入图片描述
100Hz–5Vpp 三角波信号
在这里插入图片描述

4、正弦波输出

100KHz–5Vpp 正弦波信号
在这里插入图片描述
100Hz–5Vpp 正弦波信号
在这里插入图片描述
最后代码仿真,及原理图均已上传,详情参照代码;
https://download.csdn.net/download/weixin_42348938/19471570

评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值