Hallo, ich habe an meinem 4433 ein 20x4 Zeilen LCD und momentan steuere ich das LCD mit dem Programm an, das im AVR-Tutorial beschrieben wird. Nun meine Frage: Gibt es nicht eine einfachere Möglichkeit Texte auszugeben? Die im Tutorial beschriebene Möglichkeit ist ziehmlich aufwendig, da ich immer nur ein Zeichen sende! Thx Andreas
Also immer nur ein Zeichen an das LCD zu schicken, das wird bleiben, da die meisten LCD's nur max. 8 Bit auf einmal empfangen können. Du kannst aber deinen Code vereinfachen. Falls du grundsätzlich immer eine Eingangsmaske hast oder ähnliches. Das legst du dann im Eprom ab und greifst darauf zu. Ich glaube in der Codesammlung war so ein Programm. Aber besser wäre es zu wissen ob du BASIC, C oder assembler nutzt?? Sven
http://www.mikrocontroller.net/tutorial/memory.htm (noch nicht fertig, aber das was du suchst ist drin)
Hallo, ich nutze FASTAVR, einen Basic-Compiler, da gibt es nur 3 Zeilen: 1. Display-Ports festlegen, wo Daten und Befehle 2. Startposition, Zeile, Spalte (Zeichenposition) 3. den zu schreibenden Text in echt dann so: $Lcd = PORTD.1, rs = PORTB.2, en =PORTD.0, 20,4 ' Anschlüsse des LCD zuweisen Locate 1,5 'Start Position festlegen, hier 1. Zeile, 5. Segment LCD "Hallo" ' Schreibe Hallo Fertig, und die Tools zum Grafikdisplay sind noch mehr unterstützt, eigene Fonts, Rechtecke, invertiert uvm. Ich finds echt klasse und sehr einfach... Gruss A. Arndt
Mit den entsprechenden Makros geht das in Assembler genauso einfach. ; LCD-Cursor an bestimmte Position setzen ; Beispiel: locate 1, 5 .MACRO locate ;(Zeile,Spalte) push temp1 ldi temp1, 0b10000000|(((@0)-1)<<6)|((@1)-1) rcall lcd_command pop temp1 .ENDMACRO ; String aus dem Flash-ROM auf dem LCD anzeigen ; Beispiel: print t_hallo .MACRO print ;(String-Adresse) push ZL push ZH ldi ZL, LOW(@0) ldi ZH, HIGH(@0) rcall printstring pop ZH pop ZL .ENDMACRO Man kann das Ganze auch so machen dass man direkt einen String als Argument übergibt: ; String aus dem Flash-ROM auf dem LCD anzeigen ; Beispiel: print "hallo" .MACRO print ;(String) push ZL push ZH rjmp skip text: .db @0, 0 skip: ldi ZL, LOW(text) ldi ZH, HIGH(text) rcall printstring pop ZH pop ZL .ENDMACROX Bin mir aber nicht ganz sicher ob das auch im (primitiven) Original-Assembler von Atmel funktioniert, da dieser wahrscheinlich "duplicate label" oder etwas ähnliches ausspuckt wenn man das Makro 2mal in einem Programm verwendet.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.