|
|
|
Anfang
zurück
weiter
Ende
|
Autor |
Beitrag |
Bir Gesch
Gast
|
Erstellt: 23.09.06, 01:27 Betreff: LCD-Interface
drucken
Thema drucken weiterempfehlen
|
|
|
Hi!
Ich habe einen VHDL-Code zur Ansteuerung des LCD-Interface auf dem DE2-Board (Cyclone II Evaluationsboard) von Altera (bei Bedarf kann ich den Code posten - sind hier Anlagen möglich?).
Ich frage mich, wozu das nötig ist. Warum braucht es einen Code zur Ansteuerung des LCD? Warum wird nicht einfach das LCD angesteuert - also ohne irgendetwas anderes dazwischen?
Hier mal die Entity-Deklaration des LCD-Interface - vielleicht sagt das ja jemandem was...
entity LCD_Interface is port( Takt : in std_logic; -- 27 MHz reset : in std_logic; -- Asynchroner Reset COMMAND : in std_logic_vector( 5 downto 0 ); position : in std_logic_vector( 7 downto 0 ); zeichen : in std_logic_vector( 7 downto 0 ); Starten : in std_logic; -- Befehlsausführung starten busy : out std_logic; -- '1', wenn LCD_Interface beschäftigt LCD_Daten : out std_logic_vector( 7 downto 0 ); -- Datenbyte zum LCD LCD_RS : out std_logic ; LCD_R_W : out std_logic ; LCD_E : out std_logic ; LCD_ON : out std_logic ; LCD_BL : out std_logic --; -- TT1,TT2,TT3 : out std_logic; -- Debug -- state1 : out INIT1_STATE_typ; -- Debug -- state2 : buffer INIT2_STATE_typ; -- Debug -- S_tart : out std_logic -- Debug ); end LCD_Interface;
Viele Grüße,
Bir (das ist mein Spitz-Vorname, der Nachname ist lustigerweise auch ein Spitz-Nachname die EMail stimmt)
|
|
nach oben |
|
|
mish
Neuling
Beiträge: 6
|
Erstellt: 02.11.06, 00:08 Betreff: Re: LCD-Interface
drucken
weiterempfehlen
|
|
|
ich beiss mir auch gerade am lcd die zähne aus...
ich hab hier mal ein paar url gefunden und gelesen... http://www.sprut.de/electronic/lcd/index.htm http://www.avrbeginners.net/interfacing/44780_lcd/4bit.html http://www.klaus-leidinger.de/mp/Mikrocontroller/LCDtest/LCDboard.html
also... ich habe auf meinem spartan-3e ja ein lcd mit 4bit datenbus
nun frage ich mich wie ich es ansprechen muss... erstmal will ich nur was einfaches machen, wie z.b. das display leeren.
ich habe folgende pins: rs, rw, enable, db4,db5,db6 und db7
auf den urls habe ich initialisierungscodes gefunden, welche ich dann auch gesetzt habe...
meine frage gilt nun dem enable... muss ich den beim initialisieren des displays auch jedes mal 2 mal an und aus schalten? (einmal für das obere und einmal für das untere nibble?) also wenn ich z.b. db7 auf 1 habe dann den enable einmal ein und aus schalte, dann wird er wenn ich das nächste mal den enable wieder ein-ausschalte als db3 behandelt? oder verstehe ich hier etwas falsch?
|
|
nach oben |
|
|
DaMicha
Stammgast
Beiträge: 27 Ort: Rostock
|
Erstellt: 02.11.06, 12:04 Betreff: Re: LCD-Interface
drucken
weiterempfehlen
|
|
|
Moin.
Hab mir mal kurz die Asm-Quellen unter: http://www.sprut.de/electronic/pic/programm/lcd.htm -> http://www.sprut.de/electronic/pic/programm/lcd.zip angeschaut. Scheint so zu sein, dass Du erstmal davon ausgehst, dass du im 8 Bit Modus bist (bzw. in den 8Bit Modus gewechselt wird, falls der 4 Bit Modus aktiv war). Also die 1. vier Befehle im 8Bit Modus (ohne high/low) und die restlichen im 4Bit Modus. Schau Dir mal genau die Wartezeiten zwischen und vor den Befehl an (sind auch im ASM Code). Denke mal, falls man zu schnell ist, funktioniert es nicht.
Gruß DaMicha.
|
|
nach oben |
|
|
xGCFx
Stammgast
Beiträge: 33 Ort: Dresden
|
|
nach oben |
|
|
mish
Neuling
Beiträge: 6
|
Erstellt: 03.11.06, 07:10 Betreff: Re: LCD-Interface
drucken
weiterempfehlen
|
|
|
Ich glaube ich habe ein grundsätzliches Verständnisproblem
Man kann ein LCD welches nur 4 Datenleitungen hat trozdem im 8bit Modus betreiben, indem man zuerst das obere Nibble setzt, dann enable einmal pulst , dann das untere Nibble setzt und dann enable wieder einmal pulst? Habe ich das richtig verstanden?
Dass ich das display initialisieren muss ist mir klar. Ich denke, ich habe einfach eine falsche Sequenz genommen... Die ist je nach Controller unterschiedlich oder?
|
|
nach oben |
|
|
DaMicha
Stammgast
Beiträge: 27 Ort: Rostock
|
Erstellt: 03.11.06, 13:35 Betreff: Re: LCD-Interface
drucken
weiterempfehlen
|
|
|
Hallo Mish.
Unter: http://www.sprut.de/electronic/lcd/index.htm#init steht es ja. Nach dem Power-ON-Reset ist der LCD Controller immer im 8 Bit Modus. Das ist er dann so lange, bis Du in den 4 Bit Modus gewechselt hast. Du musst also zum Anfang so tun als ob ein 8 Bit Interface vorhanden ist (nur ein Enable Puls pro Befehl) obwohl Du nur die oberen 4 Datenbits davon benutzt. Die unteren 4 Datenbit werden zum Umstellen in den 4 Bit Modus nicht benötigt! Bist Du dann im 4 Bit Modus, musst Du Low- und High-Nibble einzeln übertragen.
Gruß DaMicha.
[editiert: 03.11.06, 13:35 von DaMicha]
|
|
nach oben |
|
|
mish
Neuling
Beiträge: 6
|
Erstellt: 03.11.06, 15:29 Betreff: Re: LCD-Interface
drucken
weiterempfehlen
|
|
|
Prima! Dann hab ich es ja doch verstanden.
Mal schauen ob ich da was zu Stande bekomme
Und um das Display im 4 Bit Modus anzusprechen setze ich erst für alle Daten-Leitungen das high Nibble, danach pulse ich den enable, setze das low Nibble für jede Daten-Leitung und pulse nochmals den enable, korrekt?
|
|
nach oben |
|
|
DaMicha
Stammgast
Beiträge: 27 Ort: Rostock
|
Erstellt: 06.11.06, 09:01 Betreff: Re: LCD-Interface
drucken
weiterempfehlen
|
|
|
Moin Mish.
Zitat: mish
Und um das Display im 4 Bit Modus anzusprechen setze ich erst für alle Daten-Leitungen das high Nibble, danach pulse ich den enable, setze das low Nibble für jede Daten-Leitung und pulse nochmals den enable, korrekt? |
Ich sag mal JA ;). Aber wie schon gesagt, um sicher zu gehen und bei der Sequenz und dem Timing keinen Fehler zu machen, würde ich mich an den ASM-Code halten.
Viel Erfolg DaMicha.
|
|
nach oben |
|
|
|
powered by carookee.com - eigenes profi-forum kostenlos
Design © trevorj
|