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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren