xyzasdad 发表于 2008-3-16 14:02:27

请教一下:我用AVR128控制AD1674,始终没反应,请帮忙看看

unsignedchar DisTab[]={
0xfc,0x60, 0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,
0xfd,0x61,0xdb,0xf3,0x67,0xb7,0xbf,0xe1,0xff,0xf7,0x00,0x02,
};


unsigned int AD574value;






//#define AD574POL2
#define AD57420V
#define AD574DataDDR DDRA
#define AD574Data PINA

#define AD574ctrl PORTD
#define AD574ctrlPIN PIND
                                                                  
#define AD574_A0 PD4
#define AD574_RC PD5
#define AD574_STS PD6
//CE接VCC,CS,12/8接GND
#define ADC_8AD574ctrl &= ~BIT(AD574_A0);        //A0为0
#define Out_H8 AD574ctrl &= ~BIT(AD574_A0);        //高八位输出
#define Out_L4 AD574ctrl |= BIT(AD574_A0);//低四位输出
#define AD574_Start AD574ctrl &= ~BIT(AD574_RC);
#define AD574_Read AD574ctrl |= BIT(AD574_RC);

void AD574Convert(void)        //双极
{
        unsigned char h8,l4;

        ADC_8;
        AD574_Start;//启动转换
        while(AD574ctrlPIN & BIT(AD574_STS));//等待转换结束
        AD574_Read;
        Out_H8;
        h8=AD574Data;
        Out_L4;
        l4=AD574Data;
#ifndef AD574POL2        //不是双极性
        AD574value=(h8<<4)+(l4>>4);
        #ifndef AD57420V
                AD574value/=0.4096;
        #else
                AD574value/=0.2048;
        #endif
#else                                //双极性
        if(h8 & 0x80)
        {
                AD574value=((h8 & 0x7f)<<4)+(l4>>4);
        }else AD574value=(((~h8) & 0x7f)<<4)+((~l4)>>4);
        #ifndef AD57420V
                AD574value/=0.4096;
        #else
                AD574value/=0.2048;
        #endif
#endif
}

void ad574init()
{
        AD574DataDDR=0x00;        //AD574对应的管脚输入
        //PORTB=0xff;
        //DDRB=0xff;
        DDRD &= ~BIT(AD574_STS);//AD574状态口输入
}

hl0716 发表于 2008-3-16 17:12:01

我以前搞这个也搞了很久.没有搞出来

你有视波器没有,看看时序

xyzasdad 发表于 2008-3-16 18:39:07

我用的是PROTEUS仿真,看到AD输出口电平没有变化

xyzasdad 发表于 2008-3-18 21:02:01

没有哪位兄弟可以帮忙吗?

tanguicaicai 发表于 2014-6-21 17:01:01

现在我也是!能启动但就是读不出来数据!
页: [1]
查看完整版本: 请教一下:我用AVR128控制AD1674,始终没反应,请帮忙看看