单片机/MCU论坛
直播中

范文进

6年用户 3经验值
私信 关注
[问答]

51单片机+pcf8591模块 简单的数模转换,硬件没问题,程序没报错,可就是模块上aout处的灯一直不亮是为什么?

51单片机+pcf8591模块 简单的数模转换,硬件没问题,程序没报错,可就是模块上aout处的灯一直不亮,谁来指导一下吗?真心求教


以下为代码:


#include
#include
#define uchar unsigned char
#define delay_5t {_nop_();_nop_();_nop_();_nop_();_nop_();}
***it SCL = P2^0 ;
***it SDA = P2^1 ;
void IIC_start(void);
void IIC_stop(void);
bit ask_check(void);
bit sent_byte(uchar DAT);
void DAC_out(uchar DAT);


void IIC_start()
{
    SDA=1;
    SCL=1;
    delay_5t;
    SDA=0;
    delay_5t;
}


void IIC_stop()
{
    SDA=0;
    SCL=1;
    delay_5t;
    SDA=1;
    delay_5t;
}


bit sent_byte(uchar DAT)
{
    uchar i;
    uchar temp;
    bit ask;
    temp = DAT ;
    for(i=0;i<8;i++)
    {
        SCL=0;
        if(temp&0x80==0x80)
            SDA=1;
        else
            SDA=0;
        delay_5t;
        SCL=1;
        temp = temp << 1;
        delay_5t;
    }   
    SCL=0;
    ask = ask_check();
    return ask;     
}


bit ask_check()
{
    bit ask_bit;
    SDA=1;
    delay_5t;
    SCL=1;
    ask_bit = SDA;
    SCL=0;
    return ask_bit;   
}


void DAC_out(uchar DAT)
{
    IIC_start();
    if(sent_byte(0x90) == 1)
        {
            IIC_stop();
            return;
        }
    sent_byte(0x40);
    sent_byte(DAT);
    IIC_stop();
}


void main()
{
   DAC_out(0xff);
   while(1);
}

回帖(2)

jinyi7016

2018-7-22 14:59:09
你怎么知道硬件没有错,
程序没有报错只是没有语法问题,逻辑上可能有问题
举报

hhhhh

2018-7-30 18:50:47
iic要求时序比较严谨,你还是好好查查
举报

更多回帖

发帖
×
20
完善资料,
赚取积分