domingo, 26 de junio de 2011

Control de salidas con teclado matricial 3x4 y PIC 16F628A

Muy buenas a todos y todas!!!

Este es parte del circuito para controlar los desvíos de mi maqueta analógica, pero sirve también como un buen ejemplo para ver como conectar un teclado a un microcontrolador 16F628A y como utilizar las salidas del puerto A, en este caso para encender un led, pero también podemos conectarle relés o cualquier accesorio que se os ocurra.

También es un buen ejemplo para ver como encender y apagar un led con un solo pulsador mediante los condicionales IF THEN y ELSE.


🛠️ Componentes necesarios
PIC16F628A-I/P
PIC16F628A-I/P PIC16F628A-I/P .
Módulo de teclado de matriz 3x4
Módulo de teclado de matriz 3x4 Módulo de teclado de matriz 3x4.
Cables Dupont hembra hembra
Cables Dupont H/H Kit de 40pin 10cm 2,54mm 1pin hembra a hembra .

Este microcontrolador 16F628A será el esclavo para mi maqueta analógica.
Este microcontrolador solo controla el teclado y las 7 salidas para activar o desactivar los desvíos.
Solo vamos a utilizar los 7 primeros dígitos del teclado, los demás los utilizare para la rotonda, la estación y el desenganchador.

Mediante Serout enviaremos los datos:


serout salida,T9600,[Buno,Bdos,Btres,Bcuatro,Bcinco,Bseis,Bsiete]

Estos datos son recibidos por el microcontrolador "Master" y para mostrar en la pantalla que desvío es el que hemos accionado.



Este es el esquema en Proteus:



Y este es el programa en PBP:


@ DEVICE PIC16F628A, WDT_OFF
@ DEVICE PIC16F628A, PWRT_ON
@ DEVICE PIC16F628A, BOD_ON
@ DEVICE PIC16F628A, PROTECT_OFF
@ DEVICE PIC16F628A, CPD_OFF
@ DEVICE PIC16F628A, MCLR_OFF
@ DEVICE PIC16F628A, INTRC_OSC_NOCLKOUT
@ DEVICE PIC16F628A, LVP_OFF

include "modedefs.bas"

CMCON=7 ' Todo digital

' Salida de datos serout
salida var portb.0

'Teclado
La var portb.1
Lb var portb.2
Lc var portb.3
Ld var porta.4
Funo var portb.5
Fdos var portb.6
Ftres var portb.7

'Salidas
Duno Var porta.0
Ddos Var porta.1
Dtres var porta.2
Dcuatro var porta.3
Dcinco var portb.4
Dseis var porta.6
Dsiete var porta.7

Trisa=000000
Porta=000000

'Bits de control

Buno var bit
Bdos var bit
Btres var bit
Bcuatro var bit
Bcinco var bit
Bseis var bit
Bsiete var bit

menu:
  pause 100
  serout salida,T9600,[Buno,Bdos,Btres,Bcuatro,Bcinco,Bseis,Bsiete]

; Etiqueta para el teclado
teclado:
  low La : high lb
  high lc : high ld
  if funo = 0 then uno
  if fdos = 0 then Dos
  if ftres = 0 then tres

  high La : low lb
  high lc : high ld

  if Funo = 0 then cuatro
  if Fdos = 0 then cinco
  if Ftres = 0 then seis


  HIGH La : HIGH Lb
  LOW Lc : HIGH Ld

  if funo = 0 then siete

pause 10
goto teclado

Uno:
  if Buno = 0 then
    high Duno
    Buno = 1
    pause 100
  else
    low dDun
    Buno = 0
    pause 100
  endif
Goto menu

Dos:
  if bdos = 0 then
    high ddos
    bdos = 1
    pause 100
  else
    low ddos
    bdos = 0
    pause 100
  endif
Goto menu

Tres:
  if Btres = 0 then
     high Dtres
     Btres = 1
     pause 100
  else
    low Dtres
    Btres = 0
    pause 100
  endif
Goto menu

cuatro:
  if Bcuatro = 0 then
    high Dcuatro
    Bcuatro = 1
    pause 100
  Else
    low Dcuatro
    Bcuatro = 0
    pause 100
  endif
Goto menu

cinco:
  if Bcinco = 0 then
    high Dcinco
    Bcinco = 1
    pause 100
  Else
    low Dcinco
    Bcinco = 0
    pause 100
  endif
Goto menu

seis:
  if Bseis = 0 then
    high Dseis
    Bseis = 1
    pause 100
  Else
    low Dseis
    Bseis = 0
    pause 100
  endif
Goto menu

siete:
  if Bsiete = 0 then
    high Dsiete
    Bsiete = 1
    pause 100
  Else
    low Dsiete
    Bsiete = 0
    pause 100
  endif
Goto menu

END


Otros enlaces sobre información o proyectos con microcontroladores PIC:


Saludos!!

No hay comentarios :