Bild zeigt ein  HD44780-kompatibles 27x2 Zeichen LC-Display (dieses hat zwei separate LC-Kontroller) an C-Control I 1.1 Applicationboard
HD44780-kompatibles 27x2 Zeilen LCD (mit 2x LCD-Kontrollern)

Den momentan im LCD-Kontroller gespeicherten Text auslesen.




DEFINE b21 BYTE [21]
DEFINE B22 BYTE [22]
DEFINE B23 BYTE [23]
DEFINE B24 BYTE [24]
'---[LCD-PORTS]----------------------------------------------------
DEFINE LCD_PORT BYTEPORT[2]
DEFINE lcd_d4 PORT [9]
DEFINE lcd_d5 PORT[10]
DEFINE lcd_d6 PORT[11]
DEFINE lcd_d7 PORT[12]
DEFINE lcd_rw PORT[13]
DEFINE lcd_rs PORT[14]
DEFINE lcd_e_1 PORT[15] '1. LCD: Enable-Signal
DEFINE lcd_e_2 PORT[16] '2. LCD: Enable-Signal (oder BACKLIGHT 1.LCD)
DEFINE LCD_MAXLINE 2 'LCD z.B. 2 Zeilen
DEFINE LCD_MAXROW 27 'mit je 27 Spalten
'
'
'
'---------------[Hauptprogramm]---------------------------------------------
PRINT " LCD-Kontroller #1 auslesen (Enable-Signal an Port 15)"
PRINT
GOSUB LCD_MEMORY_DUMP
PRINT
END
'---[ HD44780 Interface / CControl<->LCD Version 1.1 ]---------------------
#LCD2_Init
' alle ports 0:
lcd_port = OFF
' 8-Bit-Modus aktivieren:
b21=&b00111000:gosub LCD_WriteCMD
' mit 8-Bit-Command in 4-Bit-Modus umschalten:
lcd_port=&B00000010
pulse lcd_e_1
' ab jetzt 4-Bit-Modus:
b21 = &b00101000:gosub LCD_WriteCMD
b21 = &b00001100:gosub LCD_WriteCMD
' Display loeschen:
#LCD_cls
b21 = &b00000010:gosub LCD_WriteCMD
b21 = &b00000001:gosub LCD_WriteCMD
RETURN
' Zeilenwechsel:
#LCD_GotoLine
if b21 = 1 then b21 = &b10000000 ' &H80
if b21 = 2 then b21 = &b11000000 ' &HC0
'goto LCD_WRITECMD
#LCD_WriteCmd
lcd_rs=OFF
GOTO TRANSFER_DATA
#LCD
lcd_rs=ON
#TRANSFER_DATA
'Hi-Nibble:
lcd_port = (lcd_port and &b10100000) or (b21 shr 4)
PULSE lcd_e_1
'Lo-Nibble:
lcd_port = (lcd_port and &b10100000) or (b21 and &b00001111)
PULSE lcd_e_1
' b21=0
RETURN
#LCD_MEMORY_DUMP 'Speicherabbild vom LCD lesen, ueber RS232 senden
'put 27:print"[0;0f"; 'linke Koordinate setzen (ANSI erforderlich)
PRINT : PUT 13 'Cursor links positioniern
b21=&he7:GOSUB LCD_WriteCMD '1. Leseadresse -1
' lcd_port=OFF 'letztes Ausgabemuster loeschen
DEACT lcd_D4 'Datenleitungen D4 bis D7 als Eingang hochohmig schalten
DEACT lcd_D5 'Die 4 Datenleitungen sind jetzt Eingaenge & liegen ueber
DEACT lcd_D6 'die Pullup-Widerstaende zunächst auf High Pegel
DEACT lcd_D7 '
lcd_e_1=ON 'LCD enable
lcd_rs =ON 'rs = Naechste Daten als ASCII-Zeichen
lcd_rw =ON 'r/w = LESEN
PULSE lcd_e_1 'Neue Datenrichtung uebernehmen
FOR b21=0 to 79
if b21=40 then print
'1. nibble lesen:
PULSE lcd_e_1
b24=&b00001111 and lcd_port
'print "r:";b24;
'2. nibble lesen:
PULSE lcd_e_1
b23=&b00001111 and lcd_port
'print ".";b23;"=";
b22=(b24*16) + b23
'print b22;" ";
PUT b22
NEXT
PRINT
lcd_rw=OFF
RETURN
END


Bild: Auslesen eines per Fernwartung zugänglichen LC-Displays...






Erste Version dieser Seite erstellt am 10 Juli 2021,  trotz eines störrischen USB-Seriell Adapters  von "das |_ Team"  (ein Hobbyprojekt, keine Einnahmenerzielungsabsicht)
1. Update am  14. September 2021 - Beispielbild zur Anwendung mit einer Telnet Session hinzugefügt