EA DOG M162W-A
Mittwoch, 23. Mai 2012
 
 

PIC Mikrocontroller Forum  |  PIC Mikrocontroller  |  Programmiersprache Assembler  |  EA DOG M162W-A « vorheriges nächstes »
Seiten: [1] 2 Nach unten Drucken
Autor Thema: EA DOG M162W-A  (Gelesen 5070 mal)
 
Mario21041993
Gast
« am: Februar 16, 2011, 11:55:57 »

Hallo Jungs

ich habe ein großes Problem

habe mir eine Schaltung aufbebaut und Software geschrieben und es funktioniert alles wunderbar mit einem LCD Display mit dem Controller HD44780.

Nun will ich aus Platzgründen gernen ein LCD Display (EA DOG M162W-A) verbauen, sobald ich aber dieses Display anstecke kommt eine Ausgabe...

bittte um Hilfe
Ist die Initialisierung anders, wenn ja bitte um Tipps??

PIC16F628A
Programmiere in Assembler

danke
Gespeichert
oerni
Full Member
***
Offline Offline

Beiträge: 196



Profil anzeigen WWW
« Antworten #1 am: Februar 16, 2011, 12:35:42 »

Hallo Mario,

nach dem man dich im anderen Forum abgekanzelt hat, will ich dich mal in Schutz nehmen Zwinkernd
Die 4Bit Initialisierung steht wirklich nicht im Datenblatt des LCD.
Aber im Datenblatt des ST7036. Schau mal in dem anderen Forum nach ST7036, da haben sich schon mehrere mit der Ini rumgeärgert.
Ansonsten Schaltung und Codeschnipsel her, erst dann kann man hilfreich eingreifen.
- stimmen die PORT Zuweisungen, oberes/unteres Nibbel?
- sind D0..D3 auf Ub gezogen?

Tschau Oerni
Gespeichert
mario2104
Newbie
*
Offline Offline

Beiträge: 14


Profil anzeigen
« Antworten #2 am: Februar 16, 2011, 17:07:52 »

oki

also anbei Schaltung + Assembler Code vom bereits programmierten Programm.....

Programm funktioniert Wunderbar mit dem LCD Display HD44780, wie schon gesagt mit dem EADOG... geht gar nix.....

Ich habe heute mit einigen Lehrern versucht das Programm zu lösen nur wir sind nicht zur Lösung gekommen....

bitte um Hilfe

dankeschön

* Untitled PROBEE.asm (24.05 KB - runtergeladen 61 Mal.)

* 2011-02-02 13.38.50.gif (478.24 KB, 1280x960 - angeschaut 175 Mal.)
Gespeichert
oerni
Full Member
***
Offline Offline

Beiträge: 196



Profil anzeigen WWW
« Antworten #3 am: Februar 16, 2011, 20:16:44 »

Hallo Mario,
deine Initialisierungsreihenfolge stimmt nicht.
Da das Display für 3,3V und 5V ausgelegt ist, muß z.B. der Booster an oder ausgeschaltet werden. Darauf aufbauend werden noch andere Register eingestellt, die ein "normales" Display nicht hat.
Der Fehler liegt hier also bei der Initialisierung dieses speziellen Displays, allgemein hätte das vielleicht funktionieren können.
Halte dich mal an das Handbuch des ST7036 Seite 41 und versuche folgende Einstellungen. Die genauen Bits bitte selber nachschlagen.

 1. 00110000 Function Set
 2. 00110000 Function Set
 3. 00110000 Function Set
 4. 00100000 Function Set
 5. 00100000 Function Set
 6. 00011101 Internal OSC
 7. 01111100 Contrast
 8. 01010000 Power
 9. 00111100 Follower
10.00001100 Display on

Such dir andere Lehrer Weinen

Tschau Oerni
Gespeichert
Mario21041993
Gast
« Antworten #4 am: Februar 16, 2011, 21:46:46 »

nun habe ich es so initialisiert

Code:
movlw B'00110000' ; 2
call Control8Bit
movlw B'00110000' ; 3
call Control8Bit
movlw B'00100000' ; 4
call Control8Bit


movlw B'00111000' ; Function set
call OutLcdControl
movlw B'00111000' ; Function set
call OutLcdControl
movlw B'00111000' ; Function set
call OutLcdControl
movlw B'00100000' ; Function set
call OutLcdControl
movlw B'00101000' ; Function set
call OutLcdControl
movlw B'00010000' ; Internal OSC frequency
call OutLcdControl
movlw B'01111111' ; Contrast Set
call OutLcdControl
movlw B'01011111' ; Power/ICON/Contrast controll
call OutLcdControl
movlw B'00111100' ; Follower controll
call OutLcdControl
movlw B'00001111' ; Display ON/OFF control
call OutLcdControl

und es geht noch immer nicht, an was kann es liegen??

Code-Tags verwenden!
Stampede
« Letzte Änderung: Februar 18, 2011, 01:14:28 von Stampede » Gespeichert
oerni
Full Member
***
Offline Offline

Beiträge: 196



Profil anzeigen WWW
« Antworten #5 am: Februar 16, 2011, 22:43:57 »

Datenblatt!!!!!!!!!!

Du sollst nicht 8x Function Set machen sondern nur in den Schritten 1..5.
Ich hatte die Nummerierung extra deinem Programm angepasst.

Code:
   movlw   B'00111000'   ; Function set
   call   Control8Bit    ; <- Achtung, keine Busyabfrage möglich
   movlw   B'00111000'   ; Function set
   call   Control8Bit    ; <- Achtung, keine Busyabfrage möglich
   movlw   B'00111000'   ; Function set
   call   Control8Bit    ; <- Achtung, keine Busyabfrage möglich
   movlw   B'00100000'   ; Function set
   call   OutLcdControl
   movlw   B'00101000'   ; Function set
   call   OutLcdControl
   movlw   B'00010000'   ; Internal OSC frequency
   call   OutLcdControl
   movlw   B'01111111'   ; Contrast Set
   call   OutLcdControl
   movlw   B'01011111'   ; Power/ICON/Contrast controll
   call   OutLcdControl
   movlw   B'00111100'   ; Follower controll
   call   OutLcdControl
   movlw   B'00001111'   ; Display ON/OFF control
   call   OutLcdControl

Tschau Oerni
Gespeichert
Mario21041993
Gast
« Antworten #6 am: Februar 16, 2011, 22:59:43 »

ok dankeschön

nun habe ich so initialisiert wie gezeigt.....

aber ich bekomme noch immer keine ausgabe....

außerdem habe ich bemerkt das er mir auch kein Relais anzieht sobald ich eine Taste drücke, was aber normalerweise funktionieren müsste....
Gespeichert
oerni
Full Member
***
Offline Offline

Beiträge: 196



Profil anzeigen WWW
« Antworten #7 am: Februar 17, 2011, 12:49:15 »

Hallo Mario,

wir müssen mal über den Displayanschluß K3 reden.
Bitte die Nummerierung an K3 mit der Pin Nummerierung des LCD zeigen. Da fehlt was, besser gesagt ist eben nicht erkennbar.
Ist das Reset und das CSB noch irgendwo angeschlossen?
Die gibt es nämlich beim HD44780 auch nicht.
Das Ding ist nicht pin und funktionskompatibel!

Also nochmal asm zeigen und vollständigen Anschlußplan. Welche Werte haben die Rs?

Tschau Oerni
Gespeichert
mario2104
Newbie
*
Offline Offline

Beiträge: 14


Profil anzeigen
« Antworten #8 am: Februar 17, 2011, 15:06:41 »

alsooo anbei die schaltung+ asm code+ EADOGM verkabelung

das ist richtig die K4 gibt es in dem Sinn nicht mehr. Diese Schaltung habe ich am Anfang für den Anderen Display Typ gezeichnet.

Die Schaltung gibt es derzeit nur am Steckbrett aufgebaut....
Der Anschlussplan:
              EADOGM PIN
RS= RB2       39
RW= RB3       37
E=  RB0       36

D4= RB4       31
D5= RB5       30
D6= RB6       29
D7= RB7       28

die anderen PINS des Displays wurden wie im Bild EADOGM gezeigt verkabelt


* Belegung EADOG.JPG (26.88 KB, 434x288 - angeschaut 116 Mal.)

* Schaltung_.gif (478.24 KB, 1280x960 - angeschaut 160 Mal.)
* Programm_EADOGP.asm (24.31 KB - runtergeladen 60 Mal.)
Gespeichert
oerni
Full Member
***
Offline Offline

Beiträge: 196



Profil anzeigen WWW
« Antworten #9 am: Februar 17, 2011, 18:03:20 »

Daaaaaaatenblatt!
Ich fühl mich langsam wie bei meinen eigenen Lehrlingen  Traurig  Schockiert  Weinen

Hier nochmal die Sequenz, wie schon oben beschrieben. Datenblatt Seite 41, so schwer ist das doch nicht.
Bitte die speziellen Bits für Kontrast nochmal prüfen ggf. anpassen.
Grade die ersten 4 Schritte sind wichtig, sonst schaltet das Ding nicht in den 4 Bit Modus.

 1. 00110000 Function Set
 2. 00110000 Function Set
 3. 00110000 Function Set
 4. 00100000 Function Set
 5. 00100000 Function Set
 6. 00011101 Internal OSC
 7. 01111100 Contrast
 8. 01010000 Power
 9. 00111100 Follower
10. 00001100 Display on

Tschau Oerni

Gespeichert
mario2104
Newbie
*
Offline Offline

Beiträge: 14


Profil anzeigen
« Antworten #10 am: Februar 17, 2011, 18:22:24 »

ok und das kann ich alles so lassen wie es ist??

Code:
; ein Steuerbyte aus W 8-bittig ?bertragen
Control8Bit
movwf LcdPort
bsf LcdE
nop
bcf LcdE
movlw D'10'
movwf loops
call WAIT
return

;*****************************************************
; darauf warten, da? das Display bereit zur Datenannahme ist
; dazu wird das busy-Bit des LCD abgefragt
LcdBusy
        bsf     STATUS, RP0 ; make Port B4..7 input
movlw B'11110000'
iorwf   TRISB, f
        bcf     STATUS, RP0
BusyLoop
bcf LcdRs ; Steuerregister
bsf LcdRw ; Lesen
bsf LcdE
nop
movf LcdPort, w ; 4 obere Bits lesen (D7..D4)
movwf LcdStatus ; und in LcdStatus speichern
bcf LcdE
nop
bsf LcdE
nop ; 4 untere Bits lesen (D3..D0) und ignorieren
bcf LcdE
btfsc LcdStatus, 7 ; teste bit 7
goto BusyLoop
bcf LcdRw
    bsf     STATUS, RP0 ; make Port B4..7 output
movlw B'00001111'
andwf   TRISB, f    
    bcf     STATUS, RP0
return

;*****************************************************
; aus W ein Byte mit Steuerdaten zum Display ?bertragen
OutLcdControl
movwf LcdDaten ; Byte in LcdDaten zwischenspeichern
call LcdBusy ; warten bis Display bereit ist
movf LcdDaten, w ; Byte zur?ck nach W holen
andlw H'F0' ; low-Teil l?schen
movwf LcdPort ; Hi-teil Daten schreiben
bsf LcdE
nop
bcf LcdE ; Disable LcdBus
swapf LcdDaten, w ; Byte verdreht nach W holen
andlw H'F0' ; High Teil l?schen
movwf LcdPort ; Low-teil Daten schreiben
bsf LcdE
nop
bcf LcdE ; Disable LcdBus
return

;*****************************************************
; aus W ein Datenbyte (zum Anzeigen) an's Display ?bertragen
OutLcdDaten
movwf LcdDaten ; Byte in LcdDaten zwischenspeichern
call LcdBusy ; warten bis Display bereit ist
movf LcdDaten, w ; Byte zur?ck nach W holen
andlw H'F0' ; low-Teil l?schen
movwf LcdPort ; Hi-teil Daten schreiben
bsf LcdRs ; Daten
bsf LcdE ; Enable LcdBus
nop
bcf LcdE ; Disable LcdBus
swapf LcdDaten, w ; Byte verdreht nach W holen
andlw H'F0' ; High Teil l?schen
movwf LcdPort ; Low-teil Daten schreiben
bsf LcdRs ; Daten
bsf LcdE
nop
bcf LcdE ; Disable LcdBus
bcf LcdRs ;
return
sorry wenn ich nerve aber mit so einem Display habe ich noch nie gearbeitet sorry

Code-Tags verwenden!
Stampede
« Letzte Änderung: Februar 18, 2011, 01:15:06 von Stampede » Gespeichert
oerni
Full Member
***
Offline Offline

Beiträge: 196



Profil anzeigen WWW
« Antworten #11 am: Februar 17, 2011, 20:01:14 »

Hallo Mario,

deine vier Unterprogramme sollten so funktionieren, habe ich mit meinen Assembler Funktionen abgeglichen.

Tschau Oerni
Gespeichert
mario2104
Newbie
*
Offline Offline

Beiträge: 14


Profil anzeigen
« Antworten #12 am: Februar 17, 2011, 20:06:39 »

ok passt danke echt leiwand von dir....

so ich hab jz. alles gemacht...

und bekomme einfach keine ausgabe, sehe auch keinen kontrast balken am display wie das bei anderen displays der fall ist an was kann es noch liegen was glaubst du?? contrast init?? oder irgendein Unterprogramm...
Gespeichert
oerni
Full Member
***
Offline Offline

Beiträge: 196



Profil anzeigen WWW
« Antworten #13 am: Februar 17, 2011, 20:09:29 »

Wenn du an dem Kontrastpoti drehst, kommt dann der Balken?
Wenn nicht, ist an der Schaltung noch was faul. Die erste Zeile muß immer was anzeigen (grauer Schatten) auch ohne Initialisierung.
Gespeichert
mario2104
Newbie
*
Offline Offline

Beiträge: 14


Profil anzeigen
« Antworten #14 am: Februar 17, 2011, 20:11:49 »

das ist bei den anderen displays der fall mit dem Poti für den Contrast

das EADOGM162 hat ja die Kontrast einstellung als Software...

ich sag ja dieses Display macht nur Probleme aber leider muss ich dies verwenden wegen dem Platzmagel
« Letzte Änderung: Februar 17, 2011, 23:13:34 von mario2104 » Gespeichert
Seiten: [1] 2 Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  

Powered by MySQL Powered by PHP Made for Mozilla (Firefox) Made for Internet Explorer
Seite erstellt in 0.04 Sekunden mit 18 Zugriffen.
 
Top! Top!