Der Nachfolger des WDR-Computerclub mit Wolfgang Back und Wolfgang Rudolph - ...und immer ein Bit übrigbehalten!


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 HILFE, mein LCD blinkt !! Kategorie: Programmierung Basic (von Gerhard - 3.05.2004 16:18)
Hallo,

nachdem ich mit dem I2C-Bus an Pin 9 + 10, Port C noch nicht weiterbin,
habe ich mal, um die Funktionfähigkeit meines LCD zu prüfen,
die Routinen von:

http://www.the-starbearer.de/Roboterelektronik/LCDDisplays/LCDanI2C.htm

am interen I2C-Anschluss probiert. Läuft auch,   ... nur das LCD stellt
den Text "blinkend" dar!!! Wieso das, gibt es bei der initialisierung der
LC Display's eine Möglichkeit dieses auszuschalten???
Das Display hat einen KS0066 drauf. Dieser soll zum Standard kompatibel sein.
Conrad Best.-Nr. 183512


... achso, noch eine Frage:
wie bekommt man eine einmal geladene s19-datei wieder aus der c-control heraus ?
Können s19- und obj-dateien gleichzeitig im Speicher abgelegt werden ??


Ich hänge mal den Basic-Code vom Testprogramm an.
Evtl. kann jemand eine Idee hierzu.

-------------------
'########################################################################
'#LCDanI²C_C-Control.bas                                                                                      
'#                                                                                                                          
'#Demonstriert die Verwendung eines LCD-Moduls für den I²C-Bus mit PCF8474                    
'#an der C-Control. Programm gibt Textmeldung "OK" auf dem Display aus.                      
'#Verwendet Assemblerroutinen I2C_M.OBJ                                                            
'########################################################################

Define PCFAdresse Byte[1]                  'Adressbyte für I²C-us- Routinen
Define Daten Byte[2]                       'Datenbyte für I²C-Bus- Routinen
Define Lcd_Param byte[3]                   'Datenbyte für LCD-Routinen
Define lcd_buffer byte[4]                  'zweites Byte für LCD- Routinen

#Initialisierung
 'PCFAdresse = 112                          'Adresse für PCF8574A mit A0,A1,A2 auf Masse
 PCFAdresse = 64                           'Adresse für PCF8574 mit A0,A1,A2 auf Masse
 gosub lcd_initialisieren                  'LCD initialisieren auf 4bit- Betrieb
 gosub LCD_Clear                                 'Display löschen

 LCD_param = 1                             'Parameter = 1 für nächsten Unterprogrammaufruf Zeilenwechsel
 Gosub LCD_GotoLine
 Gosub lcd_ausgabe_ok

 LCD_param = 2                             'Parameter = 2 für nächsten Unterprogrammaufruf Zeilenwechsel
 Gosub LCD_GotoLine                        'zeile 2
 Gosub lcd_ausgabe_ok                      'LCD "OK" ausgeben

Goto ende

#LCD_ausgabe_ok                            'Unterprogramm: LCD-Ausgabetext: "OK"
 LCD_param = 79: gosub lcd_writecharacter
 LCD_param = 75: gosub lcd_writecharacter
return


'***LCD_Interface
#LCD_Initialisieren
 'alle Ports 0
 Daten = 0: sys &h0101
 '8-Bit-Modus aktivieren
 lcd_Param=&h38: gosub LCD_WRITECOMMAND
 'mit 8-Bit-Modus in 4-Bit-Modus wechseln
 daten = &b00000010: sys &h0101
 daten = daten+64: sys &h0101
 daten = daten-64: sys &h0101
 'ab jetzt 4-Bit-Modus
 Lcd_Param = &H28: Gosub LCD_Writecommand
 Lcd_Param = &H0c: Gosub LCD_WriteCommand

'display löschen
#LCD_Clear
 Lcd_Param = &H02:Gosub LCD_WriteCommand
 Lcd_Param = &H01:Gosub LCD_WriteCommand
return

' Zeilenwechsel
#LCD_GotoLine
 if Lcd_Param = 1 then Lcd_Param = &H80
 if Lcd_Param = 2 then Lcd_Param = &HC0
goto LCD_WriteCommand

' LCD Kommando
#LCD_WriteCommand
 lcd_buffer = 0
goto lcd_write

' Zeichenausgabe
#LCD_WriteCharacter
 lcd_buffer = &B00100000

' Kommando oder Zeichen An LCD senden
#LCD_Write
 'Hi-Nibble
 daten = lcd_buffer or (Lcd_Param shr 4): sys &h0101
 daten = daten + 64: sys &h0101           'pulse lcd enable
 daten = daten - 64: sys &h0101
 'Low-Nibble
 daten = lcd_buffer or (Lcd_Param and &h0f):sys &h0101
 daten = daten + 64: sys &h0101           'pulse lcd enable
 daten = daten - 64: sys &h0101
return


'***I²C_Interface
'
syscode "I2C_M.obj"   'sys &h0101(W) & &h0126(R)

#ende
end

------------------------------------------------------------

Danke schon mal

Gruss, Gerhard

 Antwort schreiben

Bisherige Antworten: