manual interfaz con vc++ y vb para puerto serie y pic16f84a
DESCRIPTION
Manual para crear una interfaz bajo lenguajes Visual C++ y Visual Basic controlando un PIC16F84A por puerto serie.TRANSCRIPT
![Page 2: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/2.jpg)
Í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
![Page 4: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/4.jpg)
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
![Page 5: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/5.jpg)
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
![Page 7: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/7.jpg)
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
![Page 9: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/9.jpg)
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.
![Page 10: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/10.jpg)
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
![Page 13: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/13.jpg)
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
![Page 14: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/14.jpg)
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
![Page 15: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/15.jpg)
OBJETIVO DE LA INTERFAZ
Crea un proyecto
nuevo y llámalo
PicRS232cpp como
indica en la imagen.
29/03/[email protected]
15
![Page 17: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/17.jpg)
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
![Page 18: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/18.jpg)
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
![Page 19: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/19.jpg)
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
![Page 20: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/20.jpg)
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
![Page 21: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/21.jpg)
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
![Page 22: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/22.jpg)
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
![Page 23: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/23.jpg)
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
![Page 24: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/24.jpg)
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
![Page 25: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/25.jpg)
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
![Page 26: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/26.jpg)
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
![Page 28: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/28.jpg)
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
![Page 30: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/30.jpg)
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
![Page 32: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/32.jpg)
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
![Page 33: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/33.jpg)
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
![Page 35: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/35.jpg)
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
![Page 36: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/36.jpg)
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
![Page 37: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/37.jpg)
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
![Page 38: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/38.jpg)
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
![Page 39: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/39.jpg)
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
![Page 40: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/40.jpg)
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
![Page 41: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/41.jpg)
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
![Page 43: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/43.jpg)
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
![Page 44: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/44.jpg)
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
![Page 45: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/45.jpg)
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
![Page 46: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/46.jpg)
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
![Page 47: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/47.jpg)
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
![Page 48: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/48.jpg)
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
![Page 50: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/50.jpg)
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
![Page 52: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/52.jpg)
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
![Page 53: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/53.jpg)
PRIMER CÓDIGO C++
Justo debajo donde
pone:
using namespace
System::Drawing;
29/03/[email protected]
53
![Page 54: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/54.jpg)
PRIMER CÓDIGO C++
Ahora introduces el
siguiente comando:
using namespace
System::IO::Ports;
29/03/[email protected]
54
![Page 55: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/55.jpg)
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
![Page 57: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/57.jpg)
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
![Page 58: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/58.jpg)
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
![Page 59: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/59.jpg)
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
![Page 61: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/61.jpg)
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
![Page 62: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/62.jpg)
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
![Page 63: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/63.jpg)
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
![Page 65: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/65.jpg)
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
![Page 66: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/66.jpg)
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.
![Page 67: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/67.jpg)
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);
![Page 68: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/68.jpg)
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.
![Page 76: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/76.jpg)
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
![Page 79: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/79.jpg)
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
![Page 81: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/81.jpg)
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.
![Page 82: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/82.jpg)
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
![Page 85: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/85.jpg)
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
![Page 86: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/86.jpg)
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
![Page 87: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/87.jpg)
OBJETIVO DE LA INTERFAZ
Crea un proyecto
nuevo y llámalo
PicRS232vb como
indica en la imagen.
29/03/[email protected]
87
![Page 89: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/89.jpg)
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
![Page 90: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/90.jpg)
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
![Page 91: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/91.jpg)
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
![Page 92: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/92.jpg)
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.
![Page 93: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/93.jpg)
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”.
![Page 94: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/94.jpg)
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.
![Page 95: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/95.jpg)
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.
![Page 96: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/96.jpg)
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).
![Page 97: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/97.jpg)
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.
![Page 98: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/98.jpg)
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.
![Page 99: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/99.jpg)
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”.
![Page 101: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/101.jpg)
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.
![Page 103: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/103.jpg)
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.
![Page 105: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/105.jpg)
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
![Page 106: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/106.jpg)
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
![Page 108: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/108.jpg)
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
![Page 109: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/109.jpg)
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
![Page 110: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/110.jpg)
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
![Page 111: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/111.jpg)
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
![Page 112: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/112.jpg)
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
![Page 113: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/113.jpg)
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
![Page 114: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/114.jpg)
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
![Page 116: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/116.jpg)
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
![Page 117: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/117.jpg)
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
![Page 118: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/118.jpg)
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
![Page 119: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/119.jpg)
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
![Page 120: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/120.jpg)
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
![Page 121: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/121.jpg)
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
![Page 123: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/123.jpg)
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
![Page 125: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/125.jpg)
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
![Page 126: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/126.jpg)
PRIMER CÓDIGO VISUAL BASIC
Pon este código arriba
del todo del
compilador:
Imports
System.IO.Ports
29/03/[email protected]
126
![Page 127: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/127.jpg)
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
![Page 129: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/129.jpg)
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
![Page 130: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/130.jpg)
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
![Page 131: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/131.jpg)
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
![Page 133: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/133.jpg)
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
![Page 134: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/134.jpg)
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
![Page 135: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/135.jpg)
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
![Page 137: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/137.jpg)
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
![Page 138: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/138.jpg)
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.
![Page 139: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/139.jpg)
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)
![Page 140: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/140.jpg)
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.
![Page 143: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/143.jpg)
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
![Page 146: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/146.jpg)
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
![Page 147: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/147.jpg)
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
![Page 149: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/149.jpg)
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
![Page 150: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/150.jpg)
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
![Page 151: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/151.jpg)
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
![Page 153: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/153.jpg)
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
![Page 154: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/154.jpg)
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
![Page 155: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/155.jpg)
RECIBIR MENSAJES
Pulsa en la barra de
herramientas.
“VerOrden de
tabulación” y muestra
algo similar en l
aimagen.
29/03/[email protected]
155
![Page 156: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/156.jpg)
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
![Page 157: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/157.jpg)
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
![Page 158: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/158.jpg)
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
![Page 160: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/160.jpg)
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.
![Page 164: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/164.jpg)
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.
![Page 166: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/166.jpg)
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
![Page 167: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/167.jpg)
RECIBIR MENSAJES
Eliges “StatusLabel”
como indica la flecha
roja de más bajo.
29/03/[email protected]
167
![Page 168: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/168.jpg)
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
![Page 170: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/170.jpg)
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
![Page 171: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/171.jpg)
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
![Page 173: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/173.jpg)
RECIBIR MENSAJES
En su interior del código del “timer1”,
introduce:
29/03/[email protected]
173
StatusStrip1.Items(0).Text = DateTime.Now.ToLongTimeString()
![Page 175: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/175.jpg)
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
![Page 178: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/178.jpg)
RECIBIR MENSAJES
29/03/[email protected]
178
Comprueba a partir de la página siguiente el
código fuente completo.
![Page 182: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/182.jpg)
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”.
![Page 184: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/184.jpg)
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
![Page 192: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/192.jpg)
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
![Page 196: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/196.jpg)
OTROS MANUALES
DESCARGAS DE MANUALES
29/03/[email protected]
196
Puedes descargar otros
manuales relacionado
sobre temas de
microcontroladores.
Manuales.
Manuales.
![Page 197: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/197.jpg)
Enlaces de páginas Web donde podrás encontrar más información.
29/03/[email protected]
197
ENLACES DE INTERÉS
![Page 198: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/198.jpg)
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
![Page 200: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A](https://reader033.vdocuments.us/reader033/viewer/2022051513/5465ce4ab4af9f5d3f8b51dc/html5/thumbnails/200.jpg)
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