求助:arduino 怎样去读取ET7208 七段音频数据
求助:arduino 怎样去读取ET7208 七段音频数据的数据。数据手册附在下面了,请大神们指点下。模块没用过,看了下技术手册,要走I2C口,读7段的地址位都给了 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;
}
解决了吗 最近开始研究ET7208驱动 想问到这里问问 谁会呀
页:
[1]