Conto alla rovescia con lcd e 4x4 keypad
Salve a tutti,
io gioco a Soft-air tutte le domeniche, vito 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.com/PIC18F8722_Cont ... ical.shtml
oppure
http://www.futurlec.com/PIC16F877_Controller.shtml
entrambe le schede hanno quarzi da 10MHz
PIC:
18f2550
16f84A
12f683
lcd 2x 16:
http://www.futurashop.it/allegato/1446- ... Vt=&d=8,70
4x4 keypad
il resto ho già in casa resistenze condensatori transistor etcc..
per ora tramite mikrobasic ho scritto il seguente codice:
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...
io gioco a Soft-air tutte le domeniche, vito 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.com/PIC18F8722_Cont ... ical.shtml
oppure
http://www.futurlec.com/PIC16F877_Controller.shtml
entrambe le schede hanno quarzi da 10MHz
PIC:
18f2550
16f84A
12f683
lcd 2x 16:
http://www.futurashop.it/allegato/1446- ... Vt=&d=8,70
4x4 keypad
il resto ho già in casa resistenze condensatori transistor etcc..
per ora tramite mikrobasic ho scritto il seguente codice:
- Codice: Seleziona tutto
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...