manual interfaz con vc++ y vb para puerto serie y pic16f84a

201
1 29/03/2009 [email protected]

Upload: angel-acaymo-m-g

Post on 12-Nov-2014

63.497 views

Category:

Education


3 download

DESCRIPTION

Manual para crear una interfaz bajo lenguajes Visual C++ y Visual Basic controlando un PIC16F84A por puerto serie.

TRANSCRIPT

Page 1: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

1

29/03/[email protected]

Page 2: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

Í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

[email protected]

Page 3: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

29/03/[email protected]

3

PRESENTACIÓN

Page 4: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

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

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 6: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

Introducción

29/03/[email protected]

6

VISUAL C++

Page 7: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

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 8: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

DESCARGA DEL VISUAL C++

29/03/[email protected]

8

Page 9: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

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

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 11: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

29/03/[email protected]

11

Page 12: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

29/03/[email protected]

12

OBJETIVO DE LA INTERFAZ

Page 13: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

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

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

OBJETIVO DE LA INTERFAZ

Crea un proyecto

nuevo y llámalo

PicRS232cpp como

indica en la imagen.

29/03/[email protected]

15

Page 16: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

OBJETIVO DE LA INTERFAZ

29/03/[email protected]

16

Page 17: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

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

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

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

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

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

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

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

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

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

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 27: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

OBJETIVO DE LA INTERFAZ

29/03/[email protected]

27

Page 28: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

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 29: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

OBJETIVO DE LA INTERFAZ

29/03/[email protected]

29

Page 30: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

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 31: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

29/03/[email protected]

31

CÓDIGO ASM DEL PIC16F84A

Page 32: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

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

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 34: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

CÓDIGO ASCII

29/03/[email protected]

34

Page 35: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

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

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

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

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

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

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

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 42: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

29/03/[email protected]

42

PRIMER CÓDIGO C++

Page 43: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

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

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

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

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

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

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 49: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

PRIMER CÓDIGO C++

29/03/[email protected]

49

Page 50: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

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 51: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

PRIMER CÓDIGO C++

29/03/[email protected]

51

Page 52: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

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

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

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

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 56: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

PRIMER CÓDIGO C++

29/03/[email protected]

56

Page 57: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

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

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

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 60: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

PRIMER CÓDIGO C++

29/03/[email protected]

60

Page 61: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

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

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

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 64: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

PRIMER CÓDIGO C++

29/03/[email protected]

64

Page 65: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

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

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

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

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 69: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

PRIMER CÓDIGO C++

29/03/[email protected]

69

Page 70: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

PRIMER CÓDIGO C++

29/03/[email protected]

70

Page 71: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

PRIMER CÓDIGO C++

29/03/[email protected]

71

Page 72: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

PRIMER CÓDIGO C++

29/03/[email protected]

72

Page 73: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

PRIMER CÓDIGO C++

29/03/[email protected]

73

Page 74: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

PRIMER CÓDIGO C++

29/03/[email protected]

74

Page 75: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

PRIMER CÓDIGO C++

29/03/[email protected]

75

Page 76: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

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 77: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

29/03/[email protected]

77

Page 78: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

Introducción

29/03/[email protected]

78

VISUAL BASIC

Page 79: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

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 80: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

DESCARGA DEL VISUAL BASIC

29/03/[email protected]

80

Page 81: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

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

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 83: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

29/03/[email protected]

83

Page 84: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

29/03/[email protected]

84

OBJETIVO DE LA INTERFAZ

Page 85: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

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

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

OBJETIVO DE LA INTERFAZ

Crea un proyecto

nuevo y llámalo

PicRS232vb como

indica en la imagen.

29/03/[email protected]

87

Page 88: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

OBJETIVO DE LA INTERFAZ

29/03/[email protected]

88

Page 89: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

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

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

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

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

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

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

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

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

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

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

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 100: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

OBJETIVO DE LA INTERFAZ

29/03/[email protected]

100

Page 101: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

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 102: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

OBJETIVO DE LA INTERFAZ

29/03/[email protected]

102

Page 103: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

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 104: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

29/03/[email protected]

104

CÓDIGO ASM DEL PIC16F84A

Page 105: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

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

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 107: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

CÓDIGO ASCII

29/03/[email protected]

107

Page 108: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

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

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

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

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

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

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

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 115: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

29/03/[email protected]

115

PRIMER CÓDIGO VISUAL BASIC

Page 116: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

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

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

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

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

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

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 122: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

PRIMER CÓDIGO VISUAL BASIC

29/03/[email protected]

122

Page 123: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

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 124: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

PRIMER CÓDIGO VISUAL BASIC

29/03/[email protected]

124

Page 125: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

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

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

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 128: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

PRIMER CÓDIGO VISUAL BASIC

29/03/[email protected]

128

Page 129: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

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

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

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 132: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

PRIMER CÓDIGO VISUAL BASIC

29/03/[email protected]

132

Page 133: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

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

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

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 136: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

PRIMER CÓDIGO VISUAL BASIC

29/03/[email protected]

136

Page 137: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

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

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

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

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 141: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

PRIMER CÓDIGO VISUAL BASIC

29/03/[email protected]

141

Page 142: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

PRIMER CÓDIGO VISUAL BASIC

29/03/[email protected]

142

Page 143: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

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 144: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

29/03/[email protected]

144

Page 145: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

29/03/[email protected]

145

RECIBIR MENSAJES

Page 146: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

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

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 148: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

RECIBIR MENSAJES

29/03/[email protected]

148

Page 149: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

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

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

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 152: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

RECIBIR MENSAJES

Esta es una de las

maneras de cambiar a

“Bottom”.

29/03/[email protected]

152

Page 153: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

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

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

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

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

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

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 159: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

RECIBIR MENSAJES

29/03/[email protected]

159

Page 160: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

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 161: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

RECIBIR MENSAJES

29/03/[email protected]

161

Page 162: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

RECIBIR MENSAJES

29/03/[email protected]

162

Page 163: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

RECIBIR MENSAJES

29/03/[email protected]

163

Page 164: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

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 165: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

RECIBIR MENSAJES

29/03/[email protected]

165

Page 166: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

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

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

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 169: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

RECIBIR MENSAJES

Ahora puedes ver que

es hh:mm:ss.

29/03/[email protected]

169

Page 170: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

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

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 172: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

RECIBIR MENSAJES

Se crea unos códigos pero no tiene función.

29/03/[email protected]

172

Page 173: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

RECIBIR MENSAJES

En su interior del código del “timer1”,

introduce:

29/03/[email protected]

173

StatusStrip1.Items(0).Text = DateTime.Now.ToLongTimeString()

Page 174: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

RECIBIR MENSAJES

29/03/[email protected]

174

Page 175: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

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 176: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

RECIBIR MENSAJES

29/03/[email protected]

176

Page 177: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

RECIBIR MENSAJES

29/03/[email protected]

177

Page 178: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

RECIBIR MENSAJES

29/03/[email protected]

178

Comprueba a partir de la página siguiente el

código fuente completo.

Page 179: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

RECIBIR MENSAJES

29/03/[email protected]

179

Page 180: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

RECIBIR MENSAJES

29/03/[email protected]

180

Page 181: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

RECIBIR MENSAJES

29/03/[email protected]

181

Page 182: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

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 183: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

RECIBIR MENSAJES

READONLY = FALSE READONLY = TRUE

29/03/[email protected]

183

Page 184: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

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 185: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

29/03/[email protected]

185

Page 186: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

29/03/[email protected]

186

FOTOS

Page 187: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

29/03/[email protected]

187

Page 188: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

29/03/[email protected]

188

Page 189: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

29/03/[email protected]

189

Page 190: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

29/03/[email protected]

190

Page 191: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

Puedes ver algunos vídeos en youtube.com sobre este proyecto.

29/03/[email protected]

191

VÍDEOS

Page 192: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

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 193: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

29/03/[email protected]

193

LIBROS

Page 194: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

LIBROS

WWW.PIC16F84A.ORG ELECTRÓNICA DIGITAL

29/03/[email protected]

194

Page 195: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

29/03/[email protected]

195

OTROS MANUALES

Page 196: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

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

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

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 199: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

VERSIÓN DEL MANUAL

Publicado por primera vez:

04/03/2009

Versión 1.03

29/03/[email protected]

199

Page 200: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

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

[email protected]

29/03/[email protected]

200

Page 201: Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A

29/03/[email protected]

201

AUTOR:

Ángel Acaymo M. G.