mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LC7981 Initialisation


Autor: Laurent (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen!

ich habe ein kleines Problem mit dem Pollin Datavision GLCD bzw. mit dem 
LC7981 Grafik Controller welcher drauf ist.

Es ist mir nicht möglich das Display so zu initialisieren das ich irgend 
ein Zeichen (habe extra den interen "character generator" verwendet) 
darstellen kann... Das Display bleibt immer nur schwarz.
Die diversen Posts  hier habe ich schon durchgelesen, aber leider keine 
konkrete Lösung zu meinem Problem gefunden.
Ein weiterer Knackpunkt ist, dass das ganze auf einem Renesas M16C29 
funktionieren sollte...

Ich wäre dankbar wenn jemand mal den Source Code überfliegen könnte und 
vielleicht den einen oder anderen Fehler finden würde :o)

Besten Dank im Voraus für Eure Hilfe!

Gruss
Laurent

Autor: PIC Nico (eigo) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist zwar schon etwas älter hier aber egal..
Ich kenne mich zwar nicht mit deinem Chip aus aber versuch mal so:
#include "sfr29.h"
#include "main.h"

void wait(void)
{
  unsigned int i=0;
  
  for(i=0;i<=100;i++)
  {
    asm("nop");
  }
    
}

void lcd_enable(void)
{
  p3_2 = 1;  //Enable high
  wait();
  p3_2 = 0;  //Enable low 
}

void lcd_writecom(char com)  //Routine für Instruction Befehle
{
  p3_1=1;    //RS high
  p3_3=0;    //RW low
  wait();
  p0=com;
  wait();
  lcd_enable();
}

void lcd_writedat(unsigned char data) //Routine für Instruction Daten
{
  p3_1=0;    //RS low
  p3_3=0;    //RW low
  wait();
  p0=data;
  wait();
  lcd_enable();
}  

void lcd_init(void)
{
  p3_0 = 0;    //Reset low
  p3_2 = 0;    //Enable low
  p3_1 = 0;    //RS low
  wait();
  p3_0 = 1;    //Reset high
  
  lcd_writecom(0x00);      // mode con
  wait();
  lcd_writedat(0x3C);      // display on
  wait();
  
  lcd_writecom(0x01);      // character pitch
  wait();  
  lcd_writedat(0x77);      // 8x8 chars
  wait();

  lcd_writecom(0x02);      // characters per line
  wait();
  lcd_writedat(19);        // 20
  wait();
     
  lcd_writecom(0x03);      // set duty
  wait();
  lcd_writedat(0x4F);      // 1/80
  wait();
    
  lcd_writecom(0x04);      // set cursor position
  wait();  
  lcd_writedat(0x07);      // Cp=8
  wait();
  
  lcd_writecom(0x08);      // startadress low
  wait();  
  lcd_writedat(0x00);      // 0
  wait();
  
  lcd_writecom(0x09);      // startadress high
  wait();  
  lcd_writedat(0x00);      // 0
  wait();
  
  lcd_writecom(0x0A);      // startadress high
  wait();  
  lcd_writedat(0x00);      // 0
  wait();
  
  lcd_writecom(0x0B);      // startadress high
  wait();  
  lcd_writedat(0x00);      // 0
  wait();
}
   
void lcd_writebyte(unsigned char byte)
{
  lcd_writecom(0x0C);
  lcd_writedat(byte);
}

void lcd_setadress( unsigned char x, unsigned char y )
{
  unsigned int adress;
  adress = y*20+x;
  lcd_writecom(0x0A);        // writeadress low
  lcd_writedat(adress&255);
  lcd_writecom(0x0B);        // writeadress high
  lcd_writedat(adress/256);
}

void lcd_clear( void )
{
  unsigned int i;
  lcd_setadress( 0,0 );
  for (i=0; i<160/8*80; i++)
    lcd_writebyte( 0 );

}


void main(void)        
{
  //Port deklaration für GLCD
  prcr = 0x04;
  /* Set to 80 pin chip */      
  pacr = 0x03;

  pd0=0xFF;  //Data
  pd3_0=1;  //Reset
  pd3_1=1;  //RS
  pd3_2=1;  //Enable
  pd3_3=1;  //R/W
  pd3_4=1;  //Chip Enable


  lcd_init();
  lcd_clear();
  lcd_setadress(0,0);
  lcd_writebyte(0x55);

  while(1)
  {

  } 
}  

Und sicher, dass Ausgänge mit "1" aktiviert sind? Bei AVR ist es glaub 
so.. Ich weiß nur, dass bei PICs "1" Eingang konfiguriert.

LG Nico

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.