Forum: Mikrocontroller und Digitale Elektronik EA-DOG-XL-240-7 wo ist der Befehl zum löschen?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Tho S. (thoso805)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Freunde,

ich habe das oben beschriebene Display erfolgreich implementiert.

Jedoch wüsste ich gerne wie man das Display löschen kann und wie man 
einen Bereich löschen kann.

Die kleineren Displays haben meines Wissens einen Befehl dafür.

Muss man es wirklich " zu Fuß " machen und die BITS der Pixel löschen?

von u8g2 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Tho S. schrieb:
> Muss man es wirklich " zu Fuß " machen und die BITS der Pixel löschen?

Ja.

Aber eigentlich steht das ja alles im Datenblatt des UC1611. Oder besser 
gesagt, es steht eben kein Befehl darin, der Bereiche löschen kann.

Grüße,
Oliver

von Gerhard G. (xmega)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

//-----------------------------------------------------
//Func: ClrDisplay
//Desc: Clears entire Display content and set home pos
//-----------------------------------------------------

void ClrDisplay(void)
{
  WriteIns(0x01);
  SetPostion(LINE1);
}

so schaut das Original aus.

Initialisierungsbeispiele für EA DOGM204-A hier:

http://www.lcd-module.de/support/application-note.html


Gruß GG

von spess53 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hi

>Initialisierungsbeispiele für EA DOGM204-A hier:

Was hat ein Text-Display mit einem Grafikdisplsy und ganz anderen 
Displaycontroller zu tun?

MfG Spess

von Tho S. (thoso805)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

habe es so gelöst:

void lcd_clear()
{
  int i;
      move_to(0,0);

        for(i=0;i<4800;i++)
        {

          lcd_dat(0x00);

        }
      move_to(0,0);
}

void lcd_clear_char(char y, char x)
{
  move_to(y,x);

    lcd_dat(0x00);
    lcd_dat(0x00);
    lcd_dat(0x00);
    lcd_dat(0x00);
    lcd_dat(0x00);
    lcd_dat(0x00);


}


void lcd_clear_area(char y, char x, char cly, char clx)
{
  int i, j;

  move_to(y, x);

  for(j=0;j<cly;j++)
  {
    for(i=0;i<clx;i++)
  {
    lcd_dat(0x00);
  }

  y++;

  }



Klappt wunderbar.

Mein einziges Problem mit dem Display ist nun, dass die großen 
Schriftarten aus der DOGM Library  nicht klappen´.

Jemand ´Lust mir dabei zu helfen?

von spess53 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hi

> for(i=0;i<4800;i++)

Wie kommst du auf '<4800'? Ein kompletter Screen hat 16x240=3840 Bytes. 
Das EA DOGXL240-7 hat ein integriertes RAM für 4 komplette 
Bildschirmseiten.

>void lcd_clear_area(char y, char x, char cly, char clx)

Der Displaycontroller UC1611 hat eine Windows Funktion. Damit kann man 
Ausgaben auf bestimmte Bereiche definieren.

>...dass die großen Schriftarten aus der DOGM Library  nicht klappen´.

Welche DOGM Library?

MfG spess

von Tho S. (thoso805)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

oh hast recht 3840 muss dahin.

dann muss ich wohl nochmal mit der Window Funktion bekannt machen.

Das ist aber erstmal ein kleineres Problem mein kleines Skript klappt 
ja.

Hier aus dem Topic ist die Library mit den Fonts.

Beitrag "Library für EA-DOGM Grafikdisplays inkl. Font-Generator"

ich bin mir ziemlich sicher dass es an meiner lcd_put_char Funktion 
liegt.


************************************************************************ 
******
 * Outputs a character on the display, using the given font and style
 */
uint8_t lcd_put_char(FONT_P font, uint8_t style, char character) {
  uint16_t  i;
  uint8_t row  = 0;                             //current row of char
  #ifdef LCD_DOUBLE_PIXEL
    uint8_t hc   = 1;                           //height forced
  #else
    uint8_t hc   = (style & DOUBLE_HEIGHT)?1:0; //height changed
  #endif
  uint8_t wc   = (style & DOUBLE_WIDTH)?1:0;    //width changed
  uint8_t ul   = (style & UNDERLINE)?0x80:0x00; //underline
  uint8_t inv  = (style & INVERT)?0xFF:0;       //inverted
  uint8_t spc  = (style & SPACING)?3:1;         //spacing
  uint8_t tmp;

  //load information about character
   uint8_t char_width    = font_get_char_width(font,character);
   uint8_t font_height   = font_get_height_bytes(font);
   uint8_t free_space    = font_get_add_space(font,character)*spc;
   PGM_P   tableposition = font_get_char_position(font,character);

  //final size of character
  uint8_t char_final_width  = (uint8_t)(char_width+free_space) << wc;
  uint8_t char_final_height = (uint8_t)font_height << hc;

  /*//check for avail. space on display

  if ((style & WRAP) && (LCD_CURRENT_COL() + char_final_width > 
LCD_WIDTH)) {
    LCD_MOVE_TO(LCD_CURRENT_PAGE()+char_final_height,0);
    if (character == ' ') return 0;
    }
*/
  //write chracter
  do {
    for(i=(row>>hc); i<char_width*font_height; i+=font_height) {
      tmp = pgm_read_byte(tableposition+i);
      if(row == char_final_height-1)
        tmp |= ul;
      if(hc)
        tmp = double_bits((row&1),tmp);
      if(inv)
        tmp = ~tmp;
      lcd_dat(tmp);
      if(wc)
        lcd_dat(tmp);
      }
    if (free_space) {
      uint8_t c = inv;
      if(row == char_final_height-1) {
        c ^= ul;
        if(hc)
          c ^= ul>>1;
          }
      for(uint8_t x = free_space; x>0;x--) {
        lcd_dat(c);
        }
      }
  // move_yx(1,-char_final_width);
    } while (++row < char_final_height);

  //move cursor to upper right corner of character
  //move_yx(-char_final_height,char_final_width);
  return char_final_width;
  }

von Tho S. (thoso805)


Bewertung
0 lesenswert
nicht lesenswert
Hallo kannst du mir kurz erklären wie die Window Funktion benutzt werden 
muss?

Gruß

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]
  • [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.