Tastatur Initialisierung Kategorie: Programmierung Basic (von Dennis - 14.07.2006 7:10) | ||
| ||
Hi @all In meinem Basic Programm ist die * Taste der Folientastatur so definiert, dass man mit ihr das LED, sowie das LCD Display Löschen kann. Bei erneutem druck auf eine andere Taste sollen die Displays nun den eingegebenen Wert wieder ausgeben, was leider nicht Funktioniert, Villeicht könnt ihr mir helfen #define MINUS &H40 #define A &H77 #define B &H7F #define C &H39 #define d &H5E #define E &H79 #define F &H71 #define G &H7D #define H &H76 #define I &H06 #define J &H0F #define L &H38 #define n &H54 #define x &H5C ' ist das kleine o #define P &H73 #define r &H50 #define S &H6D #define t &H78 #define U &H3E #define y &H6E Dim key_in As Word ' globale Variablendeklaration Dim key_ch, key_ch1 As Byte ' globale Variablendeklaration Dim Pos As Byte ' globale Variablendeklaration Dim TAUSENDER As Byte Dim HUNDERTER As Byte Dim ZEHNER As Byte Dim EINER As Byte Dim count As Integer Dim count10 As Integer Dim count100 As Integer Dim count1000 As Integer Dim zaehler As Integer Dim Milli (6) As Integer Dim Millimeter As Integer Dim Poss As Integer Dim Zeile(12) As Char '----------------------------------------------------- ' 7 SEGMENT DECODER '----------------------------------------------------- Sub DECODE (CODE As Byte) As Byte Select Case CODE Case 0 CODE=&H3F Case 1 CODE=&H06 Case 2 CODE=&H5B Case 3 CODE=&H4F Case 4 CODE=&H66 Case 5 CODE=&H6D Case 6 CODE=&H7D Case 7 CODE=&H07 Case 8 CODE=&H7F Case 9 CODE=&H6F End Case Return CODE End Sub '------------------------------------------------------ '----------------------------------------------------- '-- IIC SEND BUFFER TO SAA1064 ---- '----------------------------------------------------- Sub SENDBUF(BRIGHT As Byte,DIGIT1 As Byte,DIGIT2 As Byte,DIGIT3 As Byte,DIGIT4 As Byte) I2C_Start() ' I2C Bus starten I2C_Write (&H76) ' Adresse des Bausteins I2C_Write (0) ' Startbit I2C_Write (BRIGHT) ' Controllbit I2C_Write (DIGIT1) ' erstes LED Segment I2C_Write (DIGIT2) ' zweites LED Segment I2C_Write (DIGIT3) ' drittes LED Segment I2C_Write (DIGIT4) ' viertes LED Segment I2C_Stop() ' I2C Stoppen AbsDelay(5) End Sub '---------------------------------------------------- ' SPLIT VALUE INTO DIGITS '---------------------------------------------------- Sub SPLIT_DIGITS(VALUE As Word) TAUSENDER=VALUE/1000 HUNDERTER=(VALUE-(TAUSENDER*1000))/100 ZEHNER=(VALUE-(TAUSENDER*1000)-(HUNDERTER*100))/10 EINER=VALUE-TAUSENDER*1000-HUNDERTER*100-ZEHNER*10 End Sub '---------------------------------------------------- '--------------------------------------------------------- '------------------------------------------------------------------------------ ' Tastaturabfrage der Folientastatur mit Zeichenumwandlung ' Sub Key2Display() key_in=Key_Scan() ' Tastatureingabe wird gelesen If key_in<>0 Then ' und in die Variable key_in geschrieben key_ch=Key_TranslateKey(key_in) ' Eingabe wird in ASCII Zeichen umgewandelt If key_ch<>key_ch1 Then ' Abfrage auf neue Eingabe key_ch1=key_ch ' (Zeichenwiederholung) If Pos=16 Then ' nach dem 16. Zeichen wird das LCD_ClearLCD() ' Display gelöscht LCD_CursorOff() ' Display Cursor ausschalten Pos=0 End If If Pos<8 Then LCD_CursorPos(Pos) ' Cursorposition in der ersten Zeile Else ' Die erste Stelle der zweiten Zeile hat LCD_CursorPos(&H38+Pos) ' die Position &H40!! LCD_Pos=8 End If LCD_WriteChar(key_ch) ' Ausgabe des Wertes der Variablen ' key_ch als ChrString auf dem Display. Pos=Pos+1 ' Variablenwert um eins herhöhen End If Else key_ch1=+1 End If ' If key_ch >= 48 Then ' count = key_ch - 48 ' End If ' If key_ch = 42 Then ' count = key_ch ' End If ' If key_ch = 35 Then ' Poss = Pos * 1000 'count = (key_ch + Poss) 'count = Pos * 100 ' End If Poss=Pos 'If key_ch=35 Then 'Bestaetigen() 'End If If key_ch = 42 Then Loeschen() End If If Poss = 1 Then Milli (Poss) = (key_ch - 48) * 1000 End If If Poss = 2 Then Milli (Poss) = (key_ch - 48) * 100 End If If Poss = 3 Then Milli (Poss) = (key_ch - 48) * 10 End If If Poss = 4 Then Milli ( Poss) = (key_ch - 48) End If 'If Pos > 3 Then 'Pos = 0 'End If count = Milli (1) + Milli (2) + Milli (3) + Milli (4) I2C_Init(I2C_100kHz) ' I2C Bit Rate: 100 kHz SPLIT_DIGITS(count) SENDBUF(&H17,DECODE(EINER),DECODE(ZEHNER),DECODE(HUNDERTER), DECODE(TAUSENDER)) 'Statt Variable Bright 1 fester Wert als Hex &H17 End Sub '------------------------------------------------------------------------------ ' Tastaturverzögerung alle 10ms ' Sub INT_10ms() Dim irqcnt As Integer Key2Display() ' Funktionsaufrauf: Tastaturabfrage irqcnt=Irq_GetCount(INT_TIM2COMP) ' Interrupt Request Counter End Sub 'Sub Loesch() 'count = 48 'End Sub '------------------------------------------------------------------------------ ' Löschen über die Taste * Sub Loeschen() LCD_ClearLCD() ' Display löschen LCD_Init() ' Display initialisieren Key_Init() ' Keyboard initialisieren Pos=0 key_ch=0 key_ch1=-1 'Irq_SetVect(INT_TIM2COMP,INT_10ms) ' Funktionsaufruf: Tastaturverzögerung 'Sub SHOW_IDLE() SENDBUF(&H17,0,0,0,0) End Sub '------------------------------------------------------------------------------ 'Schriftzug Halo �ber die Taste * 'Sub Bestaetigen() 'SENDBUF(&H17,x,L,A,H) ' AbsDelay(1000) 'End Sub '------------------------------------------------------------------------------- ' Hauptprogramm ' Sub main() Dim COUNTER As Integer Dim Zeile(12) As Char LCD_Init() ' Display initialisieren ' LCD Cursor positionieren LCD_WriteText(Zeile) ' String ausgeben LCD_CursorPos(&H40) 'Zeile = "Demo" ' LCD Cursor auf 2.Zeile positionieren LCD_WriteText(Zeile) ' String ausgeben 'LCD_ClearLCD() ' Display löschen 'LCD_CursorOff() ' Display Cursur ausschalten Key_Init() ' Keyboard initialisieren Pos=0 key_ch=0 key_ch1=-1 Irq_SetVect(INT_TIM2COMP,INT_10ms) ' Funktionsaufruf: Tastaturverzögerung Do While 5 End While End Sub '------------------------------------------------------------------------------ ' Hauptprogramm ' 'Sub main2() '--------- FLASHING READY ------------------------------- 'End Sub | ||
Antwort schreiben Antworten: |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum