La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Programar PIC`s en lenguaje C18 En 64 horas.

Presentaciones similares


Presentación del tema: "Programar PIC`s en lenguaje C18 En 64 horas."— Transcripción de la presentación:

1 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. Programar PIC`s en lenguaje C18 En 64 horas. 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.

2 Funcionamiento y programación de displays 7 segmentos.
Tema 9 Funcionamiento y programación de displays 7 segmentos.

3 Clase 5 Display de segmentos
Dispositivo de comunicación visual al usuario, conformado por un arreglo de leds en 7 segmentos denominados a, b, c, d, e, f, g, dp que permiten representar los números decimales del 0 al 9. también existen otros modelos con arreglos de leds de 14, 16 y 35 segmentos.

4 Clase 5 Display 7 segmentos
piccmania.blogspot.com y

5 Display 7 segmentos Cátodo Común
Clase 5 Display 7 segmentos Cátodo Común NUM DP G F E D C B A DEC HEXA 1 63 0X3F 6 0X06 2 91 0X5B 3 79 0X4F 4 102 0X66 5 109 0X6D 125 0X7D 7 0X07 8 127 0X7F 9 111 0X6F

6 Display 7 segmentos Ánodo Común
Clase 5 Display 7 segmentos Ánodo Común NUM DP G F E D C B A DEC HEXA 1 3 0X03 249 0XF9 2 164 0XA4 176 0XB0 4 163 0X99 5 146 0X92 6 130 0X82 7 248 0XF8 8 128 0X80 9 144 0X90

7 Ejercicio 7 Segmentos Clase 5
Escriba correctamente el numero binario y hexadecimal que debe tener un puerto para representar los siguientes números en un display ánodo común (AC) y cátodo común (CC). BIN: BIN: BIN: BIN: HEX: HEX: HEX: HEX:

8 Clase 5 Como crear un vector
Tipo de variable_Nombre de Vector_[cantidad de columnas del vector] Int vector [4] = {posición 0, posición 1, posición 2, posición 3} unsigned char Display7Seg [10] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F}; for (i=0; i<=9;i++) { LATB = Display7Seg[i]; Delay10KTCYx(250); }

9 Ejercicio 3 Display 7 Segmentos Incremento y Decremento.
Clase 5 Ejercicio 3 Display 7 Segmentos Incremento y Decremento.

10 Clase 5 Ejercicio 3 Display 7 Segmentos Incremento y Decremento.
/**************Espacio para librerías*******************/ #include <p18f4550.h> #include <delays.h> /***********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 = 32768 #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

11 Clase 5 Ejercicio 3 Display 7 Segmentos Incremento y Decremento.
unsigned char i; //Para controlar vizualización del Display unsigned char Display7Seg[10]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0xFF, 0x6F};    void main (void){ TRISD = 0xFF; //Todos como entrada. TRISB = 0X00; //Todos como salida.- PORTB = 0x3F; //Comienza en cero.- i=0; while(1){ if(PORTDbits.RD0 == 0 && PORTDbits.RD1 == 0){// ambos presionados resetea LATB = Display7Seg[i]; Delay10KTCYx(250); } else if( PORTDbits.RD0 == 0 ){ // Se incrementa cuenta.- ++i; if( i==10 ){ I = 0; } //Volvemos a 0.- LATB=Display7Seg[i]; Delay10KTCYx(250); } else if(PORTDbits.RD1==0){ // Se decrementa cuenta.- --i; if(i==255){i=9;} //Volvemos a 9.-

12 Funcionamiento y programación de varios displays 7 segmentos.
Tema 10 Funcionamiento y programación de varios displays 7 segmentos.

13 Ejercicio 4 Configuración de varios display 7 segmentos.
Clase 5 Ejercicio 4 Configuración de varios display 7 segmentos.

14 Ejercicio 4 Configuración de varios display 7 segmentos.
Clase 5 Ejercicio 4 Configuración de varios display 7 segmentos. /**************Espacio para librerías*******************/ #include <p18f4550.h> #include <delays.h> /***********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 = 32768 #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

15 Ejercicio 4 Configuración de varios display 7 segmentos.
Clase 5 Ejercicio 4 Configuración de varios display 7 segmentos. /*******Espacio para definiciones*************/ #define UnidadBit PORTAbits.RA0 #define DecenaBit PORTAbits.RA1 #define CentenaBit PORTAbits.RA2 unsigned char i; //Para controlar vizualización del Display unsigned char Display7Seg[10] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0xFF, 0x6F};   

16 Ejercicio 4 Configuración de varios display 7 segmentos.
Clase 5 Ejercicio 4 Configuración de varios display 7 segmentos. /***********Espacio Para Funciones*************/ void Visualizacion (void){ for(i=1;i<=20;++i){ LATB =Display7Seg[Unidad]; UnidadBit =1; //Enciendo Display Unidad.- Delay1KTCYx(5); //Demora de 5 ms (XT=4MHz) UnidadBit =0; LATB =Display7Seg[Decena]; DecenaBit =1; Delay1KTCYx(5); DecenaBit =0; LATB=Display7Seg[Centena]; CentenaBit =1; CentenaBit =0; //Apago Display Centena.- }

17 Ejercicio 4 Configuración de varios display 7 segmentos.
Clase 5 Ejercicio 4 Configuración de varios display 7 segmentos. void main(void){ TRISA = 0xF0; //Todos como entrada.- TRISB = 0X00; //Todos como salida.- PORTA = 0x00; char Unidad=0; char Decena=0; char Centena=0;   while(1){ Visualizacion(); ++Unidad; if(Unidad==10){ Unidad=0; ++Decena; if(Decena==10){ Decena=0; ++Centena; }

18 Turno Turno Caja Boton Clase 5
Ejercicio Propuesto 2. El Banco Interamericano lo buscó para desarrollar un sistema que le permita optimizar la atención a sus clientes, por medio de fichas y turnos, los requerimientos del sistema son: Cada cajero(a), debe tener un dispositivo en el cual se visualice el turno actual, y un botón que al pulsarlo incremente el valor del turno. Debe existir un tablero grande, donde los clientes puedan ver el turno actual, y la caja que esta atendiendo ese turno. Turno Turno Caja Boton

19 Bibliografía Tema 10 piccmania.blogspot.com www.prof2000.pt/users/lpa
Programación de PIC 18F4550 en C18 Autor: Ramdhar Hadit Yusseff Vanegas

20 Tema 10 Palabras clave Microcontrolador, PIC, 18f4550, Puertos, Display 7 Segmentos, Ánodo Común, Cátodo Común, Puertos de salida, Código C18. Programación de PIC 18F4550 en C18 Autor: Ramdhar Hadit Yusseff Vanegas


Descargar ppt "Programar PIC`s en lenguaje C18 En 64 horas."

Presentaciones similares


Anuncios Google