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 | ||
| ||
> 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: |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum