Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A
-
Upload
angel-acaymo-m-g -
Category
Education
-
view
63.500 -
download
3
description
Transcript of Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A
1
29/03/[email protected]
ÍNDICE
Presentación – 3
Visual C++ - 6
Visual Basic – 78
Fotos – 186
Vídeos – 191
Libros – 193
Otros manuales – 195
Enlaces de interés – 197
Versión – 199
Contacto – 200
Autor - 201
29/03/2009
2
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í.
29/03/[email protected]
4
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.
29/03/[email protected]
5
DESCARGA DEL VISUAL C++
De entrada vamos a descargar el compilador (gratuito) Visual C++ Express desde la Web oficial http://www.microsoft.com/express/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.
29/03/[email protected]
7
REGISTRO DEL VISUAL C++
29/03/[email protected]
9
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.
VISUAL C++
En este manual se ha trabajado en su
momento con:
Windows XP SP3
Visual C++ 2008 Express FrameWork 3.5
SP1
29/03/[email protected]
10
29/03/[email protected]
11
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.
29/03/[email protected]
13
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.
29/03/[email protected]
14
OBJETIVO DE LA INTERFAZ
Crea un proyecto
nuevo y llámalo
PicRS232cpp como
indica en la imagen.
29/03/[email protected]
15
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.
29/03/[email protected]
17
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.
29/03/[email protected]
18
OBJETIVO DE LA INTERFAZ
PROPIEDADES
En el cuadro de propiedades de la derecha, es un breve resumen de lo que hemos hecho menos la “Propiedad” “Size”, que es 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.
29/03/[email protected]
19
Propiedad Cambia a
Text PicRS232cpp
StartPosition CenterScreen
Size 300; 300
OBJETIVO DE LA INTERFAZ
PROPIEDADES
Introduces el botón llamado
“button1” en el formulario.
Ahora toca cambiar las
propiedades que se
describe en el cuadro a
continuación para el
“button1”.
29/03/[email protected]
20
Propiedad Cambia a
Text t
(Name) Button_t
Location 109; 38
OBJETIVO DE LA INTERFAZ
PROPIEDADES
Lo mismo con el botón b.
29/03/[email protected]
21
Propiedad Cambia a
Text b
(Name) Button_b
Location 109; 67
OBJETIVO DE LA INTERFAZ
PROPIEDADES
Lo mismo con el botón a.
29/03/[email protected]
22
Propiedad Cambia a
Text a
(Name) Button_a
Location 28; 67
OBJETIVO DE LA INTERFAZ
PROPIEDADES
Lo mismo con el botón l.
(Ele minúscula).
29/03/[email protected]
23
Propiedad Cambia a
Text l
(Name) Button_l
Location 190; 67
OBJETIVO DE LA INTERFAZ
PROPIEDADES
Ahora con Button5 de la
tecla “Espacio”
cambiaremos el color del
botón y la fuente de letras
en negrita como indica en
el cuadro.
Te lo dice directamente
pero hay otra forma de
hacerlo más cómodo.
29/03/[email protected]
24
Propiedad Cambia a
BackColor 255; 128; 0
Font.Bolt True
Text Espacio
(Name) Button_Espacio
Location 190; 96
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.
29/03/[email protected]
25
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”.
29/03/[email protected]
26
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.
29/03/[email protected]
28
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.
29/03/[email protected]
30
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.
29/03/[email protected]
32
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”.
29/03/[email protected]
33
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.
29/03/[email protected]
35
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.
29/03/[email protected]
36
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
29/03/[email protected]
37
CÓDIGO ASM DEL PIC16F84A
Puedes ver el código ASM a partir de la
página 111 del manual sobre Visual C#.
29/03/[email protected]
38
CÓDIGO ASM DEL PIC16F84A
Se preguntará el motivo de poner esas letras en los botones. ¿Por qué esas letras?
El programa del microcontroladorPIC16F84A tiene 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.
29/03/[email protected]
39
TECLA MOVIMIENTO
t Adelante
b Atrás
a Izquierda
l Derecha
(Espacio) Parada
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”.
29/03/[email protected]
40
CÓDIGO ASM DEL PIC16F84A
En el Visual C++ vamos a usar los caracteres hexadecimales que muestra en el cuadro de la derecha para enviar datos al PIC16F84A.
No hace falta que mires la tabla ascii ya que precisamente vamos a usar la indicada aquí, excepto, que desees usar otros caracteres.
29/03/[email protected]
41
Hex Carácter
74 t
62 b
61 a
6C l
20 Espacio
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++.
29/03/[email protected]
43
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++.
29/03/[email protected]
44
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.
29/03/[email protected]
45
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.
29/03/[email protected]
46
PRIMER CÓDIGO C++ (OBJETIVO)
1) Introducir códigos en los botones para su
funcionamiento.
2) Depurar nuestra aplicación.
29/03/[email protected]
47
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.
29/03/[email protected]
48
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 "t".
serialPort1->Write(uno, 0, 1);
29/03/[email protected]
50
PRIMER CÓDIGO C++
“El nombre “serialPort1” no existe en el
contexto actual”
Nos faltan dos cosas para tener un buen
funcionamiento del programa.
29/03/[email protected]
52
PRIMER CÓDIGO C++
Justo debajo donde
pone:
using namespace
System::Drawing;
29/03/[email protected]
53
PRIMER CÓDIGO C++
Ahora introduces el
siguiente comando:
using namespace
System::IO::Ports;
29/03/[email protected]
54
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”.
29/03/[email protected]
55
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.
29/03/[email protected]
57
PRIMER CÓDIGO C++
El programa
RS232_11.asm que
acompaña el libro,
utiliza los datos de
comunicación es el
que muestra en la
imagen de la derecha.
29/03/[email protected]
58
Propiedades Cambiar a
BaudRate 9600
DataBits 8
Handshake None
Parity None
PortName COM1
StopBits Two
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 "t".
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.
29/03/[email protected]
59
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());
}
}
29/03/[email protected]
61
PRIMER CÓDIGO C++
Para saber el números
de líneas en el editor
de Visual C++, pulsa:
Herramientasopcion
es…
29/03/[email protected]
62
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”.
29/03/[email protected]
63
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.
29/03/[email protected]
65
PRIMER CÓDIGO C++
29/03/[email protected]
66
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.
PRIMER CÓDIGO C++
29/03/[email protected]
67
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 "b".
serialPort1->Write(uno, 0, 1);
PRIMER CÓDIGO C++
29/03/[email protected]
68
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.
PRIMER CÓDIGO C++
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 repetir los pasos.
Descargue el ejemplo “Fuente 1” para ver el resultado o mire las páginas anteriores. Ejecuta el archivo “PicRS232cpp.sln” para abrirlo junto con el Visual C++.
Fuente 1
Fuente 1
29/03/[email protected]
76
29/03/[email protected]
77
DESCARGA DEL VISUAL BASIC
De entrada vamos a descargar el compilador (gratuito) Visual Basic Express desde la Web oficial http://www.microsoft.com/express/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.
29/03/[email protected]
79
DESCARGA DEL VISUAL BASIC
29/03/[email protected]
81
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.
DESCARGA DEL VISUAL BASIC
29/03/[email protected]
82
En este manual se ha trabajado en su
momento con:
Windows XP SP3
Visual Basic 2008 Express FrameWork 3.5
SP1
29/03/[email protected]
83
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.
29/03/[email protected]
85
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.
29/03/[email protected]
86
OBJETIVO DE LA INTERFAZ
Crea un proyecto
nuevo y llámalo
PicRS232vb como
indica en la imagen.
29/03/[email protected]
87
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.
29/03/[email protected]
89
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.
29/03/[email protected]
90
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.
29/03/[email protected]
91
OBJETIVO DE LA INTERFAZ
29/03/[email protected]
92
Propiedad Cambie a
Text PicRS232vb
(Name) Form_Principal
StartPosition CenterScreen
Size 300; 300
En el cuadro de propiedades de la derecha, es un breve resumen de lo que hemos hecho menos la “Propiedad” “Size”, que es 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.
OBJETIVO DE LA INTERFAZ
29/03/[email protected]
93
Propiedad Cambie a
Text t
(Name) Button_t
Location 109; 38
Introduces el botón
llamado “button1” en el
formulario.
Ahora toca cambiar las
propiedades que se
describe en el cuadro
a continuación para el
“button1”.
OBJETIVO DE LA INTERFAZ
29/03/[email protected]
94
Propiedad Cambie a
Text b
(Name) Button_b
Location 109; 67
Lo mismo con el botón
b.
OBJETIVO DE LA INTERFAZ
29/03/[email protected]
95
Propiedad Cambie a
Text a
(Name) Button_a
Location 28; 67
Lo mismo con el botón
a.
OBJETIVO DE LA INTERFAZ
29/03/[email protected]
96
Propiedad Cambie a
Text l
(Name) Button_l
Location 190; 67
Lo mismo con el botón
l. (Ele minñuscula).
OBJETIVO DE LA INTERFAZ
29/03/[email protected]
97
Propiedad Cambie a
BackColor 255;128; 0
Font.Bolt True
Text Espacio
(Name) Button_Espacio
Location 190; 96
Ahora con Button5 de la tecla “Espacio” cambiaremos el color del botón y la fuente de letras en negrita como indica en el cuadro.
Te lo dice directamente pero hay otra forma de hacerlo más cómodo.
OBJETIVO DE LA INTERFAZ
29/03/[email protected]
98
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.
OBJETIVO DE LA INTERFAZ
29/03/[email protected]
99
También hay otro
método más cómodo
en seleccionar el
orden de tabulación.
Accede al “VerOrden
de tabulación”.
OBJETIVO DE LA INTERFAZ
29/03/[email protected]
101
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.
OBJETIVO DE LA INTERFAZ
29/03/[email protected]
103
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.
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.
29/03/[email protected]
105
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”.
29/03/[email protected]
106
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.
29/03/[email protected]
108
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.
29/03/[email protected]
109
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
29/03/[email protected]
110
CÓDIGO ASM DEL PIC16F84A
Puedes ver el código ASM a partir de la
página 111 del manual sobre Visual C#.
29/03/[email protected]
111
CÓDIGO ASM DEL PIC16F84A
Se preguntará el motivo de poner esas letras en los botones. ¿Por qué esas letras?
El programa del microcontroladorPIC16F84A tiene 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.
29/03/[email protected]
112
TECLA MOVIMIENTO
t Adelante
b Atrás
a Izquierda
l Derecha
(Espacio) Parada
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”.
29/03/[email protected]
113
CÓDIGO ASM DEL PIC16F84A
En el Visual Basic vamos a usar los caracteres hexadecimales que muestra en el cuadro de la derecha para enviar datos al PIC16F84A.
No hace falta que mires la tabla ascii ya que precisamente vamos a usar la indicada aquí, excepto, que desees usar otros caracteres.
29/03/[email protected]
114
Hex Carácter
74 t
62 b
61 a
6C l
20 Espacio
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.
29/03/[email protected]
116
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.
29/03/[email protected]
117
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.
29/03/[email protected]
118
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.
29/03/[email protected]
119
PRIMER CÓDIGO VISUAL BASIC
1) Introducir códigos en los botones para su
funcionamiento.
2) Depurar nuestra aplicación.
29/03/[email protected]
120
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.
29/03/[email protected]
121
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 "t".
SerialPort1.Write(mBuffer, 0,
mBuffer.Length)
29/03/[email protected]
123
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.
29/03/[email protected]
125
PRIMER CÓDIGO VISUAL BASIC
Pon este código arriba
del todo del
compilador:
Imports
System.IO.Ports
29/03/[email protected]
126
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”.
29/03/[email protected]
127
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.
29/03/[email protected]
129
PRIMER CÓDIGO VISUAL BASIC
El programa
RS232_11.asm que
acompaña el libro,
utiliza los datos de
comunicación es el
que muestra en la
imagen de la derecha.
29/03/[email protected]
130
Propiedades Cambiar a
BaudRate 9600
DataBits 8
Handshake None
Parity None
PortName COM1
StopBits Two
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 "t".
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.
29/03/[email protected]
131
PRIMER CÓDIGO VISUAL BASIC
Aún no hemos acabado. Introduces este código debajo del Public ClassForm_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
29/03/[email protected]
133
PRIMER CÓDIGO VISUAL BASIC
Para saber el números
de líneas en el editor
de Visual Basic, pulsa:
Herramientasopcion
es…
29/03/[email protected]
134
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”.
29/03/[email protected]
135
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.
29/03/[email protected]
137
PRIMER CÓDIGO VISUAL BASIC
29/03/[email protected]
138
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.
PRIMER CÓDIGO VISUAL BASIC
29/03/[email protected]
139
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 "b".
SerialPort1.Write(mBuffer, 0,
mBuffer.Length)
PRIMER CÓDIGO VISUAL BASIC
29/03/[email protected]
140
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.
PRIMER CÓDIGO VISUAL BASIC
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 repetir los pasos.
Descargue el ejemplo “Fuente 1” para ver el resultado o mire las páginas anteriores. Ejecuta el archivo “PicRS232vb.sln” para abrirlo junto con el Visual Basic.
Fuente 1
Fuente 1
29/03/[email protected]
143
29/03/[email protected]
144
RECIBIR MENSAJES
Objetivos:
Leer los datos del PIC16F84A
desde la interfaz del PC.
1) Arrastrar StatusStrip o barra 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.
29/03/[email protected]
146
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.
29/03/[email protected]
147
RECIBIR MENSAJES
Arrastra un TextBox al formulario.
Esté donde esté colocado el TextBoxdentro del formulario, verás que se irá colocando correctamente según cambies las propiedades del recuadro.
Fíjate en la página siguiente que vamos a cambiar otra propiedad llamada “Dock”.
Propiedad Cambiar a
ScrollsBar Vertical
Multilinea True
(Name) textBox_visualizar_
mensaje
Anchor Top, Bottom, Left,
Right
Location 0; 132
Size 287; 82
29/03/[email protected]
149
RECIBIR MENSAJES
Puedes cambiar la propiedad “Dock” a “Bottom” para pegarlo hacia abajo y las paredes.
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.
Propiedad Cambiar a
Dock Bottom
29/03/[email protected]
150
RECIBIR MENSAJES
Todo debería quedar
así siguiendo el pie de
la letra para que al
Maximizar el
formulario, el
“textBox_visualizar_m
ensaje” lo haga
correctamente.
29/03/[email protected]
151
Propiedad Cambiar a
ScrollsBar Vertical
Multilinea True
(Name) textBox_visualizar_
mensaje
Anchor Top, Bottom, Left,
Right
Location 0; 132
Size 287; 82
Dock None
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.
29/03/[email protected]
153
RECIBIR MENSAJES
Arrastra un Label en el
formulario y cambia
sus propiedades como
indica el recuadro.
29/03/[email protected]
154
Propiedad Cambiar a
Text Mensaje desde el
PIC
(Name) label_mensaje_pic
Autosize True
Location 25; 146
Size 110; 13
RECIBIR MENSAJES
Pulsa en la barra de
herramientas.
“VerOrden de
tabulación” y muestra
algo similar en l
aimagen.
29/03/[email protected]
155
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”.
29/03/[email protected]
156
RECIBIR MENSAJES
Si lo deseas, en el
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”.
29/03/[email protected]
157
Propiedad Cambiar a
ReadOnly True
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,
29/03/[email protected]
158
'Utilizaremos un string como buffer de recepcion
Dim Recibidos As String
justo debajo del
Public Class Form_Principal
RECIBIR MENSAJES
29/03/[email protected]
160
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.
RECIBIR MENSAJES
hh:mm:ss
Representa hha horas,
mm a minutos y ssa
segundos.
29/03/[email protected]
164
Vamos a poner la hora
local de nuestro
Sistema Operativo en el
“StatusStrip1”.
Arrastra el “Timer” al
formulario con lo cual,
se llama “timer1” que lo
queremos para
actualizar lo valores de
la hora.
RECIBIR MENSAJES
Vamos a añadir la hora
local de nuestro
Sistema Operativo en
el “StatusStrip1”.
Señala con el ratón el
StatusStrip1.
29/03/[email protected]
166
RECIBIR MENSAJES
Eliges “StatusLabel”
como indica la flecha
roja de más bajo.
29/03/[email protected]
167
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.
29/03/[email protected]
168
RECIBIR MENSAJES
Selecciona el componente “timer1” y cambie de propiedades como indica 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.
29/03/[email protected]
170
Propiedad Cambiar a
Enabled True
Interval 1000
RECIBIR MENSAJES
Pincha dos veces al
componente “timer1”
para que puedas
introducir el código
necesario de la hora
local de Windows.
29/03/[email protected]
171
RECIBIR MENSAJES
En su interior del código del “timer1”,
introduce:
29/03/[email protected]
173
StatusStrip1.Items(0).Text = DateTime.Now.ToLongTimeString()
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”.
29/03/[email protected]
175
RECIBIR MENSAJES
29/03/[email protected]
178
Comprueba a partir de la página siguiente el
código fuente completo.
RECIBIR MENSAJES
29/03/[email protected]
182
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”.
RECIBIR MENSAJES
DESCARGA CÓDIGO FUENTE 2
29/03/[email protected]
184
Perfectamente ya puedes probar el programa con el circuito.
Si algo falla, vuelve a empezar desde el principio o simplemente te descargas el archivo “Fuente 2”.
Este es el final de la aplicación de la interfaz aunque puedes ampliar algunos extras en páginas siguientes.
Fuente 2
Fuente 2
29/03/[email protected]
185
29/03/[email protected]
187
29/03/[email protected]
188
29/03/[email protected]
189
29/03/[email protected]
190
VÍDEOS (REQUIERE CONEXIÓN INTERNET)
PIC16F84A DB9 VC++ Y VISUAL BASICMOTOR DC CONTROLADO CON
PIC16F84A BASE RS232
Ver Vídeo 1 Ver Vídeo 2
29/03/[email protected]
192
OTROS MANUALES
DESCARGAS DE MANUALES
29/03/[email protected]
196
Puedes descargar otros
manuales relacionado
sobre temas de
microcontroladores.
Manuales.
Manuales.
Enlaces de páginas Web donde podrás encontrar más información.
29/03/[email protected]
197
ENLACES DE INTERÉS
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.
29/03/[email protected]
198
CONTACTO
Puedes publicar este tutorial o
manual en tu Web, foros, blogs,
CD, DVD o Blu-Ray para revistas
oficiales, etc, libremente.
Cualquier comentario,
sugerencia o mejoras del
manual, me lo envían por
correo electrónico al
29/03/[email protected]
200