yizilong 发表于 2015-5-25 17:55:56

求助:arduino 怎样去读取ET7208 七段音频数据

求助:arduino 怎样去读取ET7208 七段音频数据的数据。数据手册附在下面了,请大神们指点下。

Cain 发表于 2015-5-26 10:15:21

模块没用过,看了下技术手册,要走I2C口,读7段的地址位都给了

yizilong 发表于 2015-5-29 09:21:59

Cain 发表于 2015-5-26 10:15
模块没用过,看了下技术手册,要走I2C口,读7段的地址位都给了

我照上面写了可是读不出数据来,下面是我写的代码
int scl = 2;
int sda = 3;
void setup() {
// put your setup code here, to run once:
I2C_Init();
Serial.begin(9600);
}

void loop() {

I2C_start();
i2c_writebyte(0x60);
i2c_writebyte(0x07);
I2C_start();
i2c_writebyte(0x61);
Serial.println(i2c_readbyte(), HEX);
I2C_stop();
pinMode(sda, OUTPUT);
delay(1000);
}
void I2C_Init(void)
{
pinMode(sda, OUTPUT);
pinMode(scl, OUTPUT);
digitalWrite(scl, HIGH);
digitalWrite(sda, HIGH);

}

void I2C_start(void)
{
digitalWrite(scl, HIGH);
digitalWrite(sda, HIGH);
delay(1);
digitalWrite(sda, LOW);
delay(1);
digitalWrite(scl, LOW);
}
void I2C_stop()
{
digitalWrite(scl, LOW);
digitalWrite(sda, LOW);
digitalWrite(scl, HIGH);
digitalWrite(sda, HIGH);

}

uint8_t i2c_writebyte(uint8_t d)//写一个字节
{
uint8_t i;
for (i = 0; i < 8; i++)
{
    uint8_t temp;
    temp = d;
    temp = (temp & 0x80);
    if (temp == 0x80)
    {
      digitalWrite(sda, HIGH);
    }
    else
    {
      digitalWrite(sda, LOW);
    }
    d = (d << 1);
    delay(1);
    digitalWrite(scl, HIGH);
    delay(1);
    digitalWrite(scl, LOW);
    delay(1);
}
digitalWrite(sda, HIGH);
delay(1);
digitalWrite(scl, HIGH);
delay(1);
digitalWrite(scl, LOW);
delay(1);

}
uint8_t i2c_readbyte(void)
{
uint8_t i, i2c_data;
pinMode(sda, INPUT);
i2c_data = 0x00;
for (i = 0; i < 8; i++)
{
    i2c_data = i2c_data << 1;
    delay(1);
    digitalWrite(scl, LOW);
    delay(1);
    digitalWrite(scl, HIGH);
    delay(1);
    if (digitalRead(sda) == HIGH)
    {
      i2c_data = i2c_data + 1;
    }
    else
    {
      i2c_data = i2c_data + 0;
    }
}
delay(1);
digitalWrite(scl, LOW);
delay(1);
digitalWrite(scl, HIGH);
return i2c_data;

}

chongs 发表于 2023-11-2 21:51:06

解决了吗 最近开始研究ET7208驱动 想问到这里问问 谁会呀
页: [1]
查看完整版本: 求助:arduino 怎样去读取ET7208 七段音频数据