256抽头精密数字电位器AD5160测试程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

/********* STC12C5A60S2平台AD5160数字电位器程序时钟:外部12M晶振

电位器串联外部电阻连接为可变电阻模式,若不串外部电阻直接接参考电压源即工作为数字电位计模式

*NOTE:作为可变电阻模式与外部电阻串联时存在一定程度容差,若所串电阻大于AD5160本身满量程电阻(型号有5K\10K\50K\100K)10倍以上则此容差才可忽略*****/

/*AD5160.H*/

#ifndef _AD5160_H_

#define _AD5160_H_

#include

#include

typedef unsigned char uchar;

typedef unsigned int uint;

sbit CPCS = P3^2; //数字电位器AD5160的片选CS,低电平有效

sbit SDI = P3^4; //数字电位器AD5160的数据SDI

sbit SCK = P3^5; //数字电位器AD5160的时钟SCLK

void AD5160_init() //AD5160初始化

{

CPCS = 1;

SCK = 0

SDI = 1;

}

void set_AD5160(uchar dat) //设定从W抽头到B端的抽头数,以10K版本的为{ //例电阻为R w B = 60+39*rdac 其中W抽头接触电阻为60Ω

uchar i,rdac=0;

CPCS = 1;

rdac = dat; //RDAC为写入AD5160 内部8位radc寄存器数据

SCK = 0;

_nop_();_nop_();_nop_();_nop_();

SCK = 1; //SCK在CS拉低前触发一个时钟

_nop_();_nop_();

SCK = 0;

_nop_();

CPCS = 0; //拉低CS启动数据写入

for(i=0;i<8;i++)

{

SDI = (rdac&0x80);

rdac<<=1; //高位MSB在先

_nop_();

SCK = 1;

_nop_();

SCK = 0;

}

CPCS = 1;

_nop_(); //片选拉高后SCK送一个结束时钟,这点很重要

SCK = 1;

_nop_();_nop_();

SCK = 0;

_nop_();

}

#endif

相关文档
最新文档