Vai al contenuto
PLC Forum


Timer Pic Con 2X16 Lcd E 4X4 Keypad


Mtt0836

Messaggi consigliati

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: da Mtt0836
Link al commento
Condividi su altri siti


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 account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...