TG12864B-05 mit Atmel betreiben

Gast #3403435
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.
Angehängte Dateien:
Gast #3403460
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
Gast #3403475
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
Gast #3403690
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
}

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.