ok
hier der code:
Code:
' ------------- Hier die üblichen RN-Control Anweisungen --------------
$regfile = "m8def.dat"
$hwstack = 32
$framesize = 16
$crystal = 16000000 'Quarzfrequenz
$baud = 9600
' ------------- Ende der üblichen RN-Control Anweisungen --------------
Config Portc = &B11111111
Config Portb = &B11111111
Config Adc = Single , Prescaler = Auto , Reference = Avcc ' Adc einstellen
Config Scl = Portc.5 'Ports fuer IIC-Bus
Config Sda = Portc.4
Const Rnkeylcd_slaveid_write = &H40 'I2C SlaveAdresse
Const Rnkeylcd_slaveid_read = &H41
Dim Stemp As String * 100
Dim Taste As Word
Dim A As Word
Dim B As Word
Dim C As Word
Dim W As Long
Declare Sub Rnlcd_cursor(byval Spalte As Byte , Byval Zeile As Byte)
Declare Sub Rnlcd_clr()
Declare Sub Rnlcd(byval Text As String)
Declare Sub Rnlcd_cr()
Declare Function Rnlcd_getscan() As Word
Declare Sub Rnlcd_scanmodus(byval Ein As Byte) 'Tastenscanmodus ein und ausschalten
'Hauptprogramm
I2cinit 'Warte bis LCD bereit
Rnlcd_clr 'Scanmodus ein
Rnlcd_cursor 4 , 1
Rnlcd "Willkommen"
Rnlcd_scanmodus 1
Start Adc
Do
Rnlcd_clr
Rnlcd_cursor 1 , 1
Rnlcd "Spg1:"
W = Getadc(3)
W = 5000 * W
W = W / 10246
Rnlcd_cursor 10 , 1
Stemp = "" + Str(w)
Rnlcd Stemp
Rnlcd_cr
If W < 32 Then
Rnlcd_cursor 10 , 1
Rnlcd "zu niedrig"
End If
Waitms 60
Loop
End
'--------------------------------------------------------------
'Einige spezielle I2C.Befehle für RN-KeyLCD als Funktion definiert:
Sub Rnlcd_cursor(byval Spalte As Byte , Byval Zeile As Byte) 'Cursor setzen
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() 'LCD löschen
Local Befehle As String * 2
Befehle = Chr(12)
I2csend Rnkeylcd_slaveid_write , Befehle , 1
End Sub
Sub Rnlcd_cr() 'LCD Zeilenvorschub
Local Befehle As String * 2
Befehle = Chr(13) + Chr(10)
I2csend Rnkeylcd_slaveid_write , Befehle , 2
End Sub
Sub Rnlcd(byval Text As String) 'Eine Art Print Befehl zum Ausgeben von Text
Local Le As Word
Le = Len(text)
I2csend Rnkeylcd_slaveid_write , Text , Le
End Sub
Function Rnlcd_getscan() As Word 'Scancode als Word abfragen
Local Lscan As Byte
Local Hscan As Byte
I2cstart
I2cwbyte Rnkeylcd_slaveid_read
I2crbyte Lscan , Ack
I2crbyte Hscan , Nack
I2cstop
If Hscan.7 = 1 Then 'AScii Modus
Rnlcd_getscan = Lscan
Else
Rnlcd_getscan = Hscan * 256
Rnlcd_getscan = Rnlcd_getscan + Lscan
End If
End Function
Sub Rnlcd_scanmodus(byval Ein As Byte) 'Tastenscanmodus ein und ausschalten
Local Befehle As String * 3
Befehle = Chr(27) + Chr(119) + Chr(ein)
I2csend Rnkeylcd_slaveid_write , Befehle , 3
End Sub
erstmal so denn ich habe eigentlich drei batterie blöcke.
gruß
patrick
Lesezeichen