PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LCD Display über RS232



darkzone666
07.08.2011, 17:33
Hallo,
ich bräuchte mal eure Hilfe und zwar hab ich ein kleines Problem ich möchte mit meinem Controller AT89C51RC2 einen Display KIT160-6 über die RS232-Schnittstelle ansteuern. Das ich dazu einen MAX232 bauche ist mir bekannt, jedoch wie Programmiere ich das in meinem Controller????

Kann mir jemand hier helfen??

DanielSan
07.08.2011, 17:52
Steht doch im PDF http://www.google.de/url?sa=t&source=web&cd=2&sqi=2&ved=0CB8QFjAB&url=http%3A%2F%2Fwww.lcd-module.de%2Feng%2Fpdf%2Fgrafik%2Fkit1606e.pdf&rct=j&q=KIT160-6&ei=lsA-TpKlL8GF-wbzgLm9Bw&usg=AFQjCNFFPgY0I3XsW_r4fVPeueQ2jKKGyA&cad=rja

Auf Seite 10 ist ein Programierbeispiel in 3 Sprachen. Damit sollte sich doch was basteln lassen. Auf den Seiten davor wird auch genau beschrieben wie die Befehle funktionieren.

Assembler kann ich leider nicht sonst würd ich dir ein kleines Beispiel schreiben.

Gruß Daniel

darkzone666
07.08.2011, 18:13
Auf Seite 10 ist ein Programierbeispiel in 3 Sprachen. Damit sollte sich doch was basteln lassen. Auf den Seiten davor wird auch genau beschrieben wie die Befehle funktionieren.

Assembler kann ich leider nicht sonst würd ich dir ein kleines Beispiel schreiben.

Gruß Daniel

Danke für den hinweiß, doch leider brigt der mich nicht weiter da ich "nur" Assebmler kan.

DanielSan
07.08.2011, 19:15
Du musst doch nur die Bytes per RS232 ans LCD senden. Oder geht es dir auch darum wie man in Assembler überhaupt was per RS232 sendet?

Gruß Daniel

darkzone666
07.08.2011, 20:00
Du musst doch nur die Bytes per RS232 ans LCD senden. Oder geht es dir auch darum wie man in Assembler überhaupt was per RS232 sendet?

Gruß Daniel

Ja eigendlich gehts mir darum. Ich habe noch nie in Assembler Daten über RS232 gesendet.

Johnes
07.08.2011, 20:56
Hier, wäre das, was ich als kleine Starthilfe bieten kann:



;Diese Parameter müssen gesetzt werden, um die Datenrate zu setzen
.equ CLOCK = 3686400
.equ BAUD = 115200 ;Kann auch 4800, 9600, etc. sein!
.equ UBRRVAL = CLOCK/(BAUD*16)-1

.def COM_Data_RX = r14
.def COM_Data_TX = r15 ;TX/RX können auch ein Register sein!
.def temp = r16


;------------------------------------------------------
; Serielle Kommunikation einstellen...
;------------------------------------------------------

; Baudrate einstellen
LDI temp, LOW(UBRRVAL)
; LDI temp, UBRRVAL
OUT UBRRL, temp
LDI temp, HIGH(UBRRVAL)
OUT UBRRH, temp

;Schnittstelle einstellen...
;Bit7: N/A
;Bit6: 1=syncrone Kommunikation
; 0=asyncrone Kommunikation
;Bit5/4: Parity Mode
; 0:0=Disable
;Bit3: Stop Bit set
; 0=1 Bit
; 1=2 Bits
;Bit2/1 Character/Framesize
; 0:0:0=5-bit
; 0:0:1=6-bit
; 0:1:0=7-bit
; 0:1:1=8-bit
; 1:1:1=9-bit
;Bit0 Clock priorty
LDI temp, 0b00000000
OUT UCSRC, temp

SBI UCSRB, TXEN ; TX aktivieren
SBI UCSRB, RXEN ; RX (Empfang) aktivieren
; SBI UCSRB, RXCIE ; Interrupt bei Empfang


; SEI ; Interrups aktivieren





Daten_senden:
;---------------------------

SBIS UCSRA,UDRE ;Warten bis UDR für das nächste
RJMP Daten_senden ;Byte bereit ist

OUT UDR, COM_Data_TX ; COM_Data_TX ist ein Register, was die zu sendenen Daten enthält
RET

Hubert.G
08.08.2011, 10:47
[QUOTE]Das ich dazu einen MAX232 bauche ist mir bekannt[QUOTE]
Wenn du vom Kontroller zum LCD gehst wirst du in der Regel keinen MAX232 benötigen da beide auf RX/TX mit 5V arbeiten.
Der MAX232 ist nur für die Verbindung zum PC notwendig.

Zitat einfügen funktioniert nicht wie gewünscht.

DanielSan
08.08.2011, 10:53
Zitat einfügen funktioniert nicht wie gewünscht.

Wenn du das hintere [!QUOTE] so [!/QUOTE] schreibst dann klappt es auch ;-) (OHNE ! das musste ich rein machen weil er sonst gequotet hätte ;-))
Sry für OT!

Das Display scheint wirklich komplett mit 5V Pegel zu arbeiten. Welche Version hast du denn? Die mit 9-35V Supply Voltage oder die 5V Version?

Gruß Daniel

Hubert.G
08.08.2011, 11:09
Danke für den Zitat hinweis, muss mich da mal spielen damit das funktioniert.
So ein LCD habe ich nicht, ich habe im Datenblatt nachgesehen.

DanielSan
08.08.2011, 11:13
Die Frage ging auch nicht an dich sondern an Darkzone ;-)

darkzone666
08.08.2011, 15:32
Das Display scheint wirklich komplett mit 5V Pegel zu arbeiten. Welche Version hast du denn? Die mit 9-35V Supply Voltage oder die 5V Version?


Ich hab die 5V Version. Wie brauch ich jetzt kein MAX232? Kann ich dann einfach RX/TX je an einen Port legen? z.B. RX = P3.1 und TX = P3.2 ??

DanielSan
08.08.2011, 17:34
So wie ich das sehe, brauchst du keinen Max232 vom µC zum Display. Wenn du allerdings vom µC zum PC oder vom PC zum Display kommunizieren willst sieht das wieder anders aus!

Gruß Daniel

darkzone666
09.08.2011, 06:05
Also das ist ja gut. Wie muss ich jetzt meinen Display an meinen Controller anschließen??

DanielSan
09.08.2011, 08:43
Ok jetzt ist etwas Eigenleistung gefragt!

Schau mal ins RN-Wiki wie man per RS232 kommuniziert. Zusätzlich würde ich einen Blick ins Datenblatt des Displays und in das des Controllers werfen. Da steht alles was du wissen musst.

Gruß Daniel

darkzone666
14.08.2011, 11:15
Also ich werde daraus nicht schlau. Ich werde jetzt einfach mal Tx an Port 3.1, Rx an 3.2 und GND an GND des µC. richtig??
Zumindest steht es so hier:http://www.rn-wissen.de/index.php/RN-Definitionen#RS232_Stecker

DanielSan
14.08.2011, 11:58
Nein nicht richtig.

Du musst auch in die Datenblätter gucken. Der Rx vom Display muss an den Tx (P3.1) vom µC. Der Tx vom Display muss an den Rx (P3.0) vom µC. GND vom Display muss mit GND vom µC verbunden werden. Die benötigen ein gemeinsammes GND.
Das trifft allerdings nur zu wenn du die Hardware RS232 verwenden möchtest (würde ich dir empfehlen!) sonst ist es fast egal an welchem Pin was ist, weil du das dann in der Software zuweist.

Gruß Daniel

darkzone666
14.08.2011, 12:07
Ah, okay jetzt hab ichs auch gesehen. Hatte ein falsches Datenblatt. Jedoch hab ich jetzt noch ein problem, denn wenn ich jetzt den Pin Rx und Tx für den Display belege. Aber wenn ich noch eine RS232 Schnittstelle mitanschließen will über die Daten empfangen werden sollen (nicht zum Progrmmieren) hab ich doch jetzt ein problem, oder?

DanielSan
14.08.2011, 12:23
Ja dann musst du entweder...
...ein Hardware RS232 und ein Software RS232
...oder 2 Software RS232
...oder einen µC mit 2 Hardware RS232 Schnittstellen nehmen
...oder du baust dir ne Schaltung mit Transistoren, so das dein µC zwischen den beiden "Geräten" wechseln kann. Das erfordert dann aber ne saubere Software weil evtl Daten ankommen wenn du gerade mit dem Display sprichst.

Wenn dein µC allerdings dem Display nur Daten sendet und von einem z.B. PC nur Daten empfängt, kannst du den Tx vom µC an den Rx des Displays und den Rx vom µC an den Tx vom PC hängen. Da musst du aber gucken ob dein Display wirklich nur Daten empfängt oder ob es auch was "wichtiges" zurück schickt.
Du kannst dann aber keine Daten an den PC senden.

Gruß Daniel

darkzone666
14.08.2011, 12:29
...ein Hardware RS232 und ein Software RS232

He? wie soll ich das verstehn, also hardware isch klar aber was ist Software RS232?

Kennst du einen Controller der 2 Hardware RS232 hat?

DanielSan
14.08.2011, 12:36
Software RS232 ist eben eine RS232 Schnittstelle die in Software realisiert wird. Da muss man sich aber um alles kümmern, buffer etc.

Es gibt ne Menge µC die 2 Uarts haben siehe Anhang.

darkzone666
14.08.2011, 12:53
Oh, dann werd ich das wohl lassen. Ich werde mir wohl dann einen anderen Controller aussuchen der 2 Uarts hat. Ist der ATMega64 schwer zu programmieren?

021aet04
14.08.2011, 17:11
Der Atmega 64 ist gleich zu programmieren wie jeder andere Atmega/Attiny auch. Es gibt nur Unterschiede in den Registerbezeichnungen (da es je nach µC andere Hardware gibt). Die stehen aber alle in den Datenblättern. Achte nur darauf das du ein Gehäuse wählst das du noch löten kannst.

MfG Hannes

darkzone666
14.08.2011, 18:34
Okay, dann ist ja gut. hab mal einen schaltplan erstellt, ist das alles richtig angeschlossen und wie kann ich die ISP Leitungen auch als Portausgang nutzen?19651

021aet04
14.08.2011, 18:42
Stimmt nicht ganz. Reset muss mit einem Widerstand auf 5V (VCC) gehen. AVCC sollte nicht mit VCC verbunden werden. Der Stecker zum Programmieren ist richtig wenn du einen Bootloader verwendest. Wenn du einen ISP Anschluss verwenden willst musst du MISO, MOSI, VCC, GND, RST und SCK anschließen. Das findest du im Internet.

MfG Hannes

darkzone666
14.08.2011, 18:54
okay also das mit dem Reset werd ich verbessern. Wo soll ich dann AVCC anschließen. Beim ISP Anschluss muss ich dann nur noch RST anschließen,der Rest stimmt, oder? Wo bekomme ich einen Bootloader her?

021aet04
14.08.2011, 19:18
AVCC musst du anschließen (ein Fehler von mir). Hier habe ich etwas zu AVCC gefunden (https://www.roboternetz.de/community/threads/26226-AVCC-AREF-AGND-bei-nicht-Nutzung-der-ADCs-nötig).
Zum Thema programmieren. Es gibt verschiedene Arten wie du µCs programmieren kannst.

1.)HV-Programmierung => Es wird zum Programmieren 12V an den Reset Eingang angeschlossen. Dazu braucht man spezielle Hardware. Man kann am meisten machen, da er auch mit verstellten Fuses programmierbar ist.
2.)ISP (In System Programming) Programmierung => Zum Programmieren werden 6 Anschlüsse benötigt. Diese sind VCC (5V), GND, Reset, Miso, Mosi, SCK. Mit dieser Variante kann man Fuses verändern, das Programm auf bzw vom µC laden,...
Hat man die Fuses bzw Lockbits falsch eingestellt ist er nicht mehr ansprechbar bzw bei verstellten Takt nur mit externer Hardware.
3.)mit Bootloader => Man spielt einmal mit einem ISP oder HV Programmiergerät einen Bootloader auf den µC. Dieser bleibt immer am µC drauf. Man hat deswegen nicht soviel Platz für das eigene Programm (wegen dem Bootloader). Der Vorteil ist der das man den µC z.B. über RS232 programmieren kann. Beim Asuro wird auch ein Bootloader verwendet. Ob man die Fuses verstellen kann weiß ich nicht, da ich mit ISP programmiere.

Wenn du den Stecker verwendest und mittels ISP programmieren willst ist er falsch angeschlossen. Suche im Internet nach dem Anschluss vom ISP. So wie du es angeschlossen hast (mit RX/TX) musst du einen Bootloader aufspielen. Diesen musst du entweder selbst programmieren oder im Internet suchen.

MfG Hannes