Arce

download Arce

If you can't read please download the document

Transcript of Arce

  • Aprendizaje de la Electrnica a travs de la Robtica - ARCE -

    Microcontroladores IES Joan Mir Pgina 1

    CICLO FORMATIVO DE GRADO SUPERIOR DE DESARROLLO DE PRODUCTOS ELECTRNICOS

    Mdulos: Lgica Digital y Microprogramable. Tcnicas de Programacin. Electrnica Analgica. Electrnica de Sistemas. Desarrollo y Construccin de Prototipos Electrnicos. Mantenimiento de Equipos Electrnicos. Desarrollo de Proyectos de Productos Electrnicos

    CICLO FORMATIVO DE GRADO MEDIO DE ELECTRNICA DE CONSUMO

    Mdulo:

    Electrnica Digital y Microprogramable.

    Profesores: Pedro Alonso Sanz.

    Juan DonGil Garca Flix Jimnez Jimnez. Juan Carlos Vzquez Molin Miguel ngel Garca Marcos. Alfonso Garca Gallego.

    Instituto: IES Joan Mir Localidad: San Sebastian de los Reyes

    Periodo: 2009-2011

    Proyecto: Aprendizaje de la Electrnica a travs de la Robtica

  • Aprendizaje de la Electrnica a travs de la Robtica - ARCE -

    Microcontroladores IES Joan Mir Pgina 2

    ndice Pgina

    1.- Sistemas Microcontrolados. ................................................................................................. 6

    2.- Diagrama en Bloques de un sistema Microprocesado. Estructura Von Neumann. ........ 6

    2.1.- Microprocesador (uP). .................................................................................................................... 6

    2.2.- Buses. .............................................................................................................................................. 7

    2.2.1.- Bus de Direcciones. .................................................................................................................................. 7

    2.2.2.- Bus de Datos. ............................................................................................................................................ 7

    2.2.3.- Bus de Control. ......................................................................................................................................... 7

    2.2.- Memorias. ........................................................................................................................................ 7

    2.2.1.- ROM. .......................................................................................................................................................... 7

    2.2.2.- RAM............................................................................................................................................................ 8

    2.3.- Interfaces. ........................................................................................................................................ 9

    2.3.1.- Interface Serie. .......................................................................................................................................... 9

    2.3.2.- Interface Paralelo. ................................................................................................................................... 11

    2.4.- Decodificador de Direcciones. .................................................................................................... 12

    2.4.1.- Mapa de Memoria. ................................................................................................................................... 13

    3.- Microcontroladores. ............................................................................................................. 14

    3.1.- Microcontroladores PIC. .............................................................................................................. 14

    3.1.1.- ....................................................................................... 14

    3.1.2.- ........................................................................................................... 14

    3.1.3.- Instrucciones RISC. ................................................................................................................................ 14

    3.1.4.- Estructura Ortogonal. ............................................................................................................................. 14

    3.2.- Microcontrolador PIC 16F877A. ................................................................................................... 15

    3.2.1.- Diagrama en Bloques. ............................................................................................................................. 16

    3.2.2.- Mapa de Memoria. ................................................................................................................................... 17

    3.2.2.1.- Memoria de Programa. ................................................................................................................................................. 17

    3.2.2.2.- Memoria de Datos. ........................................................................................................................................................ 18

    3.2.3.- Ensamblador. .......................................................................................................................................... 18

    3.2.3.1.- Lenguaje Mquina. ....................................................................................................................................................... 18

    3.2.3.2- Lenguaje Ensamblador. ................................................................................................................................................ 19

    3.2.3.3.- Programa Ensamblador. .............................................................................................................................................. 19

    3.2.4.- Set de Instrucciones. .............................................................................................................................. 20

    4.- Herramientas de Desarrollo. ............................................................................................... 21

    4.1.- Ensambladores y Compiladores. ................................................................................................ 21

    4.2.- Simuladores. ................................................................................................................................. 21

    4.2.1.- MPLAB. .................................................................................................................................................... 22

    4.2.2.- PROTEUS VSM. ....................................................................................................................................... 22

    4.3.- Emuladores. .................................................................................................................................. 23

    4.4.- Grabadores o programadores. .................................................................................................... 23

    5.- Sistema de Desarrollo >. ............................................................................. 24

    5.1.- Fabricacin del Monibot. .............................................................................................................. 24

    5.1.1.- Placas y Esquemas. ................................................................................................................................ 24

    5.1.2.- Listado de Componentes. ....................................................................................................................... 24

    5.1.3.- Estructura. ............................................................................................................................................... 24

    5.2.- Herramientas de desarrollo utilizadas. ....................................................................................... 24

  • Aprendizaje de la Electrnica a travs de la Robtica - ARCE -

    Microcontroladores IES Joan Mir Pgina 3

    5.3.- Recursos bibliogrficos. .............................................................................................................. 24

    5.3.- Simulador Monibot. ...................................................................................................................... 25

    5.3.1.- Visualizacin de Informacin. ................................................................................................................ 27

    5.3.1.1.- Led. ................................................................................................................................................................................. 27

    5.3.1.1.1.- Led_1.c .................................................................................................................................................................................... 27 5.3.1.1.2.- Led_2.c .................................................................................................................................................................................... 28 5.3.1.1.3.- Led_3.c .................................................................................................................................................................................... 29 5.3.1.1.4.- Led_4.c .................................................................................................................................................................................... 29

    5.3.1.2.- Display_7Segmentos. ................................................................................................................................................. 30

    5.3.1.2.1.- Display_7Seg_1.c .................................................................................................................................................................... 31 5.3.1.2.2.- Display_7Seg_2.c .................................................................................................................................................................... 32 5.3.1.2.3.- Display_7Seg_3.c .................................................................................................................................................................... 33

    5.3.1.3.- LCD. ................................................................................................................................................................................ 34

    5.3.1.3.1.- LCD_1.c ................................................................................................................................................................................... 36 5.3.1.3.2.- LCD_2.c ................................................................................................................................................................................... 37 5.3.1.3.3.- LCD_3.c ................................................................................................................................................................................... 37 5.3.1.3.4.- LCD_4.c ................................................................................................................................................................................... 38 5.3.1.3.5.- LCD_5.c ................................................................................................................................................................................... 39 5.3.1.3.6.- LCD_6.c ................................................................................................................................................................................... 40 5.3.1.3.7.- LCD_7.c ................................................................................................................................................................................... 41

    5.3.2.- Entradas Digitales. .................................................................................................................................. 42

    5.3.2.1.- Simulador de Perifricos. ............................................................................................................................................ 42

    5.3.2.1.1.- Interruptores_Led_1.c ............................................................................................................................................................ 42 5.3.2.1.2.- Interruptores_Led_2.c ............................................................................................................................................................ 43 5.3.2.1.3.- Interruptores_DISPL_7S_1.c ................................................................................................................................................... 44 5.3.2.1.4.- Interruptores_DISPL_7S_2.c. .................................................................................................................................................. 45 5.3.2.1.5.- Pulsadores_DISPL_7S_1.c ....................................................................................................................................................... 46

    5.3.2.2.- Simulador de Perifricos y Potencia. ......................................................................................................................... 47

    5.3.2.2.1.- Interruptores_LCD_1.c ............................................................................................................................................................ 48 5.3.2.2.2.- Interruptores_LCD_2.c ............................................................................................................................................................ 49

    5.3.2.3.- Simulador de Potencia. ................................................................................................................................................ 50

    5.3.2.3.1.- Pulsadores_LCD_1.c ................................................................................................................................................................ 50

    5.3.3.- Entradas Analgicas. .............................................................................................................................. 51

    5.3.3.1.- Conversin A-D_D-A .................................................................................................................................................... 53

    5.3.3.1.1.- Conversin_A-D_A-D.c .......................................................................................................................................................... 54

    5.3.3.2.- Conversin Analgica Digital. .................................................................................................................................... 55

    5.3.3.2.1.- Conversin_A-D1.c ................................................................................................................................................................. 55 5.3.3.2.2.- Conversin_A-D2.c ................................................................................................................................................................. 56 5.3.3.2.3.- Conversin_A-D2a.c ............................................................................................................................................................... 57

    5.3.4.- Modulacin por Anchura de Pulso (PWM). ............................................................................................ 58

    5.3.4.1.- Control de Motores de Corriente Continua. .............................................................................................................. 58

    5.3.4.1.1.- Prueba_Motor_Derecho.c ...................................................................................................................................................... 60 5.3.4.1.2.- Prueba_Control_Velocidad_Motor_Derecho.c ...................................................................................................................... 61 5.3.4.1.3.- Prueba_Control_Velocidad_Motor_Derecho_f.c ................................................................................................................... 62 5.3.4.1.4.- Prueba_Control_Velocidad_Motor_Izquierdo_Derecho_f.c .................................................................................................. 64

    5.3.4.2.- Servomotores de Posicin. ......................................................................................................................................... 66

    5.3.4.2.1.- Control_2_Servo_Posicin.c ................................................................................................................................................... 67 5.3.4.2.2.- Servo_ Futaba_10bit.c ............................................................................................................................................................ 68

  • Aprendizaje de la Electrnica a travs de la Robtica - ARCE -

    Microcontroladores IES Joan Mir Pgina 4

    5.3.5.- Interrupciones Externas. ........................................................................................................................ 70

    5.3.5.1.- Interrupcin por RB0/INT. ............................................................................................................................................ 71

    5.3.5.1.1.- Interrupcin_INT_RB0.c ......................................................................................................................................................... 71 5.3.5.1.2.- Interrupcin_INT_RB0a.c ....................................................................................................................................................... 73 5.3.5.1.3.- Interrupcin_INT_RB0b.c ....................................................................................................................................................... 74

    5.3.5.2.- Interrupcin por cambio de nivel de RB4_5_6_7. ..................................................................................................... 76

    5.3.5.2.1.- Interrupcin_INT_RB4567.c ................................................................................................................................................... 76 5.3.5.2.1.- Interrupcin_INT_RB4567a.c .................................................................................................................................................. 79

    5.3.6.- Temporizadores y Contadores. (Timer 0,1 y 2). .................................................................................... 81

    5.3.6.1.- Timer 0. .......................................................................................................................................................................... 81

    5.3.6.1.1.- Timer0_Contador.c ................................................................................................................................................................. 82 5.3.6.1.2.- Timer0_temporizador_multitarea_1.c ................................................................................................................................... 84 5.3.6.1.3.- Timer0_temporizador_multitarea_2.c ................................................................................................................................... 85

    5.3.6.2.- Timer 1. .......................................................................................................................................................................... 87

    5.3.6.2.1.- Timer1_Contador.c ................................................................................................................................................................. 88 5.3.6.2.2.- Timer1_temporizador_multitarea.c ....................................................................................................................................... 89

    5.3.6.3.- Timer 2. .......................................................................................................................................................................... 91

    5.3.6.3.1.- Timer2_Seal_Cuadrada.c ...................................................................................................................................................... 92 5.3.6.3.2.- Timer2_Servos_Posicion.c ...................................................................................................................................................... 93

    5.3.7.- Transmisin Serie de Datos. USART ..................................................................................................... 96

    5.3.7.1.- Cable. ............................................................................................................................................................................. 97

    5.3.7.1.1.- Transmisin_Serie_1.c ............................................................................................................................................................ 98 5.3.7.1.2.- Recepcin_Serie_Polling.c ...................................................................................................................................................... 98 5.3.7.1.3.- Recepcin_Serie_Interrupcin.c ............................................................................................................................................. 99 5.3.7.1.4.- Transmisin_Serie_Multitarea.c .......................................................................................................................................... 101 5.3.7.1.5.- Recepcin_Serie_Interrupcin_Multitarea.c ....................................................................................................................... 102 5.3.7.1.6.- Transmisin_Serie_Multitarea_1.c ...................................................................................................................................... 104 5.3.7.1.7.- Recepcin_Serie_Interrupcin_Multitarea_1.c............................................................................................................. 106

    5.3.7.2.- Radiofrecuencia. ......................................................................................................................................................... 109

    5.3.7.2.0.- Modulacin en AM. .............................................................................................................................................................. 109 5.3.7.2.1.- Transmisin_Serie_ Radiofrecuencia_1.c...................................................................................................................... 111 5.3.7.2.2.- Transmisin_Serie_ Radiofrecuencia_2.c...................................................................................................................... 112 5.3.7.2.3.- Recepcin_Serie_Radiofrecuencia_1.c ........................................................................................................................... 113

    5.3.7.3.- Radiofrecuencia Multitarea........................................................................................................................................ 115

    5.3.7.3.1.- Transmisin_Serie_RF_Multitarea_1.c ........................................................................................................................... 116 5.3.7.3.2.- Transmisin_Serie_RF_Multitarea_2.c ........................................................................................................................... 117 5.3.7.3.3.- Recepcin_Serie_RF_Multitarea.c ................................................................................................................................... 120

    5.3.8.- Mdulo MSSP. ....................................................................................................................................... 123

    5.3.8.1.- I2C. ............................................................................................................................................................................... 123

    5.3.8.1.1.- Expansor_Bus_PCF8574. ....................................................................................................................................................... 125 5.3.8.1.1.1.- PCF8574_1. ................................................................................................................................................................... 125

    5.3.8.1.1.1.1.- Lectura y escritura en PCF8574 modo polling.c .................................................................................................... 126 5.3.8.1.1.1.2.- Lectura y escritura en PCF8574 en modo Interrupcin.c ...................................................................................... 127

    5.3.8.1.1.2.- PCF8574_2. ................................................................................................................................................................... 129 5.3.8.1.1.2.1.- Lectura y escritura de multiples PCF8574 modo polling.c ..................................................................................... 130 5.3.8.1.1.2.2.- Lectura y escritura de multiples PCF8574 modo Interrupcin.c............................................................................ 131

    5.3.8.1.1.3.- PCF8574_3. ................................................................................................................................................................... 135 5.3.8.1.1.3.1.- CAD_PCF8547.c .................................................................................................................................................... 135 5.3.8.1.1.3.2.- CAD_PCF8547_MULTIPLES.c ................................................................................................................................ 138

  • Aprendizaje de la Electrnica a travs de la Robtica - ARCE -

    Microcontroladores IES Joan Mir Pgina 5

    5.3.8.1.2.- Conversor A-D_D-A_PCF8591. .............................................................................................................................................. 141 5.3.8.1.2.1.- PCF8591_ADC. .............................................................................................................................................................. 141

    5.3.8.1.2.1.1.- I2C_CAD_1.c ......................................................................................................................................................... 142 5.3.8.1.2.1.2.- I2C_CAD_2.c ......................................................................................................................................................... 143

    5.3.8.1.2.2.- PCF8591_DAC. .............................................................................................................................................................. 144 5.3.8.1.2.2.1.- I2C_CDA_1.c ......................................................................................................................................................... 145

    5.3.9.- Sensores y Hardware. ........................................................................................................................... 147

    5.3.9.1.- Sensores de Infrarrojos CNY70. ............................................................................................................................... 147

    5.3.9.1.1.- Prueba_Sensores_CNY70.c ................................................................................................................................................... 148

    5.3.9.2.- Sensores de Distancia. .............................................................................................................................................. 149

    5.3.9.2.1.- Sensor de Infrarrojos GP2D12. ............................................................................................................................................. 149 5.3.9.2.1.1.- Lectura_S1_GP2D12.c .................................................................................................................................................. 151 5.3.9.2.1.2.- Lectura_S1_GP2D12.c .................................................................................................................................................. 152 5.3.9.2.1.3.- driver1_GP2D12.c ........................................................................................................................................................ 153 5.3.9.2.1.4.- driver2_GP2D12.c ........................................................................................................................................................ 153

    5.3.9.2.2.- Sensor de Ultrasonidos SRF08. ............................................................................................................................................. 154 5.3.9.2.2.1.- Lectura_S1_SRF08_Real. .............................................................................................................................................. 155 5.3.9.2.2.2.- Lectura_S1_S2_SRF08_Real.c ....................................................................................................................................... 156 5.3.9.2.2.3.- Lectura_S1_S2_SRF08_Real_Simulado.c ...................................................................................................................... 158 5.3.9.2.2.4.- Lectura_S1_SRF08_Distancia_Lumenes.c .................................................................................................................... 159 5.3.9.2.2.5.- driver SRF08.c ............................................................................................................................................................... 159 5.3.9.2.2.6.- driver_Luz_Distancia_SRF08.c...................................................................................................................................... 160 5.3.9.2.2.7.- driver PCF8591.c ........................................................................................................................................................... 162 5.3.9.2.2.8.- Cambio_Direccin.c ...................................................................................................................................................... 162 5.3.9.2.2.9.- Ejercicio 1.c ................................................................................................................................................................... 163

    5.3.9.3.- Sensores de Temperatura. ........................................................................................................................................ 164

    5.3.9.3.1.- PT100. ................................................................................................................................................................................... 164 5.3.9.3.1.1.- Lectura_S1_PT100.c ..................................................................................................................................................... 166

    5.3.9.3.2.- Sensor de Temperatura TC74. .............................................................................................................................................. 167 5.3.9.3.2.1.- Test _TC74.c ................................................................................................................................................................. 168

    5.3.9.3.3.- Sensor Trmico D-TPA81. ..................................................................................................................................................... 170 5.3.9.3.3.1.- Test1_D-TPA81.c .......................................................................................................................................................... 173 5.3.9.3.3.2.- Test2_D-TPA81.c .......................................................................................................................................................... 174 5.3.9.3.3.3.- Temperatura Mayor.c .................................................................................................................................................. 176 5.3.9.3.3.4.- Temperatura Mayor_con driver.c ................................................................................................................................ 177 5.3.9.3.3.5.- driver_D-TPA81.c ......................................................................................................................................................... 179 5.3.9.3.3.6.- driver_TC74_9_sensores.c ............................................................................................................................................ 179 5.3.9.3.3.7.- Seguimiento de un punto caliente.c ............................................................................................................................. 180

    5.3.9.4.- Potencimetro Digital MCP41010. ............................................................................................................................ 182

    5.3.9.4.1.- CG_Ampl_No_Inversor.c ...................................................................................................................................................... 183

    5.3.9.5.- Control de mltiples servomotores de posicin SD20. ......................................................................................... 184

    5.3.9.5.1.- Control_SD20.c ..................................................................................................................................................................... 184 5.3.9.5.2.- Control_Servos_Funciones_SD20.c ...................................................................................................................................... 185 5.3.9.5.3.- A-D_SD20.c ........................................................................................................................................................................... 187

    5.3.9.6.- Puentes en H. .............................................................................................................................................................. 188

    5.3.9.6.1.- L293B y L298. ........................................................................................................................................................................ 189 5.3.9.6.2.- Puente en H con TRT............................................................................................................................................................. 192

  • Aprendizaje de la Electrnica a travs de la Robtica - ARCE -

    Microcontroladores IES Joan Mir Pgina 6

    1.- Sistemas Microcontrolados.

    Un sistema microcontrolado es un equipo electrnico basado en microcontroladores

    que puede interactuar sobre dispositivos analgicos, digitales. Es programable.

    2.- Diagrama en Bloques de un sistema Microprocesado. Estructura Von Neumann.

    2.1.- Microprocesador (uP).

    Es un circuito integrado que se puede programar. Est compuesto por tres bloques bsicos y se comunica con el exterior a

    Unidad de Control: Es el cerebro del uP y tiene la misin de decodificar las instrucciones y generar las microordenes que activan los circuitos del microprocesador que realizan las funciones de las instrucciones. Unidad Aritmtico Lgica (ALU): Es un circuito electrnico que realiza operaciones aritmticas (Sumas, Restas, etc.) y Lgicas (AND, OR, etc). Registros: Son unidades de memoria de N bit que almacenan informacin procedente del interior y exterior del uP.

  • Aprendizaje de la Electrnica a travs de la Robtica - ARCE -

    Microcontroladores IES Joan Mir Pgina 7

    2.2.- Buses.

    Es un conjunto de hilos, pistas o cables que tienes la misin de transportar informacin

    digital.

    2.2.1.- Bus de Direcciones.

    Es un bus que el uP utiliza para selecciona o direcciona los dispositivos externos.

    2.2.2.- Bus de Datos.

    Es un bus que el uP utiliza para enviar o recibir informacin de los dispositivos externos.

    2.2.3.- Bus de Control.

    Es un bus que el uP utiliza para escribir o leer los dispositivos externos. Tambin sirve para resetear o deshabilitar al uP.

    2.2.- Memorias.

    Son circuitos integrados que almacenan informacin.

    2.2.1.- ROM.

    ROM (Read Only Memory) significa memoria de solo lectura. Se almacenan la informacin en el proceso de fabricacin. No volatil

    Proceso de Lectura:

    El uP a travs del Decodificador de Direcciones selecciona la ROM [CS2]

    El uP a travs del Bus de Direcciones [A2..A0] selecciona la palabra de la memoria.

    El uP a travs del Bus de Control [R] da la orden de lectura a la memoria ROM.

    La memoria ROM pone la informacin en el Bus de Datos [D7..D0] y el uP la almacena en sus Registros.

  • Aprendizaje de la Electrnica a travs de la Robtica - ARCE -

    Microcontroladores IES Joan Mir Pgina 8

    Estructura interna de la memoria:

    El Bus de Direcciones nos indica el nmero de palabras que tiene la memoria.

    Palabras = 2n+1 2+1

    = 8 palabras.

    El Bus de Datos nos indica el nmero de bit que tiene cada palabra.

    Bit = n+1 , 7+1= 8 Bit

    2.2.2.- RAM. RAM (Random Access Memory) significa memoria de acceso aleatorio. Se puede leer

    (R) y escribir (W). Memoria Volatil.

    Proceso de Escritura:

    El uP a travs del Decodificador de Direcciones selecciona la RAM [CS2]

    El uP a travs del Bus de Direcciones [A2..A0] selecciona la palabra de la memoria.

    El uP pone la informacin en el Bus de Datos [D7..D0].

    El uP a travs del Bus de Control [W] da la orden de escritura en la memoria RAM.

  • Aprendizaje de la Electrnica a travs de la Robtica - ARCE -

    Microcontroladores IES Joan Mir Pgina 9

    Estructura interna de la memoria:

    2.3.- Interfaces.

    Son circuitos electrnicos que comunican el exterior con el uP.

    2.3.1.- Interface Serie.

    Comunican el exterior con el uP con un bus serie de tres hilos.

    Los datos se mandan o se reciben del exterior de uno en uno.

  • Aprendizaje de la Electrnica a travs de la Robtica - ARCE -

    Microcontroladores IES Joan Mir Pgina 10

    El proceso de lectura y escritura es igual que las memorias. Se tiene que configurar cuando queremos leer o escribir datos del exterior.

    A travs Tx y GND transmitimos los datos del uP al exterior. A travs de Rx y GND el uP recibe los datos del exterior. El protocolo de comunicaciones tiene que estar predefinido. Existen diferentes tipos:

    Asncrona.

    Es tambin conocida como Start/stop. Requiere de una seal que identifique el inicio del carcter y a la misma se la denomina bit de arranque. Tambin se requiere de otra seal denominada seal de parada que indica la finalizacin del carcter o bloque.

    Sncrona.

    Sncrono significa "con reloj" y exactamente eso es lo que necesitamos, un reloj (o dicho en ingls un Clock). La transmisin sncrona necesita de dos lneas, una de datos sobre la que se van a representar los distintos estados de los bits a transmitir y una de reloj donde vamos indicando cuando est disponible cada bit en la lnea de datos. Esta lnea de reloj es la de "sincronizacin" entre ambos dispositivos, el emisor y el receptor de la transmisin

  • Aprendizaje de la Electrnica a travs de la Robtica - ARCE -

    Microcontroladores IES Joan Mir Pgina 11

    Tipo de Comunicaciones:

    Simplex.

    En este caso el transmisor y el receptor estn perfectamente definidos y la comunicacin es unidireccional. Este tipo de comunicaciones se emplean usualmente en redes de radiodifusin, donde los receptores no necesitan enviar ningn tipo de dato al transmisor.

    Duplex Semi Duplex.

    En este caso ambos extremos del sistema de comunicacin cumplen funciones de transmisor y receptor y los datos se desplazan en ambos sentidos pero no simultneamente. Este tipo de comunicacin se utiliza habitualmente en la interaccin entre terminales y un computador central.

    Full Duplex.

    El sistema es similar al duplex, pero los datos se desplazan en ambos sentidos

    simultneamente. Para ello ambos transmisores poseen diferentes frecuencias de transmisin o

    dos caminos de comunicacin separados, mientras que la comunicacin semi-duplex necesita

    normalmente uno solo.

    Existen diferentes interfaces serie: UART, USART, PS2, USB, FireWire, etc.

    2.3.2.- Interface Paralelo.

    Las conexiones paralelas consisten en transmisiones simultneas de N cantidad de bits, del uP al Exterior o viceversa.

  • Aprendizaje de la Electrnica a travs de la Robtica - ARCE -

    Microcontroladores IES Joan Mir Pgina 12

    2.4.- Decodificador de Direcciones.

    Es un conjunto de circuitos electrnicos que seleccionan los diferentes dispositivos conectados a los buses (Memorias, Interfaces, etc).

    El uP controla el Decodificador.

    El diseo de los decodificadores est supeditado al conjunto de dispositivos que se conecten a los buses.

    Un mapa de memoria ayuda a realizar este proceso.

  • Aprendizaje de la Electrnica a travs de la Robtica - ARCE -

    Microcontroladores IES Joan Mir Pgina 13

    2.4.1.- Mapa de Memoria.

    La trama jaspeada representa la palabra que se direcciona dentro del dispositivo. Ejemplo: Direccin 3 A2 A1 A0 = 011

    Palabra 3

    La trama jaspeada representa la palabra que se direcciona dentro del dispositivo. Ejemplo: Direccin 15 A2 A1 A0 = 111 Palabra 7

    La trama jaspeada representa la palabra que se direcciona dentro del dispositivo. Ejemplo: Direccin 21 A2 A1 A0 = 101 Palabra 5

    La trama jaspeada representa la palabra que se direcciona dentro del dispositivo. Ejemplo: Direccin 28 A2 A1 A0 = 100 Palabra 4

  • Aprendizaje de la Electrnica a travs de la Robtica - ARCE -

    Microcontroladores IES Joan Mir Pgina 14

    3.- Microcontroladores.

    Un microcontrolador es un circuito integrado que contiene dentro un sistema

    microprocesado (uP, Memorias, Interfaces, etc) y hardware de control de dispositivos Conversin Analgica/ Digital

    anchura de pulso

    3.1.- Microcontroladores PIC.

    Los microcontroladores PIC de la casa Microchip se caracterizan por ser baratos, por proporcionar un entorno de desarrollo integrado gratuito MPLAB . Este entorno permite editar un el archivo fuente del proyecto, ensamblarlo, simularlo en un Ordenador Personal y comprobar la evolucin de las variables en la memoria RAM, registros, etc.

    3.1.1.-

    Se caracteriza por utilizar dos tipos de memorias (Datos y Programa) con buses independientes.

    3.1.2.- .

    Permite realizar dos procesos simultneamente a la vez (lectura y ejecucin de

    instrucciones).

    3.1.3.- Instrucciones RISC.

    Tiene un reducido grupo de instrucciones (RISC Reduced Instruction Set Computer). Son instrucciones simples que se ejecutan en un solo ciclo mquina (4 ciclos de reloj). El microcontrolador PIC16F876A tiene 35 instrucciones.

    3.1.4.- Estructura Ortogonal.

    Una instruccin puede utilizar cualquier elemento de la arquitectura como fuente o destino de datos.

    PROGRAMA

    1. BSF STATUS,RP0

    2. CLRF TRISB

    3. MOVLW 0XFF

    4. MOVWF TRISA

    1 Ciclo 2 Ciclo 3 Ciclo 4 Ciclo 5 Ciclo

    Bsqueda 1 Ejecuta 1

    Bsqueda 2 Ejecuta 2

    Bsqueda 3 Ejecuta 3

    Bsqueda 4 Ejecuta 4

    CPU

    Memoria de

    Datos

    (RAM)

    Memoria de

    Programa

    (EEPROM)

    Arquitectura Hardvard

    CPU

    Memoria de

    Programa y

    de Datos

    Arquitectura Von Neumann

    Buses Buses

  • Aprendizaje de la Electrnica a travs de la Robtica - ARCE -

    Microcontroladores IES Joan Mir Pgina 15

    3.2.- Microcontrolador PIC 16F877A.

    El microcontrolador PIC 16F877A es un CHIP de 40 patillas, que se caracteriza por lo siguiente:

    Tiene 35 Instrucciones

    256 byte de EEPROM

    33 Patillas de entradas/salidas.

    Sistema de Adquisicin de datos (8 Entradas Analgicas)

    2 mdulos de CCP y PWM. (Comparacin y captura de datos y generadores de seal por Modulacin de Anchura de Pulsos).

    Un mdulo de comunicacin serie SPI (Serial Peripheral Interface) I2C (Inter-Integrated Circuit).

    Un transmisor-receptor asncrono serie universal USART.

    3 Timer (Temporizadores/Contadores).

    2 Comparadores de seales analgicas.

    file:///E:/Curso%202011-2012/Desarrollo%20de%20Proyectos/Ejercicios%20Curso%202011_12/Monibot/Software/Proteus%20+%20C/Data%20Book%20PIC/PIC16F87xA.pdf
  • Aprendizaje de la Electrnica a travs de la Robtica - ARCE -

    Microcontroladores IES Joan Mir Pgina 16

    3.2.1.- Diagrama en Bloques.

  • Aprendizaje de la Electrnica a travs de la Robtica - ARCE -

    Microcontroladores IES Joan Mir Pgina 17

    3.2.2.- Mapa de Memoria.

    3.2.2.1.- Memoria de Programa.

    Es una memoria tipo FLASH, los programas son almacenados en este tipo de memoria, cuando se desconecta la alimentacin la informacin almacenada no se pierde.(La memoria flash es una forma desarrollada de la memoria EEPROM que permite que mltiples posiciones de memoria sean escritas o borradas en una misma operacin de programacin mediante impulsos elctricos, frente a las anteriores que slo permite escribir o borrar una nica celda cada vez. Por ello, flash permite funcionar a velocidades muy superiores

    cuando los sistemas emplean lectura y escritura en diferentes puntos de esta memoria al mismo tiempo.), est

    compuesta por:

    8192 palabras de 14bit. (Cada instruccin ocupa solo una palabra).

    Una pila de 8 niveles.

    Un solo vector de Interrupcin.

    Vector de Reset (Direccin 0000h)

    4 zonas de memoria.

    http://es.wikipedia.org/wiki/EEPROM
  • Aprendizaje de la Electrnica a travs de la Robtica - ARCE -

    Microcontroladores IES Joan Mir Pgina 18

    3.2.2.2.- Memoria de Datos.

    Es una memoria de tipo RAM

    (Memoria de Acceso Aleatorio), se pierde la informacin cuando se desconecta la alimentacin.

    Est compuesta por 4 bancos de trabajo. Contiene registros (Tipo Byte) de 2 tipos:

    Registros de funciones especiales SFR que sirven para comunicarnos con el hardware interno del PIC.

    Registro de Propsito General que nos sirven para almacenar nuestras variables de nuestro programas.

    3.2.3.- Ensamblador.

    3.2.3.1.- Lenguaje Mquina.

    que es el nico que entienden los microcontroladores. Se trabaja con formato Hexadecimal.

    Ejemplo:

    Instruccin en lenguaje Ensamblador Cdigo Binario BTFSS PORTA, 4 0001 1110 0000 0101

    Cdigo Hexadecimal 1 E 0 5

    Compilador

  • Aprendizaje de la Electrnica a travs de la Robtica - ARCE -

    Microcontroladores IES Joan Mir Pgina 19

    3.2.3.2- Lenguaje Ensamblador. El lenguaje ensamblador utiliza un lenguaje nemnico que son grupos de caracteres

    alfanumricos que simbolizan ordenes o tareas a realizar con cada instruccin. Los nemnicos se corresponden con las iniciales de cada nombre de las instrucciones

    en ingles. Ejemplo: Suma 58 al registro de trabajo W y guarda el resultado en este mismo registro W.

    58+W

    3.2.3.3.- Programa Ensamblador. Es un software encargado de traducir el lenguaje ensamblador a lenguaje mquina.

    Al lenguaje ensamblador se le llama Fichero Fuente y al traducido Fichero Ejecutable asm hex

    Programa Ensamblador

    Fichero Fuente

    Fichero Ejecutable

    Fichero Errores

    Ejemplo1.err

    Fichero Listable

    Ejemplo1.lst

    Otros ficheros

  • Aprendizaje de la Electrnica a travs de la Robtica - ARCE -

    Microcontroladores IES Joan Mir Pgina 20

    3.2.4.- Set de Instrucciones.

  • Aprendizaje de la Electrnica a travs de la Robtica - ARCE -

    Microcontroladores IES Joan Mir Pgina 21

    4.- Herramientas de Desarrollo.

    Cuando se disean sistemas con circuitos programables se precisan herramientas

    para la puesta a punto del hardware y del software. Las ms importantes son: editores de

    dores, compiladores, simuladores, grabadores, emuladores y sistemas de desarrollo

    4.1.- Ensambladores y Compiladores.

    El programa ensamblador traduce las instrucciones que se han escrito, usando los

    nemnicos del lenguaje ensamblador , a cdigo binar io ejecutable por el

    microcontrolador. El proceso de ensamblado produce un fichero * .hex que se grabar en la

    memoria del programa del PIC mediante el grabador o programador. La secuencia de

    nemnicos se llama cdigo fuente del programa. El ensamblador ms utilizado para los PIC es

    el MPASMTM

    que trabaja dentro del entorno software MPLAB.

    El programa compilador traduce las instrucciones que se han escrito en lenguaje de

    alto nivel (por ejemplo en lenguaje C), a cdigo binario ejecutable por el

    microcontrolador. Los compiladores para lenguaje C ms populares son el PICC por

    Hi-Tech Software (www.htsoft.com) y el PCW de la empresa CCS (www.ccsinfo.com).

    Un compilador para Basic es el PICBasic Pro propiedad de MicroEngineering Labs

    (www.melabs.com).

    4.2.- Simuladores.

    Una vez que el programa se ha escrito y ensamblado o compilado se est en

    binario *.hex que es el que se graba en el microcontrolador. Es casi indispensable probar

    este programa, hacindolo funcionar en condiciones tan prximas como sea posible a las de

    utilizacin real. Para hacer esto hay varias soluciones, las ms utilizadas son dos: utilizar un

    econmico simulador software o un potente emulador.

    Como su propio nombre indica, un simulador por software "simula" la ejecucin de las instrucciones de un programa desarrollado para un modelo de microcontroladores especfico. Representa el comportamiento interno del microcontrolador y el estado de sus lneas de entrada/salida. Al ejecutar el simulador se pueden visualizar fcilmente las instrucciones donde se producen funcionamientos no deseados. Como el microcontrolador se simula por software el comportamiento no es idntico a la real sin embargo, proporciona una aproximacin aceptable, especialmente cuando no es esencial el trabajo en tiempo real. Su gran ventaja es el bajo precio. El simulador realiza la ejecucin del programa mucho ms lento que lo hara el mismo programa directamente sobre el microcontrolador, por eso determinadas operaciones en las que son necesarios tiempos muy precisos o crticos no se puede probar mediante la simulacin. No obstante, bien utilizado permite desarrollar aplicaciones interesantes con una mnima inversin.

    que trabaja dentro

    del entorno MPLAB

    . En los ltimos est teniendo una gran aceptacin PROTEUS VSM

    (www.labcenter.co.uk).

    http://www.htsoft.com/http://www.ccsinfo.com/http://www.melabs.com/http://www.labcenter.co.uk/
  • Aprendizaje de la Electrnica a travs de la Robtica - ARCE -

    Microcontroladores IES Joan Mir Pgina 22

    4.2.1.- MPLAB. MPLAB IDE es un software de "Entorno de Desarrollo Integrado" (Integrated Development

    Environment, IDE) que se ejecuta bajo Windows. Con este entorno se puede desarrollar aplicaciones para los microcontroladores PIC.

    El MPLAB incluye todas las utilidades necesarias para la realizacin de proyectos

    con mivrocontroladores PIC, permite editar el archivo fuente del proyecto, adems de ensamblarlo y simularlo en pantalla para comprobar como evolucionan tanto la memoria de datos RAM, como la de programa ROM, los registros del SFR, etc, segn progresa la ejecucin del programa. El MPLAB incluye:

    Un editor de texto.

    Un ensamblador llamado MPASM.

    Un simulador llamado MPLAB SIM.

    Un organizador de proyectos.

    Este programa es gratuito. Se puede bajar en la direccin Internet del fabricante www.microchip.com. Su instalacin es muy sencilla y similar a cualquier otro programa para el sistema operativo Windows.

    4.2.2.- PROTEUS VSM. El laboratorio virtual electrnico PROTEUS VSM de LABCENTER ELECTRONICS, nos permite

    simular circuitos electrnicos analgicos/ digitales y microprocesados. Es capaz de realizar simultneamente una simulacin hardware y software (Lenguaje de bajo y alto nivel Ensamblador y C respectivamente) en un mismo entorno grfico. Tambin enlaza con una herramienta que nos permite desarrollar las placas para realizar los prototipos.

    Para ello suministra tres potentes herramientas:

    ISIS (Diseo Grfico)

    VSM(Virtual System Modelling) Simulacin de Componentes.

    ARES (Diseo de Placas). Las herramientas tradicionales de diseo seguan el siguiente proceso:

    Con las herramientas de diseo tradicionales, el desarrollo del software y la comprobacin del

    prototipo, no puede realizarse hasta que este no se desarrolla. Esto puede suponer semanas de retraso. Si se localiza un error hardware, la totalidad del proceso se debe repetir.

    Usando Proteus VSM, el desarrollo del software puede comenzar tan pronto como el diseo

    esquemtico este acabado y la combinacin del hardware y el software nos permite testear el prototipo y ver si funciona.

    http://www.microchip.com/
  • Aprendizaje de la Electrnica a travs de la Robtica - ARCE -

    Microcontroladores IES Joan Mir Pgina 23

    4.3.- Emuladores.

    El emulador es una potente herramienta que consiste en un complejo equipo fsico controlado por un software desde un ordenador y que se comporta exactamente como el microcontrolador al que reemplaza. El fabricante Microchip ofrece algunos de ellos en su pgina WEB, tal como el MPLAB-ICE 2000.

    El emulador ICE 2000 dispone de una "cabeza" con idntico patillaje que el del microcontrolador que emula. Esta cabeza se inserta en el zcalo donde ir el microcontrolador con el programa que trata de comprobar. El emulador hace funcionar el sistema como si hubiese un microcontrolador real y adems con la ventaja de que visualiza en el monitor del ordenador toda la informacin necesaria para comprobar el funcionamiento de los programas, permitiendo realizar todo tipo de pruebas. Los resultados obtenidos son idnticos a los del producto final, puesto que a diferencia de los simuladores la ejecucin se realiza en tiempo real.

    El emulador es el mtodo de depuracin ms sofisticado que se puede emplear, pero su alto precio no lo hace especialmente accesible y mucho menos para uso domstico. Para muchas aplicaciones es suficiente con el simulador software.

    4.4.- Grabadores o programadores.

    Una vez realizado el programa y comprobado en el simulador o emulador, se debe proceder a grabarlo en la memoria de programa del microcontrolador mediante un grabador o programador.

    El grabador PICSTART PLUS ofrecido por Microchip es uno de los ms utilizados.

    En internet se ofrecen numerosos esquemas para la construccin de econmicos programadores de PIC. Uno de los ms populares es el JDM en sus diferentes versiones, que se utiliza junto con el programa IC-Prog.

    Otra forma de grabar los microcontroladores es utilizar el firmware boootloader (El

    firmware es un bloque de instrucciones de programa para propsitos especficos, grabado en una memoria de tipo no voltil (ROM, EEPROM, flash, etc), que establece la lgica de ms bajo nivel que controla los circuitos electrnicos de un dispositivo de cualquier tipo)

    Un bootloader es un firmware para permitir la rpida descarga de programas en los

    microcontroladores. En el caso de los PIC, el bootloader permite descargar programas

  • Aprendizaje de la Electrnica a travs de la Robtica - ARCE -

    Microcontroladores IES Joan Mir Pgina 24

    directamente desde el PC sin necesidad de utilizar ningn tipo de grabador, es decir en

    la propia aplicacin. La descarga se hace a travs del puerto serie, USB.

    5.- Sistema de Desarrollo >.

    Un sistema de desarrollo est formado por un conjunto de herramientas hardware y

    software que permitan fabricar y simular prototipos, emular, depurar y grabar programas de forma eficiente e intuitiva.

    5.1.- Fabricacin del Monibot.

    5.1.1.- Placas y Esquemas.

    5.1.2.- Listado de Componentes.

    5.1.3.- Estructura.

    5.2.- Herramientas de desarrollo utilizadas.

    Fabricacin de Placas. Proteus (ARES)

    Simulacin hardware y software de los prototipos. Proteus (ISIS)

    Compilador C. (CCS)

    Grabador de programas en el Microcontrolador. (Bootloader)

    5.3.- Recursos bibliogrficos.

    Curso de Robtica y otras aplicaciones en el Aula de Tecnologa.

    Data book PIC16F87xA.

    Curso de Microcontroladores PIC Avanzados.

    TXPC

    RXPC

    GND

    VSS

    RA0/AN02

    RA1/AN13

    RA2/AN2/VREF-4

    RA4/T0CKI6

    RA5/AN4/SS7

    OSC1/CLKIN9

    OSC2/CLKOUT10

    RC1/T1OSI/CCP212

    RC2/CCP113

    RC3/SCK/SCL14

    RB7/PGD28

    RB6/PGC27

    RB526

    RB425

    RB3/PGM24

    RB223

    RB122

    RB0/INT21

    RC7/RX/DT18

    RC6/TX/CK17

    RC5/SDO16

    RC4/SDI/SDA15

    RA3/AN3/VREF+5

    RC0/T1OSO/T1CKI11

    MCLR/Vpp/THV1

    U2

    PIC16F876_JOAN

    T1IN11

    R1OUT12

    T2IN10

    R2OUT9

    T1OUT14

    R1IN13

    T2OUT7

    R2IN8

    C2+

    4

    C2-

    5

    C1+

    1

    C1-

    3

    VS+2

    VS-6

    U5

    MAX232

    GND=GND

    VCC=VCC

    C6

    1uF

    C7

    1uF

    C81uF

    C9

    1uF

    VDDVDD

    C10100nF

    1

    6

    2

    7

    3

    8

    4

    9

    5

    J6

    CONN-D9M

    Adaptador de seales PC-uC

    12

    E1

    5V

    VDD

    VCC

    +

    +

    +

    +Este condensador debe estar proximo a la

    alimentacin del MAX 232

    Al Puerto Serie del PC

    file:///E:/Curso%202011-2012/Desarrollo%20de%20Proyectos/Ejercicios%20Curso%202011_12/Monibot/Fabricacin/Placas%20y%20Esquemas.pdf../Fabricacin/Monibot/Listado%20de%20Componentes.pdf../Fabricacin/Monibot/Estructura%20del%20Robot%20Monibot.pdffile:///E:/Curso%202011-2012/Desarrollo%20de%20Proyectos/Ejercicios%20Curso%202011_12/Monibot/Documentacin/Manual%20compilador%20C%20CCS.pdffile:///E:/Curso%202011-2012/Desarrollo%20de%20Proyectos/Ejercicios%20Curso%202011_12/Monibot/Documentacin/Curso%20de%20Robtica%20y%20otras%20aplicaciones%20en%20el%20Aula%20de%20Tecnologa.pdffile:///E:/Curso%202011-2012/Desarrollo%20de%20Proyectos/Ejercicios%20Curso%202011_12/Monibot/Documentacin/PIC16F87xA.pdffile:///E:/Curso%202011-2012/Desarrollo%20de%20Proyectos/Ejercicios%20Curso%202011_12/Monibot/Documentacin/Curso%20de%20Microcontroladores%20PIC.pdf
  • Aprendizaje de la Electrnica a travs de la Robtica - ARCE -

    Microcontroladores IES Joan Mir Pgina 25

    5.3.- Simulador Monibot.

    El Monibot se va a programar en Lenguaje C, el mtodo utilizado ser ensear las estructuras bsicas de C utilizando unos esquemas bsicos de simulacin del robot. Para ello se ha estructurado en diferentes aplicaciones prcticas:

    Visualizacin de Informacin.

    Led. Display de 7 Segmentos. LCD.

    Entradas Digitales.

    Simulador_Perifricos. Simulador_Perifricos_Potencia. Simulador_Potencia.

    Entradas Analgicas.

    Conversin A/D y D/A. Conversin Analgica/Digital.

    Modulacin por Anchura de Pulso. PWM

    Control de Motores de Corriente Continua. Servomotores de Posicin.

    Interrupciones Externas.

    Interrupcin por RB0/INT. Interrupcin por cambio de nivel de RB4_5_6_7.

    Temporizadores y Contadores. (Timer 0,1 y 2).

    Timer 0. Timer 1. Timer 2.

    Transmisin Serie de Datos. USART

    Cable. Radiofrecuencia. Radiofrecuencia_Multitarea.

    Mdulo MSSP. I2C.

    Expansor_Bus_PCF8574. Conversor A-D_D-A_PCF8591.

    SPI.

    Sensores de Infrarrojos CNY70.

    Sensores de Distancia.

    Sensor de Infrarrojos GP2D12. Sensor de Ultrasonidos SRF08.

    Sensores de Temperatura.

    PT100. Sensor de Temperatura TC74. Sensor Trmico D-TPA81.

    Potencimetro Digital MCP41010.

    Control de mltiples servomotores de posicin SD20.

    Puentes en H.

    L298-L293B. Puente en H con TRT.

  • Aprendizaje de la Electrnica a travs de la Robtica - ARCE -

    Microcontroladores IES Joan Mir Pgina 26

    Los esquemas bsicos de simulacin del Monibot son:

    Simulador Potencia y Perifricos.

    Simulador Potencia.

    Simulador Perifricos.

    file:///E:/Curso%202011-2012/Desarrollo%20de%20Proyectos/Ejercicios%20Curso%202011_12/Monibot/Simulacin/Simulador%20Potencia%20y%20Perifricos.DSNfile:///E:/Curso%202011-2012/Desarrollo%20de%20Proyectos/Ejercicios%20Curso%202011_12/Monibot/Simulacin/Simulador%20Potencia.DSNfile:///E:/Curso%202011-2012/Desarrollo%20de%20Proyectos/Ejercicios%20Curso%202011_12/Monibot/Simulacin/Simulador%20Perifricos.DSN
  • Aprendizaje de la Electrnica a travs de la Robtica - ARCE -

    Microcontroladores IES Joan Mir Pgina 27

    5.3.1.- Visualizacin de Informacin.

    5.3.1.1.- Led. El entrenador utilizado es Simulador Perifricos dentro de la carpeta de Led.

    5.3.1.1.1.- Led_1.c

    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Programa.....: Led_1.c // // Plataforma hw: Placa Monibot 16F877A // // Fecha........: Mayo-2011 // // Programador..: Pedro Alonso // // Descripcin..: Encender y apagar led RB7 con una cadencia de 1 segundo. // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // *********************************** Directivas de procesado***************************************** // (Controlan la conversin del programa a cdigo mquina por parte del compilador) #include // Eleccin del uC 16F877A #fuses XT,NOWDT,NOPROTECT,NOLVP #use delay( clock = 1000000 ) // Reloj de 1 MHz #BYTE TRISB = 0x86 // Asignamos a la etiqueta TRISB la direccin 86h de memoria RAM. #BYTE portB = 0x06 // Asignamos a la etiqueta portB la direccin 06h de memoria RAM. #BIT rb7 = 0X06.7 // Asignamos a la etiqueta rb7 el bit 7 de la direccin 06h

    // de la memoria RAM. #DEFINE ENCENDIDO 1 // ENCENDIDO equivale a 1. #DEFINE APAGADO 0 // APAGADO equivale a 0.

    // ***************************** Funcin principal o programa principal ***************************** // Se define con un void main, void main()

    file:///E:/Curso%202011-2012/Desarrollo%20de%20Proyectos/Ejercicios%20Curso%202011_12/Monibot/Simulacin/Led/Simulador%20Perifricos.DSN
  • Aprendizaje de la Electrnica a travs de la Robtica - ARCE -

    Microcontroladores IES Joan Mir Pgina 28

    { TRISB = 0B00000000; // Defines Puerto B como SALIDA de datos.

    portB = 0B00000000; // Resteamos el puerto B Led apagados. while (1) // Ejecuta indefinidamente lo que est entre corchetes.

    { rb7 = ENCENDIDO; // Enciende el Led que esta en la patilla rb7. delay_ms(1000); // Espero 1 segundo. rb7 = APAGADO; // Apago el Led que esta en la patilla rb7. delay_ms(1000); // Espero 1 segundo. } }

    5.3.1.1.2.- Led_2.c

    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Programa.....: Led_2.c // // Plataforma hw: Placa Monibot 16F877A // // Fecha........: Mayo-2011 // // Programador..: Pedro Alonso // // Descripcin..: Encender y apagar todos los Led con una cadencia de 2 segundos y 1 // // segundo respectivamente // ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // ************************************ Directivas de procesado**************************************** // (Controlan la conversin del programa a cdigo mquina por parte del compilador) #include // Eleccin del uC 16F877A #fuses XT,NOWDT,NOPROTECT,NOLVP #use delay( clock = 1000000 ) // Reloj de 1 MHz #BYTE TRISB = 0x86 // Asignamos a la etiqueta TRISB la direccin 86h de memoria RAM.

    #BYTE portB = 0x06 // Asignamos a la etiqueta portB la direccin 06h de memoria RAM. // ***************************** Funcin principal o programa principal ***************************** // Se define con un void main, void main() {

    TRISB = 0B00000000; // Defines Puerto B como SALIDA de datos. portB = 0B00000000; // Resteamos el puerto B Led apagados. while (1) // Ejecuta indefinidamente lo que est entre corchetes. { portB =0b11111111; // Enciende todos los Led delay_ms(2000); // Espero 2 segundo portB =0b00000000; // Apago todos los led delay_ms(1000); // Espero 1 segundo } }

  • Aprendizaje de la Electrnica a travs de la Robtica - ARCE -

    Microcontroladores IES Joan Mir Pgina 29

    5.3.1.1.3.- Led_3.c

    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Programa.....: Led_3.c // // Plataforma hw: Placa Monibot 16F877A // // Fecha........: Mayo-2011 // // Programador..: Pedro Alonso // // Descripcin..: Contador en binario de 0 a 9 // ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // ************************************ Directivas de procesado**************************************** // (Controlan la conversin del programa a cdigo mquina por parte del compilador) #include // Eleccin del uC 16F877A #fuses XT,NOWDT,NOPROTECT,NOLVP #use delay( clock = 1000000 ) // Reloj de 1 MHz #BYTE TRISB = 0x86 // Asignamos a la etiqueta TRISB la direccin 86h de memoria RAM. #BYTE portB = 0x06 // Asignamos a la etiqueta portB la direccin 06h de memoria RAM. int8 n=0; // Declaramos la variable n con 8 bit y la inicializamos con 0.

    // ****************************** Funcin principal o programa principal **************************** // Se define con un void main, void main() {

    TRISB = 0B00000000; // Defines Puerto B como SALIDA de datos. portB = 0B00000000; // Resteamos el puerto B Led apagados. while (1) // Ejecuta indefinidamente lo que est entre corchetes. { for (n=0;n

  • Aprendizaje de la Electrnica a travs de la Robtica - ARCE -

    Microcontroladores IES Joan Mir Pgina 30

    // **************************** Funcin principal o programa principal ****************************** // Se define con un void main, void main() {

    TRISB = 0B00000000; // Defines Puerto B como SALIDA de datos. portB = 0b00000001; // Activamos PB0. delay_ms(500); // Esperamos 0,5 segundo.

    while (1) // Ejecuta indefinidamente lo que est entre corchetes. { for (n=0;n=1; // Movemos un bit a la derecha. delay_ms(500); // Esperamos 0,5 segundo. } } }

    5.3.1.2.- Display_7Segmentos. Los entrenadores utilizados son Simulador Perifricos y Dispay_7Seg dentro de la carpeta de Display_7Segmentos.

    Un display de 7 segmentos son diodos LED encapsulados con una determinada

    configuracin. Si queremos que aparezcan los nmeros decimales sobre el display es necesario realizar una conversin de nmero decimal a 7 segmentos. Dicha conversin depender de la conexin del display al microcontrolador.

    file:///E:/Curso%202011-2012/Desarrollo%20de%20Proyectos/Ejercicios%20Curso%202011_12/Monibot/Simulacin/Display_7Segmentos/Simulador%20Perifricos.DSNfile:///E:/Curso%202011-2012/Desarrollo%20de%20Proyectos/Ejercicios%20Curso%202011_12/Monibot/Simulacin/Display_7Segmentos/Display_7Seg.DSN
  • Aprendizaje de la Electrnica a travs de la Robtica - ARCE -

    Microcontroladores IES Joan Mir Pgina 31

    Tabla de conversin de Nmero Decimal a Binario de 7 segmentos

    5.3.1.2.1.- Display_7Seg_1.c

    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Programa.....: Display_7Seg_1.c // // Plataforma hw: Placa Monibot 16F877A // // Fecha........: Mayo-2011 // // Programador..: Pedro Alonso // // Descripcin..: Mostrar los nmeros desde 0 al 9 en un display de 7 Segmentos. // /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // ******************************* Directivas de procesado********************************************* // (Controlan la conversin del programa a cdigo mquina por parte del compilador) #include #fuses XT,NOWDT,NOPROTECT,NOLVP #use delay( clock = 1000000 ) // Reloj de 1 MHz #define Numeros_Tabla 10 // Nmeros de la Tabla. #BYTE TRISB = 0x86 // Asignamos a la etiqueta TRISB la direccin 86h de memoria RAM. #BYTE portB = 0x06 // Asignamos a la etiqueta portB la direccin 06h de memoria RAM. int8 n=0 ; // Declaramos la variable n con 8 bit y la inicializamos con 0. byte CONST DISPLAY[10] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; // Tabla de conversin de // BCD a 7 Seg.

    // ************************ Funcin principal o programa principal ********************************** // Se define con un void main, void main() {

    TRISB = 0B00000000; // Defines Puerto B como SALIDA de datos. portB = 0B00000000; // Reseteamos el Puerto B. while (1) // Ejecuta indefinidamente lo que est entre corchetes.

    Nmero Decimal

    Puerto B

    B7 B6 B5 B4 B3 B2 B1 B0 g f e d c b a

    Nmero Hexadecimal

    0 1 2 3 4 5 6 7 8 9

    0 0 1 1 1 1 1 1 0 0 0 0 0 1 1 0 0 1 0 1 1 0 1 1 0 1 0 0 1 1 1 1 0 1 1 0 0 1 1 0 0 1 1 0 1 1 0 1 0 1 1 1 1 1 0 1 0 0 0 0 0 1 1 1 0 1 1 1 1 1 1 1 0 1 1 0 1 1 1 1

    3F 06 5B 4F 66 6D 7D 07 7F 6F

    1 Dgito en Hexadecimal

    2 Dgito en Hexadecimal

  • Aprendizaje de la Electrnica a travs de la Robtica - ARCE -

    Microcontroladores IES Joan Mir Pgina 32

    { for (n=0; n=0 en orden DESCENDENTE de uno en uno { portB = DISPLAY[n]; // Mostramos en el Puerto B el valor que tiene DISPLAY[n] delay_ms(1000); // Retardo de 1 Segundo. } } }

  • Aprendizaje de la Electrnica a travs de la Robtica - ARCE -

    Microcontroladores IES Joan Mir Pgina 33

    5.3.1.2.3.- Display_7Seg_3.c

    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Programa.....: Display_7Seg_1b.c // // Plataforma hw: Placa Monibot 16F877A // // Fecha........: Mayo-2011 // // Programador..: Pedro Alonso // // Descripcin..: Mostrar mi nombre. // ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // ********************************** Directivas de procesado****************************************** // (Controlan la conversin del programa a cdigo mquina por parte del compilador) #include #fuses XT,NOWDT,NOPROTECT,NOLVP #use delay( clock = 1000000 ) // Reloj de 1 MHz #define Numeros_Tabla 5 // Nmeros de la Tabla. #BYTE TRISB = 0x86 // Asignamos a la etiqueta TRISB la direccin 86h de memoria RAM. #BYTE portB = 0x06 // Asignamos a la etiqueta portB la direccin 06h de memoria RAM. int8 n=0; // Declaramos la variable n con 8 bit y la inicializamos con 0. byte CONST DISPLAY[5] = {0x73,0x79,0x5E,0x50,0x3F}; // Tabla de 5 datos. // P E d r O

    // ***************************** Funcin principal o programa principal **************************** // Se define con un void main, void main() {

    TRISB = 0B00000000; // Defines Puerto B como SALIDA de datos. portB = 0; // Reseteamos el Puerto B. while (1) // Ejecuta indefinidamente lo que est entre corchetes. { for (n=0;n

  • Aprendizaje de la Electrnica a travs de la Robtica - ARCE -

    Microcontroladores IES Joan Mir Pgina 34

    5.3.1.3.- LCD. Los entrenador utilizados son Simulador Potencia y LCD dentro de la carpeta de LCD.

    La pantalla de cristal lquido o display LCD (Liquid Crystal Display) se utiliza para mostrar mensajes. Puede mostrar cualquier carcter alfanumrico.

    La pantalla consta de una matriz de de caracteres (Normalmente de 5x7 punto por

    carcter), distribuidos en una, dos, tres, cuatro lneas (Hasta 40 caracteres por lnea). El proceso de visualizacin es gobernado por un microcontrolador incorporado en la propia pantalla. El modelo ms utilizados es el Hitachi HD44780.

    Uno de los modelos utilizados es el LM16L cuyas caractersticas son:

    Consumo reducido, del orden de 7,5 mW. Pantalla de caracteres ASCII, caracteres griegos, smbolos matemticos, etc. Desplaza los caracteres hacia la izquierda o a la derecha. Memoria de 40 caracteres por lnea de pantalla, visualizacin de 16 caracteres

    por lnea.

    file:///E:/Curso%202011-2012/Desarrollo%20de%20Proyectos/Ejercicios%20Curso%202011_12/Monibot/Simulacin/LCD/Simulador%20Potencia.DSNfile:///E:/Curso%202011-2012/Desarrollo%20de%20Proyectos/Ejercicios%20Curso%202011_12/Monibot/Simulacin/LCD/LCD.DSN
  • Aprendizaje de la Electrnica a travs de la Robtica - ARCE -

    Microcontroladores IES Joan Mir Pgina 35

    Movimiento del cursor y cambio de su aspecto. Permite programas ocho caracteres. Puede ser gobernado de dos formas principales:

    Conexin con bus de 4 bits

    Conexin con un bus de 8 bits

    El patillaje es el siguiente:

    La alimentacin es de 5V. La regulacin de contraste se realiza por la patilla VEE con un potencimetro de 10K. Si ponemos VEE a masa tiene el mximo contraste.

    Las lneas del bus de datos (D7..D0) son triestado y

    pasan a estado de alta impedancia cuando el LCD no se utiliza.

    SEAL DEFINICIN PINES FUNCIN

    D7..D0 Data Bus 14..7 Bus de datos

    E Enable 6 E=0 LCD no habilitado. E=1 LCD habilitado.

    R/W Read/Write 5 R/W =0 escribe en LCD. R/W =1 lee del LCD.

    RS Register Select 4 RS=0 Modo Comando RS=1 Modo Caracter

    VEE VLC Liquid Cristal driving Voltage 3 Tensin para ajustar el contraste

    VDD Power Supply Voltage 2 Tensin de Alimentacin +5V

    VSS Ground 1 Masa.

    Utilizaremos el driver flex_lcd.c que es una variacin del creado por CCS, con las siguientes funciones:

    Lcd_init(); Inicializa el LCD. Borra el LCD y lo configura en el formato de 4 bits, con dos lneas de caracteres (5x7 puntos), en modo encendido, cursor apagado y sin parpadeo. Lcd_gotoxy (byte x, byte y); Indica la posicin y lnea donde se posiciona el cursor.

    byte x es posicin del cursor y byte y el lnea.

    Utilizamos funciones del compilador de C de CCS para escribir en el LCD. PRINTF(function, string, values)

    La funcin de impresin formateada PRINTF saca una cadena de caracteres al estndar serie RS-232 o a una funcin especificada. El formato est relacionado con el argumento que ponemos dentro de la cadena (string). function es una funcin. Ejemplo ( Lcd_putc) values es una lista de variables separadas por comas. Ejemplo V1,I1,DATO

    string es una cadena de caracteres, donde se indica, mensaje, nmero, tipo ,\c. mensaje Texto a escribir en el LCD

    nmero (nmero de caracteres) es opcional 1-9 Cuantos caracteres se escriben.

    D7

    14

    D6

    13

    D5

    12

    D4

    11

    D3

    10

    D2

    9D

    18

    D0

    7

    E6

    RW

    5R

    S4

    VS

    S1

    VD

    D2

    VE

    E3

    LCD1LCD-16 X 2_JOAN

    file:///E:/Curso%202011-2012/Desarrollo%20de%20Proyectos/Ejercicios%20Curso%202011_12/Monibot/Simulacin/LCD/flex_lcd.c
  • Aprendizaje de la Electrnica a travs de la Robtica - ARCE -

    Microcontroladores IES Joan Mir Pgina 36

    01-09 Indica cuantos ceros existen a la Izquierda. 1.1-9.9 para coma flotante. t ipo (tipo de carcter) puede ser: c Carcter. s Cadena o Carcter. u Entero sin signo. d Entero con signo. Lu Entero Largo sin signo. Ld Entero Largo con signo. x Entero Hexadecimal (minsculas). X Entero Hexadecimal (maysculas). Lx Entero largo Hexadecimal (minsculas). LX Entero largo Hexadecimal(maysculas). f Flotante con truncado. g Flotante con redondeo. e Flotante en formato exponencial. w Entero sin signo con decimales insertados. La 1 cifra indica el

    total de nmeros, la 2 cifra indica el nmero de decimales. \c puede ser: \f Se limpia el LCD. \n El cursor va a la posicin (1,2) \b El cursor retrocede una posicin.

    5.3.1.3.1.- LCD_1.c

    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Programa.....: LCD_1.c // // Plataforma hw: Placa Monibot 16F877A // // Fecha........: Mayo-2011 // // Programador..: Pedro Alonso // // Descripcin..: Mostrar mensajes en el LCD // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // ******************************** Directivas de Preprocesado**************************************** #include #fuses XT,NOWDT,NOPROTECT,NOLVP #use delay( clock = 1000000 ) // Reloj de 1 MHz #include // Incluimos el driver flex_lcd.c que contiene las funciones de control del LCD.

    // *********************** Funcin principal o programa principal *********************************** void main() {

    lcd_init(); // Inicializamos el LCD. printf(lcd_putc, "I.E.S. Joan Miro\n"); // Escribimos "I.E.S. Joan Miro" y

    // saltamos a la siguiente lnea. printf(lcd_putc, " Ciclo GM de EC"); // Escribimos " Ciclo GM de EC". while (1); // Ejecuta est instruccin indefinidamente. }

  • Aprendizaje de la Electrnica a travs de la Robtica - ARCE -

    Microcontroladores IES Joan Mir Pgina 37

    5.3.1.3.2.- LCD_2.c

    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Programa.....: LCD_2.c // // Plataforma hw: Placa Monibot 16F877A // // Fecha........: Mayo-2011 // // Programador..: Pedro Alonso // // Descripcin..: Mostrar nmeros en diferentes formatos en el LCD // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // ******************************* Directivas de Preprocesado**************************************** #include #fuses XT,NOWDT,NOPROTECT,NOLVP #use delay( clock = 1000000 ) // Reloj de 1 MHz #include // Incluimos el driver flex_lcd.c que contiene las funciones de control del LCD. int8 numero_1 = 254; // Nmeros comprendidos de 0 a 255 signed int8 numero_2 = -128; // Nmeros comprendidos de -128 hasta 127 int8 numero_3 = 142; // Nmeros comprendidos de 0 a 255 (8E en Hexadecimal) float numero_4 = -2.35; // Nmeros con decimales

    // *********************** Funcin principal o programa principal *********************************** void main() {

    lcd_init(); // Inicializamos el LCD. lcd_gotoxy(1,1); // Posicionamos el Cursor del LCD en la posicin 1 lnea 1 . printf(lcd_putc,"%3u",numero_1); // Escribimos 3 dgitos de la variable "numero_1" en formato entero y // sin signo. lcd_gotoxy(8,1); // Posicionamos el Cursor del LCD en la posicin 8 lnea 1 . printf(lcd_putc,"%4d",numero_2); // Escribimos 4 dgitos de la variable "numero_2" en formato entero // con signo. lcd_gotoxy(1,2); // Posicionamos el Cursor del LCD en la posicin 1 lnea 2 . printf(lcd_putc,"%2X",numero_3); // Escribimos 2 dgitos de la variable "numero_3" en formato entero // hexadecimal maysculas. lcd_gotoxy(8,2); // Posicionamos el Cursor del LCD en la posicin 8 lnea 2 . printf(lcd_putc,"%5.2f",numero_4); // Escribimos 5 dgitos de la variable "numero_4" en formato flotante. // La 1 cifra indica el total de dgitos y la 2 el nmero de decimales. while (1); // Fin.

    }

    5.3.1.3.3.- LCD_3.c

    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Programa.....: LCD_3.c // // Plataforma hw: Placa monibot 16F877A // // Fecha........: Mayo-2011 // // Programador..: Pedro Alonso // // Descripcin..: Mostrar mensajes y array de nmeros en formatos Decimal // // y Hexadecimal en el LCD // ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // ******************************** Directivas de Preprocesado**************************************** #include #fuses XT,NOWDT,NOPROTECT,NOLVP

  • Aprendizaje de la Electrnica a travs de la Robtica - ARCE -

    Microcontroladores IES Joan Mir Pgina 38

    #use delay( clock = 1000000 ) // Reloj de 1 MHz #include // Incluimos el driver flex_lcd.c que contiene las funciones

    // de control del LCD. byte CONS