ok, probably I did´t clearly gave the point, but once you said that circuit and codes are not working, it is necessary know what debug tests you already performed at each part. This way we can focus attention at the hardware or at the firmware.
I could suggest you try separate each critical routine ( e.g : LCD, I2C, etc... ) in order to individually approve working of each one, because simulating entire program at once become difficult to determine exactly on what point the code fails.
+++