UNIVERSIDAD LAICA “ELOY ALFARO”

DE MANABÍ

FACULTAD DE INGENIERIA
ESCUELA DE INGENIERIA ELECTRICA

PROGRAMACION II
MANUAL DE VISUAL BASIC

PERTENECE:
Gutierrez Lino Jose Ivan

DOCENTE:
Ing. Washintong García, Mg

III SEMESTRE
MANUAL DE
COMUNICACIÓN
USB-HID CON
PROTON Y
VISUAL BASIC

Elaborado por: José Iván Gutiérrez
Lino












Ivan
[Escriba el nombre de la compañía]
[Seleccione la fecha]
TUTOR: Ing. Xavier Garcia.Mg
EIE - ULEAM
III SEMESTRE
PROGRAMACION II

ULEAM EIE










PRESENTACION




El presente documento se incluye a un manual de
procedimientos en los diferentes procesos aplicados en estos
programas Asimismo, describe las actividades permanentes
que desarrolla cada una de las principales acciones y
aplicaciones que contienen los programas de PROTON Y
VISUAL BASIC, tomando en cuenta que se utiliza la
comunicación USB-HID para la respectiva elaboración del
proyecto que se describe a continuación.











ULEAM EIE




CONTENIDO





Introducción


Tipos de comunicación USB



Creando la plantilla en EASYHID



Programando el PIC



Proton PDS



Diseño de la interfaz en VISUAL BASIC




ULEAM EIE

INTRODUCCION

1. TIPOS DE COMUNICACIÓN USB


Hoy en día es muy difícil encontrar una computadora personal que
cuente con puerto de comunicación tipo serial (RS232) o paralelo (LPT),
por lo tanto hay que actualizar los medios de comunicación y en vista
que todas las computadoras cuentan con puertos USB 2.0, se hace una
introducción a la comunicación USB, teniendo como conocimientos
previos programación de Microcontroladores PIC (PROTON).

Hay tres maneras posibles de lograr dicho objetivo, las cuales son USB-
CDC, esta comunicación es la más sencilla pues emula un puerto serial
virtual el cual se concreta en el uso de un “driver” el cual debe ser
instalado cuando se desea realizar la comunicación, es la más lenta de
las tres maneras, el modo BULK es la manera más veloz de realizar la
comunicación de datos masivos, el cual también usa un controlador que
se instala en la computadora y finalmente la comunicación en la cual se
basa el presente manual, la comunicación USB-HID, este tipo de interfaz
inicia su comunicación de manera automática, este protocolo lo realizan
las memorias USB, los ratones y los teclados, entre otros que se instalan
sin necesidad de driver especifico, para lograr el objetivo se necesitan,
como componentes mínimos:

PIC 18F2550, 18F4550, 18F2455 o 18F4455
Puerto USB 2.0
Oscilador de 48 MHz (20 MHz en este ejemplo)
Resistencias (una de 4.7 kΩ y cuatro de 220 Ω )
4 LED


ULEAM EIE
Se necesita tener instalado de igual manera el software PROTON PDS,
EasyHID, Visual Basic y Proteus ISIS para lograr previamente la
simulación necesaria, cabe mencionar que primero se debe de instalar el
plugin de Proteus para poder simular el puerto USB, este proceso se
detallará en las siguientes páginas del manual.


2. CREANDO LA PLANTILLA EN EASYHID


Después de haber instalado el software requerido, se abre el plugin de
EasyHID que se encuentra en la siguiente dirección C:\Program
Files\ProtonIDE\Plugin\EasyHID al hacerlo se mostrará la ventana de la
siguiente figura.




ULEAM EIE
Se rellenan los datos de “Company Name” y “Product Name” con los
nombres del proyecto deseado y siguiente, la próxima ventana se deja
como esta.



Se pulsa siguiente y de igual manera no se modifican los valores
establecidos y nuevamente se pulsa siguiente


ULEAM EIE

En la siguiente ventana que se abre se elige el Microcontrolador a usar,
la ruta a guardar y el software en el que se diseñará la interfaz.



ULEAM EIE

Project Name: el Nombre del proyecto, con este nombre se reconocerá y
guardara el proyecto, en sistema (ya sea cualquiera que tenga como
referente su computador).

Location: Elijes la ruta a guardar los archivos los cuales serán dos
subcarpetas de PROTON PDS y Visual Basic.

Microcontroller: Se elige el PIC con el que se desea trabajar, si es
necesario en la aplicación se selecciona el uso de interrupciones.

Compiler: Se dezplega un menú de opciones de los software
disponibles, para esta aplicación visual BASIC.




ULEAM EIE
Al pulsar siguiente se ejecuta la generación de las plantillas y se busca la
dirección donde se guardaron las plantillas del diseño, en las cuales se
encuentran dos carpetas.


3. PROGRAMANDO EL PIC


Una vez creada la aplicación de PROTON PDS se abre y se procede a
realizar los ajustes de acuerdo a nuestras necesidades, a continuación se
detallan algunas partes del código para encender 4 LED‟s desde una
aplicación realizada en VISUAL BASIC, pero antes de ello se dará una
breve introducción sobre este software.



El PROTON PDS es un entorno de programación basado
en un BASIC estructurado orientado a entrada y salida de
señales. La utilización de sencillas instrucciones de alto
nivel, permite programar los Microcontroladores para
controlar cualquier aplicación llevada a cabo por un proceso. Las
instrucciones de PBASIC PROTON PDS permiten controlar las líneas de
(entrada /salida), realizar temporizaciones, realizar trasmisiones serie
asincrónica, utilizar el protocolo SPI, programar pantallas LCD, capturar
señales analógicas, emitir sonidos, etc. y todo ello en un sencillo entorno
de programación que facilita la creación de estructuras condicionales y
repetitivas con instrucciones como IF...THEN o FOR...NEXT y la creación
de etiquetas de referencia.



ULEAM EIE
Algunas aplicaciones de los Microcontroladores
La única limitante de los Microcontroladores es su imaginación. La
facilidad de un puerto abierto de (entrada / salida), la capacidad de
evaluación de señales para luego decidir una acción y poder controlar
dispositivos externos. Hacen que el microcontrolador sea el cerebro de
los equipos. Estos son algunos ejemplos de áreas de aplicaciones:

• Electrónica Industrial (Automatizaciones)
• Comunicaciones e interfase con otros equipos (RS-232)
• Interfase con otros Microcontroladores
• Equipos de Mediciones
• Equipos de Diagnósticos
• Equipos de Adquisición de Datos
• Robótica (Servo mecanismos)
• Proyectos musicales
• Proyectos de Física
• Proyectos donde se requiera automatizar procesos artísticos
• Programación de otros microcontroladores
• Interfase con otros dispositivos de lógica TTL:

1. Teclado
2. Pantallas LCD
3. Protocolo de comunicación: RS232, I2, SPI

ULEAM EIE
4. Sensores
5. Memorias
6. Real Time Clock (RTC)
7. A/D, D/A, Potenciómetros Digitales

E/S de los Microcontroladores
La dirección de entrada y salida de un contacto dado está enteramente
bajo el control de su programa. Cuando un contacto es declarado como
una entrada de información, tiene muy poco efecto en los circuitos
conectados con él, con menos de 1 microamperio (uA) de consumo
interno.
Hay dos propósitos para poner un pin en modo de entrada de
información: (1) leer en modo pasivo el estado (1 o 0) de un circuito
externo, o (2) para desconectar las salidas que manejan el pin. Para que
el consumo de corriente sea él más bajo posible, las entradas de
información deben siempre estar cerca de +5 voltios o cercano a la
tierra. Los pines no utilizados en sus proyectos no se deben dejar libres
en modo de entrada. Los pines no usados deben ser declarados como
salida aunque no estén conectados; esto es para evitar que las entradas
estén interpretando el ruido externo como señales lógicas.
Cuando un pin esta en modo de salida, internamente está conectado a la
tierra o +5 voltios a través de un interruptor muy eficiente del circuito
CMOS. Si se carga ligeramente (< 1mA), el voltaje de la salida estará
dentro de algunos mili voltios cercanos de la fuente de alimentación
(tierra para 0; +5V para 1). Cada pin puede manejar unos 25 mA. Pero
Cada puerto de 8 pines no debe exceder de los 50 mA con el regulador
externo; los pines de RB0 al RB7 conforman un Puerto B de 8 BITS del
PIC 16f877A como ejemplo.

ULEAM EIE
Una vez seleccionado el pic con el que se va a trabajar aparecerá en la
sección de Code Explorer la carpeta con sus características de operación
obteniendo información cuando se abre la carpeta del pic seleccionado
esto es aplicable para todos.
Device 16F877A
Device 16F84A
Device 18F2550
Configuración del oscilador: Para operar con un oscilador externo se
utiliza el comando XTAL=x, siendo x el rango de trabajo del oscilador
por ejemplo:

XTAL=4 ; Oscilador de 4 MHZ
XTAL=8 ; Oscilador de 8 MHZ


Definición de salidas: Se utiliza el comando Symbol precedido del alias y
del pin del pic a utilizar por ejemplo:

Symbol LED=PORTD.0
Symbol SW1 = PORTB.4

Retardos: Esta función realiza retardos según el número de ciclos de
instrucción especificado en los valores posibles van desde 1 a 255. Un
ciclo de instrucción es igual a cuatro periodos de reloj.

ULEAM EIE

DelayMS time

Esta función realiza retardos del valor especificado en time. Dicho valor
de tiempo es en milisegundos y el rango es 0-65535 sirve para obtener
retardos más largos así como retardos „variables‟.

Ejemplos:

DelayMS 500 ' Esperar 500ms
DelayMS 1000 ' Esperar 1segundo

DelayUS time

Esta función realiza retardos del valor especificado en time. Dicho valor
es en microsegundos y el rango va desde 0 a 65535.

Ejemplos:

DelayUS 500 ' Esperar 500Us
DelayUS 1000 ' Esperar 1ms

High: Sirve para colocar el pin a uno lógico es decir en ON, ejemplo:

ULEAM EIE

High LED
High PORTD.0

LOW: Sirve para colocar el pin a uno cero lógicos es decir en OFF,
Ejemplo:

Low LED
Low PORTD.0

GoTo: comando para crear un bucle cerrado y continuación del
programa

Nuestro primer programa quedaría así:

Titilar un led por el puerto D del pic 16f877A cada 500 msg

Device 16F877A
XTAL=4 ; Oscilador de 4 MHZ
Symbol LED=PORTD.0
INICIO:
High LED

ULEAM EIE
DelayMS 500
Low LED
DelayMS 500
GoTo INICIO

Bien vamos con el segundo proyecto en proton con el comando:

ALL_DIGITAL = True ' Coloca todo los pines como digitales

También de utilizan los condicionales de pbp IF , THEN , ELSE , ENDIF

IF ...THEN
IF Comp { AND/OR Comp ... } THEN Label
IF Comp { AND/OR Comp ... } THEN
Declaración
ELSE
Declaración
ENDIF

Efectúa una ó más comparaciones .Cada término Comp puede relacionar
una variable con una constante ú otra variable e incluye uno de los
operadores listados anteriormente.

ULEAM EIE

IF ... THEN evalúa la comparación en términos de CIERTO o FALSO .Si lo
considera cierto , se ejecuta la operación posterior al THEN . Si lo
considera falso , no se ejecuta la operación posterior al THEN .Las
comparaciones que dan 0 se consideran falso .Cualquier otro valor es
cierto .Asegurese de usar paréntesis para especificar el orden en que se
deben realizar las operaciones .De otra manera , la prioridad de los
operadores lo determina y el resultado puede no ser el esperado .

IF..THEN puede operar de dos maneras. De una forma, el THEN en un
IF..THEN es esencialmente un
GOTO. Si la condición es cierta, el programa irá hacia la etiqueta que
sigue al THEN. Si la condición es falsa, el programa va a continuar hacia
la próxima línea después del IF..THEN. Otra declaración no puede ser
puesta después del THEN; sino que debe ser una etiqueta.

If LED = 1 Then alarma

„ si el LED esta a uno logico(1), salta a la etiqueta alarma

En la segunda forma, IF..THEN puede ejecutar condicionalmente un
grupo de declaraciones que sigan al THEN. Las declaraciones deben
estar seguidas por un ELSE o un ENDIF para completar la estructura.

If LED_1 = 0 Then ' Chequea estado del Led
LED_1 = 1 'Invierte estado del Led

ULEAM EIE
Else
LED_1 = 0
EndIf

si el valor de LED no es cero logico entonces establecer y terminar el
concicional .

Operaciones lógicas básicas

Existen 3 operaciones lógicas llamadas: AND, OR y NOT.

1. AND esta función es verdadera cuando todas sus entradas son
verdaderas. Y es falso cuando cualquiera de sus entradas son falsas. Se
interpreta como la multiplicación binaria.
2. OR esta función es falsa cuando todas sus entradas son falsas. Y es
verdadera cuando cualquiera de sus entradas sea verdadera. Se
interpreta como la suma binaria.
3. NOT es la negación del resultado si es verdadero lo convierte en falso.
Si es falso lo convierte en verdadero.

Estas son las 3 operaciones fundamentales en la lógica binaria, a partir
de estas funciones se derivan otras más que son las combinaciones de
las 3 funciones básicas.


ULEAM EIE
Formato de conversión numérica del PROTON PLUS DNS

El editor PROTON PLUS DNS utiliza símbolos para identificar los
distintos sistemas numéricos. Los números hexadecimales se
representan con el signo de moneda ($), los números binarios con el
símbolo de porcentaje (%), los caracteres ASCII encerrados entre
comillas (") y los números decimales de forma directa. Vea el siguiente
ejemplo:

75 „Decimal
%01001 „Binario
$65 „Hexadecimal
"A” „ASCII "

Las 3 instrucciones siguientes contienen el mismo significado:

PORTB = 14
PORTB = $E
PORTB = %1110

Manejo de lcd con proton plus ide

Device = 16F877

ULEAM EIE
XTAL = 4
LCD_DTPIN = PORTD.4
LCD_RSPIN = PORTD.2
LCD_ENPIN = PORTD.3
LCD_INTERFACE = 4
LCD_LINES = 2
LCD_TYPE = 0
ALL_DIGITAL = True

DelayMS 150
Cls

Main:

Print At 1,1, "TUTO PROTON PLUS"

While 1=1
Wend





ULEAM EIE
CONFIGURACION OSCILADOR EXTERNO EN PIC BASIC DEL PIC 16F88

El primer paso es elegir en PIC SIMULATOR IDE, desde el menú
"Opciones" -> "Select Microcontroller", el microcontrolador PIC16F88.
Luego, debemos configurar los bits correspondientes. Lo destacable por
ahora de esta configuración es que estamos dejando la memoria (FLASH
y EEPROM) sin protección, que el pin RESET se va a comportar como I/O
y que usaremos como oscilador el oscilador interno INTRC. En el caso
que nos atañe utilizaremos el oscilador interno de este PIC ya que es
muy completo y estable. Cuando digo completo es porque nos permite
trabajar a varias frecuencias distintas entre ellas a 4Mhz y 8Mhz. Y lo
mismo que para el WDT, hay que terminar de configurarlo desde
nuestro código fuente.

REGISTRO PARA CONFIGURAR OSCILADOR INTERNO DEL PIC 16f88

Para configurar la frecuencia de trabajo del Oscilador Interno del PIC
16f88 solo hay que cambiar los bits 4, 5 y 6 del registro OSCCON. Se
deben cambiar los bits que corresponden por el valor al que se quiera
hacer trabajar al oscilador interno, por cierto se pueden poner en hex. O
en binario (%01000110). Además se tienen que configurar los bits en
Options- Configure Bits del PIC simulador ide., y poner que se va a
trabajar con el oscilador interno: OSCILLATOR SELECTION: INTOSC. En
documento anexo PDF esta la explicación de los Bits del registro
OSCCON.

Un ejemplo de un programa de parpadeo de un led, configurando el
oscilador interno.

ULEAM EIE

AllDigital
OSCCON = %%01100110 'Se configura reloj interno a 4Mhz
TRISB = 0

inicio:

PORTB.0 = 1
WaitMs 500
PORTB.0 = 0
WaitMs 500

Goto inicio










ULEAM EIE
PROGRAMACION DEL PIC 18F2550 PARA SU RESPECTIVO
FUNCIONAMIENTO EN VISUAL BASIC



En los comentarios se logra apreciar detalladamente que hace cada línea
del código para el microcontrolador.




ULEAM EIE





Este es el lazo principal que realiza el programa, como ven es bastante
sencillo usando solo condiciones para cada caso de recepción de datos.


ULEAM EIE


Finalmente las sentencias que genera EasyHID para el manejo de los
puertos, no modifique nada, se compila el archivo y se genera
automáticamente las extensiones necesarias para el correcto
funcionamiento del dispositivo.


ULEAM EIE


Después de compilar genera los archivos que se usarán, el .HEX y el .Bas
para realizar modificaciones futuras.








ULEAM EIE



4. DISEÑO DE LA INTERFAZ EN VISUAL BASIC


El EasyHID genera automáticamente varias extensiones, entre ellas la
DLL necesaria para poder comunicar el PIC que cabe recordar que
cuando se genera el código pide los datos, los cuales son únicos (en este
caso se utiliza el gratuito que da por default EasyHID), en la figura
siguiente se aprecian los archivos generados.


ULEAM EIE


Cuando se genera el archivo produce un formulario que no tiene las
pestañas acostumbradas, por lo cual recomiendo crear un nuevo
formulario, dando click derecho y agregar formulario, copiar todo el
código que por default esta se generó y pegarlo en el nuevo formulario.



ULEAM EIE


Para evitar errores se le pondrá el mismo nombre que el formulario
anterior o si gustan, modificar el modulo con el nombre a su elección,
ahora teniendo todo listo se empieza con la programación de la interfaz.
Si hay poca familiaridad con estos lenguajes se recomienda leer
conceptos básicos de Visual BASIC.




ULEAM EIE


Como se apreció en la figura anterior la interfaz que se realizo es en
base a 4 “button” y cuatro “Ovalshapes”, además de dos “button” y un
“textbox” extra el cual indicara el estado del puerto.

ULEAM EIE


El código que generado en la platilla se modificara de acuerdo a las
necesidades que se le quiera dar, para ello se expone a continuación el
código de ejemplo. Donde B1-B4 son los “LED” que se desean activar, los
cuales son de tipo booleano (0-1) para que cambien de estado de
acuerdo a la pulsación que se le dé, teniendo en cuenta que desde el
inicio se debe de establecer su valor para iniciar encendido o apagado el
valor de las variables B1-B4



ULEAM EIE

Para la programación de los botones correspondientes que activaran o
desactivaran cada LED según sea el caso.



Cada “button” tiene un código correspondiente al valor del led, el
funcionamiento es bastante sencillo, si DX es falso entonces le da un
valor a la variable LED, depende de cada LED será el dato enviado,
invierte el valor actual de DX para que cambie de estado y sea un control
ON/OFF, cambia de color el “OvalshapeX” para darle un aspecto de
activado o desactivado, se utilizo la instrucción Color.GreenYellow

Para tener los valores iniciales ya sean en falso o verdadero de las
variables a usar es necesario usar el siguiente código dándole doble click
en el formulario.




ULEAM EIE







ULEAM EIE







ULEAM EIE





6

ULEAM EIE










ULEAM EIE
BIBLIOGRAFIA CITADA O CONSULTADA

http://sabus.usal.es/pdf/manual_ref.pdf
http://www.forosdeelectronica.com/f24/tutorial-manejo-
proton-ide-27932/
Jacobo Sierra Arellanes protonbasic.wordpress.com
http://www.unrobotica.com/herramientas.htm
http://www.4shared.com/rar/QgkNmlQH/Manual_USB-
HID.html
http://www.youtube.com/watch?v=HsZTeYEsnvU&feature=
related
Instituto Tecnológico de Salina Cruz
http://www.ucontrol.com.ar/forosmf/programacion-en-
basic/comunicacion-usb-clase-cdc-con-proton-y-visual-basic-
2010/
http://www.conductitlan.net/psicologia_organizacional/eje
mplo_manual_procedimientos.pdf

ULEAM EIE
http://es.scribd.com/doc/185728450/40/Botone-de-
comando-Command-Button
http://www.slideshare.net/yolyrojas/ejercicios-visual-
basic-7299885
http://www.solodrivers.com/manuales/programacion_visu
albasic18
http://www.slideshare.net/lcahuich/command-button-vb-
presentation
http://www.recursosvisualbasic.com.ar/htm/tutoriales/con
trol_commandbutton.htm
www. proteus . com /
www.microchip.com/ pic /
www. pic eventos.com
http://www.develotech.net/Archive/Circuits/Docs/microch
ip%20refs/EasyHID%20USB%20Code%20Generator.htm
Swordfish PIC® BASIC
Crownhill PROTON Development Suite