kramann.info
© Guido Kramann

Login: Passwort:










kramann.info
© Guido Kramann

Login: Passwort:




Ansteuerung eines ASCII-fähigen LED-Displays

  • Die Firma Siemens hat ein sehr einfach ansteuerbares Display herausgebracht, in das bereits der ASCII-Codesatz implementiert ist, das SLG2016 (grün).
  • Im folgenden ist zunächst dargestellt, welche Pins des Displays mit welchen am Mikrocontroller verbunden werden.
  • Es werden zwar eine ganze Reihe an Leitungen benötigt, jedoch keine weiteren Bauelemente.
BILDBESCHREIBUNG

Bild 0-0: Pinbelegungen am Display-Baustein.

BILDBESCHREIBUNG

Bild 0-1: Verbindungen zwischen Display und Mikrocontroller.

  • Wie die Ansteuerung vonstatten geht, beschreibt das folgende Zeitschema:
  • A0 und A1 dienen zur Auswahl eines der vier Anzeigeelemente.
  • Mit D0 bis D6 wird der Code des gewünschten ASCII-Zeichens eingestellt.
  • Der später implementierte Ablauf ist grob: Anzeigeelement auswählen, ASCII-Zeichen auswählen, NICHT-write auf Low setzen, NICHT-write wieder auf high setzen.
BILDBESCHREIBUNG

Bild 0-2: Zeit Charakteristik des Displays.

  • Das folgende Bild zeigt den Versuchsaufbau:
BILDBESCHREIBUNG

Bild 0-3: Versuchsaufbau

  • Das folgende Programm erlaubt es, am Hyperterminal vier Zeichen einzugeben und durch Drücken der Return-Taste im Display zur Anzeige zu bringen.
  • Solch einfache Programmbausteine erlauben es, das Schema schnell zu begreifen und das Display in größere Projekte einzubinden.
02_display_siemens_SLO2016.zip - Download des nachfolgenden Projektes
//Ansteuern der Anzeige Siemens SLO2016
//Zuordnung der Pins
//ATmega32     Display  Pin Nr.(Display)
//PC0          D0        5
//PC1          D1        6
//PC2          D2        7
//PC3          D3        8
//PC4          D4        9
//PC5          D5       10
//PC6          D6       11
//
//PA3          A0 Digit select 3
//PA4          A1 Digit select 2
//PA5          !write    1 (Zeichen schreiben, invertiert)
//PA6          !BL      12 (Anzeige aus, invertiert) 
//PA7          !CLR     13 (löschen, invertiert) 
//             +5V       4
//             GND      14

#include <avr/io.h>

#define TAKTFREQUENZ 9216000

#include "RS232.h"

RS232 rs232;

volatile unsigned long pause;

void initDisplay()
{
    //1. !CLR auf 1
    PORTA |=0b10000000;
    //2. !write auf 1
    PORTA |=0b00100000;
    //3. !Display blank auf 0
    PORTA &=0b10111111;
}

void zeigeZeichen(char* zeichen)
{
    //2. 0. Anzeigenelement wählen:
    PORTA &= 0b11100111;
    //3. ASCII-Code für aktuelles Zeichen einstellen
    PORTC = zeichen[3];
    //4. Schreibvorgang durchführen
    //5. !write einige Zeit auf 0:
    PORTA &=0b11011111;
    PORTA |=0b00100000;

    //2. 1. Anzeigenelement wählen:
    PORTA &= 0b11100111;
    PORTA |= 0b00001000;
    //3. ASCII-Code für aktuelles Zeichen einstellen
    PORTC = zeichen[2];
    //4. Schreibvorgang durchführen
    //5. !write einige Zeit auf 0:
    PORTA &=0b11011111;
    PORTA |=0b00100000;

    //2. 2. Anzeigenelement wählen:
    PORTA &= 0b11100111;
    PORTA |= 0b00010000;
    //3. ASCII-Code für aktuelles Zeichen einstellen
    PORTC = zeichen[1];
    //4. Schreibvorgang durchführen
    //5. !write einige Zeit auf 0:
    PORTA &=0b11011111;
    PORTA |=0b00100000;

    //2. 3. Anzeigenelement wählen:
    PORTA |= 0b00011000;
    //3. ASCII-Code für aktuelles Zeichen einstellen
    PORTC = zeichen[0];
    //4. Schreibvorgang durchführen
    //5. !write einige Zeit auf 0:
    PORTA &=0b11011111;
    PORTA |=0b00100000;

    //0. Anzeige einschalten mit BL=1
    PORTA |= 0b01000000;
}

int main(void)
{
    char* puffer_zeiger;

    rs232.start(true,true);

    //Konfiguration für Anzeige.
    DDRC = 0b11111111;
    DDRA = 0b11111111;

    initDisplay();

    while(true)
    {
        rs232.sendeText("Geben Sie vier Zeichen ein, die im Display angezeigt werden sollen.\n\rBeenden Sie mit ENTER Ihre Eingabe:\n\r");
        puffer_zeiger = rs232.holeText();
        rs232.sendeText("\n\rSie haben folgende Zeichenfolge eingegeben:\n\r");
        rs232.sendeText(puffer_zeiger);
        rs232.sendeText("\n\r");
        zeigeZeichen(puffer_zeiger);
    }
	return 0;
}
 

Code 0-1: Testprogramm für die Display-Ansteuerung.

BILDBESCHREIBUNG

Bild 0-4: Sicht auf das Hyperterminal bei Verwendung des Programms.