Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
artikel:displays:weh001602_8080_democode [2013/03/02 23:29] – angelegt Hannes Jochriem | artikel:displays:weh001602_8080_democode [2024/02/06 09:43] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 7: | Zeile 7: | ||
| | ||
* Pin-Belegung Display: | * Pin-Belegung Display: | ||
- | * 1: GND | + | * 1: GND |
- | * 2: VCC | + | * 2: VCC |
- | * 3: N.C. | + | * 3: N.C. |
- | * 4: RS | + | * 4: RS |
- | * 5: R/W | + | * 5: R/W |
- | * 6: ENABLE | + | * 6: ENABLE |
- | * 7: Data0 | + | * 7: Data0 |
- | * 8: Data1 | + | * 8: Data1 |
- | * 9: Data2 | + | * 9: Data2 |
* 10: Data3 | * 10: Data3 | ||
* 11: Data4 | * 11: Data4 | ||
Zeile 25: | Zeile 25: | ||
| | ||
* µC-Belegung: | * µC-Belegung: | ||
- | * Data0: PD0 | + | * Data0: |
- | * Data1: PD1 | + | * Data1: |
- | * Data2: PD2 | + | * Data2: |
- | * Data3: PD3 | + | * Data3: |
- | * Data4: PD4 | + | * Data4: |
- | * Data5: PD5 | + | * Data5: |
- | * Data6: PD6 | + | * Data6: |
- | * Data7: PD7 | + | * Data7: |
- | * RS: PD4 H: Daten, L: Befehl | + | * RS: PD4 H: Daten, L: Befehl |
- | * R/W: PD5 H: Lesen(MPU-> | + | * R/W: PD5 H: Lesen(MPU-> |
- | * E: PD6 Aktivieren H, H->L | + | * E: PD6 Aktivieren H, H->L |
| | ||
*/ | */ | ||
Zeile 59: | Zeile 59: | ||
uint8_t _data_pins[4]; | uint8_t _data_pins[4]; | ||
- | #define RS (1<< | + | #define RS (1<< |
- | #define RW (1<< | + | #define RW (1<< |
#define ENABLE (1<< | #define ENABLE (1<< | ||
- | #define LED (1<< | + | #define LED (1<< |
#define DATA0 (1<< | #define DATA0 (1<< | ||
#define DATA1 (1<< | #define DATA1 (1<< | ||
Zeile 74: | Zeile 74: | ||
int main(void) | int main(void) | ||
{ | { | ||
- | DDRD = 0xff; // Datenport als Ausgang | + | DDRD = 0xff; // Datenport als Ausgang |
DDRC |= (LED|RS|RW|ENABLE); | DDRC |= (LED|RS|RW|ENABLE); | ||
- | PORTD = 0; // Datenport auf 0 | + | PORTD = 0; // Datenport auf 0 |
- | PORTC |= (RS|RS|ENABLE); | + | PORTC |= (RS|RS|ENABLE); |
- | led_an(); // " | + | led_an(); // " |
- | long_delay(500); | + | long_delay(500); |
- | led_aus(); | + | led_aus(); |
- | sende_befehl(0b00111001); // Function | + | sende_befehl(0x38);//function |
_delay_us(5000); | _delay_us(5000); | ||
- | sende_befehl(0b00001100); // Display on. Display an, Cursor aus, Blinken aus. | + | sende_befehl(0x38);//function set |
_delay_us(5000); | _delay_us(5000); | ||
- | sende_befehl(0b00000001); // Display clear | + | sende_befehl(0x38);//function set |
_delay_us(5000); | _delay_us(5000); | ||
- | sende_befehl(0b00000010); // Display home | + | sende_befehl(0x38);//function set |
_delay_us(5000); | _delay_us(5000); | ||
- | sende_befehl(0b00000100); // Entry mode: Dekrement, no shift. | + | sende_befehl(0x08);//display off |
_delay_us(5000); | _delay_us(5000); | ||
+ | sende_befehl(0x06);// | ||
+ | _delay_us(5000); | ||
+ | sende_befehl(0x17);// | ||
+ | _delay_us(5000); | ||
+ | sende_befehl(0x01);// | ||
+ | _delay_us(5000); | ||
+ | sende_befehl(0x02);// | ||
+ | _delay_us(5000); | ||
+ | sende_befehl(0x0c);// | ||
schreibe_text(0, | schreibe_text(0, | ||
Zeile 105: | Zeile 114: | ||
void sende_daten(uint8_t zeichen) | void sende_daten(uint8_t zeichen) | ||
{ | { | ||
- | PORTC |= (RS); // RS ist 1 bei Daten | + | PORTC |= (RS); // RS ist 1 bei Daten |
DDRD = 0xff; | DDRD = 0xff; | ||
PORTD = zeichen; | PORTD = zeichen; | ||
Zeile 120: | Zeile 129: | ||
void toggle_en() | void toggle_en() | ||
- | { // ENABLE + RW werden getoggelt, es gibt keien Busy-Bit-Abfrage. | + | { // ENABLE + RW werden getoggelt, es gibt keien Busy-Bit-Abfrage. |
PORTC &= ~(ENABLE | RW); | PORTC &= ~(ENABLE | RW); | ||
_delay_us(500); | _delay_us(500); | ||
Zeile 132: | Zeile 141: | ||
if(zeile == 0) | if(zeile == 0) | ||
- | sende_befehl((0x80)+19); // Setze Adresse an die erste Position von Zeile 1 | + | sende_befehl((0x80)+0); // Setze Adresse an die erste Position von Zeile 1 |
else | else | ||
- | sende_befehl((0x80)+83); // Setze Adresse an die erste Position von Zeile 2 | + | sende_befehl((0x80)+64); // Setze Adresse an die erste Position von Zeile 2 |
while ((zeichen = *text++)) | while ((zeichen = *text++)) | ||
{ // Solange Zeichen vorhanden sind zum Display schicken | { // Solange Zeichen vorhanden sind zum Display schicken |