Determining I2C Address without Datasheet
It's fairly easy to write an I2C "ping" utility for a microcontroller. All you need to do is scan through the ~128 addresses and for each one:


Send I2C Start condition
Send a single byte representing the address, and get the ACK/NAK
Send the stop condition.


If there is an ACK (the data line held low on the 9th clock cycle) then a device with that address is present on the I2C bus. If there is no ACK then no device is present.

Don't forget that I2C addresses are in the upper 7 bits of the byte (the last bit is for read/write). Also, don't forget to ignore the special I2C addresses in your scan: http://www.i2c-bus.org/addressing/

As for hardware almost anything will work. Even if your device doesn't have I2C support it's a simple enough (and slow enough) protocol where you can bit bang it. Just make sure that whatever you use never drives the I2C lines high, only low (as per spec).