mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik RAM Löschen bei Nokia Display!


Autor: dewe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ich bin dabei ein Nokia 3310 Display anzusteuern. Funktioniert auch 
mittlerweile, dass ich irgendwelche Pixel setze.

Doch jetzt habe ich den folgenden COde eingespielt und ab dem Display 
CLEAR macht das DIsplay nicht weiter. ALso die init Methode wird 
aufgerufen, die Kommandos werden alle gesendet(das letzte KOmmando ist 
ALL ON; wird auch ausgeführt) und dann würde das CLEAR RAM kommen, doch 
das funktioniert nicht. Ich sehe auf dem Display das die 1. Zeile nicht 
gesetzt ist, aber sonst bleibt das display schwarz.

Hat jemand vielleicht eine Idee woran das liegen könnte??

Danke schon im Voraus!!

mfg

Hier mal der COde:
#include<18F4680.h>
#use delay (clock=20000000)
#fuses HS, NOWDT, NOPROTECT, NOLVP

#include<stdlib.h>
#include<stdio.h>

void init_spi();
void init_lcd();
void write_data(int8 data);
void write_command(int8 command);
void write_data(int8 data);
void write_zeichen();
void clear_ram();
void goto_xy(int8 x, int8 y);

void main (void) {
   init_spi();
   init_lcd();
   
   write_zeichen();
     
   while(true) { }
}

void init_spi() {
   setup_spi(SPI_MASTER | SPI_CLK_DIV_16);
}

void init_lcd() {
   output_high(PIN_D2);  //COMMAND MODE: D/C -> 1
   output_high(PIN_D3);  // SCE- Chip disabled
   delay_us(100);

   //Display reset
   output_high(PIN_B0); // RES  
   delay_us(0.5);
   output_low(PIN_B0); // RES  
   delay_ms(20);
   output_high(PIN_B0); // RES  
  
   delay_us(100);
   
   write_command(0x21);   // Enhanced mode
   write_command(0x90);   //Vop
   write_command(0x13);   //bias
   write_command(0x20);   //normalmode
   write_command(0x09);   //All on

   clear_ram();   //clear RAM

   write_command(0x08);   // mod control blank change (all off)
   write_command(0x0c);   // mod control normal change
}

void write_data(int8 data) {
   output_high(PIN_D2);  //COMMAND MODE: D/C -> 1
   delay_us(100);

   output_low(PIN_D3);   // chip enabled
   delay_us(100);   
   spi_write(data);
   output_high(PIN_D3);   // chip disabled
   delay_us(100);
}

void write_command(int8 command) {
   output_low(PIN_D2);  //COMMAND MODE: D/C -> 0
   delay_us(100);

   output_low(PIN_D3);   // chip enabled
   delay_us(100);   
   spi_write(command);
   output_high(PIN_D3);   // chip disabled
   delay_us(100);
}

void write_zeichen() {
   goto_xy(0,0);
   write_data(0xAA);
   write_data(0xFF);
   write_data(0xAA);
   write_data(0xFF);
   write_data(0xAA);
   write_data(0xFF);
   write_data(0xAA);
}

void clear_ram() {
   int8 i;
   
   goto_xy(0,0);
   for (i=504; i>0; i--) {
     write_data(0x00);
  }
}

void goto_xy(int8 x, int8 y) {
   write_command(0x40|(y&0x07));   // Y axe initialisation: 0100 0yyy
   write_command(0x80|(x&0x7f));   // X axe initialisation: 1xxx xxxx
}

Autor: dewe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ich habe das mit dem Display RAM löschen gelöst. Ich habe einfach ein 
kleines delay in die for - Schleife eingebaut. jetzt dürfte das mit dem 
löschen funktionieren.

Leider tritt jetzt ein anderes Problem auf:

Ich habe eine Funktion write_zeichen(int8 data) geschrieben die 
irgendwelche Pixel setzen soll, doch diese werden nie angezeigt.

Hat jemand eine Idee was ich falsch gemacht haben könnte??

Danke schon im Voraus!

mfg

Autor: dewe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo ich bins scho wieder!!

Ich war ein bisschen zu voreilig. Die RAM clear Funktion funktioniert 
doch noch nicht.

mfg

Autor: iCarly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A wa

Autor: dewe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
??

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.