Mtt0836 Inserito: 27 novembre 2012 Segnala Share Inserito: 27 novembre 2012 (modificato) Salve a tutti, io gioco a Soft-air tutte le domeniche, visto che a turno dobbiamo inventarci delle giocate sto provando a preparare un mil-sim(simulazione) di un'attacco terroristico con una FINTA bomba, la quale deve essere accesa e programmato il codice dalla prima squadra e successivamente trovata e disattivata tramite codice o scollegare la batteria dalla seconda squadra. io ho studiato elettronica a scuola e ci hanno insegnato molto leggermente la programmazione dei pic. Passo al dunque, vi chiedo se potete aiutarmi per cortesia a realizzare questo progetto, io ho a disposizione questi strumenti: Schede con pic http://www.futurlec....Technical.shtml oppure http://www.futurlec....ontroller.shtml entrambe le schede hanno quarzi da 10MHz Pic: 18f2550 16f84A 12f683 lcd 2x 16: http://www.futurasho...YBW&nVt=&d=8,70 4x4 keypad il resto ho già in casa resistenze condensatori transistor etcc.. per ora tramite mikrobasic ho scritto il seguente codice: program keypad_e_lcd dim kp, cnt, oldstate as byte txt as char[7] ' Keypad module connections dim keypadPort as byte at PORTC ' End Keypad module connections ' Lcd module connections dim LCD_RS as sbit at RB4_bit LCD_EN as sbit at RB5_bit LCD_D4 as sbit at RB0_bit LCD_D5 as sbit at RB1_bit LCD_D6 as sbit at RB2_bit LCD_D7 as sbit at RB3_bit LCD_RS_Direction as sbit at TRISB4_bit LCD_EN_Direction as sbit at TRISB5_bit LCD_D4_Direction as sbit at TRISB0_bit LCD_D5_Direction as sbit at TRISB1_bit LCD_D6_Direction as sbit at TRISB2_bit LCD_D7_Direction as sbit at TRISB3_bit ' End Lcd module connections main: oldstate = 0 cnt = 0 ' Reset counter Keypad_Init() ' Initialize Keypad Lcd_Init() ' Initialize LCD Lcd_Cmd(_LCD_CLEAR) ' Clear display Lcd_Cmd(_LCD_CURSOR_OFF) ' Cursor off Lcd_Out(1,1, "Padovankorps") Lcd_Out(2,1, "Soft-Air Team") delay_ms (1500) Lcd_Out(1,1, "Simbomb V2") Lcd_Out(2,1, "Made by Stord") delay_ms (1500) Lcd_Out(1, 1, "Key :") ' Write message text on LCD Lcd_Out(2, 1, "Times:") while TRUE kp = 0 ' Reset key code variable ' Wait for key to be pressed and released while ( kp = 0 ) kp = Keypad_Key_Click() ' Store key code in kp variable wend ' Prepare value for output, transform key to it"s ASCII value select case kp 'case 10: kp = 42 ' "*" ' Uncomment this block for keypad4x3 'case 11: kp = 48 ' "0" 'case 12: kp = 35 ' "#" 'default: kp += 48 case 1 kp = 49 ' 1 ' Uncomment this block for keypad4x4 case 2 kp = 50 ' 2 case 3 kp = 51 ' 3 case 4 kp = 65 ' A case 5 kp = 52 ' 4 case 6 kp = 53 ' 5 case 7 kp = 54 ' 6 case 8 kp = 66 ' B case 9 kp = 55 ' 7 case 10 kp = 56 ' 8 case 11 kp = 57 ' 9 case 12 kp = 67 ' C case 13 kp = 42 ' * case 14 kp = 48 ' 0 case 15 kp = 35 ' # case 16 kp = 68 ' D end select if (kp <> oldstate) then ' Pressed key differs from previous cnt = 1 oldstate = kp else ' Pressed key is same as previous Inc(cnt) end if Lcd_Chr(1, 10, kp) ' Print key ASCII value on LCD if (cnt = 255) then ' If counter varialble overflow cnt = 0 Lcd_Out(2, 10, " ") end if WordToStr(cnt, txt) ' Transform counter value to string Lcd_Out(2, 10, txt) ' Display counter value on LCD wend end. Il tutto usando le librerie e logica... quello che ora mi manca è settare il registro e il prescaler e creare il countdown e il controllo della chiave... Vi ringrazio per qualsiasi consiglio/critica/aiuto che mi potete dare... Modificato: 27 novembre 2012 da Mtt0836 Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora