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.
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:
- Programador micro JDM 16F628 y 16f84
- Cerradura electrónica con LCD y teclado 3x4 usando PIC 16F628A
- Comunicación PC con PIC con MAX232
Saludos!!


No hay comentarios :
Publicar un comentario