打印
[51单片机]

求助帖(正弦波发生器)

[复制链接]
794|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 公子墨 于 2017-7-30 21:51 编辑

最近写了一个正弦波发生的程序,用的是51单片机和DAC0832,连接图和示波器图如下,我的问题是为什么是示波器的波形是这个样子的,很奇怪无论我怎么改程序它都是这个样子:比如取一次波形表,第二次取反等等。求助各位大大
#include<reg51.h>
#include<absacc.h>

#define uchar unsigned char
#define uint unsigned int

sbit csda=P3^6;
sbit wr=P2^7;


uchar code sin[256]={
                    0x80,0x83,0x86,0x89,0x8c,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,
                                        0xae,0xb1,0xb3,0xb6,0xb9,0xbc,0xbf,0xc1,0xc4,0xc7,0xc9,0xcc,0xce,0xd1,0xd3,
                                        0xd5,0xd8,0xda,0xdc,0xde,0xe0,0xe2,0xe4,0xe6,0xe8,0xea,0xeb,0xed,0xef,0xf0,
                                        0xf1,0xf3,0xf4,0xf5,0xf6,0xf8,0xf9,0xfa,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xfe,
                                        0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xfe,0xfd,0xfd,0xfc,0xfb,
                                        0xfa,0xfa,0xf9,0xf8,0xf6,0xf5,0xf4,0xf3,0xf1,0xf0,0xef,0xed,0xeb,0xea,0xe8,
                                        0xe6,0xe4,0xe2,0xe0,0xde,0xdc,0xda,0xd8,0xd5,0xd3,0xd1,0xce,0xcc,0xc9,0xc7,
                                        0xc4,0xc1,0xbf,0xbc,0xb9,0xb6,0xb3,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,
                                        0x99,0x96,0x93,0x90,0x8c,0x89,0x86,0x83,0x80,0x7d,0x7a,0x77,0x74,0x70,0x6d,
                                        0x6a,0x67,0x64,0x61,0x5e,0x5b,0x58,0x55,0x52,0x4f,0x4d,0x4a,0x47,0x44,0x41,
                                        0x3f,0x3c,0x39,0x37,0x34,0x32,0x2f,0x2d,0x2b,0x28,0x26,0x24,0x22,0x20,0x1e,
                                        0x1c,0x1a,0x18,0x16,0x15,0x13,0x11,0x10,0x0f,0x0d,0x0c,0x0b,0x0a,0x08,0x07,
                                        0x06,0x06,0x05,0x04,0x03,0x03,0x02,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
                                        0x01,0x02,0x02,0x02,0x03,0x03,0x04,0x05,0x06,0x06,0x07,0x08,0x0a,0x0b,0x0c,
                                        0x0d,0x0f,0x10,0x11,0x13,0x15,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x24,0x26,
                                        0x28,0x2b,0x2d,0x2f,0x32,0x34,0x37,0x39,0x3c,0x3f,0x41,0x44,0x47,0x4a,0x4d,
                                        0x4f,0x52,0x55,0x58,0x5b,0x5e,0x61,0x64,0x67,0x6a,0x6d,0x70,0x74,0x77,0x7a,0x7d,
};




void delay(uint m);



void main()
{
        csda=0;
        
        while(1)
        {
               
        uint t;
                wr=0;

        for(t= 0; t< 256; t= t+ 1)
        {
                        
                P0 = sin[t];
                delay(10);
        
        }
        }
}

void delay(uint m)
{
        uint i , j;
        for(i = 0; i < m; i++)
                for(j = 0; j < 120; j++);
}


相关帖子

沙发
mcu5i51| | 2017-7-31 09:06 | 只看该作者
远看好像是运放的问题,去掉或换掉或加电压,或减少输出电压等

使用特权

评论回复
板凳
sky9218| | 2017-7-31 09:48 | 只看该作者
看下上半周削顶哪里电压是不是接近于供电电压,若是则上半周饱和了,减小输出幅值。

使用特权

评论回复
地板
公子墨|  楼主 | 2017-7-31 11:22 | 只看该作者
sky9218 发表于 2017-7-31 09:48
看下上半周削顶哪里电压是不是接近于供电电压,若是则上半周饱和了,减小输出幅值。 ...

感谢大大的建议,我来尝试一下

使用特权

评论回复
5
公子墨|  楼主 | 2017-7-31 11:22 | 只看该作者
mcu5i51 发表于 2017-7-31 09:06
远看好像是运放的问题,去掉或换掉或加电压,或减少输出电压等

感谢大大的的意见,我尝试一下

使用特权

评论回复
6
公子墨|  楼主 | 2017-7-31 11:24 | 只看该作者
经修改,波形是这个样子的

使用特权

评论回复
7
coody| | 2017-7-31 18:38 | 只看该作者
我用的是MCU的IO接R-2R电阻做8位的DAC,按DDS原理做的正弦波、三角波、方波发生器,最高频率300KHZ,步进0.1HZ。

使用特权

评论回复
8
公子墨|  楼主 | 2017-7-31 22:40 | 只看该作者
coody 发表于 2017-7-31 18:38
我用的是MCU的IO接R-2R电阻做8位的DAC,按DDS原理做的正弦波、三角波、方波发生器,最高频率300KHZ,步进0. ...

大大您好,能给我借鉴一下吗

使用特权

评论回复
9
chunyang| | 2017-7-31 23:40 | 只看该作者
换轨到轨输出型运放或提高运放供电电压,同时加有源低通滤波环节。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

5

帖子

0

粉丝