Forum: Mikrocontroller und Digitale Elektronik TG12864B-05 mit Atmel betreiben


von CE (Gast)


Angehängte Dateien:

Lesenswert?

Hey,

ich habe mir ein TG12864B-05 gekauft und möchte es mit einem Atmega 
168PA betreiben.
Das wichtigste sollte wie folgt angeschlossen sein:
  //PORT D0-D7 = Datenleitung
  //PORT B0 = D/I -> High = Data Signal | L = Instruction Signal
  //PORT B1 = R/W -> High = Read Mode | L = Write Mode
  //PORT B2 = EN -> High = Output data | L = Latches Data
  //PORT B3 = CS1 (H) -> Chip select for 0-63
  //PORT B4 = CS2 (H) -> Chip select for 64-127
  //PORT B5 = Reset

(Auszug aus c file)


VDD, VSS, LED+, LED- etc. erklärt sich denke ich von selbst.
Bei der Kontrastspannung mit V0 und VEE bin ich mir zwar nicht zu 100% 
sicher gewesen mit der Umsetzung aber da ich mit dem Poti folgendes 
einstellen kann:
http://abload.de/img/a3hudv.jpg

Sollte es wohl funktionieren.


Jetzt bleibt nur noch der Code. Ich habe es möglichst kompakt gehalten, 
man sollte sich also relativ schnell einen Überblick verschaffen können.

Wäre sehr nett wenn mal jemand schaut. Bei Fragen stehe ich natürlich 
zur Verfügung.

Schon mal danke und einen schönen Abend.

von Pete K. (pete77)


Lesenswert?

Und, funktioniert es?

Kennst Du das Wort Abblockkondensatoren?

Ein paar ms warten, bevor sich alles gerüttelt hat kann nicht schaden 
(50-100ms vor initlcd)

: Bearbeitet durch User
von CE (Gast)


Lesenswert?

Kennen ja, aber verwenden...
Bisher lief jede Schaltung in Kombinaton mit Atmegas ohne.

Ich hätte jetzt nur 22nF griffbereit, sollte das genügen?

von holger (Gast)


Lesenswert?

Du musst noch den Befehl Display on an den Controller senden:

   RS_OFF; //Instruction senden setzen
   WriteDisplay(0x3F); //Befehl Display On

// Tip von xxxxxxxx: Display Start Line bei seinen Displays nach Reset 
scheinbar nicht ok.
// Das Bild ist dann in Y-Richtung verschoben. Dies soll helfen.
   NOP; NOP;
   WriteDisplay(0xC0); //Befehl Display Start Line 0 für jeden 
Controller senden

   RS_ON; //Zurück auf Daten

von spess53 (Gast)


Lesenswert?

hI

>// Tip von xxxxxxxx: Display Start Line bei seinen Displays nach Reset
>scheinbar nicht ok.
>// Das Bild ist dann in Y-Richtung verschoben. Dies soll helfen.
>   NOP; NOP;
>   WriteDisplay(0xC0); //Befehl Display Start Line 0 für jeden
>Controller senden

Das Startline-Register wird beim Reset auf 0 gesetzt.

MfG Spess

von CE (Gast)


Lesenswert?

Also ich habe nun folgendes gemacht:
- Abblockkondensatoren zwischen VDD und VSS beim LCD sowie VCC UND GND 
beim Atmega
- In der main methode warte ich anfangs noch 100ms
- Meine Init Funktion sieht nun so aus:
1
void lcd_init()
2
{
3
4
  LCD_CMD_DDR |= (1<<DI) | (1<<RW) | (1<<EN) | (1<<CS1) | (1<<CS2) | (1<<RESET);
5
  
6
  lcd_chip_select(CHIP1|CHIP2);
7
8
  LCD_CMD_PORT &= ~(1<<RESET);
9
  _delay_ms(30);
10
  LCD_CMD_PORT |= (1<<RESET);
11
12
  lcd_write_cmd(LCD_ON,CHIP1|CHIP2);
13
  lcd_write_cmd(LCD_DISP_START|0,CHIP1|CHIP2);
14
  lcd_write_cmd(LCD_SET_ADD|0,CHIP1|CHIP2);
15
  lcd_write_cmd(LCD_SET_PAGE|0,CHIP1|CHIP2);  
16
}

von CE (Gast)


Lesenswert?

Das Ergebnis kann man sich bestimmt denken, hat sich nicht viel getan :/

von Gerry L. (Gast)


Lesenswert?

Warum nimmst du nicht eine fertige KS108 Bibliothek?

von CE (Gast)


Lesenswert?

Ich fand es interessanter es selber zu versuchen - jedenfalls etwas. Ich 
orientiere mich ja schon an sowas.

Sonst noch jemand eine Idee woran es liegen könnte?

von CE (Gast)


Lesenswert?

Es funktioniert! Die Pinbelegung hatte einen Fehler

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.