请教数字电位器AD5260
本帖最后由 songguoda 于 2013-4-26 18:20 编辑纠结了好几天,程序硬是不通!还请哪位好心的高手帮我看看呀
头文件
#ifndef _AD5260_H_
#define _AD5260_H_
//M64管脚定义
#define AD5260_CS 5 //PF5
#define AD5260_SDI 3 //PF3
#define AD5260_CLK 4 //PF4
#define AD5260_SDO 6 //PF6
//宏定义
#define CS_LPORTF&=~(1<<AD5260_CS) //置CS为低电平,使能SPI接口,使能AD5260 SPI通讯
#define CS_HPORTF|= (1<<AD5260_CS) //置CS为高电平,关闭SPI接口,关断AD5260 SPI通讯
#define CLK_L PORTF&=~(1<<AD5260_CLK) //SPI总线时钟线
#define CLK_H PORTF|=(1<<AD5260_CLK)
#define SDI_L PORTF&=~(1<<AD5260_SDI) //SPI总线数据线
#define SDI_H PORTF|=(1<<AD5260_SDI)
//#define SDO_L PORTF&=~(1<<AD5260_SDO) //SPI总线数据线
//#define SDO_H PORTF|=(1<<AD5260_SDO)
extern void Write_Byte(uchar data);
#endif
源文件
#include "main.h"
#include "ad5260.h"
void Write_Byte(uchar data)
{
uchar i,data1;
DDRF|=(1<<AD5260_CS)|(1<<AD5260_CLK)|(1<<AD5260_SDI);
DDRF&=~(1<<AD5260_SDO);
PORTF|= (1<<AD5260_SDO);
data1=data;
CS_H;
delay_us(1);
CS_L;
CLK_L;
for(i=0;i<8;i++)
{
if(data1&0x80)
{
SDI_H;
}
else
{
SDI_L;
}
CLK_H;
delay_us(1);
CLK_L;
data1=data1<<1;
delay_us(1);
}
CS_H;
delay_us(1);
}
原理图
本帖最后由 songguoda 于 2013-4-26 18:19 编辑
根据时序图编的程,应该是没有错的,芯片都换了三四块了,输出端硬是没有变化 自已顶一下 用示波器量下单片机控制的这几根线是否控制的对,再看延时程序,刚开始调试可以延的长一些,等有反应后再减小延时程序 谢谢热心朋友,问题解决了,程序没问题,是芯片的VL引脚要接VCC 楼主,这颗芯片可编程多少位的,价格多少 请问楼主,我也是按照你的电路图接的!VL也接VCC了 怎么W端还是没有信号呀! 我是用51写的驱动! 正打算用
页:
[1]