qq252537834 发表于 2012-7-30 20:37:54

关于ZLG7290的一点问题


/*******************************************************************
                  向有子地址器件读取多字节数据函数               
函数原型: bitISendStr(uchar sla,uchar suba,ucahr *s,uchar no);
功能:   从启动总线到发送地址,子地址,读数据,结束总线的全过程,从器件
          地址sla,子地址suba,读出的内容放入s指向的存储区,读no个字节。
         如果返回1表示操作成功,否则操作有误。
********************************************************************/
bit IRcvStr(uchar sla,uchar suba,uchar *s,uchar no)
{
   uchar i;

   Start_I2c();               /*启动总线*/
   SendByte(sla);            /*发送器件地址*/
   if(ack==0)return(0);
   SendByte(suba);            /*发送器件子地址*/
   if(ack==0)return(0);

   Start_I2c();
   SendByte(sla+1);
      if(ack==0)return(0);

   for(i=0;i<no-1;i++)
    {   
   *s=RcvByte();               /*发送数据*/
      Ack_I2c(0);                /*发送就答位*/
   s++;
    }
   *s=RcvByte();
    Ack_I2c(1);               /*发送非应位*/
Stop_I2c();                  /*结束总线*/
return(1);
}

/***************************************
                     接收键值
***************************************/
unsigned char        ZLG7290_GetKey()
{
        unsigned char rece;
        rece=0;
        IRcvStr(zlg7290,1,&rece,1);
        delayMS(10);
        return rece;
}


按照芯片手册上的图接上按键,只要有键按下就会自动发送中断?
读取的键值是多少,只接16个按键的话其余的引脚怎么处理?

zenwall 发表于 2012-7-30 21:36:43

有键按下int引脚输出低电平;
读取的键值取决于你按下的键,如果按照手册上的电路,键值就是按键的标号,即按下S1,读到的值是1;
只需16按键的话可将其他的按键和对应的4148二极管去掉;如果不需要显示可将数码管那部分电路去掉。

qq252537834 发表于 2012-7-30 22:21:27

zenwall 发表于 2012-7-30 21:36 static/image/common/back.gif
有键按下int引脚输出低电平;
读取的键值取决于你按下的键,如果按照手册上的电路,键值就是按键的标号,即 ...

4148是必须要接的吗?不接有什么后果

zenwall 发表于 2012-7-30 22:27:25

你可以试试,留出4148的封装,然后焊个0欧电阻,实验出真理。

Gnd 发表于 2013-1-10 19:13:03

最近用了这个芯片,其实主要就是把i2c调好,然后按照数据手册的指令来操作就行了。
发现一个问题,5块芯片的复位脚强行拉低并不能复位。
这个芯片的i2c速度还是低了点。
页: [1]
查看完整版本: 关于ZLG7290的一点问题