基于单片机的DDS函数信号发生器

单片机DDS函数信号发生器设计

该设计以AT89S52为主控芯片,通过控制高性能DDS(直接数字频率合成)芯片AD9834产生不同频率的信号,经过6阶巴特沃兹低通滤波电路,连接数字电位器的运算放大电路,输出信号。可以输出不同频率的正弦波、三角波和方波,使用LCD1602液晶显示屏实时显示输出波形的类型、频率和幅值等信息。

一.引言

函数信号发生器有多种设计方法,本文设计是基于单片机的DDS函数信号发生器。它的基本原理是通过单片机控制DDS芯片产生不同类型、不同频率以及不同幅值的波形信号,这种方法具有精度高、性能稳定的特点,得到了广泛的应用

二.硬件设计

主要包括单片机控制电路、USB供电电路、下载程序电路、按键电路、稳压电路、DDS电路、低通滤波电路、调幅电路以及显示电路。整体设计框图如下图所示。

在这里插入图片描述

1.1 单片机控制电路
采用AT89S52单片机作为控制芯片,图2.2所示为单片机控制电路。按下复位按钮K6,复位脚得到VCC的高电平,单片机复位,按钮松开后,单片机开始工作。时钟电路和单片机内部振荡电路一起构成了单片机的内部时钟方式。
在这里插入图片描述

1.2 DDS电路

设计采用的是ADI公司生产的一款DDS芯片AD9834。AD9834 是一款低功耗、可编程的波形发生器,它不仅能产生正弦波,还能输出三角波和方波,其时钟频率为75MHz,故最大能产生37.5MHz的信号。AD9834输出的正弦波和三角波的频率、相位都可以通过控制芯片进行编程控制,调节简单,本文通过单片机控制AD9834,进行编程控制,输出波形、频率和幅值。
在这里插入图片描述

1.3 滤波电路

由于DDS芯片产生的信号频率并不是纯净的,且由于各种仪器的相互干扰,所以滤波电路就显得极其重要。因为巴特沃斯滤波器有着最平坦的通带幅频特性,根据本设计需求,阶数增高,滤波效果就越好。
在这里插入图片描述

1.4 稳压电路
采用AMS1117-3.3V芯片,将主电路电源5V稳压为3.3V,提供给DDS电路(AD9834电路),使其功耗较低。

在这里插入图片描述
1.5 按键电路
本设计需要通过按键输入所需函数信号的输出波形、频率和幅值,采用独立按键,每个按键占用一个I/O资源口,设计电路简单。按键K1-K5分别连接到单片机AT89S52的P3.2-P3.6引脚,K1是数字按键,可以改变频率值;K2是频率的位选按键;K3是增加幅值按键;K4是减小幅值按键;K5是波形选择按键。
在这里插入图片描述
1.6 调幅电路
由于要使输出波形的幅值可调,所以在DDS的输出端加上一个数字电位器MCP41010和运算放大器AD8065,对运算放大器使用单电源5.0V进行供电,后续6倍放大,数字电位器MCP41010的片选CS、CLK、SI端口分别连接单片机的P1.0、P1.2、P1.3,如下图所示。
在这里插入图片描述
1.7 供电与下载电路
采用自锁开关,USB供电方式,给单片机主电路供电,下载采用ISP在线烧写程序方式。
在这里插入图片描述
1.7 显示电路
显示采用LCD1602液晶实现。液晶显示屏的DB0-DB7端口分别与单片机的P0.0-P0.7连接;RS、RW、E端口分别与单片机的P2.1、P2.2、P2.3连接,通过编写程序在液晶上显示信息,第一行显示幅值“am”,单位是“V”、波形类型,第二行显示频率值和位选信号;引脚VO外接一个2K可调电阻器,可以通过改变其阻值,调节液晶显示屏的亮度。
在这里插入图片描述

二.软件设计

采用模块化设计。 主要优点是:单个模块比起一个完整的程序易编写、调试及修改,程序的易读性好,程序的修改可局部化、模块可以共存,一个模块可以被多个任务在不同条件下调用。
本程序设计主要分为main主函数、AD9834部分、按键部分、LCD1602显示部分。设计流程图如下图所示。
在这里插入图片描述

2.1 AD9834写入数据

AD9834拥有三个标准串行接口,分别是引脚13(SDATA)、引脚 14(SCLK)、引脚14(FSYNC),分别连接单片机P1.3、P1.2和P1.1端口。SCLK是串行时钟输入,为内部时钟,下降沿触发SDATA,16位串行数据字通过端口SDATA输入。当时序时间为SCLK的下降沿时,16位数据被依次被读入AD9834,FSYNC处于低电平时输入有效,当它位于高电平时,数据不能被输入,SDATA更新。所以FSYNC可以被用作片选信号,当FSYNC保持低电平时,新的控制字被写入AD9834中,当FSYNC保持上升沿时,可以从引脚19、引脚20输出信号。
AD9834开始写入16位数据代码:

void AD9834_Write_16Bits(unsigned int Data)	//向AD9834要写入的16位数据
{
   
    unsigned char i = 0 ;
SCLK=1;
FSYNC=1;
    FSYNC=0;  //低电平使数据有效
    for(i=0 ;i<16 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值