用到数字电位器x9c503,所以就把芯片插到面包板里测试一下,试着写了个驱动程序,但是用万用表测输出电压的时候,数字电位器的电压输出一直不变,所以想请教下大家关于数字电位器的驱动问题,希望能给我点小帮助。PS: CS接PB0,INC接PB1,U/D接PB2,VH/RH接5v电压,VL/RL接地,VCC接5v电压,VSS接地。
驱动程序如下:
#define BAUD 9600
#include<avr/io.h>
#include<util/delay.h>
#include<util/setbaud.h>
#include<avr/pgmspace.h>
#include<avr/interrupt.h>
unsigned char X9C503_Val;
#define SETB_(x) PORTB|=(1<<(x))
#define CLR_(x) PORTB&=~(1<<(x))
#define X9C503_CS PB0
#define X9C503_INC PB1
#define X9C503_UD PB2
void X9C503_Inc(unsigned char N)
{
unsigned char i=0;
SETB_(X9C503_UD);
CLR_(X9C503_CS);
for(i=N;i>=0;i--)
{
SETB_(X9C503_INC);
CLR_(X9C503_INC);
X9C503_Val++;
}
SETB_(X9C503_CS);
SETB_(X9C503_UD);
}
void X9C503_Dec(unsigned char N)
{
unsigned char i=0;
CLR_(X9C503_UD);
CLR_(X9C503_CS);
for(i=N;i>=0;i--)
{
SETB_(X9C503_INC);
CLR_(X9C503_INC);
X9C503_Val--;
}
SETB_(X9C503_CS);
SETB_(X9C503_UD);
}
void X9C503_Rst()
{
X9C503_Dec(100);
X9C503_Val=0;
}
int main ()
{
X9C503_Rst();
X9C503_Inc(20);
}
|