标题: 51单片机加MAX517产生正弦波和三角波的keil程序加Proteus原理图 [打印本页]

作者: 霖白凌    时间: 2019-12-29 18:22
标题: 51单片机加MAX517产生正弦波和三角波的keil程序加Proteus原理图
因为单片机的结课要我们做一个AT89C51单片机加MAX517产生正弦波的程序加protues原理图的设计,我之前查了很多资料,但是都没有找到想成的(以前写设计习惯了直接下载别人的进行改进),好不容易找到了一个51单片机加MAX517的坛友写的程序,下载下来发现能用,于是乎我就在他的基础上加了一点点东西,也算得上是照抄吧,就可以产生正弦波了,要感谢这位坛友,[url=实现MAX517芯片的D/A转换程序。按一次KO键,数字量加一 http://www.51hei.com/bbs/dpj-37218-1.html (出处: 单片机论坛)]坛友的帖子链接,话不多说,我直接附上程序和电路图。

Altium Designer画的原理图和PCB图如下:(51hei附件中可下载工程文件)

烦烦烦烦烦烦.jpg (261.34 KB, 下载次数: 123)

烦烦烦烦烦烦.jpg

fffffffff.png (39.14 KB, 下载次数: 123)

fffffffff.png

正弦波发生器.zip

65.38 KB, 下载次数: 38, 下载积分: 黑币 -5

三角波发生器.zip

53.69 KB, 下载次数: 28, 下载积分: 黑币 -5


作者: hozhiwen    时间: 2019-12-31 00:05
不用DA芯片,直接用定时器产生PWM输出也可以的吧?
作者: 霖白凌    时间: 2019-12-31 10:57
我们师傅说必须用MAX517,不然就不用了
作者: 霖白凌    时间: 2020-1-3 17:57
经过稍微改进以后,这个正弦波发生器既可以调节频率又可以调节幅度,但只是有限次,因为我是事先把正弦波的点数值计算好,再存在一个数组里面的我只计算了64个点,所以波形时间要调大一点,不然分辨率没那么高,就有点不像正弦波了,我使用VC6.0软件计算点数存在数组里面的(在IIC.c文件里面),程序如下:
  1. #include<stdio.h>
  2. #include<math.h>

  3. #define PI 3.1415

  4. int main()
  5. {
  6.         unsigned int i,P2=0;
  7.     for(i=0;i<360;i++)
  8.     {
  9.        P2=127+(127*sin(PI*i/180));
  10.            printf("0X%X,",P2);          
  11.         }
  12.          printf("\n\n总共有%d个值\n\n",i);
  13.     return 0;
  14. }
复制代码


增加修改频率和幅度这两个功能修改了我将近完完整整的两天了,因为基础没打好,所以代码也比较冗长,有很多地方可以改进。我这一次加了很多注释,增加了代码的可读性。本人属于比较菜的那一种,希望大神多多指教。
我贴上几张图把,分别是调节频率的图片和调节幅度的图片。

调幅1.jpg (78.12 KB, 下载次数: 123)

2

2

调频1.jpg (78.46 KB, 下载次数: 116)

4

4

调幅2.png (94.71 KB, 下载次数: 122)

3

3

调幅2.png (94.71 KB, 下载次数: 106)

5

5

原始幅度频率.jpg (79.08 KB, 下载次数: 110)

1

1

正弦波发生器 - 2 - 副本.zip

102.69 KB, 下载次数: 13, 下载积分: 黑币 -5


作者: 霖白凌    时间: 2020-1-10 21:51
现在发一下word文档说明,英语翻译我是用有道翻译翻译的 MAX517正弦波发生器.docx (1.07 MB, 下载次数: 8)




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1