打印

以PCF8574芯片学习I2C协议,出现写入地址不响应的问题,含图

[复制链接]
1446|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xichandoujigu|  楼主 | 2018-4-6 11:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 xichandoujigu 于 2018-4-6 19:42 编辑

最近学习I2C,在学PCF8574扩展IO显示LED的时候发现显示不正确,不知道怎么回事,还请指教。
下面是代码和图,代码是网上找来修改的。

仿真图如下

代码如下
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit sda=P0^0;
sbit scl=P0^1;
void delay()
{ ;; }
void start() //开始信号
  {
      sda=1;
      delay();
      scl=1;
      delay();
      sda=0;
     delay();
   }
void stop() //停止
  {
     sda=0;
    delay();
    scl=1;
    delay();
    sda=1;
    delay();
  }
void respons() //应答
   {
       uchar i;
    scl=1;
    delay();
    while((sda==1)&&(i<250))i++;
    scl=0;
    delay();
   }
void init()//初始
  {
       sda=1;
       delay();
       scl=1;
       delay();
   }
void write_byte(uchar date)   //写
  {
        uchar i,temp;
        temp=date;
             for(i=0;i<8;i++)
                  {
                        temp=temp<<1;
                        scl=0;
                        delay();
                        sda=CY;
                        delay();
                        scl=1;
                        delay();
                  }
        scl=0;
        delay();
        sda=1;
         delay();
    }

void write_add(uchar date1) //根据地址写
   {
            start();
              write_byte(0x40); //8574地址为0100ABC0,最后一位0为写,我的ABC接地都为0;
            //这里0x40是我自己根据地址位算的
             respons();
            write_byte(date1);
            respons();
             stop();
   }

void main()
{
       while(1)
             {  init() ;
                     write_add(0xAA) ;   //写入10101010
               }      
}

运行时序图如下







第一个时序图写地址,第二个时序图写数据,时序图可以看出:
第一次写地址时候就八个时钟信号,这很奇怪,没有第九个时钟;
第二次写数据时候有第九个时钟,但sda数据为高,未响应;
启动和停止时序都是对的。
运行结果是8574的P0-P7端口为灰色。上面的仿真图可以看到。

请问,是哪里不对呢?





相关帖子

沙发
xichandoujigu|  楼主 | 2018-4-7 17:33 | 只看该作者
解决了,主要是调试方法不对。

使用特权

评论回复
板凳
dirtwillfly| | 2018-4-9 16:31 | 只看该作者
xichandoujigu 发表于 2018-4-7 17:33
解决了,主要是调试方法不对。

能者自答

使用特权

评论回复
地板
零三翟邢止胃| | 2019-3-25 09:00 | 只看该作者
主要是调试方法不对。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

31

主题

96

帖子

2

粉丝