基于STM32F103ZET6和AD9850的任意波形发生器

您所在的位置:网站首页 Ad9851转换公式 基于STM32F103ZET6和AD9850的任意波形发生器

基于STM32F103ZET6和AD9850的任意波形发生器

2024-07-09 09:37| 来源: 网络整理| 查看: 265

基于STM32F103ZET6和AD9850的任意波形发生器

一、任务 设计制作一个任意波形发生器,该波形发生器能产生正弦波、方波、三角波, 波形发生器能够在一定范围内保证恒压输出。 二、要求 1、基本要求

(1)波形发生器能产生正弦波、方波、三角波三种周期性信号; (2)输出波形的频率范围为 100Hz~100kHz;频率可调,频率步进间隔≤ 100Hz; (3)在 50Ω负载条件下,输出电压峰-峰值最大值≥2V; (4)显示输出波形的类型、重复频率(周期)和幅度的功能; (5)用示波器观察时无明显失真。

2.发挥部分

(1)正弦信号频率范围扩展至 1Hz~10MHz,进一步提高方波和三角波输 出频率。 (2)具有输出频率和频率步进设置功能; (3)在 50Ω负载条件下,输出电压峰-峰值最大值≥5V; (4)具有波形类型和频率和幅度显示功能; (5)可以输出至少一种任意波形。

三、说明 1、基本部分频率调节方式可以采用模拟式或数字式,发挥部分的频率调节 只能为数字式。 2、发挥部分输出频率和频率步进需要利用键盘进行设置。 3、任意波波形的种类可以任选,可以改变频率。

*************分割线-----------------------/ 这是我们学校电赛校级选拔赛的一道题目,我和我的队友梁某人从7/19-7/25早上八点前完成的,大概共花了6天左右的时间。验收时所有功能都能实现,成绩是满分(2333hhhh),所以用博客记录下我们的第一次合作完成一个小比赛的历程~ *************分割线-----------------------/ 开始准备做的时候 第一件事当然是查找资料和确定方案。一开始选择这个题目的原因完全是因为觉得 “任意波形发生器,是真的可以产生波形吗?感觉好像很好看 又好玩的亚子”…然后就选了,但是其实那时候连DDS是啥我都不知道。。老师说了一堆方案,可惜我好像啥也听不懂(水过鸭背233)?!果然还是得自己慢慢查找资料,最终我们确定了两种主要的方案。

1、用STM32内部自带的AD产生所有的波形 2、用STM32内部自带AD产生三角波,再用AD9850产生正弦波和方波

由于考虑到32产生的波形最高只能达到14MHz,达不到题目要求。故我们选择了方案2。

我们最终的成品:

1、能产生最高频率为14MHz的三角波、锯齿波, 2、正弦波和方波的频率能保证100MHz内不失真, 3、输出幅值能达到6~7V(但其实也可以更高,改变后级放大电路的阻值即可) 4、产生的波形名称在OLED屏上显示 5、通过按键实现任意波形的切换和频率值的改变

程序如下: 1、主函数

主要包括一些硬件的初始化、及显示

int main(void) { // u32 freq; float Um; Um= 6.6; // freq=100; SineWave_Init1(freq,Um); ///******/// delay_init(); OLED_Init(); HardwareInit(); AD9850_Init(); OLED_ShowString(0,0, "xiuer"); OLED_Refresh_Gram(); //调用显示函数之后必须更新缓存 OLED_Clear(); Delay_ms(100); while(1) { GetKeyVal(); if(flange==1) { SineWave_Init2(freq,Um); display(); } else { SineWave_Init1(freq,Um); display


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3