tombfw 发表于 2014-11-4 21:46:04

51向ad9762查表写正弦波,p0口和p1口干扰很大,是上拉电阻问....

本帖最后由 tombfw 于 2014-11-5 09:11 编辑

51的P0口和P1口接ad9762的12位输入端和Sleep、Clk端,p0口加了10K的上拉电阻,p1口没加,但是上电后发现p0口输出是直线,偶尔会有尖峰,上拉电阻选的太大吗?下面附上程序,基本思想是将正弦波分为256个点写入,将每个点12位二进制数分成高4位和低8位,将其定义成两个表,用两个指针分别指两个表,然后在p0口和p1口低四位输出,大家看一下程序有什么问题吗?谢了!

#define uchar unsigned char
#include<reg51.h>

char code table1={};      //表里的内容省略
char code table2={};
uchar *p0,*p1;                      //两个指针分别指向两个表
sbit Clk=P1^4;                     //AD9762时钟端
sbit Sleep=P1^5;
int count;                           //计数,表示已经指到第几个数

void main()
{
void Write_b9762();
p0=table1;
p1=table2;
Sleep=0;
Clk=0;
while(1)
{
   Write_b9762();
   if(count==255)
    {
       count=0;
    }
}
}

void Write_b9762()
{
   uchar tempt;
   Clk=0;
   tempt=(P1)|0x0f;
   P0=(*p0);
   P1=tempt&(*p1);
   Clk=1;
   p0++;
   p1++;
   count++;
}

朝闻夕道 发表于 2014-11-4 21:48:27

帮不上忙,好久不玩51了;

xinfa190 发表于 2014-11-4 22:36:25

表格长度应该是256就对了
页: [1]
查看完整版本: 51向ad9762查表写正弦波,p0口和p1口干扰很大,是上拉电阻问....