Este documento presenta un manual para la comunicación serial entre Visual C++, Visual Basic y un microcontrolador PIC16F84A. Incluye instrucciones para descargar e instalar Visual C++ Express, crear un proyecto simple con cinco botones, y explica brevemente el código de comunicación serial en ensamblador para el PIC16F84A. También contiene apéndices con tablas ASCII y enlaces para descargar archivos de ejemplo.
4. metaconta@gmail.com 29/03/2009
PRESENTACIÓN
Aquí presentamos la parte principal del manual de
Visual C# adaptado al Visual C++ y Visual Basic.
Son tantas las preguntas de por qué no uno de VC++
y/o VB que haga lo mismo que al final me dio por
hacerlo.
Si eres novel se recomienda primero mirar el manual
de Visual C# que puedes descargar aquí o aquí.
Dejar claro que en el pequeño manual sólo se
utilizará la parte importante que es la comunicación
sobre el RS232 del puerto serie.
Los extras que viene en el manual de Visual C# no
se incluye aquí.
4
5. metaconta@gmail.com 29/03/2009
PRESENTACIÓN
Si no conoces el manual de Visual C# que es el tema principal,
encontrarás un resumen de su contenido aquí:
En extras.
- Acerca de…
- Enfoque del botón.
- Redimensionar formulario.
- Manual del PicRS232.
- Contraer código.
- Icono.
- Notificación del Icono.
- Enlaces Web.
- Opacidad.
- Instalador Create Install Free.
5
7. metaconta@gmail.com 29/03/2009
DESCARGA DEL VISUAL C++
De entrada vamos a
descargar el compilador
(gratuito) Visual C++ Express
desde la Web oficial
http://www.microsoft.com/exp
ress/download/
Precisamente vamos a
descargar la versión en
español y si es posible
instale los Service Pack ya
que en esa actualización se
han corregidos errores y
mejor rendimiento.
Pulsa Donwload para su
descarga.
7
9. metaconta@gmail.com 29/03/2009
REGISTRO DEL VISUAL C++
Llegarás un momento en que te dice que te
registres. Si no te registras sólo funcionará el
Visual C++ 30 días y después si quieres
usarlo siempre te pedirá la clave del registro.
Registrarse es gratuito y no tendrás que
pagar ninguna cantidad de dinero, sólo es
para que lo puedas usar siempre.
Se recomienda guardar la clave que te llega
por e-mail.
9
10. metaconta@gmail.com 29/03/2009
VISUAL C++
En este manual se ha trabajado en su
momento con:
Windows XP SP3
Visual C++ 2008 Express FrameWork 3.5
SP1
10
13. metaconta@gmail.com 29/03/2009
OBJETIVO DE LA INTERFAZ
El objetivo principal de esta aplicación es
hacer una interfaz de Visual C++ capaz de
comunicarse con un microcontrolador
PIC16F84A al igual que lo hace el
HyperTerminalde Windows o el Minicom de
Linux con su propio diseño y control.
Vamos a dar el primer paso del diseño de la
interfaz.
13
14. metaconta@gmail.com 29/03/2009
OBJETIVO DE LA INTERFAZ
1) Introducir el nombre de nuestro programa
en el formulario.
2) Centrar el formulario en el centro de la
pantalla de nuestro monitor al ejecutar
nuestra aplicación o programa.
3) Introducir 5 botones en el formulario en la
coordenada indicada.
4) Orden de tabulación de los botones.
5) Depurar nuestra aplicación.
14
15. metaconta@gmail.com 29/03/2009
OBJETIVO DE LA INTERFAZ
Crea un proyecto
nuevo y llámalo
PicRS232cpp como
indica en la imagen.
15
17. metaconta@gmail.com 29/03/2009
OBJETIVO DE LA INTERFAZ
Pincha una vez en el
centro del formulario o
donde quieras.
En “Propiedades”, pon
el valor de la
propiedad
“PicRS232cpp” (sin las
dobles comillas) ya
que es el nombre del
programa principal.
17
18. metaconta@gmail.com 29/03/2009
OBJETIVO DE LA INTERFAZ
Para centrar el
formulario, el nombre
de la propiedad,
selecciona el valor de
la propiedad
“CenterScreen”.
Al depurar el programa
siempre se visualiza el
formulario en el centro
de la pantalla o
nuestro monitor.
18
19. metaconta@gmail.com 29/03/2009
PROPIEDADES
En el cuadro de propiedades Propiedad Cambia a
de la derecha, es un breve Text PicRS232cpp
resumen de lo que hemos
hecho menos la “Propiedad” StartPosition CenterScreen
“Size”, que es el que Size 300; 300
debemos tener si no hemos
tocado nada al principio.
Ahora en adelante sabrá
interpretar este cuadro, y
podemos cambiar las
propiedades más
rápidamente de cualquier
objeto.
OBJETIVO DE LA INTERFAZ
19
20. metaconta@gmail.com 29/03/2009
PROPIEDADES
Introduces el botón llamado Propiedad Cambia a
“button1” en el formulario. Text t
(Name) Button_t
Ahora toca cambiar las
Location 109; 38
propiedades que se
describe en el cuadro a
continuación para el
“button1”.
OBJETIVO DE LA INTERFAZ
20
21. metaconta@gmail.com 29/03/2009
PROPIEDADES
Lo mismo con el botón b. Propiedad Cambia a
Text b
(Name) Button_b
Location 109; 67
OBJETIVO DE LA INTERFAZ
21
22. metaconta@gmail.com 29/03/2009
PROPIEDADES
Lo mismo con el botón a. Propiedad Cambia a
Text a
(Name) Button_a
Location 28; 67
OBJETIVO DE LA INTERFAZ
22
23. metaconta@gmail.com 29/03/2009
PROPIEDADES
Lo mismo con el botón l. Propiedad Cambia a
(Ele minúscula). Text l
(Name) Button_l
Location 190; 67
OBJETIVO DE LA INTERFAZ
23
24. metaconta@gmail.com 29/03/2009
PROPIEDADES
Ahora con Button5 de la Propiedad Cambia a
tecla “Espacio” BackColor 255; 128; 0
cambiaremos el color del Font.Bolt True
botón y la fuente de letras Text Espacio
en negrita como indica en (Name) Button_Espacio
el cuadro. Location 190; 96
Te lo dice directamente
pero hay otra forma de
hacerlo más cómodo.
OBJETIVO DE LA INTERFAZ
24
25. metaconta@gmail.com 29/03/2009
OBJETIVO DE LA INTERFAZ
Vamos a ver algunas
formas sobre orden de
tabulación de los
botones.
El “Nombre de la
propiedad” “TabIndex”
con valor “0”, significa
que es el primero en
orden de tabulación, el 1
el segundo, el 2 el
tercero así
sucesivamente.
25
26. metaconta@gmail.com 29/03/2009
OBJETIVO DE LA INTERFAZ
También hay otro
método más cómodo
en seleccionar el
orden de tabulación.
Accede al “VerOrden
de tabulación”.
26
28. metaconta@gmail.com 29/03/2009
OBJETIVO DE LA INTERFAZ
Directamente en el
formulario puedes ver
el orden que tiene la
tabulación.
Puedes cambiarla
pulsando con el ratón
el cuadrado azul con
su número
correspondiente.
28
30. metaconta@gmail.com 29/03/2009
OBJETIVO DE LA INTERFAZ
Guarde el proyecto completo y
luego pulse “F5” o la flecha verde
para iniciar la depuración.
Debemos tener algo similar como
muestra en la imagen de la
derecha.
Puedes pulsar los botones que
notarás que no hace nada ya que
no hemos programado ninguna
acción sobre ellas.
Ahora cierra el programa con la X
como cualquier otro programa.
Ya hemos cumplido el objetivo de
esta parte.
Ahora nos centramos a explicar un
poco el código del PIC16F84A y así
entender cómo recibe los datos que
Visual C++ envía por el puerto
serie.
30
32. metaconta@gmail.com 29/03/2009
CÓDIGO ASM DEL PIC16F84A
Para entender los datos que enviamos
desde el Visual C++, debemos entender el
código fuente del PIC 16F84A, en este caso
en ensamblador.
Los datos que enviamos desde el Visual C++
es en hexadecimal en lo cual conviene ver la
tabla ASCII que puedes ver en el APÉNDICE
G del libro www.pic16f84a.org.
32
33. metaconta@gmail.com 29/03/2009
CÓDIGO ASM DEL PIC16F84A
Si no tienes el libro puedes ver el código ASCII
en las páginas siguientes y el que vamos utilizar
es la tabla ASCII 1.
La tabla ASCII 2 es más extendida, aunque en
este manual no lo vamos a utilizar, es bueno
tenerlo como referencia.
ASCII, pronunciado “áski” significa del Inglés
“American Standard
CodeforInformationInterchange” o lo que es
lo mismo “Código Estadounidense Estándar
para el Intercambio de Información”.
33
35. metaconta@gmail.com 29/03/2009
CÓDIGO ASM DEL PIC16F84A
El ejemplo a utilizar es el archivo RS232_11.asm
(también vale el RS232_11b.asm).
Puedes obtenerlo desde el CD-ROM que acompaña
el libro como también puedes descargarlo en su Web
pinchando con el ratón aquí.
La clave para abrir todos los archivos de esta Web
corresponden con las iniciales del Ciclo Formativo de
Grado Superior Desarrollo de Productos
Electrónicos, uno de los estudios oficiales donde
en España se pueden estudiar los temas tratados
en esta Web:
D.P.E.
35
36. metaconta@gmail.com 29/03/2009
CÓDIGO ASM DEL PIC16F84A
El esquema eléctrico que vamos a usar es
del capítulo 20-15 del libro
www.pic16f84a.org que se muestra en la
página siguiente.
36
37. metaconta@gmail.com 29/03/2009
CÓDIGO ASM DEL PIC16F84A
Vamos a usar el código del
libro del archivo
RS232_11.asm para poder
entender lo que estamos
haciendo.
Sólo explicaré la parte
fundamental para entender
la parte de Visual C++ al
enviar los datos.
Si quieres saber la
explicación completa de
estos temas del código
ASM, está bien detallada
en el libro
www.pic16f84a.org
37
38. metaconta@gmail.com 29/03/2009
CÓDIGO ASM DEL PIC16F84A
Puedes ver el código ASM a partir de la
página 111 del manual sobre Visual C#.
38
39. metaconta@gmail.com 29/03/2009
CÓDIGO ASM DEL PIC16F84A
Se preguntará el motivo de TECLA MOVIMIENTO
poner esas letras en los
botones. ¿Por qué esas t Adelante
letras? b Atrás
El programa del a Izquierda
microcontrolador l Derecha
PIC16F84A tiene (Espacio) Parada
configuradas esas cuatro
letras que significan lo que
muestra en el cuadro de la
derecha.
Desde el código fuente se
puede modificar las letras
o números que quieras.
39
40. metaconta@gmail.com 29/03/2009
CÓDIGO ASM DEL PIC16F84A
Mirando la tabla ASCII
1 de este manual o el
APÉNDICE G del
libro, debemos tener
presente cual es cual
expresado en
hexadecimal.
Por ejemplo, la letra “t”
minúscula en
hexadecimal es el
“74”.
40
41. metaconta@gmail.com 29/03/2009
CÓDIGO ASM DEL PIC16F84A
En el Visual C++ vamos Hex Carácter
a usar los caracteres 74 t
hexadecimales que 62 b
muestra en el cuadro de 61 a
la derecha para enviar 6C l
datos al PIC16F84A. 20 Espacio
No hace falta que mires
la tabla ascii ya que
precisamente vamos a
usar la indicada aquí,
excepto, que desees
usar otros caracteres.
41
43. metaconta@gmail.com 29/03/2009
PRIMER CÓDIGO C++
Vamos a introducir los
primeros códigos C++
en los botones y hacer
funcionar a la primera
apagar y encender los
Led al mismo tiempo el
mensaje que muestra en
el LCD.
Los mensajes del LCD
más adelante lo
haremos también por la
interfaz del Visual C++.
43
44. metaconta@gmail.com 29/03/2009
PRIMER CÓDIGO C++
Se recomienda probar el montaje del circuito
si funciona bien con el HyperTerminal de
Windows bien explicado en el libro
www.pi16f84a.org.
Cuando compruebes que toda va bien el
circuito, empezamos a programar en C++.
44
45. metaconta@gmail.com 29/03/2009
PRIMER CÓDIGO C++
Pinchamos dos veces
clic en el botón en este
caso el de la letra “t”
para ir al código del
evento generado, es
decir, que al pulsar el
botón una vez, se
ejecuta una acción.
45
46. metaconta@gmail.com 29/03/2009
PRIMER CÓDIGO C++
Aquí por primera vez vamos a usar el código
en C++ creado por nosotros mismos.
En cada botón enviamos los datos para
activar los led.
Nos aseguramos que el circuito funciona
muy bien como había dicho.
46
47. metaconta@gmail.com 29/03/2009
PRIMER CÓDIGO C++ (OBJETIVO)
1) Introducir códigos en los botones para su
funcionamiento.
2) Depurar nuestra aplicación.
47
48. metaconta@gmail.com 29/03/2009
PRIMER CÓDIGO C++
Al hacer clic o pinchar dos veces el botón “t”,
se genera el código del evento de un clic
para nosotros poder poner el código
necesario en su interior, y poder enviar datos
al puerto serie RS232 al PIC16F84A.
El código generado del “button_t” es el que
se muestra en la página siguiente.
48
50. metaconta@gmail.com 29/03/2009
PRIMER CÓDIGO C++
El código que vamos a introducir para que el
PIC16F84A lea la letra “t” es este:
cli::array<unsigned char> ^uno = gcnew
cli::array<unsigned char>(1);
uno[0] = 0x74; //ASCII letra quot;tquot;.
serialPort1->Write(uno, 0, 1);
50
52. metaconta@gmail.com 29/03/2009
PRIMER CÓDIGO C++
“El nombre “serialPort1” no existe en el
contexto actual”
Nos faltan dos cosas para tener un buen
funcionamiento del programa.
52
53. metaconta@gmail.com 29/03/2009
PRIMER CÓDIGO C++
Justo debajo donde
pone:
using namespace
System::Drawing;
53
54. metaconta@gmail.com 29/03/2009
PRIMER CÓDIGO C++
Ahora introduces el
siguiente comando:
using namespace
System::IO::Ports;
54
55. metaconta@gmail.com 29/03/2009
PRIMER CÓDIGO C++
En el “Cuadro de
herramientas”,
“Componentes”, pincha o
haces dos veces clicken el
objeto SerialPort. (También
puedes arrastrarlo al
formulario).
Como verás, abajo se ha
introducido un nuevo objeto
llamado “serialPort1” y no
está dentro del formulario
porque no es un objeto
visible, sólo tiene funciones
internas.
Con él podemos configurar el
puerto serie “COM 1”.
55
57. metaconta@gmail.com 29/03/2009
PRIMER CÓDIGO C++
Aunque mediante
programación se puede
hacer lo mismo, más
cómodo, fácil y rápido es
utilizar este componente
serialPort1, al lado
cambiamos sus
propiedades.
Además, está bien salvo
en “StopBits” lo
ponemos a Two como
indica la imagen.
57
58. metaconta@gmail.com 29/03/2009
PRIMER CÓDIGO C++
Propiedades Cambiar a
El programa
BaudRate 9600
RS232_11.asm que
DataBits 8
acompaña el libro, Handshake None
utiliza los datos de Parity None
comunicación es el PortName COM1
que muestra en la StopBits Two
imagen de la derecha.
58
59. metaconta@gmail.com 29/03/2009
PRIMER CÓDIGO C++
Una vez todo hecho como indica las páginas
anteriores, el código fuente sería tan simple
como indica en la página siguiente.
Hay una parte del código que he agregado
texto:
uno[0] = 0x74; //ASCII letra quot;tquot;.
Poner las dos barras // expresan textos para
poder explicar algún comentario en el
compilador al igual que lo hacemos con ; en el
MPLAB al escribir en ensamblador.
59
61. metaconta@gmail.com 29/03/2009
PRIMER CÓDIGO C++
Aún no hemos acabado. Introduces este código debajo del
InitializeComponent();.
if(!serialPort1->IsOpen)
{
try
{
serialPort1->Open();
}
catch (Exception ^ex)
{
MessageBox::Show(ex->ToString());
}
}
61
62. metaconta@gmail.com 29/03/2009
PRIMER CÓDIGO C++
Para saber el números
de líneas en el editor
de Visual C++, pulsa:
Herramientasopcion
es…
62
63. metaconta@gmail.com 29/03/2009
PRIMER CÓDIGO C++
Fíjate en las flechas
rojas. Señala General,
y después marca la
casilla “Números de
línea”.
Al finalizar pulsa
“Aceptar”.
63
65. metaconta@gmail.com 29/03/2009
PRIMER CÓDIGO C++
Ya podemos guiarnos
mejor con los números
de línea que muestra
en el compilador.
Ahora continuamos
con el código fuente
que debería ser igual
que has hecho hasta
ahora como muestra
en las siguientes
páginas.
65
66. metaconta@gmail.com 29/03/2009
PRIMER CÓDIGO C++
Guarda todo el proyecto y compila pulsando
“F5”.
El único botón funcional es el “button_t”, que
al pulsarlo se enciende un Led y en el LCD
visualiza: Marcha ADELANTE.
Sigamos introduciendo líneas de código para
los otros botones con su letra o carácter
correspondiente.
66
67. metaconta@gmail.com 29/03/2009
PRIMER CÓDIGO C++
En el formulario, pincha dos veces click en el
botón b e introduce los códigos necesarios.
cli::array<unsigned char> ^uno = gcnew
cli::array<unsigned char>(1);
uno[0] = 0x62; //ASCII letra quot;bquot;.
serialPort1->Write(uno, 0, 1);
67
68. metaconta@gmail.com 29/03/2009
PRIMER CÓDIGO C++
Sigue así con los demás botones. El
procedimiento es el mismo que el primer
botón.
A continuación mostramos el código fuente
completo.
68
76. metaconta@gmail.com 29/03/2009
DESCARGA CÓDIGO FUENTE 1
Guarda todo el proyecto, y pulsa
“F5” para compilar el programa.
Si has seguido paso a paso esta
aplicación, debería funcionar a la
primera.
En caso contrario vuelva a Fuente 1
repetir los pasos.
Descargue el ejemplo “Fuente 1” Fuente 1
para ver el resultado o mire las
páginas anteriores. Ejecuta el
archivo “PicRS232cpp.sln” para
abrirlo junto con el Visual C++.
PRIMER CÓDIGO C++
76
79. metaconta@gmail.com 29/03/2009
DESCARGA DEL VISUAL BASIC
De entrada vamos a
descargar el compilador
(gratuito) Visual Basic
Express desde la Web oficial
http://www.microsoft.com/exp
ress/download/
Precisamente vamos a
descargar la versión en
español y si es posible
instale los Service Pack ya
que en esa actualización se
han corregidos errores y
mejor rendimiento.
Pulsa Donwload para su
descarga.
79
81. metaconta@gmail.com 29/03/2009
DESCARGA DEL VISUAL BASIC
Llegarás un momento en que te dice que te
registres. Si no te registras sólo funcionará el
Visual Basic 30 días y después si quieres
usarlo siempre te pedirá la clave del registro.
Registrarse es gratuito y no tendrás que
pagar ninguna cantidad de dinero, sólo es
para que lo puedas usar siempre.
Se recomienda guardar la clave que te llega
por e-mail.
81
82. metaconta@gmail.com 29/03/2009
DESCARGA DEL VISUAL BASIC
En este manual se ha trabajado en su
momento con:
Windows XP SP3
Visual Basic 2008 Express FrameWork 3.5
SP1
82
85. metaconta@gmail.com 29/03/2009
OBJETIVO DE LA INTERFAZ
El objetivo principal de esta aplicación es
hacer una interfaz de Visual Basic capaz de
comunicarse con un
microcontroladorPIC16F84A al igual que lo
hace el HyperTerminal de Windows o el
Minicom de Linux con su propio diseño y
control.
Vamos a dar el primer paso del diseño de la
interfaz.
85
86. metaconta@gmail.com 29/03/2009
OBJETIVO DE LA INTERFAZ
1) Introducir el nombre de nuestro programa
en el formulario.
2) Centrar el formulario en el centro de la
pantalla de nuestro monitor al ejecutar
nuestra aplicación o programa.
3) Introducir 5 botones en el formulario en la
coordenada indicada.
4) Orden de tabulación de los botones.
5) Depurar nuestra aplicación.
86
87. metaconta@gmail.com 29/03/2009
OBJETIVO DE LA INTERFAZ
Crea un proyecto
nuevo y llámalo
PicRS232vb como
indica en la imagen.
87
89. metaconta@gmail.com 29/03/2009
OBJETIVO DE LA INTERFAZ
Pincha una vez en el
centro del formulario o
donde quieras.
En “Propiedades”, pon
el valor de la
propiedad
“Form_Pincipal” (sin
las dobles comillas) ya
que es el nombre del
programa principal.
89
90. metaconta@gmail.com 29/03/2009
OBJETIVO DE LA INTERFAZ
En “Propiedades”, pon
el valor de la
propiedad
“PicRS232vb” (sin las
dobles comillas) ya
que es el nombre del
programa principal.
90
91. metaconta@gmail.com 29/03/2009
OBJETIVO DE LA INTERFAZ
Para centrar el
formulario, el nombre
de la propiedad,
selecciona el valor de
la propiedad
“CenterScreen”.
Al depurar el programa
siempre se visualiza el
formulario en el centro
de la pantalla o
nuestro monitor.
91
92. metaconta@gmail.com 29/03/2009
OBJETIVO DE LA INTERFAZ
En el cuadro de Propiedad Cambie a
propiedades de la Text PicRS232vb
derecha, es un breve
(Name) Form_Principal
resumen de lo que hemos
hecho menos la StartPosition CenterScreen
“Propiedad” “Size”, que es Size 300; 300
el que debemos tener si
no hemos tocado nada al
principio.
Ahora en adelante sabrá
interpretar este cuadro, y
podemos cambiar las
propiedades más
rápidamente de cualquier
objeto.
92
93. metaconta@gmail.com 29/03/2009
OBJETIVO DE LA INTERFAZ
Propiedad Cambie a
Introduces el botón
Text t
llamado “button1” en el
(Name) Button_t
formulario. Location 109; 38
Ahora toca cambiar las
propiedades que se
describe en el cuadro
a continuación para el
“button1”.
93
94. metaconta@gmail.com 29/03/2009
OBJETIVO DE LA INTERFAZ
Propiedad Cambie a
Lo mismo con el botón
Text b
b.
(Name) Button_b
Location 109; 67
94
95. metaconta@gmail.com 29/03/2009
OBJETIVO DE LA INTERFAZ
Propiedad Cambie a
Lo mismo con el botón
Text a
a.
(Name) Button_a
Location 28; 67
95
96. metaconta@gmail.com 29/03/2009
OBJETIVO DE LA INTERFAZ
Propiedad Cambie a
Lo mismo con el botón
Text l
l. (Ele minñuscula).
(Name) Button_l
Location 190; 67
96
97. metaconta@gmail.com 29/03/2009
OBJETIVO DE LA INTERFAZ
Ahora con Button5 de Propiedad Cambie a
la tecla “Espacio” BackColor 255;128; 0
cambiaremos el color Font.Bolt True
Text Espacio
del botón y la fuente
(Name) Button_Espacio
de letras en negrita
Location 190; 96
como indica en el
cuadro.
Te lo dice
directamente pero hay
otra forma de hacerlo
más cómodo.
97
98. metaconta@gmail.com 29/03/2009
OBJETIVO DE LA INTERFAZ
Vamos a ver algunas
formas sobre orden de
tabulación de los
botones.
El “Nombre de la
propiedad” “TabIndex”
con valor “0”, significa
que es el primero en
orden de tabulación, el 1
el segundo, el 2 el
tercero así
sucesivamente.
98
99. metaconta@gmail.com 29/03/2009
OBJETIVO DE LA INTERFAZ
También hay otro
método más cómodo
en seleccionar el
orden de tabulación.
Accede al “VerOrden
de tabulación”.
99
101. metaconta@gmail.com 29/03/2009
OBJETIVO DE LA INTERFAZ
Directamente en el
formulario puedes ver
el orden que tiene la
tabulación.
Puedes cambiarla
pulsando con el ratón
el cuadrado azul con
su número
correspondiente.
101
103. metaconta@gmail.com 29/03/2009
OBJETIVO DE LA INTERFAZ
Guarde el proyecto completo y
luego pulse “F5” o la flecha verde
para iniciar la depuración.
Debemos tener algo similar como
muestra en la imagen de la
derecha.
Puedes pulsar los botones que
notarás que no hace nada ya que
no hemos programado ninguna
acción sobre ellas.
Ahora cierra el programa con la X
como cualquier otro programa.
Ya hemos cumplido el objetivo de
esta parte.
Ahora nos centramos a explicar un
poco el código del PIC16F84A y así
entender cómo recibe los datos que
Visual Basic envía por el puerto
serie.
103
105. metaconta@gmail.com 29/03/2009
CÓDIGO ASM DEL PIC16F84A
Para entender los datos que enviamos
desde el Visual Basic, debemos entender el
código fuente del PIC 16F84A, en este caso
en ensamblador.
Los datos que enviamos desde el Visual
Basic es en hexadecimal en lo cual conviene
ver la tabla ASCII que puedes ver en el
APÉNDICE G del libro www.pic16f84a.org.
105
106. metaconta@gmail.com 29/03/2009
CÓDIGO ASM DEL PIC16F84A
Si no tienes el libro puedes ver el código ASCII
en las páginas siguientes y el que vamos utilizar
es la tabla ASCII 1.
La tabla ASCII 2 es más extendida, aunque en
este manual no lo vamos a utilizar, es bueno
tenerlo como referencia.
ASCII, pronunciado “áski” significa del Inglés
“American Standard
CodeforInformationInterchange” o lo que es
lo mismo “Código Estadounidense Estándar
para el Intercambio de Información”.
106
108. metaconta@gmail.com 29/03/2009
CÓDIGO ASM DEL PIC16F84A
El ejemplo a utilizar es el archivo RS232_11.asm
(también vale el RS232_11b.asm).
Puedes obtenerlo desde el CD-ROM que acompaña
el libro como también puedes descargarlo en su Web
pinchando con el ratón aquí.
La clave para abrir todos los archivos de esta Web
corresponden con las iniciales del Ciclo Formativo de
Grado Superior Desarrollo de Productos
Electrónicos, uno de los estudios oficiales donde
en España se pueden estudiar los temas tratados
en esta Web:
D.P.E.
108
109. metaconta@gmail.com 29/03/2009
CÓDIGO ASM DEL PIC16F84A
El esquema eléctrico que vamos a usar es
del capítulo 20-15 del libro
www.pic16f84a.org que se muestra en la
página siguiente.
109
110. metaconta@gmail.com 29/03/2009
CÓDIGO ASM DEL PIC16F84A
Vamos a usar el código del
libro del archivo
RS232_11.asm para poder
entender lo que estamos
haciendo.
Sólo explicaré la parte
fundamental para entender
la parte de Visual Basic al
enviar los datos.
Si quieres saber la
explicación completa de
estos temas del código
ASM, está bien detallada
en el libro
www.pic16f84a.org
110
111. metaconta@gmail.com 29/03/2009
CÓDIGO ASM DEL PIC16F84A
Puedes ver el código ASM a partir de la
página 111 del manual sobre Visual C#.
111
112. metaconta@gmail.com 29/03/2009
CÓDIGO ASM DEL PIC16F84A
Se preguntará el motivo de TECLA MOVIMIENTO
poner esas letras en los
botones. ¿Por qué esas t Adelante
letras? b Atrás
El programa del a Izquierda
microcontrolador l Derecha
PIC16F84A tiene (Espacio) Parada
configuradas esas cuatro
letras que significan lo que
muestra en el cuadro de la
derecha.
Desde el código fuente se
puede modificar las letras
o números que quieras.
112
113. metaconta@gmail.com 29/03/2009
CÓDIGO ASM DEL PIC16F84A
Mirando la tabla ASCII
1 de este manual o el
APÉNDICE G del
libro, debemos tener
presente cual es cual
expresado en
hexadecimal.
Por ejemplo, la letra “t”
minúscula en
hexadecimal es el
“74”.
113
114. metaconta@gmail.com 29/03/2009
CÓDIGO ASM DEL PIC16F84A
En el Visual Basic Hex Carácter
vamos a usar los 74 t
caracteres 62 b
hexadecimales que 61 a
muestra en el cuadro de
6C l
la derecha para enviar
datos al PIC16F84A. 20 Espacio
No hace falta que mires
la tabla ascii ya que
precisamente vamos a
usar la indicada aquí,
excepto, que desees
usar otros caracteres.
114
116. metaconta@gmail.com 29/03/2009
PRIMER CÓDIGO VISUAL BASIC
Vamos a introducir los
primeros códigos Visual
Basic en los botones y
hacer funcionar a la
primera apagar y
encender los Led al
mismo tiempo el
mensaje que muestra en
el LCD.
Los mensajes del LCD
más adelante lo
haremos también por la
interfaz del Visual Basic.
116
117. metaconta@gmail.com 29/03/2009
PRIMER CÓDIGO BASIC
Se recomienda probar el montaje del circuito
si funciona bien con el HyperTerminal de
Windows bien explicado en el libro
www.pi16f84a.org.
Cuando compruebes que toda va bien el
circuito, empezamos a programar en Visual
Basic.
117
118. metaconta@gmail.com 29/03/2009
PRIMER CÓDIGO VISUAL BASIC
Pinchamos dos veces
clic en el botón en este
caso el de la letra “t”
para ir al código del
evento generado, es
decir, que al pulsar el
botón una vez, se
ejecuta una acción.
118
119. metaconta@gmail.com 29/03/2009
PRIMER CÓDIGO VISUAL BASIC
Aquí por primera vez vamos a usar el código
en Visual Basic creado por nosotros mismos.
En cada botón enviamos los datos para
activar los led.
Nos aseguramos que el circuito funciona
muy bien como había dicho.
119
120. metaconta@gmail.com 29/03/2009
PRIMER CÓDIGO VISUAL BASIC
1) Introducir códigos en los botones para su
funcionamiento.
2) Depurar nuestra aplicación.
120
121. metaconta@gmail.com 29/03/2009
PRIMER CÓDIGO VISUAL BASIC
Al hacer clic o pinchar dos veces el botón “t”,
se genera el código del evento de un clic
para nosotros poder poner el código
necesario en su interior, y poder enviar datos
al puerto serie RS232 al PIC16F84A.
El código generado del “button_t” es el que
se muestra en la página siguiente.
121
123. metaconta@gmail.com 29/03/2009
PRIMER CÓDIGO VISUAL BASIC
El código que vamos a introducir para que el
PIC16F84A lea la letra “t” es este:
Dim mBuffer As Byte() = New Byte(0) {}
mBuffer(0) = &H74 'ASCII letra quot;tquot;.
SerialPort1.Write(mBuffer, 0,
mBuffer.Length)
123
125. metaconta@gmail.com 29/03/2009
PRIMER CÓDIGO VISUAL BASIC
“El nombre “serialPort1” no existe en el
contexto actual”
Nos faltan dos cosas para tener un buen
funcionamiento del programa.
125
126. metaconta@gmail.com 29/03/2009
PRIMER CÓDIGO VISUAL BASIC
Pon este código arriba
del todo del
compilador:
Imports
System.IO.Ports
126
127. metaconta@gmail.com 29/03/2009
PRIMER CÓDIGO VISUAL BASIC
En el “Cuadro de
herramientas”,
“Componentes”, pincha o
haces dos veces clic en el
objeto SerialPort. (También
puedes arrastrarlo al
formulario).
Como verás, abajo se ha
introducido un nuevo objeto
llamado “serialPort1” y no
está dentro del formulario
porque no es un objeto
visible, sólo tiene funciones
internas.
Con él podemos configurar el
puerto serie “COM 1”.
127
129. metaconta@gmail.com 29/03/2009
PRIMER CÓDIGO VISUAL BASIC
Aunque mediante
programación se puede
hacer lo mismo, más
cómodo, fácil y rápido es
utilizar este componente
serialPort1, al lado
cambiamos sus
propiedades.
Además, está bien salvo
en “StopBits” lo
ponemos a Two como
indica la imagen.
129
130. metaconta@gmail.com 29/03/2009
PRIMER CÓDIGO VISUAL BASIC
Propiedades Cambiar a
El programa
BaudRate 9600
RS232_11.asm que
DataBits 8
acompaña el libro, Handshake None
utiliza los datos de Parity None
comunicación es el PortName COM1
que muestra en la StopBits Two
imagen de la derecha.
130
131. metaconta@gmail.com 29/03/2009
PRIMER CÓDIGO VISUAL BASIC
Una vez todo hecho como indica las páginas
anteriores, el código fuente sería tan simple
como indica en la página siguiente.
Hay una parte del código que he agregado
texto:
uno[0] = 0x74; //ASCII letra quot;tquot;.
Poner las dos barras // expresan textos para
poder explicar algún comentario en el
compilador al igual que lo hacemos con ; en el
MPLAB al escribir en ensamblador.
131
133. metaconta@gmail.com 29/03/2009
PRIMER CÓDIGO VISUAL BASIC
Aún no hemos acabado. Introduces este código debajo del Public Class
Form_Principal.
Public Sub New()
InitializeComponent()
' Abrir puerto mientras se ejecute la aplicación
If Not SerialPort1.IsOpen Then
Try
SerialPort1.Open()
Catch ex As System.Exception
MessageBox.Show(ex.ToString())
End Try
End If
End Sub
133
134. metaconta@gmail.com 29/03/2009
PRIMER CÓDIGO VISUAL BASIC
Para saber el números
de líneas en el editor
de Visual Basic, pulsa:
Herramientasopcion
es…
134
135. metaconta@gmail.com 29/03/2009
PRIMER CÓDIGO VISUAL BASIC
Fíjate en las flechas
rojas. Señala General,
y después marca la
casilla “Números de
línea”.
Al finalizar pulsa
“Aceptar”.
135
137. metaconta@gmail.com 29/03/2009
PRIMER CÓDIGO VISUAL BASIC
Ya podemos guiarnos
mejor con los números
de línea que muestra
en el compilador.
Ahora continuamos
con el código fuente
que debería ser igual
que has hecho hasta
ahora como muestra
en las siguientes
páginas.
137
138. metaconta@gmail.com 29/03/2009
PRIMER CÓDIGO VISUAL BASIC
Guarda todo el proyecto y compila pulsando
“F5”.
El único botón funcional es el “button_t”, que
al pulsarlo se enciende un Ledy en el LCD
visualiza: Marcha ADELANTE.
Sigamos introduciendo líneas de código para
los otros botones con su letra o carácter
correspondiente.
138
139. metaconta@gmail.com 29/03/2009
PRIMER CÓDIGO VISUAL BASIC
En el formulario, pincha dos veces clic en el
botón b e introduce los códigos necesarios.
Dim mBuffer As Byte() = New Byte(0) {}
mBuffer(0) = &H62 'ASCII letra quot;bquot;.
SerialPort1.Write(mBuffer, 0,
mBuffer.Length)
139
140. metaconta@gmail.com 29/03/2009
PRIMER CÓDIGO VISUAL BASIC
Sigue así con los demás botones. El
procedimiento es el mismo que el primer
botón.
A continuación mostramos el código fuente
completo.
140
143. metaconta@gmail.com 29/03/2009
DESCARGA CÓDIGO FUENTE 1
Guarda todo el proyecto, y pulsa
“F5” para compilar el programa.
Si has seguido paso a paso esta
aplicación, debería funcionar a la
primera.
En caso contrario vuelva a Fuente 1
repetir los pasos.
Descargue el ejemplo “Fuente 1” Fuente 1
para ver el resultado o mire las
páginas anteriores. Ejecuta el
archivo “PicRS232vb.sln” para
abrirlo junto con el Visual Basic.
PRIMER CÓDIGO VISUAL BASIC
143
146. metaconta@gmail.com 29/03/2009
Objetivos: 1) Arrastrar StatusStrip o barra
Leer los datos del PIC16F84A
desde la interfaz del PC. de estado al formulario.
2) Un TextBox para leer los
mensajes del PIC.
3) Un Labelo etiqueta.
4) Poner el TextBox en modo
lectura.
5) Código para el TextBox.
6) Escribir código en el
StatusStrip para mostrar la
hora.
7) Depurar nuestra aplicación.
RECIBIR MENSAJES
146
147. metaconta@gmail.com 29/03/2009
RECIBIR MENSAJES
En el “Cuadro de
herramientas”, “Menús
y barra de
herramientas”, clickea
dos veces al control
StatusStrip.
Comprobarás en la
página siguiente que
se introduce a la base
del formulario.
147
149. metaconta@gmail.com 29/03/2009
RECIBIR MENSAJES
Arrastra un TextBox al Propiedad Cambiar a
formulario. ScrollsBar Vertical
Esté donde esté Multilinea True
colocado el TextBox (Name) textBox_visualizar_
dentro del formulario, mensaje
verás que se irá Anchor Top, Bottom, Left,
colocando Right
correctamente según Location 0; 132
cambies las propiedades Size 287; 82
del recuadro.
Fíjate en la página
siguiente que vamos a
cambiar otra propiedad
llamada “Dock”.
149
150. metaconta@gmail.com 29/03/2009
RECIBIR MENSAJES
Puedes cambiar la propiedad Propiedad Cambiar a
“Dock” a “Bottom” para pegarlo
hacia abajo y las paredes. Dock Bottom
También puedes hacerlo más
cómodo como se muestra en la
imagen de la página siguiente.
Si cambias “Dock” a “Bottom”,
automaticamente, “Anchor” se
vuelve a cambiar sólo a “Top, Left”.
Vuelva a cambiar “Anchor” a “Top,
Bottom, Left, Right”.
Al final “Dock” se cambia a “None”.
Si logramos esto, a la hora de
Maximizar la ventana, el
“textBox_visualizar_mensaje” se
redimensiona bien.
150
151. metaconta@gmail.com 29/03/2009
RECIBIR MENSAJES
Propiedad Cambiar a
Todo debería quedar
ScrollsBar Vertical
así siguiendo el pie de
Multilinea True
la letra para que al (Name) textBox_visualizar_
Maximizar el mensaje
formulario, el Anchor Top, Bottom, Left,
Right
“textBox_visualizar_m Location 0; 132
ensaje” lo haga Size 287; 82
correctamente. Dock None
151
152. metaconta@gmail.com 29/03/2009
RECIBIR MENSAJES
Esta es una de las
maneras de cambiar a
“Bottom”.
152
153. metaconta@gmail.com 29/03/2009
RECIBIR MENSAJES
Debe por ahora quedar
como muestra en la
imagen de la derecha.
Si toda va bien, sigue
adelante.
Si no te ha ido bien,
pulsa “Control+Z” para
retroceder hasta llegar el
punto donde cometiste
algún error y poder
corregir.
153
154. metaconta@gmail.com 29/03/2009
RECIBIR MENSAJES
Propiedad Cambiar a
Arrastra un Label en el
Text Mensaje desde el
formulario y cambia PIC
sus propiedades como (Name) label_mensaje_pic
indica el recuadro. Autosize True
Location 25; 146
Size 110; 13
154
155. metaconta@gmail.com 29/03/2009
RECIBIR MENSAJES
Pulsa en la barra de
herramientas.
“VerOrden de
tabulación” y muestra
algo similar en l
aimagen.
155
156. metaconta@gmail.com 29/03/2009
RECIBIR MENSAJES
Deja como muestra en
la imagen el orden de
tabulación.
Puedes si lo deseas
poner el orden que
prefieras.
Para quitar los
números que se ve de
la tabulación,
“VerOrden de
tabulación”.
156
157. metaconta@gmail.com 29/03/2009
RECIBIR MENSAJES
Si lo deseas, en el Propiedad Cambiar a
ReadOnly True
control ahora llamado
“textBox_visualizar_men
saje”, puedes dejarlo en
modo lectura para que
no pueda modificar su
contenido al recibir
mensajes desde el pic.
En mi caso, no activo el
modo lectura y lo dejo
en “False”.
157
158. metaconta@gmail.com 29/03/2009
RECIBIR MENSAJES
Nos toca introducir los códigos necesarios para que
el “textBox_visualizar_mensaje” pueda recibir los
mensajes de avisos desde el PIC.
Introduce este código de abajo,
'Utilizaremos un string como buffer de recepcion
Dim Recibidos As String
justo debajo del
Public Class Form_Principal
158
160. metaconta@gmail.com 29/03/2009
RECIBIR MENSAJES
Ahora toca a por el siguiente código.
Fíjate dónde está colocado en la líneas de
números del compilador.
Seguiremos así sucesivamente.
160
164. metaconta@gmail.com 29/03/2009
RECIBIR MENSAJES
hh:mm:ss Vamos a poner la hora
Representa hha horas, local de nuestro
mm a minutos y ssa Sistema Operativo en el
segundos. “StatusStrip1”.
Arrastra el “Timer” al
formulario con lo cual,
se llama “timer1” que lo
queremos para
actualizar lo valores de
la hora.
164
166. metaconta@gmail.com 29/03/2009
RECIBIR MENSAJES
Vamos a añadir la hora
local de nuestro
Sistema Operativo en
el “StatusStrip1”.
Señala con el ratón el
StatusStrip1.
166
167. metaconta@gmail.com 29/03/2009
RECIBIR MENSAJES
Eliges “StatusLabel”
como indica la flecha
roja de más bajo.
167
168. metaconta@gmail.com 29/03/2009
RECIBIR MENSAJES
Se ha creado un
“toolStripStatusLabel1”
.
En la propiedad “Text”,
sustituye el valor
“toolStripStatusLabel1”
por el valor
“hh:mm:ss”.
Como dije antes,
significa, horas,
minutos y segundos.
168
169. metaconta@gmail.com 29/03/2009
RECIBIR MENSAJES
Ahora puedes ver que
es hh:mm:ss.
169
170. metaconta@gmail.com 29/03/2009
RECIBIR MENSAJES
Selecciona el componente Propiedad Cambiar a
“timer1” y cambie de Enabled True
propiedades como indica
Interval 1000
en cuadro.
“Enabled” en “True” activa
el “timer1”.
“Interval” a “1000”, 1000
significa 1 segundo como
15000, 15 segundos.
Se expresa en
milisegundos, así, 1000
milisengundos que en
realidad es 1 segundo.
1000 miliseg. = 1 seg.
170
171. metaconta@gmail.com 29/03/2009
RECIBIR MENSAJES
Pincha dos veces al
componente “timer1”
para que puedas
introducir el código
necesario de la hora
local de Windows.
171
172. metaconta@gmail.com 29/03/2009
RECIBIR MENSAJES
Se crea unos códigos pero no tiene función.
172
173. metaconta@gmail.com 29/03/2009
RECIBIR MENSAJES
En su interior del código del “timer1”,
introduce:
StatusStrip1.Items(0).Text = DateTime.Now.ToLongTimeString()
173
175. metaconta@gmail.com 29/03/2009
RECIBIR MENSAJES
Al cerrar la aplicación
puede quedarse el PIC
activado e incluso si
quitamos el cable db9.
Vamos a tratar este
tema ya que puede ser
muy incómodo esta
situación, así que al
cerrar la aplicación se
comportará justo ante de
cerrarse como si pulsara
el botón naranja de la
aplicación, “Espacio”.
175
182. metaconta@gmail.com 29/03/2009
RECIBIR MENSAJES
Ya, en el último paso de este objetivo, guarde
todo el proyecto y pulsa “F5” para compilar o
depurar tu programa.
Recuerda que en el
“textBox_visualizar_mensaje” si has dejado el
valor True o False en “ReadOnly” (Solamente
lectura), no solo le afecta el comportamiento si
no el color, es decir, su apariencia.
En la siguiente página sabrás la diferencia y si
has activado “ReadOnly” o no a “True”.
182
184. metaconta@gmail.com 29/03/2009
DESCARGA CÓDIGO FUENTE 2
Perfectamente ya puedes
probar el programa con el
circuito.
Si algo falla, vuelve a
empezar desde el principio o
simplemente te descargas el Fuente 2
archivo “Fuente 2”.
Fuente 2
Este es el final de la
aplicación de la interfaz
aunque puedes ampliar
algunos extras en páginas
siguientes.
RECIBIR MENSAJES
184
191. metaconta@gmail.com 29/03/2009
Puedes ver algunos vídeos en youtube.com sobre este proyecto.
VÍDEOS
191
192. metaconta@gmail.com 29/03/2009
MOTOR DC CONTROLADO CON
PIC16F84A DB9 VC++ Y VISUAL BASIC
PIC16F84A BASE RS232
Ver Vídeo 1 Ver Vídeo 2
VÍDEOS (REQUIERE CONEXIÓN INTERNET)
192
196. metaconta@gmail.com 29/03/2009
DESCARGAS DE MANUALES
Puedes descargar otros
manuales relacionado
sobre temas de
microcontroladores.
Manuales.
Manuales.
OTROS MANUALES
196
197. metaconta@gmail.com 29/03/2009
Enlaces de páginas Web donde podrás encontrar más información.
ENLACES DE INTERÉS
197
198. metaconta@gmail.com 29/03/2009
ENLACES DE INTERÉS
Manual PicRS232 Visual C# Completo manual sobre Visual C# que puedes ver si no sigues la
corriente con esta ampliación sobre VC++ y VB.
www.microsoft.com/express/ Descargas de las versiones gratuitas del Visual C++ y Visual Basic
Express .net
www.todoelectronica.com/ Revista oficial de electrónica trimestral de España para cualquier
lector sea principiante, aficionado o profesional con kit de regalo para su montaje. Podrás
entregar tus propios proyectos de electrónica con o sin microcontroladores e incluso ver el de
los demás lectores explicado con todo detalle, esquemas eléctricos, esquema de los circuitos
impresos, lista de componentes, código fuente, etc. Las bases mínimas para entregar los
proyectos está detallada en la revista.
www.microchip.com (En Inglés) Web oficial sobre los PIC entre otros dispositivos de la firma
Microchip, donde podrás descargar las hojas de datos, ejemplos, compilador MPLAB y mucha
más información.
http://electronica-pic.blogspot.com/ Blog personal sobre cualquier manual relacionado con
electrónica, microcontroladores y programación.
198
199. metaconta@gmail.com 29/03/2009
Publicado por primera vez:
04/03/2009
Versión 1.03
VERSIÓN DEL MANUAL
199
200. metaconta@gmail.com 29/03/2009
Cualquier comentario,
Puedes publicar este tutorial o sugerencia o mejoras del
manual en tu Web, foros, blogs,
CD, DVD o Blu-Ray para revistas manual, me lo envían por
oficiales, etc, libremente.
correo electrónico al
metaconta@gmail.com
CONTACTO
200