Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Re: Suche I2C Keyboard-Lib (cc) Kategorie: I²C-Bus (von Baltus - 30.03.2011 9:15)
Als Antwort auf Suche I2C Keyboard-Lib (cc) von RalfE - 29.03.2011 21:20
Ich nutze:
C-Control Pro Mega128, CC-Pro 128 Application Board, Pro-Bot128
> Hallo zusammen,
>
> ich suche verzweifelt eine ausgereifte I2C-Keyboard-Lib für eine 4x4 Matrix-Tastatur am PFC8574 (in cc)
>
> für mein C-Control Pro 128er-Projektboard.
>
> Im Web ist nichts zu finden, ausser für die C-Control 2 (in c2). Hier habe ich allerdings erhebliche Probleme
> (C-Programmierung ist nicht meine Welt) den c2-Dialekt in den cc-Dialekt für den Pro abzuwandeln.
>
> Wer kann mich bitte mit einer funktionierenden Lib unterstützen?
>
> Meinen Dank und Grüsse
>
> Ralf

Hierbei die Code:

'----------------------------------------------------------------------------------
'----- DEMO ----- DEMO ----- DEMO ----- DEMO ----- DEMO ----- DEMO ----- DEMO -----
'----------------------------------------------------------------------------------
'Projektname:       I²C_BUS_TASTATUR_198356.cprj
'Benötigte Libs´s:  IntFunc_lib.cc
'Routinen:          I²C_BUS_TASTATUR_198356.cbas
'Autor:             UlliS
'Datum:             19.11.2007
'Funktion:          Auslesen der I²C-BUS Tastatur Best.-Nr.:198356
'Neue Funktionen:   Ausgabe auf LCD des Tasten Codes
'Notitz:
'----------------------------------------------------------------------------------

#define PCF8574_W &H4E
#define PCF8574_R &H4F

Dim Zeile1(9) As Char
Dim Zeile2(9) As Char
Dim Taste, Spalte, Zeile As Byte
Dim Ausgabe, Key(18) As Char


Sub main()

    'Init
    I2C_Init(I2C_100kHz)                    'I2C Bit Rate: 100 kHz
    LCD_start()                             'LCD Init
    I2C_KeyInt()                            'Key Init
    Ausgabe = 0x20                          'Ausgabe vorbelegen


    'Info Text
    Zeile1 = "I2C-BUS"
    LCD_Locate(1,1) : LCD_WriteText(Zeile1)
    Zeile2 = "Tastatur"
    LCD_Locate(2,1) : LCD_WriteText(Zeile2)
    AbsDelay(2500)
    LCD_ClearLCD()


    'Tastatur einlesen
    Do While (1)
        Read_I2C_Taste()
        LCD_Locate(1,1) : LCD_WriteText(Zeile1)
        Zeile2 = "Key: "
        LCD_Locate(2,1) : LCD_WriteText(Zeile2)
        LCD_Locate(2,6) : LCD_WriteChar(Ausgabe)
    End While


End Sub

'-----------------------------------------------------------------------
'                                Key Map
'-----------------------------------------------------------------------
Sub I2C_KeyInt()
    Key = "159C260D37*A48#B"
End Sub

'-----------------------------------------------------------------------
'                             Tasten lesen
'-----------------------------------------------------------------------
Sub Read_I2C_Taste()
    Spalte = 0xE0
    TastCode(Spalte)
    Spalte = 0xD0
    TastCode(Spalte)
    Spalte = 0xB0
    TastCode(Spalte)
    Spalte = 0x70
    TastCode(Spalte)
End Sub

'-----------------------------------------------------------------------
'                              Tasten Code
'-----------------------------------------------------------------------
Sub TastCode(Spalt As Byte) As Byte

    Select Case Spalte
       Case 0x70
       Zeile = 12
       Case 0xB0
       Zeile = 8
       Case 0xD0
       Zeile = 4
       Case 0xE0
       Zeile = 0
    End Case

    I2C_Start()
    I2C_Write(0x4E)      '0100 1110, Schrijfadres voor PCF8574 A3=1 A2=1 A1=1
    I2C_Write(Spalte + 0x0F)
    I2C_Start()
    I2C_Write(0x4F)      '0100 1111, leesadres voor PCF8574 A3=1 A2=1 A1=1
    Taste = I2C_Read_NACK()
    I2C_Stop()

    If (Taste=Spalte + 0x0E) Then
       Ausgabe = Key(Zeile)
    End If

    If (Taste=Spalte + 0x0D) Then
       Ausgabe = Key(Zeile+1)
    End If

    If (Taste=Spalte + 0x0B) Then
       Ausgabe = Key(Zeile+2)
    End If

    If (Taste=Spalte + 0x07) Then
       Ausgabe = Key(Zeile+3)
    End If

    Return Ausgabe

End Sub

Mit freundlichen grüss
Kees


    Antwort schreiben


Antworten: