Ansteuerung eines ASCII-fähigen LED-Displays
|
Bild 0-0: Pinbelegungen am Display-Baustein.
Bild 0-1: Verbindungen zwischen Display und Mikrocontroller.
|
Bild 0-2: Zeit Charakteristik des Displays.
|
Bild 0-3: Versuchsaufbau
|
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.
Bild 0-4: Sicht auf das Hyperterminal bei Verwendung des Programms.