Programar PIC`s en lenguaje C18 En 64 horas. El siguiente material está desarrollado como complemento didáctico para la materia de microcontroladores,

Slides:



Advertisements
Presentaciones similares
PIC 16F873 CONVERSIÓN A/D Y TRANSMISIÓN POR PUERTO SERIE
Advertisements

CURSO BASICO INTERMEDIO
PANTALLA LCD.
FAMILIA DE LÓGICA PROGRAMABLE EMBEBIDA ALTERA FLEX 10K.
Instrucciones Básicas Entrada de Información
Programación en C para electrónica
Módulo: Creación automática de pruebas de selección múltiple
Unidad 1 Conceptos básicos de computación
Fundamentos de la Programación Estructurada
Programación, Algoritmos y Estructuras de Datos
Funciones. Programación, Algoritmos y Estructuras de Datos.
Comparador de iluminación Sensor de puerta Potencia Iluminación Generador Alarma.
INFORMATICA I Funciones CLASE 13.
Programación en Lenguaje Ensamblador.
Entrada / salida digital con ccs
LEGO MINDSTORMS Marco Antono López Trinidad Laboratorio de Sistemas Inteligentes Tec de Monterrey Campus Cuernavaca.
Funciones y procedimientos
Tema 3 Entrada y Salida.
MODOS DE DIRECCIONAMIENTO
Igor Santos Grueiro. Ahora tenemos datos y datos …
Informática Ingeniería en Electrónica y Automática Industrial
Asignatura: Lenguaje de Programación de Sistemas PPT No.05 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya.
Archivos. fopen(...) Para comenzar a utilizar un archivo primero se debe abrir, invocando a la función fopen(...) FILE * fopen(char* nombre_arch, char*
Manejo básico de la calculadora Casio Algebra FX 2.0 Plus
Microcontroladores PIC16F84A.
INTERRUPCIONES Y TEMPORIZADORES Programación en C para electrónica.
Introducción a la Ingeniería en Sistemas
ALGORITMOS.
Tema 7. Introducción a lenguaje de programación Visual Basic (clase 1)
Unidad III Elementos del lenguaje C++
Archivos.
Informática Ingeniería en Electrónica y Automática Industrial
CONTROL REMOTO SEGURO Álvaro Bravo Mercado Domingo Devotto Nelson Figueroa.
Display LCD Campos Miranda Brian Rafael
MICROCONTROLADORES NOCIONES BÁSICAS. ¿QUÉ ES UN MICROCONTROLADOR? MICROCONTROLADOR = MICROPROCESADOR + MEMORIA + PERIFERICOS.
Integrantes: Christian Blanco Raúl Bejarano
Microprocesador (80X86) Universidad Nacional de Ingeniería
UNIDAD VI: CIRCUITOS LÓGICOS SECUENCIALES
Archivos Programación I MC Beatriz Beltrán Martínez.
Unidad I: Registros e Interrupciones Facilitador: Ing. Eduardo Brando.

Controlador PID de temperatura utilizando la tarjeta de desarrollo AVR Butterfly Andrés Lecaro José González.
 En computación es un conjunto de líneas de señal que el microprocesador o CPU utilizan para intercambiar datos con otros componentes como teclados,
PROYECTO CON EL MICROCONTROLADOR PIC 16F84A
Módulo LCD Controlador HD44780.
Programar PIC`s en lenguaje C18 En 64 horas. El siguiente material está desarrollado como complemento didáctico para la materia de microcontroladores,
Clase 14: Memoria EEPROM.
Términos algoritmo diseñar algoritmo implementar algoritmo
Sesión 6: Repaso LCD - Keyboard. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1Universidad Santo.
CORPOCIDES Ing. Emilio Medina Baquero – Pedro Alberto Arias
Microcontroladores PIC
Programar PIC`s en lenguaje C18 En 64 horas.
Vamos a tratar algunos temas que es necesario conocer a la hora de administrar un sistema informático y que nos van a ser útiles sin importar el sistema.
Programar PIC`s en lenguaje C18 En 64 horas.
Programar PIC`s en lenguaje C18 En 64 horas.
Programar PIC`s en lenguaje C18 En 64 horas.
Programar PIC`s en lenguaje C18 En 64 horas.
LENGUAJE “C” Programación.
CORPOCIDES Ing. Emilio Medina Baquero
INTRODUCCIÒN MICROCONTROLADORES
Fundamentos de Programación
Manejo de Video MC Beatriz Beltrán Martínez Otoño 2013.
Algoritmo.
Javier Mauricio Galvis Moreno
EAR EMTIIB Curso-Taller programación en Lenguaje C para microcontroladores PIC PIC18F452.
José Alvarado – Cristian Anzola
Unidad de transferencia de memoria
SISTEMAS ELECTRÓNICOS 3ºGIERM1 1. Introducción 2. Tipos de datos 3. Estructuras típicas de programación 4. Manejo de bits Tema 7. Programación de microcontroladores.
PANTALLA LCD.
Display de cristal liquido 2x16
Transcripción de la presentación:

Programar PIC`s en lenguaje C18 En 64 horas. El siguiente material está desarrollado como complemento didáctico para la materia de microcontroladores, puede ser utilizados por docentes y estudiantes con disciplina de autoaprendizaje. Autor: Ramdhar Hadit Yusseff Vanegas Esp. En control e instrumentación industrial Esta obra está bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 2.5 Colombia.Licencia Creative Commons Atribución-NoComercial-CompartirIgual 2.5 Colombia

Tema 11

El display LCD es un dispositivo que permite visualizar un contenido de forma grafica o alfanumérica, por medio de símbolos y caracteres establecidos en la memoria en código ASCII. Normalmente se encuentra gobernada por un microcontrolador para configurar su funcionamiento. LCD Display de Cristal Liquido 2x16 Clase

Conexión de la LCD Clase 6 Etapa Alimentación Etapa bidireccional de datos

Pines de alimentación: 1. Vss: Gnd 2. Vdd: +5 voltios 3. Vee: corresponde al pin de contraste, se regula por medio de un potenciómetro como muestra la figura anterior. Pines de control: 4. RS: Pin de selección registro de control (0) o registro de datos (1). 5. RW: Corresponde al pin de Escritura(0) o de Lectura(1). 6. E: Corresponde al pin Enable o de habilitación. Pines de Bus de datos: 7 – 14. El Bus de datos bidireccional comprende los pines D0 a D7. Display 7 segmentos Cátodo Común Clase 6

Clase 6

Conexión de la LCD Clase 6

RUTINA CLEAR DISPLAY RE2RE1RD7RD6RD5RD4RD3RD2RD1RD0 RSRWD7D6D5D4D3D2D1D #define lcd_rs LATEbits.LATE2 #define lcd_RW LATEbits.LATE1 #define lcd_enable LATEbits.LATE0 lcd_rs=0; lcd_enable=1; PORTD= 0x01; delay_ms(2); lcd_enable=0; delay_ms(2); Función retardo basada en 20MHz void delay_ms ( unsigned int retardo){ unsigned int k; for (k=0;k<retardo;k++){ Delay1KTCYx(5);

Clase 6 RUTINA HOME DISPLAY RE2RE1RD7RD6RD5RD4RD3RD2RD1RD0 RSRWD7D6D5D4D3D2D1D #define lcd_rs LATEbits.LATE2 #define lcd_RW LATEbits.LATE1 #define lcd_enable LATEbits.LATE0 lcd_rs=0; lcd_enable=1; PORTD= 0x03; delay_ms(2); lcd_enable=0; delay_ms(2); Función retardo basada en 20MHz void delay_ms ( unsigned int retardo){ unsigned int k; for (k=0;k<retardo;k++){ Delay1KTCYx(5);

Clase 6 RUTINA ENTRY MODE SET DISPLAY RE2RE1RD7RD6RD5RD4RD3RD2RD1RD0 RSRWD7D6D5D4D3D2D1D lcd_rs=0; lcd_enable=1; PORTD= 0x06; delay_ms(2); lcd_enable=0; delay_ms(2); Función retardo basada en 20MHz void delay_ms ( unsigned int retardo){ unsigned int k; for (k=0;k<retardo;k++){ Delay1KTCYx(5);

Clase 6 RUTINA DISPLAY CONTROL RE2RE1RD7RD6RD5RD4RD3RD2RD1RD0 RSRWD7D6D5D4D3D2D1D lcd_rs=0; lcd_enable=1; PORTD= 0x0F; delay_ms(2); lcd_enable=0; delay_ms(2);

Clase 6 RUTINA DESPLAZAR CURSOR O DISPLAY RE2RE1RD7RD6RD5RD4RD3RD2RD1RD0 RSRWD7D6D5D4D3D2D1D lcd_rs=0; lcd_enable=1; PORTD= 0x14; delay_ms(1); lcd_enable=0; delay_ms(1);

Clase 6 RUTINA DE FUNCIONES (CARACTERISTICAS) RE2RE1RD7RD6RD5RD4RD3RD2RD1RD0 RSRWD7D6D5D4D3D2D1D lcd_rs=0; lcd_enable=1; PORTD= 0x38; delay_ms(1); lcd_enable=0; delay_ms(1);

Clase 6 RUTINA CLEAR DISPLAY RE2RE1RD7RD6RD5RD4RD3RD2RD1RD0 RSRWD7D6D5D4D3D2D1D lcd_rs=1; lcd_enable=1; PORTD= ‘ A ’; delay_ms(1); lcd_enable=0; delay_ms(1);

Ejercicio Display LCD  Escriba correctamente el numero binario y hexadecimal que debe tener un puerto para representar los siguientes números en un display de cristal liquido (LCD) BIN: BIN: HEX: HEX: Clase 6

Enviar palabra completa “saludo” unsigned char Mensaje [16] = {“ABCDEFGHIJKLMNOP”}; for (i=0; i<=15;i++) { lcd_rs=1; lcd_enable=1; PORTD= Mensaje [i] ; delay_ms(1); lcd_enable=0; delay_ms(1); } Clase 6

Direcciones de memoria DD RAM Clase 6 Esta función sirve para posicionar el cursor en la culumna y fila deseada. Las direcciones de la 80h a la 8Fh corresponden con los 16 caracteres del primer renglón y de la C0h a la CFh con los 16 caracteres del segundo renglón, para este modelo. Filas 0x80 0xC0 Columnas 80 8F C0CF

Void lcd_enviar ( unsigned char dir, unsigned char valor){ If (dir = 0){ lcd_rs=0; lcd_enable=1; PORTD= valor; delay_ms(1); lcd_enable=0; delay_ms(1); } else { lcd_rs=1; lcd_enable=1; PORTD= valor; delay_ms(1); lcd_enable=0; delay_ms(1); } Clase 6 Función lcd_enviar Con esta función se va a configurar con RS=0 y a escribir RS=1 en la LCD.

Void lcd_gotoxy (unsigned char x, unsigned char y){ char dir ; if(y!=1) dir=0xC0; else dir=0; dir+=x-1 Lcd_enviar(0, 0x80|dir) ; } Clase 6 Función goto (x,y) Con esta funcion se posiciona el cursor en la fila y columna deseada.

Ejercicio mostrar un mensaje en la LCD Clase 6

#ifndef __lcd4550_H// instrucción de creación de librería #define __lcd4550_H// instrucción de creación de librería /********* Definición de pines***************/ #define LCD_LINEA2 0xC0 // Dirección de memoria para la segunda línea #define lcd_rs LATEbits.LATE2 #define lcd_RW LATEbits.LATE1 #define lcd_enable LATEbits.LATE0 #define DATOS PORTD // puerto de salida de datos /******definición del registro de control (RS)******/ #define LCD_DATO 1// para escribir en la pantalla #define LCD_COMANDO 0// para configurar el lcd /*******Definicion de configuraciones del lcd*******/ #define LCD_CLEAR 0x01 // 0b #define LCD_HOME 0x02 Clase 6 Crear librería para LCD (lcd4550.h) Se va a crear una librería con el fin de facilitar la programación de los códigos, esta librería se debe grabar con extensión “.h”.

Continuación Crear librería para LCD (lcd4550.h) // Opciones para el display #define LCD_DISPLAY_OFF 0x08 #define LCD_DISPLAY_ON 0x0C #define LCD_CURSOR_ON 0x0E #define LCD_CURSOR_BLINK 0x0F #define LCD_ENTRY_MODE 0X07 // Opciones especiales del cursor #define LCD_CURSOR_SHIFT_RIGHT 0x14 #define LCD_CURSOR_SHIFT_LEFT 0x10 #define LCD_DISPLAY_SHIFT_RIGHT 0x1C #define LCD_DISPLAY_SHIFT_LEFT 0x18 // Configurar el hardware #define LCD_DISPLAY_8_BITS 0x3F //0b #define LCD_DISPLAY_4_BITS 0x28 //0b Clase 6

/*******funciones para el manejo de los delays*******/ void delay_ms (unsigned int retardo){ unsigned int k; for(k=0;k<retardo;k++){ Delay1KTCYx(5); // retardo de 1ms con reloj de // Cycles = (TimeDelay * Fosc) / 4 // Cycles = (1ms * 20MHz) / 4 // Cycles = 5,000 } void delay_us (unsigned int retardo) // solo sirve para números mayores a 10 { retardo =retardo/10; unsigned int k; for(k=0;k<retardo;k++){ Delay10TCYx( 5 );// retardo de 1us // Cycles = (TimeDelay * Fosc) / 4 // Cycles = (1us * 20MHz) / 4 // Cycles = 5 } Clase 6 Continuación Crear librería para LCD (lcd4550.h)

Clase 6 Void lcd_enviar (unsigned char dir, unsigned char valor){ If (dir = 0){ lcd_rs=0; lcd_enable=1; PORTD= valor; delay_ms(1); lcd_enable=0; delay_ms(1); } else{ lcd_rs=1; lcd_enable=1; PORTD= valor; delay_ms(1); lcd_enable=0; delay_ms(1); } Continuación Crear librería para LCD (lcd4550.h)

/******inicialización del LCD************/ void lcd_init(void) { int dir,valor; dir = LCD_COMANDO;//para configurar la LCD valor = LCD_CLEAR; //0x38 Inicia el modulo a 8 bits lcd_enviar (dir,valor); delay_ms(1); valor = LCD_HOME; //0x0c activa display lcd_enviar (dir,valor); valor = LCD_ENTRY_MODE; //0x01 borra display lcd_enviar(dir,valor); valor = LCD_CURSOR_BLINK; //selecciona mensaje fijo lcd_enviar (dir,valor); valor = LCD_DISPLAY_SHIFT_RIGHT ; // instrucción para decrementar el cursor lcd_enviar(dir,valor); valor = LCD_DISPLAY_8_BITS ; lcd_enviar(dir,valor); } Ejercicio 3 Display 7 Segmentos Incremento y Decremento. Clase 6

/*********Función para posicionamiento del cursor********/ void lcd_gotoxy ( char x, char y) { char dir; if(y!=1) dir=0xC0; else dir=0; dir+=x-1; lcd_enviar(LCD_COMANDO,0x80|dir); } #endif Clase 6 Continuación Crear librería para LCD (lcd4550.h)

/**************Espacio para librerías*******************/ #include #include // incluir la librería creada. /***********Configuración de fuses o pragma**************/ #pragma config PLLDIV = 5, CPUDIV = OSC1_PLL2, USBDIV = 1 #pragma config FOSC = HSPLL_HS, FCMEN = OFF,IESO = OFF #pragma config PWRT = ON,BOR = OFF,BORV = 0 #pragma config VREGEN = OFF, WDT = OFF,WDTPS = #pragma config MCLRE = ON,LPT1OSC = OFF,PBADEN = OFF,CCP2MX = OFF #pragma config STVREN = OFF,LVP = OFF,XINST = OFF,DEBUG = OFF #pragma config CP0 = ON,CP1 = ON,CP2 = ON #pragma config CPB = ON,CPD = ON #pragma config WRT0 = ON,WRT1 = ON,WRT2 = ON, WRT3 = ON #pragma config WRTB = ON,WRTC = ON,WRTD = ON #pragma config EBTR0 = ON,EBTR1 = ON,EBTR2 = ON, EBTR3 = ON #pragma config EBTRB = ON Código control LCD Clase 6

char const vector[10]="SALUDO"; char const vector2[12]="ESTUDIANTES"; char i=0; void main (void){ TRISD = 0X00; TRISE = 0X00; PORTD = 0X00; PORTE = 0X00; while (1){ lcd_init(); lcd_gotoxy(8,1); for (i=0;i<6;i++){ lcd_enviar (LCD_DATO,vector [i]); delay_ms (300); } lcd_gotoxy(24,2); for (i=0;i<=10;i++){ lcd_enviar (LCD_DATO,vector2 [i]); delay_ms (300); } Código control LCD Clase 6

Ejercicio Propuesto. Usted es contratado por una agencia de viajes para desarrollar un dispositivo que cumpla con las siguientes especificaciones. Muestre en una pantalla de 16x2 el nombre y el precio de los planes que ofrece. Desea lo siguiente: * El mensaje se debe desplazar de derecha a izquierda * Debe salir el nombre del plan arriba y el precio en la segunda fila. * En la noche la pantalla se debe encender automáticamente para que los usuarios puedan leer. * Por favor indicar el costo total. Los planes son: San Andrés: $1’200,000 Amazonas: $989,000Isla Margarita: $500,000 Cancún: $2´600,000Panamá: $1`200,000Crucero: $2`500,000 Clase 6

Tema 11 piccmania.blogspot.com Programación de PIC 18F4550 en C18 Autor: Ramdhar Hadit Yusseff Vanegas

Tema 11 Microcontrolador, PIC, 18f4550, Puertos, LCD, crear Librería, Puertos de salida, Código C18. Programación de PIC 18F4550 en C18 Autor: Ramdhar Hadit Yusseff Vanegas