mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LCD weigert sich seine Pflicht zu tun


Autor: Christoph Erstmalegal (gluema)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab aus dem Tutorial das Programm weiter unten genommen den m8def.inc 
durch m16def.inc getauscht, da ich einen mega16 nehme und in 
Microprozessor mit Ponyprog reingebrannt und alles ok aber dann sollte 
auf dem Display Test stehen machts aber nich sondern sind immernoch die 
beiden Balken zu sehen. Port D is bei dem Mega 16 auch genommen worden. 
Sieht jemand was da falsch läuft?ich benutze das Pollin Board V2.0 und 
das LCD is das Wintek  WD-C2704M-1HNN
.include "m16def.inc"

.def temp1 = r16
.def temp2 = r17
.def temp3 = r18


           ldi temp1, LOW(RAMEND)      ; LOW-Byte der obersten 
RAM-Adresse
           out SPL, temp1
           ldi temp1, HIGH(RAMEND)     ; HIGH-Byte der obersten 
RAM-Adresse
           out SPH, temp1

           ldi temp1, 0xFF    ; Port D = Ausgang
           out DDRD, temp1

           rcall lcd_init     ; Display initialisieren
           rcall lcd_clear    ; Display löschen

           ldi temp1, 'T'     ; Zeichen anzeigen
           rcall lcd_data

           ldi temp1, 'e'     ; Zeichen anzeigen
           rcall lcd_data

           ldi temp1, 's'     ; Zeichen anzeigen
           rcall lcd_data

           ldi temp1, 't'     ; Zeichen anzeigen
           rcall lcd_data

loop:
           rjmp loop

.include "lcd-routines.asm"            ; LCD-Routinen werden hier 
eingefügt

Autor: Thomas Otto (tarzanwiejane)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Sau die.
Balken -> Display uninitialisiert.
Haste die Warteschleifen an deinen Quarz/Frequenz angepasst? Laenger 
geht immer kuerzer geht nimmer. Also lieber zuviel warten als zuwenig.

cu Tarzanwiejane

Autor: Christoph Erstmalegal (gluema)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ch wollte erstmal den quarz im microcontroller nehmen oder ist das 
gänzlich unmöglich dass er das richtig anziegt? der läuft doch mit 1Mhz 
also müsste doch langsam genug sein

Autor: reiner1967 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Christoph,

hast Du berücksichtigt, daß dieses Display 2 Controller hat?

Gruß, Reiner

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christoph Erstmalegal wrote:
> ch wollte erstmal den quarz im microcontroller nehmen
Es gibt keinen "Quarz im Mikrocontroller"! Da ist ein RC-Oszillator 
drin!!

> oder ist das gänzlich unmöglich dass er das richtig anziegt? der läuft doch > 
mit 1Mhz also müsste doch langsam genug sein
Der interne RC-Oszi ist nur dann kritisch, wenn man sehr genaues Timing 
benötigt (z.B. bei asynchroner serieller Datenübertragung). Das ist bei 
Dir nicht der Fall, also sollte es daran schonmal nicht liegen. Für das 
Display kannst Du problemlos den internen RC-Oszillator benutzen.

Autor: Christoph Erstmalegal (gluema)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
reiner1967 wrote:
> Hallo Christoph,
>
> hast Du berücksichtigt, daß dieses Display 2 Controller hat?
>
> Gruß, Reiner

Ja aber ich wollte erstmal nur die obere Hälfte nehmen also nur E1 um 
erstmal überhaupt irgendwas zu sehen und mich dann Schritt für Schritt 
vorzutasten. haut die initialisierung denn nicht über den code hin?

Autor: reiner1967 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Christoph,

der Code sollte schon tun, wenn er aus dem Tutorial ist. Bei dem 
Pollin-Board geht doch die RS232-Schnittstelle auf Port D des MEGA32. 
Stecken da evtl. noch die Jumper?

Gruß, Reiner

Autor: Christoph Erstmalegal (gluema)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich benutze beim pollin board die Rs-232 -ISP schnittstelle und da gibt 
es keine jumper

Autor: Christoph Erstmalegal (gluema)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
liegt es vielleicht daran dass das programm vom tutorial für den mega 8 
geschrieben wurde und ich nur die .include umgeändert habe in 
m16def.inc?

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christoph Erstmalegal wrote:
> liegt es vielleicht daran dass das programm vom tutorial für den mega 8
> geschrieben wurde und ich nur die .include umgeändert habe in
> m16def.inc?
Da Du offensichtlich keine Interrupts benutzt und der Code nicht zu lang 
für die relativen Sprungbefehle sein dürfte, sollte es kein Problem 
sein, wenn alles richtig angeschlossen ist. Wenn Du allerdings 
Interrupts benutzen willst oder der Code eine gewisse Größe 
überschreitet, dann knallts.

Autor: reiner1967 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Board hat zwei RS232-Schnittstellen, eine davon für den ISP. Die 
andere geht über die Jumper JP1 und JP2 an den Port D. Wenn diese Jumper 
gesteckt sind, dürfte es Probleme geben.

Autor: Christoph Erstmalegal (gluema)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
aber ponyprog sagt mir doch dass es richtig übertragen wurde das ist es 
ja was mich wundert. hab jetzt mal die jumper weg gemacht und es 
funktioniert immernoch nicht. irgendwie wird das dislay nicht 
initialisiert. hilft es wenn ich die anlötung vom display an 
microcontroller euch mal sage?

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Neuer ATMega16? Display zufällig an Port C angeschlossen (zumindest 
teilweise)? JTAGEN-Fuse noch programmiert?

Autor: Paul Baumann (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier hast Du ein kleines Programm, mit dem Du erst mal die oberen 2 
Zeilen ansteuern kannst.

MfG Paul

Autor: Christoph Erstmalegal (gluema)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
is aber bascom bekomm ich das auch mit ponyprog in den prozesssor 
gebrannt?und as genau muss ich mit der .bas datei machen? genaue 
anleitung bitte wie gesagt bin anfänger

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist der sogenannte Quelltext. Den habe ich Dir gesandt, damit Du 
dort drin eventuell das Programm an die Anschlußbelegung Deines Displays 
anpassen kannst. Wenn das dann für Dich stimmt, muß das Programm 
kompiliert werden, d.h es muß eine .hex-Datei erzeugt werden, die Du 
dann mit Ponyprog auf den Atmega übertragen mußt.
Dazu kannst Du Dir bei:

http://www.mcselec.com/index.php?option=com_docman...

die Demo-Version von BASCOM laden.

Wenn Bascom gestartet ist, legst Du dort drin eine neue Datei an und 
kopierst meinen Beispielcode dort hinein. Wenn Du dann auf "Compile"
gehst, wird Dir die .hex_Datei erzeugt, die Du dann wie gewohnt in den
MC übertragen kannst.

MfG Paul

Autor: Christoph Erstmalegal (gluema)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Paul Baumann wrote:
> Das ist der sogenannte Quelltext. Den habe ich Dir gesandt, damit Du
> dort drin eventuell das Programm an die Anschlußbelegung Deines Displays
> anpassen kannst. Wenn das dann für Dich stimmt, muß das Programm
> kompiliert werden, d.h es muß eine .hex-Datei erzeugt werden, die Du
> dann mit Ponyprog auf den Atmega übertragen mußt.
> Dazu kannst Du Dir bei:
>
> 
http://www.mcselec.com/index.php?option=com_docman...
>
> die Demo-Version von BASCOM laden.
>
> Wenn Bascom gestartet ist, legst Du dort drin eine neue Datei an und
> kopierst meinen Beispielcode dort hinein. Wenn Du dann auf "Compile"
> gehst, wird Dir die .hex_Datei erzeugt, die Du dann wie gewohnt in den
> MC übertragen kannst.
>
> MfG Paul
ok habs heute ausprobiert und keine änderung. wie gesgat meine leitungen 
sind an port D angeschlossen ist das denn ok weil du irgendwas mit Port 
c schreibst aber oben

hab es heute mal ausprobiert und alle C-Pors auf meine D-ports 
umgestellt. im LCd dispaly tut sich immernoch nichts aber nun blinken 
beide LEDs auf dem Board gleichzeitig im abstand von 500ms denk ich mal 
und der piezo lautsprecher piept dabei. is das nun eine fehlfunktion 
oder gewollt?

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du weißt aber schon, dass du die Steuerleitungen (CE1, CE2, RW, RS) auch 
ansteuern, sowie anschließen musst, an den Mikrocontroller? Und im 
Quelltext muss auch angepasst werden welche Leitung an welchem Pin 
hängt.

Autor: Christoph Erstmalegal (gluema)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Simon Küppers wrote:
> Du weißt aber schon, dass du die Steuerleitungen (CE1, CE2, RW, RS) auch
> ansteuern, sowie anschließen musst, an den Mikrocontroller? Und im
> Quelltext muss auch angepasst werden welche Leitung an welchem Pin
> hängt.

ich bin der meinung ich hab es richtig. hmm ich schreibe heute abend 
nochmal genau was ich wo vom microcontroller ans display angeschlossen 
habe.

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ganz grünau! :-)
Poste erst mal, WIE Du das Display angeschlossen hast. Es müssen 
mindestens
10 Leitungen vom Display belegt sein, (ohne Beleuchtung), damit es etwas 
wird. Vorher brauchen wir gar nicht weiter zu raten. ;-)

MfG Paul

Autor: Christoph Erstmalegal (gluema)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also so richtig hab ich es dann doch noch niht verstanden hab ich den 
eindruck. wie ich nutze den code
1 Vss Masse Masse Gnd
'2 Vdd + 5v Betriebsspannung + 5v
'3 Vo 0 .. 1 , 5v( -2.. -5v) Displayspannung(kontrast)
'4 Rs H / L Register Select
'5 R/W H / L H : Read / L : Write
'6 E H Enable
'7 D0 H / L Datenleitung 0(lsb)
'8 D1 H / L Datenleitung 1
'9 D2 H / L Datenleitung 2
'10 D3 H / L Datenleitung 3
'11 D4 H / L Datenleitung 4
'12 D5 H / L Datenleitung 5
'13 D6 H / L Datenleitung 6
'14 D7 H / L Datenleitung 7(msb)
'15 (optional) ? LED+ - Pluspol der LED-Beleuchtung
'16 (optional) ? LED- - Minuspol der LED-Beleuchtung
'$sim
$regfile = "m16def.dat"
$crystal = 16000000

Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = PortD.5 , Db6 = PortD.6 , 
Db7 =  PortD.7 , E = PortD.3 , Rs = PortD.2
Config Lcdbus = 4                                           'LCD im 
4-Bit Modus

Config PortD.1 = Output                                     'RW an Port 
D.1
PortD.1 = 0                                                 'RW auf L 
legen
Initlcd
Do
  Cls
  Locate 1 , 3
  Lcd "Guck och nur"
  Locate 2 , 4
  Lcd "es klappt!"
  Waitms 500
  Cls
Loop

so soll laut datenblatt des Wintek WD-C2704M-1HNN angesteuert werden
1 GND                                       9 D1
2 VDD +5V ± 5%                              10 D2
3 VO (ca. 0…4V Kontrasteinstellung)         11 D3
4 RS                                        12 D4
5 R/W                                       13 D5
6 E1 (Controller obere Displayhälfte)        14 D6
7 E2 (Controller untere Displayhälfte)       15 D7
8 D0

und wo soll nun was angeschlossen werden?

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich vermute, Du hast zuviele Baustellen gleichzeitig. Vielleicht 
solltest Du weniger "benutzen" sondern mehr versuchen zu "verstehen". 
Dazu müsstest Du aber erstmal etwas kleiner anfangen. Ehe das LCD dran 
ist, solltest Du in Hardware und der von Dir verwendeten 
Programmiersprache einigermaßen sattelfest sein.

...

Autor: Christoph Erstmalegal (gluema)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hannes Lux wrote:
> Ich vermute, Du hast zuviele Baustellen gleichzeitig. Vielleicht
> solltest Du weniger "benutzen" sondern mehr versuchen zu "verstehen".
> Dazu müsstest Du aber erstmal etwas kleiner anfangen. Ehe das LCD dran
> ist, solltest Du in Hardware und der von Dir verwendeten
> Programmiersprache einigermaßen sattelfest sein.
>
> ...

das ist richtig und die zugehörigen tele wie 7 segment anzeige sind 
schon bestellt minklusive lochrasterplatine für sauberen aufbau und 
weniger fehler. nur bis dahin wollte ich einfach mal so sehen ob es mit 
dem lcd klappt. das ist dann sozusagen richtige motivation das 
auszureizen

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also gut, da will ich mal sehen:
Pin 1 an Masse
Pin 2 an +5V
Pin 3 an den Schleifer eines 10K-Potentiometers
eine Seite des Potis an Masse
die andere an +5V (zur Kontrasteinstellung)
Pin 4 an PortD.2
Pin 5 an PortD.1
Pin 6 an PortD.3
Pin 7 bis 11 freilassen
Pin 12 an PortD.4
Pin 13 an PortD.5
Pin 14 an PortD.6
Pin 15 an PortD.7

Da dieses Display 2 Controller hat, hat es auch 2 Enable-Eingänge (E1 
und E2) Im Moment ist jetzt nur der erste im Gange und es werden dadurch 
auch nur die ersten beiden Zeilen angesteuert. So, da löte mal.

MfG Paul

Autor: Christoph Erstmalegal (gluema)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Paul Baumann wrote:
> Also gut, da will ich mal sehen:

> Da dieses Display 2 Controller hat, hat es auch 2 Enable-Eingänge (E1
> und E2) Im Moment ist jetzt nur der erste im Gange und es werden dadurch
> auch nur die ersten beiden Zeilen angesteuert. So, da löte mal.
>
> MfG Paul

und das programm kann so bleiben?

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na freilich, oder was denkst Du, warum ich mir die Mühe mache, die 
Anschlussbelegung auf Deine Codeänderung anzupassen?! ;-)

MfG Paul

Autor: Christoph Erstmalegal (gluema)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Paul Baumann wrote:
> Na freilich, oder was denkst Du, warum ich mir die Mühe mache, die
> Anschlussbelegung auf Deine Codeänderung anzupassen?! ;-)
>
> MfG Paul

ok danke dir vielmals nen kühles blondes hinstell nun hast du 
feierabend verdient

Autor: bas_ratte (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
las das cls mal weg das löscht den ganzen bildschirm

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.