PROTON IDE -...

39
PROTON IDE GRENELECTRONIC DESARROLLO CON MICROCONTROLADORES PIC Índice 1. Introducción 2. Código de programación Basic 3. Códigos Binario, hex., Decimal, ASCII 4. Programación I Laso abierto, secuencia Actividades de programación I 5. Programación II Laso cerrado, compuertas lógicas Secuencia de control y carga Actividades de programación II 6. Programación III Display de 7 segmentos Actividades de programación III 7. Programación IV LCD, lm35, instrumentación Actividades de programación IV 8. Programación V Motores, Servos y PAP Actividades de programación V 9. Programación VI Robótica sensorial Actividades de programación VI 10. Programación VII Visual Basic Comunicación serial rx tx Actividades de Programación VII

Transcript of PROTON IDE -...

Page 1: PROTON IDE - sd65623017f9d6b92.jimcontent.comsd65623017f9d6b92.jimcontent.com/download/version/1…  · Web viewGRENELECTRONIC. DESARROLLO CON MICROCONTROLADORES PIC. Índice. Introducción.

PROTON IDE

GRENELECTRONIC

DESARROLLO CON MICROCONTROLADORES PIC

Índice

1.Introducción2.Código de programación Basic3.Códigos Binario, hex., Decimal, ASCII

4. Programación I Laso abierto, secuencia Actividades de programación I

5. Programación II Laso cerrado, compuertas lógicas Secuencia de control y carga Actividades de programación II

6. Programación III Display de 7 segmentos Actividades de programación III

7. Programación IV LCD, lm35, instrumentación Actividades de programación IV

8. Programación V Motores, Servos y PAP Actividades de programación V

9. Programación VI Robótica sensorial Actividades de programación VI

10. Programación VII Visual Basic Comunicación serial rx tx Actividades de Programación VII

¿Qué es un microcontrolador?Es un circuito integrado programable que acepta un listado de instrucciones y contiene todos los

Page 2: PROTON IDE - sd65623017f9d6b92.jimcontent.comsd65623017f9d6b92.jimcontent.com/download/version/1…  · Web viewGRENELECTRONIC. DESARROLLO CON MICROCONTROLADORES PIC. Índice. Introducción.

componentes de un computador. Se utilizan para realizar determinadas tareas o para gobernar dispositivos, debido a su reducido tamaño, suele ir incorporado en el propio dispositivo que gobierna.El microcontrolador es un dispositivo dedicado. En su memoria solo reside un programa destinado a gobernar una aplicación determinada, sus líneas de entradas y salidas (I/O) permiten la conexión de sensores y relay. Una vez programado y configurado el microcontrolador solamente sirve para gobernar la tarea asignada

Los microcontroladores en general, y los de la empresa Microchip en particular, necesitan de un circuito electrónico auxiliar que nos permita transferirles desde el ordenador el programa que hemos escrito para ellos.Hay muchas maneras de encarar este problema, y en general se suele utilizar alguno de los puertos disponibles en cualquier ordenador para este fin. Así es que en el mercado es posible conseguir “quemadores” de PICs con conexión para puerto USB, paralelo o serie (RS-232).Los microcontroladores de Microchip (PICs) se programan mediante un protocolo tipo serie. Se necesitan dos tensiones de alimentación para poder llevar a cabo la programación: una de 4.5v a 5.5v (VDD) y otra comprendida entre 12v y 14v (VPP), que es la que indica al PIC que va a ser programado, para que el cambie la función que realizan los pines I/O implicados en la programación. Los pines implicados en la programación varían de un microcontrolador a otro, pero en general, los de un mismo numero de pines (8, 18, etc.) tienen las mismas patitas asignadas a la programación, lo que nos permite construir programadores que sirvan para mas de un PIC.Es muy recomendable leer la hoja de datos de Microchip sobre este tema dado que es conveniente conocer el mecanismo implicado en la programación (tiempos, señales, etc). El documento se refiere específicamente a la familia 16F8x, pero los demás no difieren demasiado de lo allí expuesto.El programador, será el encargado de transferir el programa que escribamos en la PC a la memoria FLASH del PIC. Esta es una memoria no volátil, de bajo consumo, que se puede escribir y borrar en el circuito integrado (al igual que las EEPROM). Microchip comercializa dos microcontroladores prácticamente iguales que sólo se diferencian en que la memoria de programa de uno de ellos es tipo EEPROM y la del otro tipo Flash. Se trata del PIC16C84 y el PIC16F84, respectivamente.Además de esta memoria, casi todos los PICs también disponen de una memoria de datos de lectura y escritura no volátil, (esta del tipo EEPROM). De esta forma, un corte en el suministro de la alimentación no ocasiona la pérdida de la información, que está disponible al reiniciarse el programa. Por ejemplo, el 16F84 dispone de 64 bytes de memoria EEPROM para contener datos, y los programas que creemos pueden leer y escribir en ella.

BOOTLOADER Un bootloader («cargador de arranque» ) es un programa sencillo que no tiene la totalidad de las funcionalidades de un sistema operativo, diseñado exclusivamente para preparar todo lo que necesita el sistema operativo para funcionar. Normalmente se utilizan los cargadores de arranque multietapas, en los que varios programas pequeños se suman los unos a los otros, hasta que el último de ellos carga el sistema operativo.En los ordenadores modernos, el proceso de arranque comienza con la CPU ejecutando los programas contenidos en la memoria ROM en una dirección predefinida y se configura la CPU para ejecutar este programa, sin ayuda externa, al encender el ordenador. Bootloader es un pequeño programa de arranque, residente en las primeras 0x800 bytes de la memoria de programa de un Microcontroladores PIC. El bootloader funciona en el momento del cargado de programa (justo cuando el PIC es reseteado) y es capaz de cargar un completo programa de aplicación en la memoria de programa del PIC. Microchip ofrece, de tamaño compacto, versátil, autónomo, que ha sido diseñado pensando en la necesidad de contar con un modulo que fácilmente pueda ser montado sobre un Protoboard y la ves se pueda tener un potente microcontrolador de la gama serie 18 equipado con puerto de comunicaciones USB, Serie, I2C, Paralelo, Conversores A/D, múltiples puerto I/O, los cuales están disponibles para ser conectados a diferentes circuitos y configuraciones sin necesidad de retirar el PIC del Protoboard para programarlo cada ves que sea necesario, modificar el programa grabado el PIC o para una fácil depuración del programa en proceso de desarrollo.

Estructura del programa en Pic Basic

Un programa básico consta de:• Programa de cabecera• Declaraciones• Explicación de los signos e identificadores• Declaraciones y comandosAdemás de estas estructuras de base, algunos compiladores también permiten programación orientada a objetos, así como procedimientos y funciones. Sin embargoProtón IDE no permite los procedimientos y funciones en el verdadero sentido, así como no es compatible con los objetos.Tiene enfoque orientado hacia el simple y sencillo llamado de instrucciones. La programación comienza en la parte superior, y la continúa hacia abajo. Sin embargo permite las repeticiones.

Page 3: PROTON IDE - sd65623017f9d6b92.jimcontent.comsd65623017f9d6b92.jimcontent.com/download/version/1…  · Web viewGRENELECTRONIC. DESARROLLO CON MICROCONTROLADORES PIC. Índice. Introducción.

Las primeras líneas del programa BASIC, difieren en la memoria de los microcontroladores, EEPROM, número de puertos y registros, etc., es necesario informar al compilador sobre el microcontrolador que se utilizará. En segundo lugar la velocidad de procesamiento depende de la frecuencia del cristal. Por lo tanto, a fin de calcular con precisión el calendario de funciones de retraso también es necesario informar al compilador de la frecuencia del cristal Los programas de lenguaje BASIC usualmente comienzan así:Device = 16F877AXTAL = 4La primera línea indica el procesador y la segunda línea dice que el hardware utiliza20MHz de cristal.DeclaracionesSon instrucciones especiales sobre los diversos dispositivos a utilizar, esto ayuda al compilador a generar instrucciones específicas. Por ejemplo, si estamos usando una pantalla LCD y se conecta en PORTD, entonces tenemos que informar las conexiones de nuestro LCD. Vamos a declarar este tipo de configuración generalmente después de la sección de encabezado utilizando los comandos:Declare LCD_DTPIN PORTD.0Hay un número de declaraciones, sin embargo, sólo las necesarias en el proyecto actual se fijan normalmente....IdentificadoresLos identificadores son símbolos de texto especial que se utiliza para representar algo.Pueden ser utilizados como etiquetas para marcar ciertos lugares en el programa, de modo que el programa se puede hacer para ir a las etiquetas y luego continuar con el programa a partir de entonces. Del mismo modo los identificadores pueden usarse para nombrar algunas ubicaciones de memoria.Estos son por lo general variables llamadas, y son los identificadores más importantes en la programación. Los identificadores también se pueden utilizar como alias en cierto texto, de modo que en lugar de escribir el texto concerniente del identificador, el compilador inserta el texto pertinente en su lugar.Las declaraciones y comandosHay tres tipos de declaraciones:• Comparación y declaraciones condicionales• Repetición y declaraciones de bucle• Biblioteca de comandosComparación y sentencias condicionales nos permiten comparar dos o más variables, los puertos, los pines del puerto o registros de funciones especiales y luego tomar la decisión de ejecutar un conjunto de instrucciones o de otro conjunto.Considerando la importancia de estas declaraciones, el lenguaje BASIC prevé diferentes construcciones de esto. Vamos a explorar estas a continuación.La repetición y de bucle es una de las mayores ventajas de los microprocesadores.Podemos encargar al microcontrolador repetir continuamente ciertas instrucciones, ya sea indefinidamente, o hasta que una determinada condición existe.Por ejemplo, para mantener un LED, hasta que la temperatura es alta desde un punto de ajuste.Biblioteca de Comandos, no son propiamente los comandos del lenguaje BASIC, pero son proporcionados por el fabricante del compilador para hacer las tareas comunes. Por ejemplo, un comando de biblioteca para mostrar algunos datos sobre la LCD o para leer los datos analógicos de un pin de entrada.EtiquetasPara marcar las declaraciones que el programa podría hacer referencia con los comandos Goto, Call o Gosub, PROTON utiliza las etiquetas de línea. A diferencia de los antiguos BASICS, PROTON no permite o exige a los números de línea y no requiere que se etiquete cada línea. En cambio, cualquier línea puede comenzar con una etiqueta de línea, que es simplemente un identificador seguido de dos puntos (:).LAB:PRINT "Hola Mundo"GOTO LABLos nombres de etiqueta pueden ser de hasta 32 caracteres de longitud y puede contener cualquier carácter alfanumérico, pero no debe comenzar con un valor numérico. Por ejemplo:Label1:Es perfectamente válido, sin embargo:1LABEL:Se producirá un error de sintaxis porque las etiquetas se inician con el valor 1. Una etiqueta que contenga más de 32 caracteres producirá un error de sintaxis señalando la etiqueta de reincidencia. También se permite caracteres como parte de la etiqueta. Esto ayuda a crear más nombres de etiqueta descriptiva. Por ejemplo:THISISALABEL: No tiene la misma claridad de significado como: THIS_IS_A_LABEL:Variables: Las variables se utilizan para almacenar datos temporalmente o para mantener números que se utilizarán en los cálculos. El número de variables que pueden ser utilizados en un programa depende de la memoria RAM del microcontrolador, la arquitectura del Microcontrolador, la parte de la memoria RAM, la memoria del programa.

Page 4: PROTON IDE - sd65623017f9d6b92.jimcontent.comsd65623017f9d6b92.jimcontent.com/download/version/1…  · Web viewGRENELECTRONIC. DESARROLLO CON MICROCONTROLADORES PIC. Índice. Introducción.

Símbolos y gráficos

Un diagrama de flujo se construye con unos símbolos gráficos especiales que representan

Page 5: PROTON IDE - sd65623017f9d6b92.jimcontent.comsd65623017f9d6b92.jimcontent.com/download/version/1…  · Web viewGRENELECTRONIC. DESARROLLO CON MICROCONTROLADORES PIC. Índice. Introducción.

acciones, funciones, y equipamiento usado para lograr un resultado específico.

PROGRAMACION CON PROTON IDECONFIGURAR MICROCONTROLADORDevice 16F870Device 16F873ADevice 16F877ADevice 18F225

CONFIGURAR VELOCIDAD DEL MICRO EN Mhz

Xtal 4Xtal 10Xtal 20Xtal 40

Page 6: PROTON IDE - sd65623017f9d6b92.jimcontent.comsd65623017f9d6b92.jimcontent.com/download/version/1…  · Web viewGRENELECTRONIC. DESARROLLO CON MICROCONTROLADORES PIC. Índice. Introducción.

CONFIGURAR PINES DIGITALES

All_Digital= true ' PARA PUERTOS A Y E

CONFIGURAR MEMORIABUS I2C -------SCL_Pin = PORTA.7SDA_Pin = PORTA.6

CONFIGURAR VARIABLES

Tecla var Byte ' no se recomiendaDim tecla As ByteDim cont2 As WORDDim cont1 As DWORDCONFIGURAR LCD

Declare LCD_Type = 0Declare LCD_DTPin = PORTD.0 Declare LCD_ENPin = PORTD.5Declare LCD_RSPin = PORTD.4Declare LCD_Interface = 4Declare LCD_Lines = 2

CONFIGURAR LCD GRAFICO

LCD_DTPort = PORTDLCD_RSPin = PORTC.1LCD_ENPin = PORTE.0LCD_RWPin = PORTC.0LCD_CS1Pin = PORTE.1LCD_CS2Pin = PORTE.2LCD_Type = GRAPHICInternal_Font = OFFFont_Addr = 0

CONFIGURAR TECLADO

Keypad_Port = PORTB

CONFIGURAR COMUNICACIÓN SERIAL

Serial_Baud = 9600Rsout_Pin = PORTC.6Rsout_Mode = TRUERsout_Pace = 1Rsin_Pin = PORTC.7Rsin_Mode = TRUE

Hserial_Baud = 9600 ' velocidad baudios 9600Hserial_RCSTA = %10010000 ' Enable serial port and continuous receiveHserial_TXSTA = %00100100 ' Enable transmit and asynchronous modeHserial_Clear = On ' Enable Error clearing on received characters

CONFIGURAR UNA ENTRADA

Input PORTC.3 'declaro que el puerto C pin.3 es entradaTRISA=1 'declaro que el puerto A es entrada pero solo el pin.0TRISA.0=1 'declaro que el puerto A es entrada pero solo el pin.0TRISA=%11111111 'declaro que el puerto A es entradaTRISA=$FF 'declaro que el puerto A es entradaTRISA=255 'declaro que el puerto A es entradaCONFIGURAR UNA SALIDA

Output PORTC.7 'declaro que el puerto C pin.7 es salidaTRISA=0 'declaro que el puerto A es salidaTRISA.0=0 'declaro que el puerto A es salida pero solo el pin.0TRISA=%00000000 'declaro que el puerto A es salidaTRISA=$0 'declaro que el puerto A es salida

CONFIGURACION COMBINADA

TRISA=%00001111 'declaro que el puerto A será: entrada los pines 0,1,2,3 y salida 4,5,6,7TRISA=$F 'declaro que el puerto A será: entrada los pines 0,1,2,3 y salida 4,5,6,7TRISA=15 'declaro que el puerto A será: entrada los pines 0,1,2,3 y salida 4,5,6,7

Page 7: PROTON IDE - sd65623017f9d6b92.jimcontent.comsd65623017f9d6b92.jimcontent.com/download/version/1…  · Web viewGRENELECTRONIC. DESARROLLO CON MICROCONTROLADORES PIC. Índice. Introducción.

ACTIVAR PUERTO

High xx8Low xx8Low PORTB 'el puerto b esta en nivel bajo (apagado)High PORTB 'el puerto b esta en nivel ALTO (ACTIVO)PORTB=0 'el puerto b esta en nivel bajo (apagado)PORTB.0=0 'el puerto b solo el pin.0 con nivel bajoPORTB=%00000000 'el puerto b esta con nivel bajoPORTB=1 'el puerto b solo el pin.0 con nivel alto (activado)PORTB.0=1 'el puerto b solo el pin.0 con nivel altoPORTB=7 'el puerto b reproduce el dato 00000111 decPORTB=3 'el puerto b reproduce el dato 00000011 decPORTB=$F 'el puerto b reproduce el dato 00001111 hexPORTB=$3F 'el puerto b reproduce el dato 00111111 hexPORTB=%11111111 'el puerto b esta con nivel alto bin

ALIAS PARA PERIFERICOS

Symbol MOTOR = PORTA.1 ‘existe un motor conectado en el puerto A pin.1Symbol SW = PORTA.2‘existe un pulsador conectado en el puerto A pin.2

ACTIVAR POR CONDICION

If s1=0 Then ' el micro espera un 0 para activar una rutinaIf s1=1 Then ' el micro espera un 1 para activar una rutinaIf s1=1 And s2=0 And s3=0 Then PROG 'debe cumplir e ir a una sub rutinaEndIf ' antes de concluir una rutina al usar IF sin bucle

ACTIVAR SOFT.WERE POR etiquetas

GoSub GIRA ‘activar una rutina llamada GIRAGIRA:Return ‘retornar al punto de inicio

RETARDOS

DelayMS 1000 ' RETARDO DEL ESTADO 1000 ES 1SEGDelayMS 500 ' RETARDO DEL ESTADO 500 ES 1/2SEGDelayUS 1000 ' RETARDO DEL ESTADO 1000 ES 1msegpause 1000 ' RETARDO DEL ESTADO 1000 ES 1SEG no se recomienda

ACTIVAR TEXTO EN UN LCD

Print At 1,1, " ACTIVAR ESTACION "'ESCRIBE EN LA LINEA 1 POSICION 1 DelayMS 5000

RESCATAR UN VALOR EN DECIMAL

Dim cc As Word Print At 1,1, "f = ", Dec cc' imprimir el dato en el LCD desde cc

CONTAR LOS PULSOS QUE ENTRAN EN UN PIN

WRD = Counter Pin , 1000 ' LA VARIABLE WRD CONTIENE EL VALOR DE ENTRADA EN 1seg

CONTADOR DE EVENTOS CON OPERATORIA

If IRIS =1 ThenDelayMS 500cont1 = cont1 + 1 'se ejecuta una suma en memoria EndIfOrganizador de instrucciones (branch,on goto,on gosub)

IF VAR1 = 0 THEN GOTO LAB_0   por BRANCH VAR1, [Lab_0, Lab_1, Lab_2] IF VAR1 = 1 THEN GOTO Lab_1   ON VAR1 GOTO LABEL_0, LABEL_1, LABEL_2IF VAR1 = 2 THEN GOTO Lab_2 ON VAR1 GOSUB LABEL_0, LABEL_1, LABEL_2

Quiebre de bucle o rutina

IF VAR1 = 10 THEN BREAK      ' BREAK ROMPE EL BUCLE CUANDO LLEGUE A 10 DELAYMS 200                 

Page 8: PROTON IDE - sd65623017f9d6b92.jimcontent.comsd65623017f9d6b92.jimcontent.com/download/version/1…  · Web viewGRENELECTRONIC. DESARROLLO CON MICROCONTROLADORES PIC. Índice. Introducción.

Ejecutar un bloque de instrucciones hasta que una condición es verdadera

VAR1 = 1  REPEAT  PRINT AT 1, 1, DEC VAR1 O  REPEAT HIGH LED: UNTIL PORTA.0 = 1  DELAYMS 200 INC VAR1  UNTIL VAR1 > 10

Configurar una entrada analógica

Declare ADIN_RES 10 'resoluciónDeclare ADIN_TAD 2 'CLK options are 0, 1, 2, 3 (0-2 are based on internal cycles)Declare ADIN_STIME 100 'tiempo de muestreo

ADCON1 = %10000000 ' Setup Del registro ADCON1, AN1 / RA1 es análogo Mueva la posición del cursor en la pantalla LCD para una línea y posición determinada.

DIM Line as BYTE  DIM Xpos as BYTE  Line = 2  Xpos = 1  CLS                 PRINT "HELLO"      ' Display LCD  CURSOR Line , Xpos ' line 2, position 1

ACTIVAR POR BUCLE

gg: ' etiqueta princial, ejecuta una rutina PORTD.2=1DelayMS 200PORTD.2=0DelayMS 200GoTo gg ' termina la rutina y regresa a la etiqueta

``````````````````````````````````````````````````````````````````LOOP: LED = 1 ' First LED onDelayMS 300 ' Delay for .3 secondsFor SCAN = 1 To 7 ' Go through For..Next loop 7 timesLED = LED << 1 ' Shift on LED, one to leftDelayMS 300 ' Delay for .3 secondsNext ' Close the SCAN loopGoTo LOOP ' Go back to loop and blink LED forever````````````````````````````````````````````````````````````````````m3: For n=1 To 50 Step 2PulsOut PORTD.0,2500DelayMS 10NextEnd

ACTIVAR TEXTO EN UN LCD

Print At 1,1, " ACTIVAR ESTACION " DelayMS 5000

RESCATAR UN VALOR EN DECIMAL

Dim RPM As Word Print At 1,1, "f = ", Dec RPM' imprimir el dato en el LCD

CONTAR LOS PULSOS QUE ENTRAN EN UN PIN

WRD = Counter Pin , 1000 ' LA VARIABLE WRD CONTIENE EL VALOR DE ENTRADA EN 1seg

CONTADOR DE EVENTOS CON OPERATORIA

If IRIS =1 ThenDelayMS 500cont1 = cont1 + 1 'se ejecuta una suma en memoria EndIf

````````````````````````````````````````````````````````````````````

Page 9: PROTON IDE - sd65623017f9d6b92.jimcontent.comsd65623017f9d6b92.jimcontent.com/download/version/1…  · Web viewGRENELECTRONIC. DESARROLLO CON MICROCONTROLADORES PIC. Índice. Introducción.

If IRIS =1 ThenDelayMS 500cont1 = cont1 * 2 'se ejecuta una multiplicacion en memoria

Mostrar en decimal, todos los valores de WRD dentro de un bucle hacia arriba

DIM WRD as WORD FOR WRD = 0 TO 2000 STEP 2  ' Perform an upward loop PRINT Dec WRD ," "          ' Display the value of WRD NEXT                        ' Close the loop

Mostrar en decimal, todos los valores de WRD dentro de un ciclo a la baja

DIM WRD as WORD FOR WRD = 2000 TO 0 STEP -2 ' Perform a downward loop PRINT Dec WRD ," "          ' Display the value of WRD NEXT                        ' Close the loop

Mostrar en decimal, todos los valores de DWRD dentro de un ciclo a la baja

DIM DWRD as DWORD FOR DWRD = 200000 TO 0 STEP -200 ' Perform a downward loop PRINT Dec DWRD ,"         "      ' Display the value of DWRD NEXT  

Mostrar en decimal, todos los valores de WRD1 utilizando una expresión como parte de la construcción de FOR-NEXT

DIM WRD1 as WORD DIM WRD2 as WORD WRD2 = 1000FOR WRD1= WRD2 + 10 TO WRD2 + 1000 ' Perform a  loop PRINT Dec WRD1," "                 ' Display the value of WRD1NEXT                               ' Close the loop

Notas de programación según fabricante Para la serie 16f el pin4 del puerto A es colector abierto con drenaje a tierra, tratar de no usar como salida. Ver ficha del micro

Para la serie 16f8xx los puertos A y E por defecto trabajan los ADC usar comando de bloqueoPara la serie 16f6xx el puerto A será analógico usar CMCON = 7 Para la serie 16f87x el puerto A o E será analógico usar ADCON1 = 7

CODIGOS DEC,HEX.BIN

Page 10: PROTON IDE - sd65623017f9d6b92.jimcontent.comsd65623017f9d6b92.jimcontent.com/download/version/1…  · Web viewGRENELECTRONIC. DESARROLLO CON MICROCONTROLADORES PIC. Índice. Introducción.

Dec Hex Oct Bin

0123456789

101112131415

0123456789ABCDEF

000001002003004005006007010011012013014015016017

00000000000000010000001000000011000001000000010100000110000001110000100000001001000010100000101100001100000011010000111000001111

Dec Hex Oct Bin

16171819202122232425262728293031

101112131415161718191A1B1C1D1E1F

020021022023024025026027030031032033034035036037

00010000000100010001001000010011000101000001010100010110000101110001100000011001000110100001101100011100000111010001111000011111

Dec Hex Oct Bin

32333435363738394041424344454647

202122232425262728292A2B2C2D2E2F

040041042043044045046047050051052053054055056057

00100000001000010010001000100011001001000010010100100110001001110010100000101001001010100010101100101100001011010010111000101111

Dec Hex Oct Bin

48495051525354555657585960616263

303132333435363738393A3B3C3D3E3F

060061062063064065066067070071072073074075076077

00110000001100010011001000110011001101000011010100110110001101110011100000111001001110100011101100111100001111010011111000111111

Dec Hex Oct Bin

64656667686970717273747576777879

404142434445464748494A4B4C4D4E4F

100101102103104105106107110111112113114115116117

01000000010000010100001001000011010001000100010101000110010001110100100001001001010010100100101101001100010011010100111001001111

Dec Hex Oct Bin

80818283848586878889909192939495

505152535455565758595A5B5C5D5E5F

120121122123124125126127130131132133134135136137

01010000010100010101001001010011010101000101010101010110010101110101100001011001010110100101101101011100010111010101111001011111

Dec Hex Oct Bin

96979899100101102103104105106107108109110111

606162636465666768696A6B6C6D6E6F

140141142143144145146147150151152153154155156157

01100000011000010110001001100011011001000110010101100110011001110110100001101001011010100110101101101100011011010110111001101111

Dec Hex Oct Bin

112113114115116117118119120121122123124125126127

707172737475767778797A7B7C7D7E7F

160161162163164165166167170171172173174175176177

01110000011100010111001001110011011101000111010101110110011101110111100001111001011110100111101101111100011111010111111001111111

Dec Hex Oct Bin

128129130131132133134135136137138139140141142143

808182838485868788898A8B8C8D8E8F

200201202203204205206207210211212213214215216217

10000000100000011000001010000011100001001000010110000110100001111000100010001001100010101000101110001100100011011000111010001111

Dec Hex Oct Bin

144145146147148149150151152153154155156157158159

909192939495969798999A9B9C9D9E9F

220221222223224225226227230231232233234235236237

10010000100100011001001010010011100101001001010110010110100101111001100010011001100110101001101110011100100111011001111010011111

Dec Hex Oct Bin

160161162163164165166167168169170171172173174175

A0A1A2A3A4A5A6A7A8A9AAABACADAEAF

240241242243244245246247250251252253254255256257

10100000101000011010001010100011101001001010010110100110101001111010100010101001101010101010101110101100101011011010111010101111

Dec Hex Oct Bin

176177178179180181182183184185186187188189190191

B0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF

260261262263264265266267270271272273274275276277

10110000101100011011001010110011101101001011010110110110101101111011100010111001101110101011101110111100101111011011111010111111

Dec Hex Oct Bin

192193194195196197198199200201202203204205206207

C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF

300301302303304305306307310311312313314315316317

11000000110000011100001011000011110001001100010111000110110001111100100011001001110010101100101111001100110011011100111011001111

Dec Hex Oct Bin

208209210211212213214215216217218219220221222223

D0D1D2D3D4D5D6D7D8D9DADBDCDDDEDF

320321322323324325326327330331332333334335336337

11010000110100011101001011010011110101001101010111010110110101111101100011011001110110101101101111011100110111011101111011011111

Dec Hex Oct Bin

224225226227228229230231232233234235236237238239

E0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF

340341342343344345346347350351352353354355356357

11100000111000011110001011100011111001001110010111100110111001111110100011101001111010101110101111101100111011011110111011101111

Dec Hex Oct Bin

240241242243244245246247248249250251252253254255

F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF

360361362363364365366367370371372373374375376377

11110000111100011111001011110011111101001111010111110110111101111111100011111001111110101111101111111100111111011111111011111111

Page 11: PROTON IDE - sd65623017f9d6b92.jimcontent.comsd65623017f9d6b92.jimcontent.com/download/version/1…  · Web viewGRENELECTRONIC. DESARROLLO CON MICROCONTROLADORES PIC. Índice. Introducción.

CODIGO ASCII

ASCII Hex Símbolo

0123456789101112131415

0123456789ABCDEF

NULSOHSTXETXEOTENQACKBELBS

TABLFVTFFCRSOSI

ASCII Hex Símbolo

16171819202122232425262728293031

101112131415161718191A1B1C1D1E1F

DLEDC1DC2DC3DC4NAKSYNETBCANEMSUBESCFSGSRSUS

ASCII Hex Símbolo

32333435363738394041424344454647

202122232425262728292A2B2C2D2E2F

(espacio)!"#$%&'()*+,-./

ASCII Hex Símbolo

48495051525354555657585960616263

303132333435363738393A3B3C3D3E3F

0123456789:;<=>?

ASCII Hex Símbolo

64656667686970717273747576777879

404142434445464748494A4B4C4D4E4F

@ABCDEFGHIJKLMNO

ASCII Hex Símbolo

80818283848586878889909192939495

505152535455565758595A5B5C5D5E5F

PQRSTUVWXYZ[\]^_

ASCII Hex Símbolo

96979899

100101102103104105106107108109110111

606162636465666768696A6B6C6D6E6F

`abcdefghijkl

mno

ASCII Hex Símbolo

112113114115116117118119120121122123124125126127

707172737475767778797A7B7C7D7E7F

pqrstuvwxyz{|}~�

Programación I

El proceso se desarrolla en diferentes fases sin comprobar que el objetivo se ha alcanzado satisfactoriamente. En el ejemplo de una lavadora, la señal de salida (que sería la ropa lavada) no se introduce en el sistema en ningún momento para poder dar el proceso por terminado. Es posible que la ropa no esté bien lavada pero el sistema no puede rectificar automáticamente. Esto se denomina laso abierto

1-ACTIVEMOS UN LED, pero con un destello Device 16F870 'microcontroladorXtal = 20 'velocidadTRISB=0 ' DECLARO PUERTO B SALIDAPORTB=0 ' ASEGURO EL PUERTO B LOW

RA0/AN02

RA1/AN13

RA2/AN2/VREF-4

RA4/T0CKI6

RA5/AN47

OSC1/CLKIN9

OSC2/CLKOUT10

RC1/T1OSI 12

RC2/CCP1 13

RC3 14

RB7/PGD 28RB6/PGC 27RB5 26RB4 25RB3/PGM 24RB2 23RB1 22RB0/INT 21

RC7/RX/DT 18RC6/TX/CK 17RC5 16RC4 15

RA3/AN3/VREF+5

RC0/T1OSO/T1CKI 11

MCLR/Vpp/THV1

U1

PIC16F870

D1

LED

Page 12: PROTON IDE - sd65623017f9d6b92.jimcontent.comsd65623017f9d6b92.jimcontent.com/download/version/1…  · Web viewGRENELECTRONIC. DESARROLLO CON MICROCONTROLADORES PIC. Índice. Introducción.

RA0/AN02

RA1/AN13

RA2/AN2/VREF-4

RA4/T0CKI6

RA5/AN47

OSC1/CLKIN9

OSC2/CLKOUT10

RC1/T1OSI 12

RC2/CCP1 13

RC3 14

RB7/PGD 28RB6/PGC 27RB5 26RB4 25RB3/PGM 24RB2 23RB1 22

RB0/INT 21

RC7/RX/DT 18RC6/TX/CK 17RC5 16RC4 15

RA3/AN3/VREF+5

RC0/T1OSO/T1CKI 11

MCLR/Vpp/THV1

U1

PIC16F870

D1

LED

RA0/AN02

RA1/AN13

RA2/AN2/VREF-4

RA4/T0CKI6

RA5/AN47

OSC1/CLKIN9

OSC2/CLKOUT10

RC1/T1OSI 12

RC2/CCP1 13

RC3 14

RB7/PGD 28RB6/PGC 27

RB5 26RB4 25RB3/PGM 24

RB2 23RB1 22RB0/INT 21

RC7/RX/DT 18RC6/TX/CK 17

RC5 16RC4 15

RA3/AN3/VREF+5

RC0/T1OSO/T1CKI 11

MCLR/Vpp/THV1

U1

PIC16F870

D1

LED

E: 'ETIQUETAPORTB.0=1 'ENVIO UN NIVEL ALTO AL PIN 0DelayMS 1000 ' EL LED SE MANTIENE ACTIVO POR 1SEGPORTB.0=0 'ENVIO UN NIVEL BAJO AL PIN 0 DelayMS 1000 ' EL LED SE MANTIENE APAGADO POR 1SEGEnd 'FIN DE LA RUTINA

2-ACTIVEMOS UN LED, destello infinito

Device 16F870 'microcontroladorXtal = 20 'velocidadTRISB=0 ' DECLARO PUERTO B SALIDAPORTB=0 ' ASEGURO EL PUERTO B LOWE: 'ETIQUETAPORTB.0=1 'ENVIO UN NIVEL ALTO AL PIN 0DelayMS 1000 ' EL LED SE MANTIENE ACTIVO POR 1SEGPORTB.0=0 'ENVIO UN NIVEL BAJO AL PIN 0 DelayMS 1000 ' EL LED SE MANTIENE APAGADO POR 1SEGGoTo E 'IR A ETIQUETA

3-ACTIVEMOS UN LED, alterando la pausa

Device 16F870 'microcontroladorXtal = 20 'velocidadTRISB=0 ' DECLARO PUERTO B SALIDAPORTB=0 ' ASEGURO EL PUERTO B LOWE: 'ETIQUETAPORTB.0=1 'ENVIO UN NIVEL ALTO AL PIN 0DelayMS 50 ' EL LED SE MANTIENE ACTIVO POR 50mSEGPORTB.0=0 'ENVIO UN NIVEL BAJO AL PIN 0 DelayMS 50 ' EL LED SE MANTIENE APAGADO POR 50mSEGGoto E ' IR AL COMIENZO DEL PROGRAMA4-ACTIVEMOS UN LED, cambiando el pin

Device 16F870 'microcontroladorXtal = 20 'velocidadTRISB=0 ' DECLARO PUERTO B SALIDAPORTB=0 ' ASEGURO EL PUERTO B LOWE: 'ETIQUETAPORTB.5=1 'ENVIO UN NIVEL ALTO AL PIN 5DelayMS 100 ' EL LED SE MANTIENE ACTIVO POR 100mSEGPORTB.5=0 'ENVIO UN NIVEL BAJO AL PIN 5 DelayMS 100 ' EL LED SE MANTIENE APAGADO POR 100mSEGGoto E ' IR AL COMIENZO DEL PROGRAMA

5-ACTIVEMOS UN LED, cambiando de puerto

Device 16F870 'microcontroladorXtal = 20 'velocidadTRISC=0 ' DECLARO PUERTO C SALIDAPORTC=0 ' ASEGURO EL PUERTO C LOWE: 'ETIQUETAPORTC.0=1 'ENVIO UN NIVEL ALTO AL PIN 5DelayMS 50 ' EL LED SE MANTIENE ACTIVO POR 50mSEGPORTC.0=0 'ENVIO UN NIVEL BAJO AL PIN 5 DelayMS 50 ' EL LED SE MANTIENE APAGADO POR 50mSEGGoto E ' IR AL COMIENZO DEL PROGRAMA

OTRAS FORMAS

inicio: High led pause 1000 Low led pause 1000 GoTo inicioEnd‘’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’

Page 13: PROTON IDE - sd65623017f9d6b92.jimcontent.comsd65623017f9d6b92.jimcontent.com/download/version/1…  · Web viewGRENELECTRONIC. DESARROLLO CON MICROCONTROLADORES PIC. Índice. Introducción.

inicio: High PORTB.0 pause 1000 Low PORTB.0 pause 1000 GoTo inicio End``````````````````````````````````````````````````````````````````````inicio1: PORTB.0 = 1 pause 1000 PORTB.0 = 0 pause 1000 GoTo inicioEnd

‘’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’inicio: High 0:Low 1:Low 2:Low 3:Low 4: High 5 DelayMS 1000 High 0:High 1:Low 2:Low 3:Low 4: High 5 DelayMS 1000 GoTo inicioEnd‘’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’inicio: PORTB = %00100001 delayms 1000 PORTB = %00100011 delayms 1000 GoTo inicioEnd

Actividades de programación I

1. DESARROLLE UN SISTEMA PROGRAMADO QUE ACTIVE 8 LED EN EL PUERTO C DEL MICROCONTROLADOR 16F870, CON UNA PAUSA DE ½ Segundo EN FORMA INFINITA, CADA UN0 DE LOS LED ACTUARAN EN ESCALERA.

2. DESARROLLE UN SISTEMA PROGRAMADO QUE ACTIVE 8 LED EN EL PUERTO C DEL MICROCONTROLADOR 16F870, CON UNA PAUSA DE ½ Segundo EN FORMA INFINITA, LOS LED ACTUARAN EN PENDULO

RA0/AN02

RA1/AN13

RA2/AN2/VREF-4

RA4/T0CKI6

RA5/AN47

OSC1/CLKIN9

OSC2/CLKOUT10

RC1/T1OSI 12

RC2/CCP1 13

RC3 14

RB7/PGD 28RB6/PGC 27RB5 26RB4 25RB3/PGM 24

RB2 23RB1 22RB0/INT 21

RC7/RX/DT 18RC6/TX/CK 17RC5 16RC4 15

RA3/AN3/VREF+5

RC0/T1OSO/T1CKI 11

MCLR/Vpp/THV1

U1

PIC16F870

12345678

2019181716151413

910

1211

U2

LED-BARGRAPH-GRN

RA0/AN02

RA1/AN13

RA2/AN2/VREF-4

RA4/T0CKI6

RA5/AN47

OSC1/CLKIN9

OSC2/CLKOUT10

RC1/T1OSI 12

RC2/CCP1 13

RC3 14

RB7/PGD 28RB6/PGC 27RB5 26RB4 25RB3/PGM 24RB2 23RB1 22

RB0/INT 21

RC7/RX/DT 18RC6/TX/CK 17RC5 16RC4 15

RA3/AN3/VREF+5

RC0/T1OSO/T1CKI 11

MCLR/Vpp/THV1

U1

PIC16F870

12345678

2019181716151413

910

1211

U2

LED-BARGRAPH-GRN

Page 14: PROTON IDE - sd65623017f9d6b92.jimcontent.comsd65623017f9d6b92.jimcontent.com/download/version/1…  · Web viewGRENELECTRONIC. DESARROLLO CON MICROCONTROLADORES PIC. Índice. Introducción.

3. DESARROLLE UN PENDULO INFINITO CON LOS PUERTOS B Y C, CON PAUSAS DE 100 mseg.CON EFECTO SEGUIDOR DE POSICION, los led se activaran, dejandolo en posición otro led.

4. DESARROLLE SEMAFORO CON EL PUERTO B , CON PAUSAS DE 100 mseg.

Nota: esquematice cada circuito en un formato A4, con su diagrama de flujo y programa.

Programación II

Si la señal que queremos controlar debe alcanzar un valor determinado, es habitual que el sistema la mida constantemente y actúe para alcanzar ese valor deseado. En este caso el sistema es realimentado, y hablamos de un sistema automático de lazo cerrado. El funcionamiento de un sistema automático de lazo cerrado se resume de esta forma.

El circuito, se a complementado con un pulsador, y una resistencia, enviaran un estado lógico al PIC, en este caso el pulsador enviara un 1 al pulsar, sin pulsar la resistencia mantiene un estado 0 por estar a tierra, si no esta la resistencia siempre existirá un 1.

RA0/AN02

RA1/AN13

RA2/AN2/VREF-4

RA4/T0CKI6

RA5/AN47

OSC1/CLKIN9

OSC2/CLKOUT10

RC1/T1OSI 12

RC2/CCP1 13

RC3 14

RB7/PGD 28RB6/PGC 27RB5 26RB4 25RB3/PGM 24

RB2 23RB1 22

RB0/INT 21

RC7/RX/DT 18RC6/TX/CK 17

RC5 16RC4 15

RA3/AN3/VREF+5

RC0/T1OSO/T1CKI 11

MCLR/Vpp/THV1

U1

PIC16F870

12345678

2019181716151413

910

1211

U2

LED

12345678

2019181716151413

910

1211

U3

LED

RA0/AN02

RA1/AN13

RA2/AN2/VREF-4

RA4/T0CKI6

RA5/AN47

OSC1/CLKIN9

OSC2/CLKOUT10

RC1/T1OSI 12

RC2/CCP1 13

RC3 14

RB7/PGD 28RB6/PGC 27RB5 26RB4 25RB3/PGM 24RB2 23RB1 22

RB0/INT 21

RC7/RX/DT 18RC6/TX/CK 17RC5 16

RC4 15

RA3/AN3/VREF+5

RC0/T1OSO/T1CKI 11

MCLR/Vpp/THV1

U1

PIC16F870

Resistor R

esistor R110k

D1

LED

Page 15: PROTON IDE - sd65623017f9d6b92.jimcontent.comsd65623017f9d6b92.jimcontent.com/download/version/1…  · Web viewGRENELECTRONIC. DESARROLLO CON MICROCONTROLADORES PIC. Índice. Introducción.

RA0/AN02

RA1/AN13

RA2/AN2/VREF-4

RA4/T0CKI6

RA5/AN47

OSC1/CLKIN9

OSC2/CLKOUT10

RC1/T1OSI 12

RC2/CCP1 13

RC3 14

RB7/PGD 28RB6/PGC 27RB5 26RB4 25RB3/PGM 24RB2 23RB1 22RB0/INT 21

RC7/RX/DT 18RC6/TX/CK 17RC5 16RC4 15

RA3/AN3/VREF+5

RC0/T1OSO/T1CKI 11

MCLR/Vpp/THV1

U1

PIC16F870

Resistor R

esistor R1

10k

D1

LED

Resistor R

esistor R2

10k

RA0/AN02

RA1/AN13

RA2/AN2/VREF-4

RA4/T0CKI6

RA5/AN47

OSC1/CLKIN9

OSC2/CLKOUT10

RC1/T1OSI 12

RC2/CCP1 13

RC3 14

RB7/PGD 28RB6/PGC 27RB5 26RB4 25RB3/PGM 24RB2 23RB1 22

RB0/INT 21

RC7/RX/DT 18RC6/TX/CK 17RC5 16

RC4 15

RA3/AN3/VREF+5

RC0/T1OSO/T1CKI 11

MCLR/Vpp/THV1

U1

PIC16F870

Resistor Resistor R1

10k

D1

LED

RA0/AN02

RA1/AN13

RA2/AN2/VREF-4

RA4/T0CKI6

RA5/AN47

OSC1/CLKIN9

OSC2/CLKOUT10

RC1/T1OSI 12

RC2/CCP1 13

RC3 14

RB7/PGD 28RB6/PGC 27RB5 26RB4 25RB3/PGM 24RB2 23RB1 22RB0/INT 21

RC7/RX/DT 18RC6/TX/CK 17RC5 16RC4 15

RA3/AN3/VREF+5

RC0/T1OSO/T1CKI 11

MCLR/Vpp/THV1

U1

PIC16F870

Resistor R

esistor R1

10k

D1

LED

El circuito, se a complementado con un pulsador, y una resistencia, enviaran un estado lógico al PIC, en este caso el pulsador enviara un 0 al pulsar, sin pulsar la resistencia mantiene un estado 1 por estar a +5vcc, si no esta la resistencia siempre existirá un 1.

Estos circuitos, serán capas de relacionar estados externos, actuando como condicionales para la ejecución de los programas. Vea: IF_____Then______Endif

1-ACTIVANDO UN LED, por un pulsador, enviando un1(button)

Device 16F870 'microcontroladorXtal = 20 'velocidadTRISA=1 'declaro que el puerto A es entradaTRISB=0 ' DECLARO PUERTO B SALIDAAll_Digital= true ' todos los pines del micro son digitalesPORTB=0 ' ASEGURO EL PUERTO B LOWE: 'ETIQUETAIf PORTA.0 = 1 Then 'el micro espera un 1 para activarPORTB.0=1 'ENVIO UN NIVEL ALTO AL PIN 7DelayMS 1000 ' EL LED SE MANTIENE ACTIVO POR 1SEGPORTB.0=0 'ENVIO UN NIVEL BAJO AL PIN 7 DelayMS 1000 ' EL LED SE MANTIENE APAGADO POR 1SEGEndIf ' si es fin End 'fin2-ACTIVANDO UN LED, por un pulsador, enviando un 0 (button)

Device 16F870 'microcontroladorXtal = 20 'velocidadTRISA=1 'declaro que el puerto A es entradaTRISB=0 ' DECLARO PUERTO B SALIDAAll_Digital= true ' todos los pines del micro son digitalesPORTB=0 ' ASEGURO EL PUERTO B LOWE: 'ETIQUETAIf PORTA.0 = 0 Then 'el micro espera un 1 para activarPORTB.0=1 'ENVIO UN NIVEL ALTO AL PIN 0DelayMS 1000 ' EL LED SE MANTIENE ACTIVO POR 1SEGPORTB.0=0 'ENVIO UN NIVEL BAJO AL PIN 0 DelayMS 1000 ' EL LED SE MANTIENE APAGADO POR 1SEGEndIf ' si es fin End 'fin

3-ACTIVANDO UN LED, por 2 pulsadores, solo cuando estén en 1 (button)

Device 16F870 'microcontroladorXtal = 20 'velocidadTRISA.0=1 'declaro que el puerto A pin 0 es entradaTRISA.1=1 'declaro que el puerto A pin 1 es entradaTRISB=0 ' DECLARO PUERTO B SALIDAAll_Digital= true ' todos los pines del micro son digitalesPORTB=0 ' ASEGURO EL PUERTO B LOWE: 'ETIQUETAIf PORTA.0 = 1 AND PORTA.1 = 1 THEN 'los 2 sw activaran el ledPORTB.0=1 'ENVIO UN NIVEL ALTO AL PIN 0DelayMS 1000 ' EL LED SE MANTIENE ACTIVO POR 1SEGPORTB.0=0 'ENVIO UN NIVEL BAJO AL PIN 0 DelayMS 1000 ' EL LED SE MANTIENE APAGADO POR 1SEGEndIf ' si es fin End 'fin

4-ACTIVANDO UN LED, por 2 pulsadores, según tabla (button)

Page 16: PROTON IDE - sd65623017f9d6b92.jimcontent.comsd65623017f9d6b92.jimcontent.com/download/version/1…  · Web viewGRENELECTRONIC. DESARROLLO CON MICROCONTROLADORES PIC. Índice. Introducción.

button1 button2 led0 0 00 1 11 0 1

1 1 0

Device 16F870 'microcontroladorXtal = 20 'velocidadTRISA=1 'declaro que el puerto A es entradaTRISB=0 ' DECLARO PUERTO B SALIDAAll_Digital= true ' declaro que todos los pines del micro son digitalesPORTB=0 ' ASEGURO EL PUERTO B LOW

E: 'ETIQUETAIf PORTA.0 = 0 And PORTA.1 = 0 Then E' estado regreza a etiqueta principal

If PORTA.0 = 0 And PORTA.1 = 1 ThenPORTB.0=1 'ENVIO UN NIVEL ALTO AL PIN 0DelayMS 1000 ' EL LED SE MANTIENE ACTIVO POR 1SEGPORTB.0=0 'ENVIO UN NIVEL BAJO AL PIN 0 DelayMS 1000 ' EL LED SE MANTIENE APAGADO POR 1SEGEndIf

If PORTA.0 = 1 And PORTA.1 = 0 ThenPORTB.0=1 'ENVIO UN NIVEL ALTO AL PIN 0DelayMS 1000 ' EL LED SE MANTIENE ACTIVO POR 1SEGPORTB.0=0 'ENVIO UN NIVEL BAJO AL PIN 0 DelayMS 1000 ' EL LED SE MANTIENE APAGADO POR 1SEGEndIf

If PORTA.0 = 1 And PORTA.1 = 1 ThenPORTB.0=1 'ENVIO UN NIVEL ALTO AL PIN 0DelayMS 1000 ' EL LED SE MANTIENE ACTIVO POR 1SEGPORTB.0=0 'ENVIO UN NIVEL BAJO AL PIN 0 DelayMS 1000 ' EL LED SE MANTIENE APAGADO POR 1SEGEndIf ' si es fin GoTo E 'ir al principio

5-ACTIVANDO UN LED, por 2 pulsadores, según tabla con sub. Programas

button1 button2 led0 0 00 1 11 0 1

1 1 1

Device 16F870 'microcontroladorXtal = 20 'velocidadTRISA=1 'declaro que el puerto A es entradaTRISB=0 ' DECLARO PUERTO B SALIDAAll_Digital= true ' declaro que todos los pines del micro son digitalesPORTB=0 ' ASEGURO EL PUERTO B LOW

E: 'ETIQUETAIf PORTA.0 = 0 And PORTA.1 = 0 Then E' estado regreza a etiqueta principalIf PORTA.0 = 0 And PORTA.1 = 1 Then activo ' sub programaIf PORTA.0 = 1 And PORTA.1 = 1 Then activo ' sub programaIf PORTA.0 = 1 And PORTA.1 = 1 Then activo ' sub programaGoTo E

activo: ' sub programa

PORTB.0=1 'ENVIO UN NIVEL ALTO AL PIN 0DelayMS 1000 ' EL LED SE MANTIENE ACTIVO POR 1SEGPORTB.0=0 'ENVIO UN NIVEL BAJO AL PIN 0 DelayMS 1000 ' EL LED SE MANTIENE APAGADO POR 1SEGGoTo E 'ir al principio

Page 17: PROTON IDE - sd65623017f9d6b92.jimcontent.comsd65623017f9d6b92.jimcontent.com/download/version/1…  · Web viewGRENELECTRONIC. DESARROLLO CON MICROCONTROLADORES PIC. Índice. Introducción.

Actividades de programación II

1. DESARROLLE UN SISTEMA DOMOTICO, PARA 3 PIESAS LOS CUALES SE RELACIONAN CON 3 PULSADORES. ELLOS ACTIVARAN, LA ILUMINACION DE CADA PIESA.

2. DESARROLLE UN SISTEMA PROGRAMADO QUE ACTIVE 4 LED EN EL PUERTO C DEL MICROCONTROLADOR 16F870, CON UNA PAUSA DE ½ segundo. LOS LED TENDRAN DIRECTA RELACION CON 4 PULSADORES, LOS CUALES EJUTARAN 4 DISTINTAS RUTINAS CON UN MAXIMO DE 6SEG, OCUPANDO SUB PROGRAMAS.

3. DESARROLLE UN SISTEMA PROGRAMADO QUE ACTIVE LAS 8 COMPUERTAS LOGICAS CON EL 16F870, BUFFER, OR, AND, NOT, XOR, NAND, NOR Y XNOR

Programación IIIACTIVANDO UN DISPLAY DE 7 SEGMENTOS

RA0/AN02

RA1/AN13

RA2/AN2/VREF-4

RA4/T0CKI6

RA5/AN47

OSC1/CLKIN9

OSC2/CLKOUT10

RC1/T1OSI 12

RC2/CCP1 13

RC3 14

RB7/PGD 28RB6/PGC 27RB5 26RB4 25RB3/PGM 24RB2 23RB1 22RB0/INT 21

RC7/RX/DT 18RC6/TX/CK 17RC5 16RC4 15

RA3/AN3/VREF+5

RC0/T1OSO/T1CKI 11

MCLR/Vpp/THV1

U1

PIC16F870

D1

LED

Resistor Resistor R1

10k

Resistor Resistor R2

10k

Resistor Resistor R3

10k

Resistor Resistor R4

10k

D2

LED

D3

LEDD4

LED

RA0/AN02

RA1/AN13

RA2/AN2/VREF-4

RA4/T0CKI6

RA5/AN47

OSC1/CLKIN9

OSC2/CLKOUT10

RC1/T1OSI 12

RC2/CCP1 13

RC3 14

RB7/PGD 28RB6/PGC 27RB5 26RB4 25RB3/PGM 24RB2 23RB1 22RB0/INT 21

RC7/RX/DT 18RC6/TX/CK 17RC5 16RC4 15

RA3/AN3/VREF+5

RC0/T1OSO/T1CKI 11

MCLR/Vpp/THV1

U1

PIC16F870

D1

LED

Resistor R

esistor R2

10k

Resistor R

esistor R3

10k

Resistor R

esistor R4

10k

D2

LED

D3

LED

Page 18: PROTON IDE - sd65623017f9d6b92.jimcontent.comsd65623017f9d6b92.jimcontent.com/download/version/1…  · Web viewGRENELECTRONIC. DESARROLLO CON MICROCONTROLADORES PIC. Índice. Introducción.

RA0/AN02

RA1/AN13

RA2/AN2/VREF-4

RA4/T0CKI6

RA5/AN47

OSC1/CLKIN9

OSC2/CLKOUT10

RC1/T1OSI 12

RC2/CCP1 13

RC3 14

RB7/PGD 28RB6/PGC 27RB5 26RB4 25RB3/PGM 24RB2 23RB1 22RB0/INT 21

RC7/RX/DT 18RC6/TX/CK 17

RC5 16RC4 15

RA3/AN3/VREF+5

RC0/T1OSO/T1CKI 11

MCLR/Vpp/THV1

U1

PIC16F870

RA0/AN02

RA1/AN13

RA2/AN2/VREF-4

RA4/T0CKI6

RA5/AN47

OSC1/CLKIN9

OSC2/CLKOUT10

RC1/T1OSI 12

RC2/CCP1 13

RC3 14

RB7/PGD 28RB6/PGC 27RB5 26RB4 25RB3/PGM 24

RB2 23RB1 22RB0/INT 21

RC7/RX/DT 18RC6/TX/CK 17RC5 16RC4 15

RA3/AN3/VREF+5

RC0/T1OSO/T1CKI 11

MCLR/Vpp/THV1

U1

PIC16F870

RA0/AN02

RA1/AN13

RA2/AN2/VREF-4

RA4/T0CKI6

RA5/AN47

OSC1/CLKIN9

OSC2/CLKOUT10

RC1/T1OSI 12

RC2/CCP1 13

RC3 14

RB7/PGD 28RB6/PGC 27RB5 26RB4 25RB3/PGM 24

RB2 23RB1 22

RB0/INT 21

RC7/RX/DT 18RC6/TX/CK 17

RC5 16RC4 15

RA3/AN3/VREF+5

RC0/T1OSO/T1CKI 11

MCLR/Vpp/THV1

U1

PIC16F870

LOS DISPLAYS SON FABRICADOS CON ANODO COMUN O CATADO COMUN, SI ES DE CATODO COMUN DEBERA ACTIVAR CON NIVEL ALTO, PERO SI ES ANODO COMUN CON NIVEL BAJO.PORTB=%01111111 ‘forma el numero 8 para catado comunPORTB=%00000000 ‘forma el numero 8 para anodo comunSegun puertob seria % X g f e d c b A

1. ACTIVE UN DISPLAY DE CATODO COMUN, FORMANDO LOS NUMEROS DEL 0 AL 9

Device 16F870Dim num As ByteDim vec As Byte TRISB = 0 prog:For vec = 0 To 9 LookUp vec, [191,134,219,207,230,237,253,135,255,239], numPORTB=num DelayMS 500 Next vec GoTo progEnd

2. ACTIVE UN DISPLAY DE CATODO COMUN, FORMANDO LOS NUMEROS DEL 0 AL 9 (Baja - sube)

Device 16F870Dim vec As Byte Dim num As Byte TRISB = 0 prog:For vec=0 To 9 LookUp vec, [191,134,219,207,230,237,253,135,255,239], numPORTB=num DelayMS 500 Next vec For vec=9 To 0 Step -1 LookUp vec,[191,134,219,207,230,237,253,135,255,239],numPORTB=num DelayMS 500 Next vec GoTo progEnd

3. Contador con un display pero ahora con un vector en el cual almacenaremos los valores correspondientes a cada numero (Para los dos ejemplos el Display es de Ánodo Común)ACTIVE UN DISPLAY DE ANODO COMUN, FORMANDO LOS NUMEROS DEL 0 AL 9 con vectores

Device 16F870 Dim vec[10] As Byte Dim pos As Bytevec[0]=191vec[1]=134vec[2]=219vec[3]=207vec[4]=230vec[5]=237vec[6]=253vec[7]=135vec[8]=255vec[9]=239

TRISB=%00000000

loop:

Page 19: PROTON IDE - sd65623017f9d6b92.jimcontent.comsd65623017f9d6b92.jimcontent.com/download/version/1…  · Web viewGRENELECTRONIC. DESARROLLO CON MICROCONTROLADORES PIC. Índice. Introducción.

For pos=0 To 9 PORTB=vec[pos] DelayMS 500 Next GoTo loopEnd

5-ACTIVANDO UN DISPLAY, contador ascendente y descendente posee dos pulsantes que sirven para subir y bajar el conteo Device 16F870Dim vec[10] As Byte Dim pos As ByteTRISA = %00000011 TRISB = 0

CMCON=7vec=0PORTB=64

inicio: If PORTA.0=0 Then vec=vec+1 LookUp vec,[0,191,134,219,207,230,237,253,135,255,239],num PORTB=num If vec>=10 Then vec=0 EndIf pause 200 EndIf If PORTA.1=0 Then vec=vec-1 LookUp vec,[0,191,134,219,207,230,237,253,135,255,239],num PORTB=num If vec<=1 Then vec=11 EndIf pause 200 EndIfGoTo inicioEnd

5-ACTIVANDO UN DISPLAY , DE 2 DIGITOS

RA0/AN02

RA1/AN13

RA2/AN2/VREF-4

RA4/T0CKI6

RA5/AN47

OSC1/CLKIN9

OSC2/CLKOUT10

RC1/T1OSI 12

RC2/CCP1 13

RC3 14

RB7/PGD 28RB6/PGC 27RB5 26RB4 25RB3/PGM 24RB2 23RB1 22RB0/INT 21

RC7/RX/DT 18RC6/TX/CK 17RC5 16RC4 15

RA3/AN3/VREF+5

RC0/T1OSO/T1CKI 11

MCLR/Vpp/THV1

U1

PIC16F870

A7

B1

C2

D6

LT3

BI4

LE/STB5

QA 13

QB 12

QC 11

QD 10

QE 9

QF 15

QG 14

U2

4511

1B1

2B2

3B3

4B4

5B5

6B6

7B7

8B8

1C 18

2C 17

3C 16

4C 15

5C 14

6C 13

7C 12

8C 11

COM 10U3

ULN2803

Page 20: PROTON IDE - sd65623017f9d6b92.jimcontent.comsd65623017f9d6b92.jimcontent.com/download/version/1…  · Web viewGRENELECTRONIC. DESARROLLO CON MICROCONTROLADORES PIC. Índice. Introducción.

'El codigo, esta formado por dos bucles, el primero que es de donde a donde va el contador (0-99) y el segundo bucle es el tiempo que quieres que permanesca visualizado el valor en el display, utilizo la funcion DIG es para tomar el digito correspondiente, y le sumo 16 ó 32 para activar el display para formar el número, es importante destcar que en este circuito se trabaja con el 4511 un decoder binario decimal.

Device = 16F870Xtal = 20Dim i As ByteDim j As ByteDim unidad As ByteDim decena As ByteAll_Digital = trueTRISB = 0TRISA = 1xx:If PORTA.0 = 1 Then lodIf PORTA.0 = 0 Then xxGoTo xxlod:For i=0 To 99 For j=0 To 99unidad = i Dig 0PORTB = unidad + 16DelayMS 5decena = i Dig 1PORTB= decena + 32DelayMS 5Next jNext iGoTo xxEnd

Actividades de programación III1-ACTIVE UN CONTADOR DE 0 A 9999 CON LAS MISMAS PROPIEDADES DEL 0 A 99

Page 21: PROTON IDE - sd65623017f9d6b92.jimcontent.comsd65623017f9d6b92.jimcontent.com/download/version/1…  · Web viewGRENELECTRONIC. DESARROLLO CON MICROCONTROLADORES PIC. Índice. Introducción.

RA0/AN02

RA1/AN13

RA2/AN2/VREF-4

RA4/T0CKI6

RA5/AN47

OSC1/CLKIN9

OSC2/CLKOUT10

RC1/T1OSI 12

RC2/CCP1 13

RC3 14

RB7/PGD 28RB6/PGC 27

RB5 26RB4 25

RB3/PGM 24RB2 23RB1 22RB0/INT 21

RC7/RX/DT 18RC6/TX/CK 17RC5 16RC4 15

RA3/AN3/VREF+5

RC0/T1OSO/T1CKI 11

MCLR/Vpp/THV1

U1

PIC16F870

A7

B1

C2

D6

LT3

BI4

LE/STB5

QA 13

QB 12

QC 11

QD 10

QE 9

QF 15

QG 14

U2

4511

1B1

2B2

3B3

4B4

5B5

6B6

7B7

8B8

1C 18

2C 17

3C 16

4C 15

5C 14

6C 13

7C 12

8C 11

COM 10U3

ULN2803

2-ACTIVE UN TABLERO DE BASQUEtBOL

Programación VI

CONFIGURANDO UN LCD

Device 16F870Xtal 20‘LCDCO VAR Byte Declare LCD_Type = 0

RA0/AN02

RA1/AN13

RA2/AN2/VREF-4

RA4/T0CKI6

RA5/AN47

OSC1/CLKIN9

OSC2/CLKOUT10

RC1/T1OSI 12

RC2/CCP1 13

RC3 14

RB7/PGD 28RB6/PGC 27RB5 26RB4 25RB3/PGM 24RB2 23RB1 22RB0/INT 21

RC7/RX/DT 18RC6/TX/CK 17RC5 16RC4 15

RA3/AN3/VREF+5

RC0/T1OSO/T1CKI 11

MCLR/Vpp/THV1

U1

PIC16F870

D7

14D

613

D5

12D

411

D3

10D

29

D1

8D

07

E6

RW5

RS

4

VSS

1

VDD

2

VEE

3

LCD116_X_2_LCD

Page 22: PROTON IDE - sd65623017f9d6b92.jimcontent.comsd65623017f9d6b92.jimcontent.com/download/version/1…  · Web viewGRENELECTRONIC. DESARROLLO CON MICROCONTROLADORES PIC. Índice. Introducción.

Declare LCD_DTPin = PORTC.0 Declare LCD_ENPin = PORTC.5Declare LCD_RSPin = PORTC.4Declare LCD_Interface = 4Declare LCD_Lines = 2All_Digital= true D:Print At 1,1, " ACTIVAR ESTACION "DelayMS 5000Print At 2,2, " ACTIVAR BOMBA 1 "DelayMS 5000GoTo D

CONFIGURANDO un Lm35

El LM35 es un sensor de temperatura con una precisión calibrada de 1ºC y un rango que abarca desde -55º a +150ºC.El sensor se presenta en diferentes encapsulados pero el mas común es el to-92 3 patas, dos de ellas para alimentarlo y la tercera nos entrega un valor de tensión proporcional a la temperatura medida por el dispositivo. Con el LM35 sobre la mesa las patillas hacia nosotros y las letras del encapsulado hacia arriba tenemos que de izquierda a derecha los pines son: VCC - Vout - GND. La salida es lineal y equivale a 10mV/ºC por lo tanto:+1500mV = 150ºC+250mV = 25ºC-550mV = -55ºC

Device 16F877ADeclare XTAL 20

Declare LCD_TYPE 0 ' Tipo LCD Alpha numéricoDeclare LCD_DTPIN PORTB.4 ' The control bits B4,B5,B6,B7Declare LCD_RSPIN PORTB.2 ' RS pin on B2Declare LCD_ENPIN PORTB.3 ' E pin on B3Declare LCD_INTERFACE 4 ' Interface method is 4 bitDim ADC_Result As FloatDim Temp_Float As FloatADCON1 = %10000000 ' Set all to analogue inputs (PORTA)TRISA = $FF ' Declare porta as all inputsDelayMS 150Cls

Main:

ADC_Result = ADIn 0 Temp_Float = ADC_Result * 5000 / 1023 ' to reduce decimal errorPrint At 1,1, DEC1 Temp_Float , 0, "C "

Return

USANDO COUNTER: CONTEO = COUNTER Pin, 100 Cuente el número de impulsos que aparecen en el pin durante el período, y guardar el resultado en la variable

1. DESARROLLE UN CONTADOR Y REGISTRE LOS RESULTADOS EN UN LCD

En electrónica digital, Un contador (counter en inglés) es un circuito secuencial construido a partir de biestables y puertas lógicas capaz de realizar el cómputo de los impulsos que recibe en la entrada destinada a tal efecto, almacenar datos o actuar como divisor de frecuencia. Habitualmente, el

RA0/AN02

RA1/AN13

RA2/AN2/VREF-4

RA4/T0CKI6

RA5/AN47

OSC1/CLKIN9

OSC2/CLKOUT10

RC1/T1OSI 12

RC2/CCP1 13

RC3 14

RB7/PGD 28RB6/PGC 27RB5 26RB4 25RB3/PGM 24RB2 23RB1 22RB0/INT 21

RC7/RX/DT 18RC6/TX/CK 17

RC5 16RC4 15

RA3/AN3/VREF+5

RC0/T1OSO/T1CKI 11

MCLR/Vpp/THV1

U1

PIC16F870

D7

14D

613

D5

12D

411

D3

10D

29

D1

8D

07

E6

RW

5R

S4

VS

S1

VD

D2

VE

E3

LCD116_X_2_LCD

R110k

Page 23: PROTON IDE - sd65623017f9d6b92.jimcontent.comsd65623017f9d6b92.jimcontent.com/download/version/1…  · Web viewGRENELECTRONIC. DESARROLLO CON MICROCONTROLADORES PIC. Índice. Introducción.

RA0/AN02

RA1/AN13

RA2/AN2/VREF-4

RA4/T0CKI6

RA5/AN47

OSC1/CLKIN9

OSC2/CLKOUT10

RC1/T1OSI 12

RC2/CCP1 13

RC3 14

RB7/PGD 28RB6/PGC 27RB5 26RB4 25RB3/PGM 24

RB2 23RB1 22

RB0/INT 21

RC7/RX/DT 18RC6/TX/CK 17

RC5 16RC4 15

RA3/AN3/VREF+5

RC0/T1OSO/T1CKI 11

MCLR/Vpp/THV1

U1

PIC16F870

D7

14D

613

D5

12D

411

D3

10D

29

D1

8D

07

E6

RW5

RS

4

VSS

1

VDD

2

VEE

3

LCD116_X_2_LCD

R110k

cómputo se realiza en un código binario, que con frecuencia será el binario natural o el BCD natural (contador de décadas).

2. DESARROLLE UN FRECUENCIMETRO Y REGISTRE LOS RESULTADOS EN UN LCD

Un frecuencímetro es un instrumento que sirve para medir la frecuencia, contando el número de repeticiones de una onda en un intervalo de tiempo, mediante el uso de un contador que acumula el número de periodos. Dado que la frecuencia se define como el número de eventos de una clase particular ocurridos en un período, es generalmente sencilla su medida.

2. DESARROLLE UN ODOMETRO Y REGISTRE LOS RESULTADOS EN UN LCD.

Se llama así al aparato que utilizamos para medir la distancia recorrida entre dos puntos, o el camino recorrido entre dos puntos.Los odómetros llevan mucho tiempo de existir en su forma mecánica y recientemente, los dispositivos digitales han empezado a reemplazarlos.Existen odómetros que miden la distancia en millas así como también los hay para medir kilómetros y metros, algunos tienen la capacidad de borrarse (parciales) y ponerse en cero mientras que otros son permanentes, los automóviles generalmente traen un odómetro parcial y uno permanente.

1. DESARROLLE UN TACOMETRO Y REGISTRE LOS RESULTADOS EN UN LCD.

Un tacómetro (Del griego, τάχος tachos = velocidad y μέτρον metron = medida) es un dispositivo para medir la velocidad de giro de un eje, normalmente la velocidad de giro del motor, se mide en Revoluciones por minuto (RPM).

RA0/AN02

RA1/AN13

RA2/AN2/VREF-4

RA4/T0CKI6

RA5/AN47

OSC1/CLKIN9

OSC2/CLKOUT10

RC1/T1OSI 12

RC2/CCP1 13

RC3 14

RB7/PGD 28RB6/PGC 27RB5 26RB4 25RB3/PGM 24RB2 23RB1 22RB0/INT 21

RC7/RX/DT 18RC6/TX/CK 17RC5 16RC4 15

RA3/AN3/VREF+5

RC0/T1OSO/T1CKI 11

MCLR/Vpp/THV1

U1

PIC16F870

D7

14D

613

D5

12D

411

D3

10D

29

D1

8D

07

E6

RW

5R

S4

VS

S1

VD

D2

VE

E3

LCD116_X_2_LCD

R110k

PERIMETRO

P= PI * RAIZ 2

2

RA0/AN02

RA1/AN13

RA2/AN2/VREF-4

RA4/T0CKI6

RA5/AN47

OSC1/CLKIN9

OSC2/CLKOUT10

RC1/T1OSI 12

RC2/CCP1 13

RC3 14

RB7/PGD 28RB6/PGC 27RB5 26RB4 25RB3/PGM 24RB2 23RB1 22RB0/INT 21

RC7/RX/DT 18RC6/TX/CK 17RC5 16RC4 15

RA3/AN3/VREF+5

RC0/T1OSO/T1CKI 11

MCLR/Vpp/THV1

U1

PIC16F870

D714

D613

D512

D411

D310

D29

D18

D07

E6

RW5

RS4

VSS

1

VDD

2

VEE

3

LCD116_X_2_LCD

R110k

Page 24: PROTON IDE - sd65623017f9d6b92.jimcontent.comsd65623017f9d6b92.jimcontent.com/download/version/1…  · Web viewGRENELECTRONIC. DESARROLLO CON MICROCONTROLADORES PIC. Índice. Introducción.

Programación VROBOTICA MOVIL

Motor servo

Page 25: PROTON IDE - sd65623017f9d6b92.jimcontent.comsd65623017f9d6b92.jimcontent.com/download/version/1…  · Web viewGRENELECTRONIC. DESARROLLO CON MICROCONTROLADORES PIC. Índice. Introducción.

Como se conoce, la posición de un servo motor está determinada por el ancho del pulso que se aplica a su pin de control (para el caso de los motores HS-311 el cable amarillo). En el caso del motor HS-311, la posición de 0º se consigue con un pulso de 0.5 ms, la posición central de 90º con un pulso de 1.5 ms y el extremo de 180º con un pulso de 2.5 ms.Para controlar la posición del motor usaré la función pulsout, cuya sintaxis es: Pulsout pin, ancho_pulso

La cual genera un ancho de pulso determinado por su segundo parámetro de entrada en el pin determinado. Por ejemplo:

PulsOut PORTB.0, 150

Generará un pulso de ancho 1.5 ms en el pin 0 de puerto B. Ahora bien, la frecuencia de envío de este pulso será generada por un ciclo for-next y la función pause.

El ejemplo siguiente posicionará el motor en 90º:

Dim XX As ByteTRISB=0PORTB=0For XX=1 To 25 Step 1PulsOut PORTB.0, 150DelayMS 10Next

Page 26: PROTON IDE - sd65623017f9d6b92.jimcontent.comsd65623017f9d6b92.jimcontent.com/download/version/1…  · Web viewGRENELECTRONIC. DESARROLLO CON MICROCONTROLADORES PIC. Índice. Introducción.

Es importante inicializar a 0 el pin por el cual se sacará el pulso, debido a que la función pulsout invierte el estado del pin.La resolución de Pulsout depende de la frecuencia del oscilador. Si un oscilador de 4 MHz es utilizada, el período del pulso generado estará en incrementos de 10us. Si un oscilador de 20 MHz se utiliza, Periodo tendrá una resolución 2US. Declarar un valor XTAL no tiene efecto sobre Pulsout. La resolución siempre cambia con la velocidad del oscilador real.Para el caso del motor HS-311 es necesario cambiar la configuración del motor para la simulación como muestra la siguiente figura:

Vamos a programar una secuencia que mantenga al motor en continuo movimiento de un extremo al otro. Aquí entra el ciclo for-next.

Device 16F628AXTAL 20Dim m As ByteDim n As ByteTRISB=0PORTB=0For m=50 To 250 Step 1PulsOut PORTB.0,mDelayMS 10NextFor m=250 To 50 Step -1PulsOut PORTB.0,mDelayMS 10Next

Vamos a ir un poco más adelante, y controlaremos la posición del motor con dos pulsadores: uno para girar el motor a una posición y el otro para llevarlo a la posición contraria.

Device 16F628AXTAL 20CMCON=7Dim control As PORTB.1Dim incrementar As PORTA.0 'Pin de pulsador para incremento Dim disminuir As PORTA.1 'Pin de pulsador para decrementoDim X As Byte 'x de tamaño 256Dim r As Byte 'y de tamaño 256TRISB=0PORTB=0X=150 ; 'Posición inicial del servo motorinicio:PulsOut control,X 'Envía x por el pin portb.1 (control)GoSub timer 'Subrutina de chequeo del pulsadorGoTo iniciotimer:If incrementar=0 Then GoSub mas 'Si el p esta a tierra, ir a subr "mas"If disminuir=0 Then GoSub menos 'Si el p esta a tierra, ir a subr "menos"Returnmas: 'Subrutina de aumento de posiciónDelayMS 10X=x+1 ; 'Aumento del pulso de salidaIf X>200 Then X=200 'Determina un valor máximo de 200Returnmenos: 'Subrutina de disminución de posiciónDelayMS 10X=x-1 'Disminución del pulso de salidaIf X<100 Then X=100 'Determina un valor mínimo de 100ReturnEnd

USANDO SERVO Pin, VALOR ROTACION

DEVICE 16F628          ' PICmicro  DIM Pos as WORD        ' Servo Posición  SYMBOL Pin = PORTA.3   ' Alias servo pin  ALL_DIGITAL = ON       ' PORTA TODOS EN FORMA digital

Page 27: PROTON IDE - sd65623017f9d6b92.jimcontent.comsd65623017f9d6b92.jimcontent.com/download/version/1…  · Web viewGRENELECTRONIC. DESARROLLO CON MICROCONTROLADORES PIC. Índice. Introducción.

 CLS                    ' LIMPIAR LCD  Pos = 1500             ' Centro servo  PORTA = 0              ' PORTA low  TRISA = %00000111      ' setup porta entrada 0,1 y 2  MXX:   IF PORTA.0 = 0 AND Pos < 3000 Then Inc Pos ' Mover servo izquierda  IF PORTA.1 = 0 Then Pos = 1500             ' Centro servo  IF PORTA.2 = 0 AND Pos > 0 Then Dec Pos    ' Mover servo derecha SERVO Pin , Pos  DELAYMS 5             ' Servo update rate  PRINT AT 1 , 1 , "Posición=" , Dec Pos , " "  GOTO MXX

Motor Paso a Paso

El El motor de paso a paso es un dispositivo electromecánico que convierte una serie de impulsos eléctricos en desplazamientos angulares discretos , lo que significa es que es capaz de avanzar una serie de grados (paso) dependiendo de sus entradas de control. Este motor presenta las ventajas de tener alta precisión y repetibilidad en cuanto al posicionamiento. Entre sus principales aplicaciones destacan como motor de frecuencia variable, motor de corriente continua sin escobillas, servomotores y motores controlados digitalmente.

Existen 3 tipos fundamentales de motores paso a paso: el motor de reluctancia variable, el motor de magnetización permanente, y el motor paso a paso híbrido.

Page 28: PROTON IDE - sd65623017f9d6b92.jimcontent.comsd65623017f9d6b92.jimcontent.com/download/version/1…  · Web viewGRENELECTRONIC. DESARROLLO CON MICROCONTROLADORES PIC. Índice. Introducción.

Programación VIRobótica sensorial

El sensor Pir detector de movimientos por infrarrojos resulta muy adecuado para su empleo en robots, gracias a su pequeño tamaño y bajo consumo. El sensor incluye una lente tipo fresnel de plastico que le proporciona un alcance de 5 metros y un angulo de detección de 60 º. La señal de salida es compatible TTL y la alimentación es de 5V con un consumo de tan solo 350 uA mientras esta en reposo. Sus reducidas dimensiones de solo 25 x 35 x 18 mm hacen posible su utilización en todo tipo de robots y dispositivos sensores.

SRF04 es un sensor de distancias por ultrasonidos capaz de detectar objetos y calcular la distancia a la que se encuentra en un rango de 3 a 300 cm. El sensor srf04 funciona por ultrasonidos y contiene toda la electrónica encargada de hacer la medición

Interruptor final de carreras sin palanca muy útil como detector de obstáculos. Los finales de carrera son interruptores muy útiles para detectar posiciones de palancas, objetos, piezas motorizadas, etc.. También se convierten en la ultima línea de defensa en los robots para detectar obstáculos.

TSOP4838 es un sensor de infrarrojos empleado para recibir las señales infrarrojas de los mandos a distancia empleados normalmente en los electrodomésticos. El sensor tiene un su interior un circuito amplificador y un oscilador a 38 Khz que permiten la recepción de las señales incluso en presencia de fuentes de luz intensas.

Sensor de distancia por infrarrojo para robot con un alcance máximo de 15 cm. Este sensor es muy simple y funciona por reflexión detectando la presencia o no de objetos, pero sin proporcionar un valor

numérico de la misma.

CMUcam3 es la ultima versión del popular sistema de visión para robots compuesto por una cámara en formato digital y un sistema de desarrollo de

Page 29: PROTON IDE - sd65623017f9d6b92.jimcontent.comsd65623017f9d6b92.jimcontent.com/download/version/1…  · Web viewGRENELECTRONIC. DESARROLLO CON MICROCONTROLADORES PIC. Índice. Introducción.

código abierto. Con estos dos componentes se obtiene un sensor de visión de bajo coste que es totalmente programable por lo que se puede utilizar en múltiples aplicaciones incluyendo reconocimiento de formas, detección de colores, seguimiento de objetos en movimiento

Actividades de programación VI

Programación VII

Configuración de una interfase grafica en Visual 2008

SERIALPORT1 :ABRE LA CONFIGURACION PARA EL PUERTO SERIAL

Page 30: PROTON IDE - sd65623017f9d6b92.jimcontent.comsd65623017f9d6b92.jimcontent.com/download/version/1…  · Web viewGRENELECTRONIC. DESARROLLO CON MICROCONTROLADORES PIC. Índice. Introducción.

IDEA PRINCIPAL, SE CONFIGURA UNA INTERFASE GRAFICA CON 4 BOTONES, QUE TRANSMITIRAN UN CODIGO EN HEXA. EN ESTE CASO SE TRANSMITEN LETRAS.

NUESTRO RECEPTOR, (EL MICRO) DECODIFICA CADA ELEMENTO Y BUSCARA LA INSTRUCION DESEADA.

EN ESTE CASO SE QUIERE COMANDAR ELECTROVALVULAS DE RIEGO POR ZONAS.

CODIGO EN VISUAL BASIC

Imports System.IO.Ports

Public Class Form_Principal Public Sub New() InitializeComponent() ' Abrir puerto mientra 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 Private Sub Button_g_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_t.Click Dim mBuffer As Byte() = New Byte(0) {} mBuffer(0) = &H67 'ASCII letra "g". SerialPort1.Write(mBuffer, 0, mBuffer.Length) End Sub

Private Sub Button_b_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_b.Click Dim mBuffer As Byte() = New Byte(0) {} mBuffer(0) = &H62 'ASCII letra "b". SerialPort1.Write(mBuffer, 0, mBuffer.Length) End Sub

Private Sub Button_a_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_a.Click Dim mBuffer As Byte() = New Byte(0) {} mBuffer(0) = &H61 'ASCII letra "a" SerialPort1.Write(mBuffer, 0, mBuffer.Length) End Sub

Private Sub Button_l_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_l.Click Dim mBuffer As Byte() = New Byte(0) {} mBuffer(0) = &H6C 'ASCII letra "l". SerialPort1.Write(mBuffer, 0, mBuffer.Length) End Sub

Private Sub Button_Espacio_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Espacio.Click Dim mBuffer As Byte() = New Byte(0) {} mBuffer(0) = &H20 'ASCII letra "Espacio". SerialPort1.Write(mBuffer, 0, mBuffer.Length) End Sub

Private Sub Form_Principal_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint

End SubEnd Class

Page 31: PROTON IDE - sd65623017f9d6b92.jimcontent.comsd65623017f9d6b92.jimcontent.com/download/version/1…  · Web viewGRENELECTRONIC. DESARROLLO CON MICROCONTROLADORES PIC. Índice. Introducción.

CODIGO PROTONInclude "modedefs.bas"Device 16F877AXtal 20Serial_Baud = 9600Rsout_Pin = PORTC.6Rsout_Mode = TRUERsout_Pace = 1Rsin_Pin = PORTC.7Rsin_Mode = TRUEHserial_Baud = 9600 Hserial_RCSTA = %10010000 Hserial_TXSTA = %00100100 Hserial_Clear = OnPORTB=0All_Digital=trueDIM valor AS Byteinicio: HSerIn 1000, inicio, [valor]If valor = "a" Then PORTB.1=1If valor = "g" Then PORTB.2=1If valor = "b" Then PORTB.3=1If valor = "l" Then PORTB.4=1Clear valorGoTo inicio

Comandos y Directivas  ADIN Leer análogo a bordo de un convertidor digital.  ASM-ENDASM Inserte el código de la sección de idiomas.  BOX dibujar un cuadrado en un LCD gráfico.  BRANCH computarizada (equivalente a ON GOTO ..).  BRANCHL se ramifican de la página (Long Branch).  BREAK Salir de un FOR-NEXT, REPEAT-UNTIL, o mientras WEND antes de tiempo.  BSTART Enviar una condición START para el bus I2C.  BStop Enviar un estado de STOP al bus I2C.  BRESTART Enviar una condición RESTART "para el bus I2C.  Busack Enviar una condición RECONOCEN al bus I2C.  Busin Lee bytes de un dispositivo I2C.  BUSOUT Escribe bytes a un dispositivo I2C.  BUTTÓN Detecta rebote al pulsar una tecla.  Call Subrutina en lenguaje ensamblador.  CDATA Definir inicial contenido de la memoria.  CIRClE Dibuje un círculo en un LCD gráfico.  CLEAR Coloque una variable o en un estado de bajo,o borrar todas las áreas de RAM.  CLEARBIT Borrar un poco de un puerto o variable, con un índice variable.  CLS Borrar la pantalla LCD.  CONFIG Set o configuraciones de programación Perdí mi fusible.

Page 32: PROTON IDE - sd65623017f9d6b92.jimcontent.comsd65623017f9d6b92.jimcontent.com/download/version/1…  · Web viewGRENELECTRONIC. DESARROLLO CON MICROCONTROLADORES PIC. Índice. Introducción.

 COUNTER Cuente el número de impulsos que ocurren en un PIN.  CREAD Leer datos de la memoria de código.  CURSOR Sitúe el cursor en la pantalla LCD.  CWRITE Escribir datos en código de la memoria.  DATA Definir inicio del contenido en la memoria.  DEC Decremento de una variable.  DECLARE Ajuste los parámetros de la colección de rutina.  DELAYMS PAUSA (resolución 1mSec).  DELAYUS PAUSA (resolución 1uSec).  DEVICE Elija el tipo de PIC micro.  DIG Devuelve el valor de un dígito decimal.  DIM Crear una variable.  DISABLE DISABLE interrupciones de software que estaban habilitados anteriormente.  DTMFOUT Producir una nota DTMF Touch Tone para telefonia.  Edata Definir inicial contenido de EEPROM de a bordo.  ENABLE interrupciones de software para desconectar anteriormente.  END detener la ejecución del programa BASIC.  EREAD Leer un valor de EEPROM de a bordo.  EWRITE Escriba un valor en la memoria EEPROM de a bordo.  FOR..TO.NEXT..STEP ejecutar instrucciones.  FREQOUT Generar uno o dos tonos, de distinta o las mismas frecuencias.  GETBIT Examine un poco de un puerto o variable, utilizando un índice variable.  GOSUB llamar a una subrutina BASIC en una etiqueta especificada.  GOTO Continuar la ejecución en una etiqueta especificada.  HBSTART Enviar una condición START para el bus I2C con el módulo MSSP.  HBSTOP Enviar un estado de STOP al bus I2C utilizando el módulo MSSP.  HBRESTART Enviar una condición RESTART "para el bus I2C con el módulo MSSP.  HBUSACK Enviar una condición RECONOCEN al bus I2C utilizando el módulo MSSP.  HBUSIN Leer de un dispositivo I2C con el módulo MSSP.  HBUSOUT Escriba a un dispositivo I2C con el módulo MSSP.  HIGH Hacer un PIN o un puerto de alto.  HPWM generar una señal PWM utilizando el módulo CCP.  HRSIN recibir datos del puerto serie de dispositivos que contienen un USART.  HRSOUT Transmitir datos desde el puerto serie de dispositivos que contienen un USART.  HSERIN recibir datos del puerto serie de dispositivos que contienen un USART.  HSEROUT Transmitir datos desde el puerto serie de dispositivos que contienen un USART.  HRSIN2 Igual que HRSIN pero utilizando una segunda USART si está disponible.  HRSOUT2 Igual que HRSOUT pero utilizando una segunda USART si está disponible.  HSERIN2 Igual que HSERIN pero utilizando una segunda USART si está disponible.  HSEROUT2 Igual que HSEROUT pero utilizando una segunda USART si está disponible.  IF .. THEN .. ELSEIF .. ELSE .. ENDIF condicional ejecutar instrucciones.  INC Incremento de una variable.  INCLUDE carga un fichero BASIC en el código fuente.  INKEY escaneo de un teclado.  INPUT Hacer un pin de entrada.  [LET] Asignar el resultado de una expresión a una variable. Facultativo de mando  LCDREAD Leer un solo byte de un LCD gráfico.  LCDWRITE Escribe bytes a un LCD gráfico.  LEFT$ Extracto n cantidad de caracteres de la izquierda de una cadena LDATA Place información en la memoria de código. Para el acceso de los LREAD.  LINE Dibuja una línea en cualquier dirección en un LCD gráfico.  LineTo DIBUJA línea recta en un LCD gráfico.  LOADBIT establecer o borrar un bit de un puerto o variable, con un índice variable.  Lookdown Buscar una tabla lookdown, constante de un valor.  LOOKDOWNL Buscar lookdown constante o variable de mesa para un valor.  LOOKUP Fetch un valor constante de una tabla de búsqueda.  LOOKUPL Fetch un valor constante o variable de tabla de búsqueda.  LOW Hacer un pin o un puerto de bajo.  LREAD Leer un valor de una tabla y colocar en LDATA variable.  MID$ Extracto n cantidad de caracteres de una cadena comenzando desde la izquierda.

 ON_INTERRUPT Ejecutar una subrutina o ensamblador usando una interrupción de software.

 ON_INTERRUPT ASSEMBLER Ejecutar una subrutina en un harware de interrupción.  ON_LOW_INTERRUPT ASSEMBLER Ejecutar una subrutina cuando existe baja prioridad.  ON GOSUB llamar a una subrutina basada en un valor de índice. 16-bits.  ON GOTO Saltar a una dirección en la memoria de código basado en un valor de índice.  ON GOTOL Saltar a una dirección en memoria de código basado en un valor de índice.  OUTPUT Hacer un alfiler una salida.  OREAD Recibir datos de un dispositivo que utiliza el protocolo de Dallas 1-Wire.  OWRITE Enviar datos a un dispositivo mediante el protocolo de Dallas 1-Wire.  ORG Set Programa Origen.  PEEK Leer un byte de un registro o variable. NO USAR  PIXEL Leer un solo píxel de un LCD gráfico.  PLOT Establecer un solo píxel de un LCD gráfico.  POKE Escribe un byte en el registro o variable. NO USAR  POT Leer un potenciómetro en el pin especificado.

Page 33: PROTON IDE - sd65623017f9d6b92.jimcontent.comsd65623017f9d6b92.jimcontent.com/download/version/1…  · Web viewGRENELECTRONIC. DESARROLLO CON MICROCONTROLADORES PIC. Índice. Introducción.

 PRINT una representación gráfica caracteres en una pantalla LCD.  PULSIN Mida el ancho de pulso de un alfiler.  PULSOUT Generar un pulso a un alfiler.  PWM Salida un tren de pulsos de ancho de pulso modulado a la clavija.  RANDOM Genera un número pseudo-aleatorios.  RCIN Medida un ancho de pulso de un alfiler.  READ Leer un valor de la memoria.  REM Añadir un comentario al código fuente.  REPEAT.UNTIL ejecutar un bloque de instrucciones hasta que una condición es verdadera.  RESTORE Ajuste la posición de datos para leer.  RESUME Vuelva a habilitar interrupciones de software y retorno.  RETURN Continuar en la siguiente declaración en los últimos GOSUB.  RIGHT$ cantidad n Extracto de caracteres desde la derecha de una cadena.  RSIN serie asíncronos de entrada de un pasador fijo y velocidad de transmisión.  RSOUT serie asíncronos de salida a un pasador fijo y velocidad de transmisión.  SEED el generador de números aleatorios, para obtener un resultado más al azar.  SELEC CASE .ENDSELECT condicional ejecutar bloques de código.  SERIN Reciba asíncrono de datos en serie (es decir, datos RS232).  SEROUT transmisión asincrónica de datos en serie (es decir, datos RS232).  SERVO control de un motor servo.  SET Coloque un poco variable o en un estado alto.  SET_OSCCAL Calibrar el oscilador interno se encuentra en algunos dispositivos PICmicro.  SETBIT Establecer un poco de un puerto o variable, con un índice variable.  SHIN serie síncrono de entrada.  SHOUT salida serie síncrona.  SLEEP Apague el procesador por un período de tiempo.  SNOOZE Apague el procesador por un período breve de tiempo.  SONIDO Generar un tono o ruido blanco en un pin-especificado.  SOUND2 Generar 2 tonos de 2 pines separados.  STOP Para la ejecución del programa.  STR carga una matriz de bytes con valores.  STRN Crear una matriz de bytes NULL terminado.  STR$ Convertir el contenido de una variable a una cadena terminada NULL.  Swap Cambio de valores de dos variables.  SYMBOL Crear un alias a un puerto constante, pin, o regístro.  TOGGLE Invertir el estado de bits de un puerto.  Tolower Convertir los caracteres de una cadena a minúsculas.  ToUpper Convertir los caracteres de una cadena en MAYÚSCULAS. UNPLOT Borrar un solo píxel de un LCD gráfico.  USBINIT Inicializar la interrupción USB en los dispositivos USB.  USBIN Recibir datos a través de un extremo USB en los dispositivos USB.  USBOUT transmisión de datos vía USB en un extremo de los dispositivos USB.  VAL Convertir una cadena terminada NULL en un valor entero.  VarPtr Busque la dirección de una variable.  WHILE.WEND ejecutar instrucciones mientras la condición es verdadera.  XIN recibir datos mediante el protocolo X10.  XOUT transmisión de datos mediante el protocolo X10