Diskussion:AVR-Tutorial: LCD

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

Es gibt auch Hochtemperaturdisplays --217.224.73.161 12:52, 18. Mär 2007 (CET)

Noch eine Anmerkung zur Unterdrückung von führenden Nullen: Hier wird die 100er Stelle nicht ausgegeben, so sie 0 ist, dito die 10er Stelle.

Was passiert dann z. B. bei 101? M. M. n. darf die Stelle s=[n-1;1] nur unterdrückt werden, so die Stelle t=s+1 ebenfalls nicht angezeigt wurde. Man wird sich also dafür noch ein Flag aufheben müssen - oder täusche ich mich da?

lcd-routines.asm

Hallo Andreas, zwischen dem Artikel und der Datei vom Ende des Beitrags gibt es eine kleine Diskrepanz hinsichtlich der (Nicht-)Verwendung und der Pinbelegung von RW und E. Ich weiß leider grad nicht mehr, wie man eine Datei hochlädt, wahrscheinlich ist es einfach zu spät ;-) --Yahp 01:31, 1. Aug 2007 (CEST)

Bitte keinen C-Code im Assembler Tutorial

Auch wenn es sehr anständig ist, C-Funktionen zur LCD Ansteuerung zu schreiben, so sollte man doch bedenken, dass es sich hier um das Assmebler-Tutorial handelt. Hier hat C-Code nichts verloren! C-Code gehört in das gcc-Tutorium, dort ist er wesentlich besser aufgehoben.

Kommentar dazu siehe http://www.mikrocontroller.net/topic/77200#641930
Stefan 12:27, 29. Aug 2007 (CEST)

Diskussionen neuerdings im Artikel?

Hier der Plunder:

sind so ausgeführt, dass sie kein Register (ausser dem Statusregister SREG) :verändern. Die bei manchen Funktionen notwendige Argumente werden immer im :Register temp1 übergeben, wobei temp1 vom Usercode definiert werden muss.
der progger hat vergessen das Z reg in den sub's lcd_flash_string ...
zu sichern, aber danke für den Einstig
Lars
Hallo!
Danke fuer die Einstiegshife von einem Newbee. Ich haette 'ne Frage zum :"ueberarbeiteten completen code". In den Routinen lcd_data und lcd_commad in :der lcd-routines.asm gibt es eine nicht kommentierte stelle, zitat:
"
in temp3, LCD_PORT
andi temp3, 0x80
or temp1, temp3
out LCD_PORT, temp1
"
Was ist der Sinn der Sache? Will man den bit7 von LCD_PORT retten? warum nur :den, denn der bit6 gehoert auch nicht zum LCD (bzw. 2 von Bits 4-7 sind RS und :E, die anderen 2 gehoeren nicht dazu...). Oder ist etwas anderes gedacht?
Danke.

--Yahp 01:07, 7. Aug. 2008 (CEST)

Fehler (?) in lcd-routines.asm

1. Wie schon ein anderer geschrieben hat:

in temp3, LCD_PORT andi temp3, 0x80 or temp1, temp3 out LCD_PORT, temp1

(in lcd_data und lcd_command)

Was ist der Sinn davon? Müsste man nicht auch Bit 6 erhalten? Warum nicht flexibel gestalten, sodass immer die nicht-LCD Pins unverändert bleiben?


2. In lcd_init ist die Stelle, wo der Entry-mode gesetzt wird nur mit "endlich fertig" kommentiert. Sollte es statt 0b00000100 nicht 0b00000110 heißen?


3. Der Kommentar ist stellenweise auch noch von älteren Versionen. Besonders die Befehle, die ans LCD gesendet werden, sind nur als Binärzahl angegeben. Ich habe in meiner Eigenbau-Variante (kann ich bei Bedarf hochladen) die fast komplette lcd-routines.h aus dem GCC-Tutorial übernommen. Die Lösung von denen ist wirklich gut.

4. Eine Ausgaberoutine für Zahlen im packed BCD Format fehlt. Kann ich bei Bedarf hochladen, is aber nu wirklich keine Hexerei.

CGRAM-Abschnitt größtenteils Unsinn

Im Abschnitt über CGRAM wird gesagt, die Zeichen müssen spaltenweise ausgegeben werden, im CGRAM sind jeweils 5 Byte für ein Zeichen reserviert -> 5er-Schritte bei den Adressen. Das ist vollkommener Unsinn. Die Zeichen müssen zeilenweise ausgegeben werden, von jedem Byte werden nur die hinteren 5 bit genutzt. Für jedes Zeichen sind 8 Byte reserviert -> 8er-Schritte bei den Adressen. Nur so funktioniert es. Vgl. hierzu auch http://www.rentron.com/myke2.htm Den Code hier im Artikel habe ich nicht näher betrachtet, mein eigener Code, der die Zeichen zeilenweise ausgibt, funktioniert einwandfrei. Noch ein schönerer Link dazu: http://www.electronic-engineering.ch/microchip/datasheets/lcd/lcd_data_sheets.html