Ich hab nun schon einige Zeit in den Foren verbracht und dies und das
probiert aber alles schlägt fehl.
Ich versuche das LCD mit einem Atmega8535 anzusteuern. Der müsste das
doch könnnen oder?
Wie ihr unten sehen könnt, habe ich zuerst versucht das Display mit den
nun unten auskommentierten Befehlen anzusprechen. Danach habe ich
versucht das Display nur mit den letzten Zeilen der einzelnen
Initialisierungsschritte anzusteuern. Die Zeiten habe ich auch ma hoch
und runter gesetzt. Die defines sind nur um zu sehen was wo
angeschlossen ist. Vielleicht ist das ja auch schon mein Fehler? Am
falschen Port?
Kann ich das Display so überhaupt ansteuern? Dass es einfacher geht habe
ich schon etlichen anderen routinen entnommen aber alle gehen net :(
Über etwas Hilfe würde ich mich freuen.
Hier habe ich mal den gesamten Quelltext:
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
/*
#define LCD_PORT PORTC *< port for the LCD lines
#define LCD_DATA0_PIN 3 *< pin for 4bit data bit 0
#define LCD_DATA1_PIN 4 *< pin for 4bit data bit 1
#define LCD_DATA2_PIN 5 *< pin for 4bit data bit 2
#define LCD_DATA3_PIN 6 *< pin for 4bit data bit 3
#define LCD_E_PIN 0 *< pin for Enable line
#define LCD_RS_PIN 1 *< pin for RS line
#define LCD_RW_PIN 2 *< pin for RW line
*/
DDRC = 0b11111111; //Pins auf Ausgang
PORTC = 0x00;
_delay_ms(150); //Bootzeit für das Display
/*// 1. Zeile Function Set
PORTC = 0b00000001; //Enable EIN
_delay_us(20);
PORTC = 0b00010001; //Function set Zeile 1 oberes Nibble
_delay_us(20);
PORTC = 0b00010000; //Enable AUS
_delay_us(20);
PORTC = 0b00010001; //Enable EIN
_delay_us(20);
PORTC = 0b00000001; //Function set Zeile 1 unteres Nibble
_delay_us(20);
PORTC = 0b00000000; //Enable AUS
_delay_ms(10);
//2. Zeile Function Set
PORTC = 0b00000001; //Enable EIN
_delay_us(20);
PORTC = 0b00010001; //Function set Zeile 1 oberes Nibble
_delay_us(20);
PORTC = 0b00010000; //Enable AUS
_delay_us(20);
PORTC = 0b00010001; //Enable EIN
_delay_us(20);
PORTC = 0b00000001; //Function set Zeile 1 unteres Nibble
_delay_us(20);
PORTC = 0b00000000; //Enable AUS
_delay_ms(10);
*/
//3. Zeile Function Set
PORTC = 0b00000001; //Enable EIN
_delay_us(40);
PORTC = 0b01100001; //Function set Zeile 1 oberes Nibble
_delay_us(40);
PORTC = 0b01100000; //Enable AUS
_delay_us(40);
PORTC = 0b01100001; //Enable EIN
_delay_us(40);
PORTC = 0b00100001; //Function set Zeile 1 unteres Nibble
_delay_us(40);
PORTC = 0b00100000; //Enable AUS
_delay_ms(45); //Zeit nach Function Set
/*//1.Zeile Display on/off control
PORTC = 0b00000001; //Enable EIN
_delay_us(20);
PORTC = 0b00000001; //Display on/off control Zeile 1 oberes Nibble
_delay_us(20);
PORTC = 0b00000000; //Enable AUS
_delay_us(20);
PORTC = 0b00000001; //Enable EIN
_delay_us(20);
PORTC = 0b00000001; //Display on/off control Zeile 1 unteres Nibble
_delay_us(20);
PORTC = 0b00000000; //Enable AUS
_delay_ms(10);
*/
//2.Zeile Display on/off control
PORTC = 0b00000001; //Enable EIN
_delay_us(40);
PORTC = 0b01111001; //Display on/off control Zeile 1 oberes Nibble
_delay_us(40);
PORTC = 0b01111000; //Enable AUS
_delay_us(40);
PORTC = 0b01111001; //Enable EIN
_delay_us(40);
PORTC = 0b00000001; //Display on/off control Zeile 1 unteres Nibble
_delay_us(40);
PORTC = 0b00000000; //Enable AUS
_delay_us(45);
/*//1.Zeile Display clear
PORTC = 0b00000001; //Enable EIN
_delay_us(20);
PORTC = 0b00000001; //Display clear Zeile 1 oberes Nibble
_delay_us(20);
PORTC = 0b00000000; //Enable AUS
_delay_us(20);
PORTC = 0b00000001; //Enable EIN
_delay_us(20);
PORTC = 0b00000001; //Display clear Zeile 1 unteres Nibble
_delay_us(20);
PORTC = 0b00000000; //Enable AUS
_delay_us(45);
*/
//2.Zeile Display clear
PORTC = 0b00000001; //Enable EIN
_delay_us(40);
PORTC = 0b00001001; //Display clear Zeile 1 oberes Nibble
_delay_us(40);
PORTC = 0b00001000; //Enable AUS
_delay_us(40);
PORTC = 0b00000001; //Enable EIN
_delay_us(40);
PORTC = 0b00000001; //Display clear Zeile 1 unteres Nibble
_delay_us(40);
PORTC = 0b00000000; //Enable AUS
_delay_ms(2);
/*//1.Zeile Entry Mode
PORTC = 0b00000001; //Enable EIN
_delay_us(20);
PORTC = 0b00000001; //Entry Mode Zeile 1 oberes Nibble
_delay_us(20);
PORTC = 0b00000000; //Enable AUS
_delay_us(20);
PORTC = 0b00000001; //Enable EIN
_delay_us(20);
PORTC = 0b00000001; //Entry Mode Zeile 1 unteres Nibble
_delay_us(20);
PORTC = 0b00000000; //Enable AUS
_delay_us(45);
*/
//2.Zeile Entry Mode
PORTC = 0b00000001; //Enable EIN
_delay_us(40);
PORTC = 0b00111001; //Entry Mode Zeile 1 oberes Nibble
_delay_us(40);
PORTC = 0b00111000; //Enable AUS
_delay_us(40);
PORTC = 0b00111001; //Enable EIN
_delay_us(40);
PORTC = 0b00000001; //Entry Mode Zeile 1 unteres Nibble
_delay_us(40);
PORTC = 0b00000000; //Enable AUS
_delay_us(45);
return (0);
}
hallo,
so wie das aussieht legst du erst enable auf high und änderst dann die
daten - das müsste glaub ich eher andersrum sein. also erst data anlegen
und dann einen clocktakt senden.
du hast den gesamten portC auf ausgang... da ist vorsicht geboten bei
ansteuerung des RW-eingangs, es sei denn du willst wissen wer von den
beiden stärker ist.
ich hab mal gehört das der 4bit-modus am sichersten erreicht wird wenn
das FunctionSet 3x gesendet wird. Das ist laut deinem Anhang 0b1100xxxx
und nicht (so wie du es sendest) 0b0110xxxx. dabei brauchst du aber das
2. (untere) nibble nicht mit übertragen. Man übertragt quasi 3 halbe
nibble mit 0b1100.
und du musst beachten das die leitungen an db7-db4 am display
angeschlossen werden.
viel erfolg
Schon ma vielen dank für die schnelle hilfe!!
derKoch schrieb:> so wie das aussieht legst du erst enable auf high und änderst dann die> daten - das müsste glaub ich eher andersrum sein. also erst data anlegen> und dann einen clocktakt senden.
In dem Datenblatt ist das auch so dargestellt in dem Zeitdiagramm.
derKoch schrieb:>ich hab mal gehört das der 4bit-modus am sichersten erreicht wird wenn>das FunctionSet 3x gesendet wird. Das ist laut deinem Anhang 0b1100xxxx>und nicht (so wie du es sendest) 0b0110xxxx. dabei brauchst du aber das>2. (untere) nibble nicht mit übertragen. Man übertragt quasi 3 halbe>nibble mit 0b1100
das mit dem 3x senden probier ich mal. woher weiss aber dann der µC, ob
das die oberen oder unteren 4 nibble sind?
ich muss doch zuerst die oberen und dann die unteren senden.. oder lass
ich die unteren dann auf 0?
du musst beachten, dass ich den datenbus an portC3 - C6 angeschlossen
habe.
das heisst dann also den port wo der RW angeschlossen ist auf eingang
setzen?
Gruß Roli
hmm. tatsache! da liest das display wohl bei der fallenden flanke von
enable.
bei der initialisierung auf 4bit-breite sind die unteren 4bit egal, oben
durch 'X' dargestellt. die kannst du sozusagen unverändert lassen und
nur enable takten.
du hast recht mit dem 3x senden, da tuste 4x enable takten und hast
somit 2x 8bit übertragen-> die 1. und 2. Zeile für FunctionSet. das mit
dem 3x senden ging wohl nur darum, das display aus jedem modus heraus
sicher auf 4bit umzuschalten egal ob es selbst grad auf 4bit steht (und
zum beispiel zwischen oberen und unteren nibble).
ich meinte mit dem datenbusanschluss die displayseite - db7-db4. also
die obere hälfte ;-)
den rw-'ausgang' am prozessor musst du so einstellen dass das display
daten liest. denn wenn du auf daten senden stellst (z.B. busyflag
auslesen), dann treibt das display selber die datenleitungen ... und das
ist nicht so gut für alle beteiligten.
Du musst es erst mal sicher in den 8-Bit-Mode versetzen.
Dann musst Du es vom 8-Bit-Mode in den 4-Bit-Mode versetzen. Das ist
(noch) ein Byte, denn den Befehl bekommt es ja 8-bittig.
Danach Kommunizierst Du in Nibbles mit dem LCD. Die höherwertigen Bits
zuerst.
Das sieht bei mir in ASM so aus:
1
LCD_init: CALL WAIT_15ms
2
CALL WAIT_15ms
3
4
LDI temp, 0x30 ; jeweils immer mit pause im 8-Bit modus auf 8-Bit setzen
5
CALL LCD_command_8 ; LCD-Kommando in 8-Bit
6
CALL WAIT_15ms
7
8
LDI temp, 0x30
9
CALL LCD_command_8
10
CALL WAIT_15ms
11
12
LDI temp, 0x30
13
CALL LCD_command_8
14
CALL WAIT_15ms
15
16
; Hier nun ganz ganz sicher im 8-Bit-Modus
17
18
LDI temp, 0x20 ; von 8 auf 4 Bit umschalten
19
CALL LCD_command_8
20
CALL WAIT_15ms
21
22
; Nun im 4-Bit-Modus
23
24
; Weitere Konfiguration in 4-Bit-Mode
25
26
; Function Set
27
; Interface ist 8 Bit, 2 Zeilen (1x16=2x8), 5x7 Pix
Ich hab nun mal noch ein biisl rumgesucht un festgestellt, dass es noch
ein weiteres Datenblatt zu dem Display gibt und da ist nun ein ST7066
controller drauf. es ist schon super wenn der händler das falsche
datenblatt dazugibt.
nur funktioniert das Display immer noch nicht.
so hab nun den code:
das display schaltet aber die 2. und 4. zeile net schwarz so wie beim
einschalten die 1. und 3. zeile (also alle balken schwarz)
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
/*
#define LCD_PORT PORTC *< port for the LCD lines
#define LCD_DATA0_PORT LCD_PORT *< port for 4bit data bit 0
#define LCD_DATA1_PORT LCD_PORT *< port for 4bit data bit 1
#define LCD_DATA2_PORT LCD_PORT *< port for 4bit data bit 2
#define LCD_DATA3_PORT LCD_PORT *< port for 4bit data bit 3
#define LCD_DATA0_PIN 3 *< pin for 4bit data bit 0
#define LCD_DATA1_PIN 4 *< pin for 4bit data bit 1
#define LCD_DATA2_PIN 5 *< pin for 4bit data bit 2
#define LCD_DATA3_PIN 6 *< pin for 4bit data bit 3
#define LCD_E_PORT LCD_PORT *< port for Enable line
#define LCD_E_PIN 0 *< pin for Enable line
#define LCD_RS_PORT LCD_PORT *< port for RS line
#define LCD_RS_PIN 1 *< pin for RS line
#define LCD_RW_PORT LCD_PORT *< port for RW line
#define LCD_RW_PIN 2 *< pin for RW line
*/
DDRC = 0b11111111; //Pins auf Ausgang
PORTC = 0x00;
_delay_ms(30); //Bootzeit für das Display
_delay_ms(30);
_delay_ms(30);
_delay_ms(30);
// 8 Bit Modus aktivieren Nr 1
PORTC = 0b00000001; //Enable EIN
_delay_us(45);
PORTC = 0b00011001; //Function set Zeile 1 oberes Nibble
_delay_us(45);
PORTC = 0b00011000; //Enable AUS
_delay_ms(9);
// 8 Bit Modus aktivieren Nr 1
PORTC = 0b00000001; //Enable EIN
_delay_us(45);
PORTC = 0b00011001; //Function set Zeile 1 oberes Nibble
_delay_us(45);
PORTC = 0b00011000; //Enable AUS
_delay_us(200);
// 8 Bit Modus aktivieren Nr 3 ohne delay
PORTC = 0b00000001; //Enable EIN
_delay_us(45);
PORTC = 0b00011001; //Function set Zeile 1 oberes Nibble
_delay_us(45);
PORTC = 0b00011000; //Enable AUS
_delay_us(45);
// 1. Zeile Function Set 4 Bit Modus
PORTC = 0b00000001; //Enable EIN
_delay_us(45);
PORTC = 0b00010001; //Function set Zeile 1 oberes Nibble
_delay_us(45);
PORTC = 0b00010000; //Enable AUS
_delay_ms(2);
// Function Set 4-Bit + 2 Zeilen
PORTC = 0b00000001; //Enable EIN
_delay_ms(2);
PORTC = 0b00010001; //Function set Zeile 1 oberes Nibble
_delay_ms(2);
PORTC = 0b00010000; //Enable AUS
_delay_ms(2);
PORTC = 0b00000001; //Enable EIN
_delay_ms(2);
PORTC = 0b00011001; //Function set Zeile 1 unteres Nibble
_delay_ms(2);
PORTC = 0b00011000; //Enable AUS
_delay_ms(2);
return (0);
}
Jobst M. schrieb:> Ich habe mir eben im übrigen nochmal das Flussdiagramm oben angesehen.> Das kannst Du knicken ...
Warum kann ich das knicken?
ist das vom code her überhaupt so machbar oder schieße ich da am tor
vorbei?
muss ich vllt andere Ports verwenden?
Meine Güte - was für ein Chaoscode ... :-)
Versuchs mal so:
PORTC = 0b00000001; //Enable EIN
_delay_ms(2);
PORTC = 0b01000001; //Function set Zeile 1 unteres Nibble
_delay_ms(2);
PORTC = 0b00011000; //Enable AUS
_delay_ms(2);
Gruß
Jobst
Roland Baader schrieb:> Jobst M. schrieb:>> Ich habe mir eben im übrigen nochmal das Flussdiagramm oben angesehen.>> Das kannst Du knicken ...>> Warum kann ich das knicken?>>> ist das vom code her überhaupt so machbar oder schieße ich da am tor> vorbei?> muss ich vllt andere Ports verwenden?
Naja, Du hast es ja auch nicht so gemacht, wie im Flussdiagram ... ;-)
Schreib Dir mal eine Funktion, mit der Du die Werte in das Display
schreibst. Oder möchtest Du die Ausgabetexte in der Form auf das Display
bringen?
Naja - geht ja auch erst mal darum, um zu verstehen, wie das Ding läuft.
Gruß
Jobst
Jobst M. schrieb:> Meine Güte - was für ein Chaoscode ... :-)>> Versuchs mal so:>>> PORTC = 0b00000001; //Enable EIN> _delay_ms(2);>> PORTC = 0b01000001; //Function set Zeile 1 unteres Nibble> _delay_ms(2);>> PORTC = 0b00011000; //Enable AUS> _delay_ms(2);>>>> Gruß>> Jobst
Das ist natürlich Quark ...
PORTC = 0b01000001; //Function set Zeile 1 OBERES Nibble
und dann auch
PORTC = 0b01000000; //Enable AUS
so ....
Im übrigen wirst Du früher oder später feststellen, daß man mit R/W
direkt an GND einen Portpin sparen kann ...
Gruß
Jobst
Jobst M. schrieb:> Das ist natürlich Quark ...>> PORTC = 0b01000001; //Function set Zeile 1 OBERES Nibble>> und dann auch>> PORTC = 0b01000000; //Enable AUS> so ....
Kapier ich net...
ich muss doch das datenbit d5 high setzen...
du sagst ich soll das d7 auf high setzen
Gruß roli
Roland Baader schrieb:> Kapier ich net...> ich muss doch das datenbit d5 high setzen...> du sagst ich soll das d7 auf high setzen>> Gruß roli
War das vorher doch richtig?
Das liegt an diesem unüberschaubaren Code.
Du sollst das Kommando 0x28 absetzen. Dann sollte Dein Display so
funktionieren, wie Du es haben möchtest ...
Gruß
Jobst
Wie gehe ich eigentlich mit dem X in der initialisierung um?
ob ich die signale binär oder hexadezimal hinschreibe habe ich doch
immer die nullen und einsen anstehen oder nicht?
also ist es doch egal ob ich 0x28 oder 0b 0010 1000 schreibe...?
gruß roli
Naja, 0x28 ist der Wert, den das Display abbekommen soll.
Da Du aber Steuerleitungen nebst Datenleitungen an dem Port hängen hast,
musst Du die 0x28 schon so aufteilen, daß dies beim Display auch so
ankommt.
Was Du verschickst, ist in Deinem Code erst mal nicht ersichtlich.
Gruß
Jobst
Jobst M. schrieb:> Was Du verschickst, ist in Deinem Code erst mal nicht ersichtlich.
für mich schon...
ich aktiviere enable-> dann PORTC = 0b00011001; (für 8 bit modus) un
dann nur noch enable aus.
bei der negativen flanke von enable liest das display die daten.
die pins C3-C6 sind mit DB4-DB7 mit dem Display verbunden.
weiterhin ist Enable, RW und RS verbunden. (spannungsversorgung auch)
un spätestens wenn ich das display in den 4 bit modus geschaltet und 2
lines aktiviert habe sollten alle balken schwarz werden.
aber es sind immer nur munter die 1. und die 3. zeile schwarz :(
gruß roli
ich glaube ich habs:
die functionset-commandos sind alles 8bit-befehle. das lcd erkennt an
der 'führenden 1' welche einstellung geändert werden soll.
z.B. 0b00001DCB = display on/off control
0b000001xx = entrymode set
0b00000001 = lcd clear, usw...
die in dem o.a. initialisierungsbeispiel jeweils 2 zeilen sind lediglich
eine folge der 4-bit bandbreite. bei display on/off z.B. musst du 0b0000
und danach 0b1DCB übertragen. aus dem quelltext ersehe ich aber eine
übertragung von 0b0000, 0b0000, 0b1DCB, 0b0000. (die ersten 2 nibble
sollten nichts weiter bewirken, aber die letzten beiden kommen
'verdreht' am lcd an).
wahrscheinlich kannst du dir auch die 0-bytes zum lcd sparen...
Gruss, derKoch
Guten Morgen!
derKoch schrieb:> ich glaube ich habs:>> die functionset-commandos sind alles 8bit-befehle. das lcd erkennt an> der 'führenden 1' welche einstellung geändert werden soll.>> z.B. 0b00001DCB = display on/off control> 0b000001xx = entrymode set> 0b00000001 = lcd clear, usw...>> die in dem o.a. initialisierungsbeispiel jeweils 2 zeilen sind lediglich> eine folge der 4-bit bandbreite. bei display on/off z.B. musst du 0b0000> und danach 0b1DCB übertragen.
Bingo!
> aus dem quelltext ersehe ich aber eine> übertragung von 0b0000, 0b0000, 0b1DCB, 0b0000. (die ersten 2 nibble> sollten nichts weiter bewirken, aber die letzten beiden kommen> 'verdreht' am lcd an).> wahrscheinlich kannst du dir auch die 0-bytes zum lcd sparen...
Ich weiß zwar nicht, welchen Quelltext Du jetzt meinst, aber so ist es.
*Edit:*
Du meinst das hier?
Hi leute!
hab nun ma den code ausm tutorial genommen und ihn umgestrikt. die hex
befehle habe ich auch angepasst.
aber gehen tut das immer noch net :(
was mache ich nun noch falsch? weiss das jemand?
hier is ma die angepasste init. zu der vorlage die ich direkt vom
hersteller bekommen habe.
1
// Initialisierung: muss ganz am Anfang des Programms aufgerufen werden.
2
voidlcd_init(void)
3
{
4
// verwendete Pins auf Ausgang schalten
5
uint8_tpins=(0x0F<<LCD_DB)|// 4 Datenleitungen
6
(1<<LCD_RS)|// R/S Leitung
7
(1<<LCD_EN);// Enable Leitung
8
LCD_DDR|=pins;
9
10
// initial alle Ausgänge auf Null
11
LCD_PORT&=~pins;
12
13
// warten auf die Bereitschaft des LCD
14
_delay_ms(LCD_BOOTUP_MS);
15
16
17
// Soft-Reset muss 3mal hintereinander gesendet werden zur Initialisierung
Roland Baader schrieb:> Hi leute!>> hab nun ma den code ausm tutorial genommen und ihn umgestrikt.
Was genau hast du angepasst?
Solange die 4 Datenbits allesamt an einem Port liegen, musst du am Code
höchst wahrscheinlich gar nichts oder nicht viel anpassen.
Die Hauptarbeit der Konfiguration geschieht in der #define Section im
Header File
> die hex> befehle habe ich auch angepasst.
Wie bitte?
An denen musst du normalerweise überhaupt nichts anpassen
> aber gehen tut das immer noch net :(> was mache ich nun noch falsch? weiss das jemand?
Da du ein KS_wasweißich hast
Hol dir die LCD Routinen vom Peter Fleury, trag im Header File deine
Konfiguration ein und hör auf da selber was umzustricken. Soweit bist du
offensichtlich noch nicht,, dass du dir da nicht mehr Fehler reinhaust
also du gut machst.
SORRY HABE VERGESSEN DAZUZUSCHREIBEN DASS DAS EIN ST7066U IST.
WEGEN DES GROßEN ERFOLGS HABE ICH IM NETZ NACH LÖSUNGEN GESUCHT UND EINE
WEITERE DOKU ZUM DISPLAY GEFUNDEN.... UND DANN HAB ICH DEN HERSTELLER
GEFRAGT WAS ICH FÜR EINE BRAUCH UND DER HAT MIT DANN NOCH NE ANDERE
GESCHICKT!!!
EINGEFÜGT HAB ICH DIE DOKU BEI MEINEM LETZTEN BEITRAG.
DIE GRÖßTE FRAGE IST, OB DER ABLAUF MEINES PROGRAMMTEILS ZUR
INITIALISIERUNG SO PASST???
DASS ICH KEIN PROFI BIN WEISS ICH AUCH. ICH DACHTE HALT ES GIBT FOREN UM
FRAGEN AN ANDERE ZU STELLEN.
DANKE AUCH AN DIE DIE SCHON GESCHRIEBEN HABEN. AUCH WENN SE MICH FÜR
DOOF HALTEN :)
GRUß Roli
Roli schrieb:> DASS ICH KEIN PROFI BIN WEISS ICH AUCH. ICH DACHTE HALT ES GIBT FOREN UM> FRAGEN AN ANDERE ZU STELLEN.
Im Prinzip ja.
Aber ein Forum kann nicht jedem, der ein LCD betreiben will, wieder von
vorne Byte für Byte alles vorkauen.
Nimm doch eine funktionierende Lösung, davon gibt es genug.
Dann kannst du (falls es dich interessiert, warum deine nicht geht),
Stück für Stück vergleichen.
Das kannst du selbst, und brauchst nicht für jedes Stückchen jemanden
anders.
Und wenn du etwas nicht verstehst, obwohl du dich selbst darum bemühst,
kannst du sicher gerne fragen.
Dann aber bitte verständlich, mit lesbaren Quelltexten und einer
vernünftigen Beschreibung (was habe ich geändert? warum?
was funktioniert nicht? wie ist das alles angeschlossen?
was gefällt mir an der funktionierenden Standardlösung nicht?)
Roli schrieb:> DIE GRÖßTE FRAGE IST, OB DER ABLAUF MEINES PROGRAMMTEILS ZUR> INITIALISIERUNG SO PASST???
Für mich wäre diese frage ausreichend.
Wenn ich programmieren könnt und dann könnt ich jemandem sagen ob das so
ok ist. Davon geh ich mal aus. Ich bin nun ma keiner der was verwendet
bzw. damit experimentiert un net weiss wie das geht. Es ging in diesem
Fall auch nur noch um den programmteil. Ich werde nun ma versuchen ohne
veränderung an dem programm das ganze zu testen. (das von Timmo H.)
Vielleicht klappts ja. Das is ja ma mein ziel!! :)
Gruß Roli
Hi
Was ich noch nie so richtig verstanden habe, ist, das jeder Anfänger
sich die Hörner erst mal am (für Anfänger) komplizierteren 4-Bit-Mode
abstossen will. Im 8-Bit-Mode geht das wesentlich entspannter.
MfG Spess
Das verstehe ich auch nicht.
Viel unverständlicher finde ich allerdings die Methode, mit wilden
Bit-Geschichten gleichzeitig die 4 Datenbits und die Steuerleitungen mit
einem Bytezugriff auf den Port zu handeln. ... und dabei durcheinander
zu kommen ...
Was machen die Leute, wenn sie das Display mal nicht komplett an einen
Port hängen können?
Wie sieht bei diesen Leuten Textausgabe aus?
Und wie die Ausgabe von dynamischem Text?
Warum wird vorhandener Code erst mal verändert, bevor man ihn zum laufen
gebracht oder ihn verstanden hat?
Fragen über Fragen ...
@Roli
Wenn Dein Display wie folgt angeschlossen ist, sollte das HEX-file etwas
ausgeben. Sollte dem nicht so sein, ist was in Deiner Hardware faul.
Port - LCD
C6 = D7
C5 = D5
C4 = D5
C3 = D4
C1 = RS
C0 = E
Gruß
Jobst
> Warum wird vorhandener Code erst mal verändert, bevor man ihn zum laufen> gebracht oder ihn verstanden hat?> Port - LCD> C6 = D7> C5 = D5> C4 = D5> C3 = D4> C1 = RS> C0 = E
ich hab das tut gelesen, hab sprut.de gelesen un hab kapiert was ich
machen muss (welches signal wann ankommen muss) mein problem ist nur das
mit der doku. da stehen oftmals die dinge anders drin (vom ablauf her)
wie das in den routinen ist. un wenns net klappt sucht man un sucht un
sucht. und bevor ich da halt eben was umbaue was ich nicht programmiert
habe (vllt den sinn auch net ganz verstanden habe wie der jenige auf die
lösung kam) hab ich selbst den signalablauf ao programmiert als würd ich
LED´s ansteuern. ich versteh net ganz was daran falsch ist. ich bin halt
net jemand der gleich abkupfert auch wenns einfacher wäre. schließlich
soll doch meine lösung ma die beste werden :)
wenn ich was bastel dann will ich wissen warum das so funzt. un net ja
der herr xy hat das auch so gemacht. is halt ansichtssache. un wenn
jemand keine lust hat darauf zu antworten dann tut ers halt net. aber
ihr helft mir un motzt mich an :(
männer... ich wills verstehen!!! :)
BESTEN DANK AN JOBST M.
also hab nun das test hex file geladen un das tut nichts. was wäre denn,
wenn der controller auf dem display was hätte? ich habe nach wie vor die
1. und 3. zeile schwarz.
meines wissens nach kann ich doch net z.b. am falschen port hängen. dass
z.b. PORTC6 niemals an ein display hängen darf. oder?
Grüße Roli
ja geht lala
löten müsst man können!!!!!!!!!!!!!!!!
sehr schlecht mein papa sein sohn :(
verdammte axt.
ne "kalte" lötstelle und so viel wind um nix.
ich denk dabei hab ich was gelernt.
Vielen dank an alle. vor allem frohe weihnachten un en gute rutsch wenn
ich net grad morgen wieder schreib :)
Merci Jobst M.
Viele Grüße Roli