If it's displaying a copy of the first sprite there's only two ways that should happen - either your data in VRAM has another copy of the first sprite, or else your OAM data is pointing to the wrong sprite. In the main OAM table where each sprite has 4 bytes, the third byte should be set to select which sprite in the allocated region of VRAM to display, that's my guess where your problem is, it's probably still set to zero.
Code:
Byte 0: xxxx xxxx x: X coordinate
Byte 1: yyyy yyyy y: Y coordinate
Byte 2: cccc cccc c: Starting tile #
Byte 3: vhoo pppc v: vertical flip h: horizontal flip o: priority bits p: palette #