Het schema is niet helemaal duidelijk, al denk ik dat het geheel via een USB-stekker gevoed wordt. Verder denk ik dat :
- blauwe lijnen : GND
- rode lijnen : +5V
- zwarte lijnen : Data en/of signaal
- B1 .. B5 zijn druktoetsen
Maar hoe de LCD in elkaar zit is me daadwerkelijk een raadsel. Ik zie wel dat er 16 pinnen op zouden moeten zitten, dus waarschijnlijk met backlight. Zoals jij de LCD hebt aangesloten of getekend lijkt me niet correct. Meestal zijn de buitenste pinnen (pin 1 en 16) aangesloten op GND. Dat zie ik hier niet terug. De datalijnen DB4 .. DB7 zijn denk ik 14 t/m 11.
Hieronder zie je een foto van een 2x16 LCD zonder backlight en de 14 aansluitpinnen. Een LCD met backlight heeft vaak 16 pinnen, en ik heb die extra pinnen maar met rode text beschreven.
Ik vermoed daarom ook dat je de LCD niet goed hebt aangesloten. Dat verklaart waarschijnlijk ook waarom je een zwarte balk te zien krijgt. Vaak is dat een indicatie dat er wel voeding is, maar dat er geen data ontvangen wordt, die je van de Atmega328 naar het LCD stuurt.
Verder adviseer ik je de knoppen anders aan te sluiten. Wanneer je ze indrukt, wordt er een verbinding met GND gemaakt. Maar wat krijgt de Atmega328 te zien, wanneer die niet ingedrukt is ? Geen +5V en geen GND.
Je kunt beter voor het volgende kiezen :
Op deze manier staat er altijd GND op de pin van de Atmega328. Zodra je de knop indrukt, staat er +5V op de pin van de Atmega328.
Ik kan verder niets inhoudelijks zeggen over je broncode, omdat ik nog nooit met Arduino en de bijbehorende programmering heb gewerkt.
Toch hoop ik dat je met bovenstaande uitleg een stukje verder komt.