Steffen44
25.08.2006, 23:15
Hallo
Ich habe das RN-Controll und das RN-KEY LCD über i2C Bus in Betrieb. Nun Feile ich an dem Programmcode der es mir zuläßt das ich die Volle Anzahl der Möglichen Zeichen auf dem Display darstellen kann sprich 4*20 Zeichen. Ich schaffe es nicht über 38 oder 40 Zeichen hinaus warum auch immer sobald ich mehr Zeichen habe zeigt das Display gar nichts mehr an :-(
Hier ist das Bascom Programm was ich habe vieleicht entdeckt jemand ja den Fehler oder kann mich darüber aufklären warum das der Zeichenanzahl immer nicht geht :
' ------------- Hier die üblichen RN-Control Anweisungen --------------
$regfile = "m32def.dat"
Dim I As Integer
Dim N As Integer
Dim Ton As Integer
$crystal = 16000000 'Quarzfrequenz
$baud = 9600
$hwstack = 32
$framesize = 32
$swstack = 32
Config Scl = Portc.0 'Ports fuer IIC-Bus
Config Sda = Portc.1
Config Adc = Single , Prescaler = Auto 'Für Tastenabfrage und Spannungsmessung
Config Pina.7 = Input 'Für Tastenabfrage
Porta.7 = 1 'Pullup Widerstand ein
Const Ref = 5 / 1023 'Für Batteriespannungsberechnung
Dim Taste As Byte
Dim Volt As Single
' ------------- Ende der üblichen RN-Control Anweisungen --------------
'Hauptprogramm LCD Ansteuern
Declare Sub Rnlcd_cursor(byval Spalte As Byte , Byval Zeile As Byte)
Declare Sub Rnlcd_clr()
Declare Sub Rnlcd(byval Text As String)
Const Rnkeylcd_slaveid_write = &H40 'I2C SlaveAdresse
Const Rnkeylcd_slaveid_read = &H41
Dim Stemp As String * 100
Wait 1 'Warte bis LCD bereit, falls gleicheitig Spannung eingeschaltet wird
I2cinit
Stemp = Chr(12) 'Löscht LCD
Rnlcd_clr
Rnlcd_cursor 4 , 1
Rnlcd "Willkommen im"
Rnlcd_cursor 4 , 2
Rnlcd "Roboternetz"
Rnlcd_cursor 4 , 3
Rnlcd "Roboternetz"
Rnlcd_cursor 4 , 4
Rnlcd "38Z"
End
'Die speziellen I2C Befehle für das Board RN.KeyLCD:
Sub Rnlcd_cursor(byval Spalte As Byte , Byval Zeile As Byte)
Local Befehle As String * 4
Befehle = Chr(27) + Chr(79) + Chr(spalte) + Chr(zeile)
I2csend Rnkeylcd_slaveid_write , Befehle , 4
End Sub
Sub Rnlcd_clr()
Local Befehle As String * 2
Befehle = Chr(12)
I2csend Rnkeylcd_slaveid_write , Befehle , 1
End Sub
Sub Rnlcd(byval Text As String) 'Eine Art Print Befehl
Local Le As Word
Le = Len(text)
I2csend Rnkeylcd_slaveid_write , Text , Le
End Sub
'LCD Testprogramm ENDE
Ich habe das RN-Controll und das RN-KEY LCD über i2C Bus in Betrieb. Nun Feile ich an dem Programmcode der es mir zuläßt das ich die Volle Anzahl der Möglichen Zeichen auf dem Display darstellen kann sprich 4*20 Zeichen. Ich schaffe es nicht über 38 oder 40 Zeichen hinaus warum auch immer sobald ich mehr Zeichen habe zeigt das Display gar nichts mehr an :-(
Hier ist das Bascom Programm was ich habe vieleicht entdeckt jemand ja den Fehler oder kann mich darüber aufklären warum das der Zeichenanzahl immer nicht geht :
' ------------- Hier die üblichen RN-Control Anweisungen --------------
$regfile = "m32def.dat"
Dim I As Integer
Dim N As Integer
Dim Ton As Integer
$crystal = 16000000 'Quarzfrequenz
$baud = 9600
$hwstack = 32
$framesize = 32
$swstack = 32
Config Scl = Portc.0 'Ports fuer IIC-Bus
Config Sda = Portc.1
Config Adc = Single , Prescaler = Auto 'Für Tastenabfrage und Spannungsmessung
Config Pina.7 = Input 'Für Tastenabfrage
Porta.7 = 1 'Pullup Widerstand ein
Const Ref = 5 / 1023 'Für Batteriespannungsberechnung
Dim Taste As Byte
Dim Volt As Single
' ------------- Ende der üblichen RN-Control Anweisungen --------------
'Hauptprogramm LCD Ansteuern
Declare Sub Rnlcd_cursor(byval Spalte As Byte , Byval Zeile As Byte)
Declare Sub Rnlcd_clr()
Declare Sub Rnlcd(byval Text As String)
Const Rnkeylcd_slaveid_write = &H40 'I2C SlaveAdresse
Const Rnkeylcd_slaveid_read = &H41
Dim Stemp As String * 100
Wait 1 'Warte bis LCD bereit, falls gleicheitig Spannung eingeschaltet wird
I2cinit
Stemp = Chr(12) 'Löscht LCD
Rnlcd_clr
Rnlcd_cursor 4 , 1
Rnlcd "Willkommen im"
Rnlcd_cursor 4 , 2
Rnlcd "Roboternetz"
Rnlcd_cursor 4 , 3
Rnlcd "Roboternetz"
Rnlcd_cursor 4 , 4
Rnlcd "38Z"
End
'Die speziellen I2C Befehle für das Board RN.KeyLCD:
Sub Rnlcd_cursor(byval Spalte As Byte , Byval Zeile As Byte)
Local Befehle As String * 4
Befehle = Chr(27) + Chr(79) + Chr(spalte) + Chr(zeile)
I2csend Rnkeylcd_slaveid_write , Befehle , 4
End Sub
Sub Rnlcd_clr()
Local Befehle As String * 2
Befehle = Chr(12)
I2csend Rnkeylcd_slaveid_write , Befehle , 1
End Sub
Sub Rnlcd(byval Text As String) 'Eine Art Print Befehl
Local Le As Word
Le = Len(text)
I2csend Rnkeylcd_slaveid_write , Text , Le
End Sub
'LCD Testprogramm ENDE