kramann.info
© Guido Kramann

Login: Passwort:










Robuste Systemintegration
1 Grundlagen
..1.1 Newton
....1.1.1 LinearSchwinger
....1.1.2 Daempfung
....1.1.4 ODE
....1.1.5 Saaluebung
..1.2 NewtonEuler
....1.2.1 Traegheitsmomente
....1.2.2 Modellgleichungen
....1.2.3 Einfachpendel
..1.3 Scilab
....1.3.1 Erste_Schritte
....1.3.2 Skripte
....1.3.3 Funktionen
..1.4 Laplace
....1.4.1 Eigenwerte
....1.4.2 PT1
..1.5 Regleroptimierung
....1.5.1 Guetefunktion
....1.5.2 Heuristiken
....1.5.3 Scilab
..1.6 Einstellregeln
....1.6.1 Totzeit
....1.6.2 Methode1
....1.6.3 Methode2
....1.6.4 Scilab
..1.7 Zustandsregler
..1.8 Polvorgabe
..1.8 Polvorgabe_alt
..1.9 Beobachter
....1.9.1 Haengependel
..1.10 Daempfungsgrad
..1.11 Processing
....1.11.1 Installation
....1.11.2 Erste_Schritte
....1.11.3 Mechatronik
....1.11.4 Bibliotheken
....1.11.5 Uebung
....1.11.6 Snippets
......1.11.6.1 Dateioperationen
......1.11.6.2 Bilder
......1.11.6.3 GUI
......1.11.6.4 Text
......1.11.6.5 PDF
......1.11.6.8 Maus
......1.11.6.10 Zeit
......1.11.6.13 Animation
......1.11.6.15 Simulation
....1.11.7 Referenzen
..1.12 Breakout
2 Beispiel
3 Beispielloesung
4 Praxis
5 javasci
6 Fehlertoleranz1
7 Reglerentwurf
..7.1 Sprungantwort
..7.2 Messdaten
..7.3 Systemidentifikation
..7.4 Polvorgabe
..7.5 Beobachter
..7.6 Robuster_Entwurf
..7.7 SIL
8 Systementwicklung
9 Arduino
..9.1 Lauflicht
..9.2 Taster
..9.3 Sensor
..9.12 Motor_PWM1
..9.13 Motor_PWM2_seriell
..9.14 Motor_PWM3_analogWrite
..9.15 Scheduler
..9.20 AV
..9.21 Mikrofon
..9.22 Universal
....9.22.1 Laborplatine
....9.22.2 LED_Leiste
....9.22.3 Motortreiber
....9.22.4 Sensoreingaenge
....9.22.5 Taster
....9.22.6 Tests
....9.22.7 Mikrofon
....9.22.8 Lautsprecher
....9.22.9 Fahrgestell
..9.23 Zauberkiste
..9.24 OOP
....9.24.1 Uebungen
..9.25 AVneu
....9.25.1 Tests
..9.26 DA_Wandler
..9.27 CompBoard
....9.27.1 Tastenmatrix
....9.27.2 ASCIIDisplay
..9.28 CTC
..9.29 Tonerzeugung
10 EvoFuzzy
..10.1 Fuzzy
....10.1.1 Fuzzylogik
....10.1.2 FuzzyRegler
....10.1.3 Uebung9
....10.1.5 Softwareentwicklung
......10.1.5.1 AgileSoftwareentwicklung
......10.1.5.2 FuzzyRegler
......10.1.5.3 Uebung
....10.1.6 Umsetzung
......10.1.6.1 FuzzyRegler
......10.1.6.2 Simulation
......10.1.6.3 Optimierung
......10.1.6.4 Uebung
....10.1.7 Haengependel
......10.1.7.1 Haengependel
......10.1.7.2 Simulation
......10.1.7.3 FuzzyRegler
......10.1.7.4 Optimierer
......10.1.7.5 Genetisch
....10.1.8 Information
....10.1.9 Energie
..10.2 Optimierung
....10.2.1 Gradientenverfahren
....10.2.2 Heuristiken
....10.2.3 ModifizierteG
....10.2.4 optim
..10.3 Genalgorithmus
..10.4 NeuronaleNetze
....10.4.1 Neuron
....10.4.2 Backpropagation
....10.4.3 Umsetzung
....10.4.4 Winkelerkennung
..10.5 RiccatiRegler
11 Agentensysteme
12 Simulation
20 Massnahmen
21 Kalmanfilter
..21.1 Vorarbeit
..21.2 Minimalversion
..21.3 Beispiel
30 Dreirad
31 Gleiter
..31.1 Fehlertoleranz
80 Vorlesung_2014_10_01
81 Vorlesung_2014_10_08
82 Vorlesung_2014_10_15
83 Vorlesung_2014_10_22
84 Vorlesung_2014_10_29
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.