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++;
} 帮不上忙,好久不玩51了; 表格长度应该是256就对了
页:
[1]