17/03/ Manual Practicas Pic en C JOSE ANTONIO LINERO MADRID SALESIANOS,MALAGA 17/03/20014
|
|
- Mariano Domingo Ojeda Arroyo
- hace 6 años
- Vistas:
Transcripción
1 17/03/ Manual Practicas Pic en C JOSE ANTONIO LINERO MADRID SALESIANOS,MALAGA 17/03/20014
2 INDICE 1. Parpadeo de un led cada 0.5 seg. 2. Parpadeo de tres led cada 0.5 seg. 3. Parpadeo de cuatro led cada 0.5 seg. 4. Coche fantástico v1. 5. Juego de luces. 6. Contador ascendente. 7. Contador 0 a 9 BCD&Boton. 8. Súper contador 0000a9999 (7 seg.) 9. Dado digital (7 seg). 10. Hola Mundo (Lcd). 11. Abecedario (Lcd). 12. Dado digital (Lcd). 13. Reloj-Calendario Rs Termómetro Digital con ds1620.
3 Herramientas MPlab IDE -> Entorno de trabajo CCS Plug-in MPlab -> Integrar nuestro compilador CCS al entrono MPlab CCS Demo -> Una version demo de nuestro compilador Manual CCS -> Manual de nuestro compilador en español 7Seg -> Programa que genera el codigo de display"s 7segmentos(ac & cc) LCD 5x7 -> Programa que genera codigo para caracteres cgram LCD 5x7 ASCII & RCC -> Programas para obtener codigo ASCII y RCC para colores resistor
4 1. Parpadeo de un led cada 0.5 seg. Programa: Parpadeo de un led cada 0.5s Version: 0.0 Dispositivo: PIC 16F648A Compilador: CCS vs3.227 Entorno IDE: MPLAB IDE v7.20 Simulador: Proteus 6.7sp3 Notas: Parpadeo de un led cada 0.5s por el pin RB0 del puerto B #include <16f648a.h> pic a utilizar #fuses XT,NOWDT,NOPROTECT,PUT ordenes para el programador #use delay (clock= ) Fosc=4Mhz #use fast_io(b) /PROGRAMA void main(void) set_tris_b(0xfe); portb como salida(rb0,las demas desactivadas) disable_interrupts(global); todas las interrupciones desactivadas do output_low(pin_b0); led off delay_ms(500); output_high(pin_b0); led on delay_ms(500); while(true); bucle infinito
5 2. Parpadeo de tres led cada 0.5 seg. Programa: Parpadeo de tres leds cada 0.5s Version: 0.1 Dispositivo: PIC 16F648A Compilador: CCS vs3.227 Entorno IDE: MPLAB IDE v7.20 Simulador: Proteus 6.7sp3 Notas: Parpadeo de tres leds cada 0.5s de tres formas diferentes: RB0 -> con la funcion output_high()/output_low() RB1 -> definiendo el pin RB1 RB2 -> con la funcion output_bit() #include <16f648a.h> pic a utilizar #fuses XT,NOCPD,NOWDT,NOPUT,NOLVP,NOBROWNOUT ordenes programador #use delay (clock= ) Fosc=4Mhz #use fast_io(b) #bit RB1=0x106.1 definicion pin potrb B1 /PROGRAMA void main(void) set_tris_b(0xf8); puerto b como salida disable_interrupts(global); todas interrupciones desactivadas RB1=0; valor inicial B1 para que los led"s se iluminen igual do output_high(pin_b0); led"s on RB1=!RB1; output_bit(pin_b2,1); delay_ms(500); output_low(pin_b0); led"s off RB1=!RB1; output_bit(pin_b2,0); delay_ms(500); while(true); bucle infinito
6 3. Parpadeo de cuatro led cada 0.5 seg Programa: Parpadeo de cuatro leds cada 0.5s Version: 0.2 Dispositivo: PIC 16F648A Compilador: CCS vs3.227 Entorno IDE: MPLAB IDE v7.20 Simulador: Proteus 6.7sp3 Notas: Parpadeo de cuatro leds cada 0.5s de cuatro formas diferentes: RB0 -> con la funcion output_high()/output_low() RB1 -> definiendo el pin RB1 RB2 -> con la funcion output_bit() RB3 -> con la funcion bit_set()/bit_clear() #include <16f648a.h> pic a utilizar #fuses XT,NOCPD,NOWDT,NOPUT,NOLVP,NOBROWNOUT ordenes para el programador #use delay (clock= ) Fosc=4Mhz #use fixed_io(b_outputs=pin_b0,pin_b1,pin_b2,pin_b3) pin de salida portb #bit RB1=0x106.1 definicion pin potrb B1 #byte portb=06 /PROGRAMA void main(void) set_tris_b(0x00); puerto b como salida disable_interrupts(global); todas interrupciones desactivadas RB1=0; valor inicial B1 para que los led"s se iluminen igual do output_high(pin_b0); led"s on RB1=!RB1; output_bit(pin_b2,1); bit_set(portb,3); delay_ms(500); output_low(pin_b0); led"s off RB1=!RB1; output_bit(pin_b2,0); bit_clear(portb,3); delay_ms(500); while(true); bucle infinito
7 4. Coche fantástico v1. Programa: Coche Fantastico Version: 0.0 Dispositivo: PIC 16F648A Compilador: CCS vs3.227 Entorno IDE: MPLAB IDE v7.20 Simulador: Proteus 6.7sp3 Notas: Barrido de led"s simulando la iluminacion del coche fantastico por el puerto A RA0 -> 1º Led RA1 -> 2º Led RA2 -> 3º Led RA3 -> 4º Led #include <16f648a.h> pic a utilizar #fuses XT,NOWDT,NOPROTECT,PUT ordenes para el programador #use delay (clock= ) Fosc=4Mhz #use standard_io(a) puerto A como salida /DECLARACIONES DE FUNCIONES void derecha(void); ilumina led"s derecha a izquierda void izquierda(void); ilumina led"s izquierda a derecha /PROGRAMA void main(void) set_tris_a(0xf0); porta como salida menos RA4(desactivado) disable_interrupts(global); todas las interrupciones desactivadas do bucle... derecha(); izquierda(); while(true);...infinito void derecha(void) output_high(pin_a0); delay_ms(300); output_low(pin_a0); output_high(pin_a1); delay_ms(300); output_low(pin_a1); output_high(pin_a2); delay_ms(300); output_low(pin_a2); output_high(pin_a3);
8 delay_ms(300); void izquierda(void) output_low(pin_a3); output_high(pin_a2); delay_ms(300); output_low(pin_a2); output_high(pin_a1); delay_ms(300); output_low(pin_a1);
9 5. Juego de luces Programa: Juego de luces Version: 0.0 Dispositivo: PIC 16F648A Compilador: CCS vs3.227 Entorno IDE: MPLAB IDE v7.20 Simulador: Proteus 6.7sp3 Notas: Iluminacion de juego de luces fuera-dentro y viceversa por el puerto B. Adaptacion a c por vszener del codigo en basic de lordlafebre. RB0 -> 1º Led RB1 -> 2º Led RB2 -> 3º Led RB3 -> 4º Led RB4 -> 5º Led RB5 -> 6º Led RB6 -> 7º Led RB7 -> 8º Led #include <16f648a.h> pic a utilizar #fuses XT,NOWDT,NOPROTECT,PUT,NOLVP ordenes para el programador #use delay (clock= ) Fosc=4Mhz #use standard_io(b) puerto B /PROGRAMA void main(void) signed char i; variable indice int leds[4]=0b ,0b ,0b ,0b ; led"s set_tris_b(0x00); portb como salida disable_interrupts(global); todas las interrupciones desactivadas do bucle... for(i=0;i<4;i++) led"s on fuera-dentro output_b(leds[ i ]); ilumino led"s correspondientes delay_ms(100); for(i=3;i>-1;i--) led"s on dentro-fuera output_b(leds[ i ]); ilumino led"s correspondientes delay_ms(100); while(true);...infinito
10 6. Contador ascendente. Programa: Contador ascendente 0-9 Version: 0.0 Dispositivo: PIC 16F648A Compilador: CCS vs3.227 Entorno IDE: MPLAB IDE v7.20 Simulador: Proteus 6.7sp3 Notas: Contador del 0 al 9 cada 0,5s y vuelta a empezar. Tener en cuenta que hay que poner la directiva NOLVP para que el pin B4 sea de salida #include <16f648a.h> pic a utilizar #fuses XT,NOWDT,NOPROTECT,PUT,NOLVP ordenes para el programador #use delay (clock= ) Fosc=4Mhz #use standard_io(b) /PROGRAMA void main(void) char i=0; contador para tabla 7 seg int tab7seg[10]=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67; 7seg hex 0-9 set_tris_b(0x00); portb como salida disable_interrupts(global); todas las interrupciones desactivadas do bucle... output_b(tab7seg[ i ]); muestra por portb digito 7 segmentos delay_ms(500); i++; incremento contador para visualizar siguiente digito if(i>9) ya se ha mostrado el digito 9? i=0; SI -> vuelve a empezar(digito 0) while(true);...infinito
11 7. Contador 0 a 9 BCD&Boton. Programa: Contador 0-9 display BDC & Boton Version: 0.0 Dispositivo: PIC 16F648A Compilador: CCS vs3.227 Entorno IDE: MPLAB IDE v7.20 Simulador: Proteus 6.7sp3 Notas: Contador 0 al 9 cada vez que pulsemos el boton y vuelta a empezar. Tener en cuenta que hay que poner la directiva NOLVP para que el pin B4 sea de salida. Cuando agregamos un boton a nuestro circuito hay que tener en cuenta que este dispositivo genera 'rebotes' que hay que ser eliminados para una correcta visualizacion en el display del digito seleccionado. Esta vez la eliminacion de 'los rebotes' se ha realizado mediante software. Cuando por el pin A0 del porta se introduce un '0' logico(low), se incrementa un digito en el display BCD. Conexiones: A0 -> boton B0 -> a B1 -> b B2 -> c B3 -> d BCD: d c b a NUM #include <16f648a.h> pic a utilizar #fuses XT,NOWDT,NOPROTECT,PUT,NOLVP ordenes para el programador #use delay (clock= ) Fosc=4Mhz #use fixed_io(b_outputs=pin_b0,pin_b1,pin_b2,pin_b3) #use standard_io(a) /PROGRAMA void main(void) char i=0; contador para tabla BCD int tabbcd[10]=0b0000,0b0001,0b0010,0b0011,0b0100,0b0101,0b0110,0b0111,0b1000,0b1001; BCD 0-9
12 set_tris_a(0xff); disable_interrupts(global); porta como entrada todas las interrupciones desactivadas output_b(tabbcd[i]); inicializa displaybcd digito 0 rebotes for(;;) indice tabbcd 9? indice(para mostrar digito 0) segmentos if(!input(pin_a0)) delay_ms(151); i++; if(i>9) i=0; bucle... se ha pulsado el boton? SI -> retardo para evitar los incremento contador se ha mostrado digito SI -> restaura valor output_b(tabbcd[i]); muestra por portb digito 7...infinito
13 8. Súper contador 0000a9999 (7 seg.) Programa: Contador del 0000 al 9999 Version: 0.0 Dispositivo: PIC 16F648A Compilador: CCS vs3.227 Entorno IDE: MPLAB IDE v7.20 Simulador: Proteus 6.7sp3 Notas: Contador del 0000 al 9999 cada 1s y vuelta a empezar. Tener en cuenta que hay que poner la directiva NOLVP para que el pin B4 sea de salida. Se utiliza variables locales: * i -> indice tabla 7seg para mostrar digito por 1º 7seg * j -> indice tabla 7seg para mostrar digito por 2º 7seg * w -> indice tabla 7seg para mostrar digito por 3º 7seg * z -> indice tabla 7seg para mostrar digito por 4º 7seg * flag -> variable que cuenta 1s * var -> ajuste fino para que desborde cada segundo Utilizamos la funcion de interrupcion para actualizar indices de la tabla de 7seg para mostrar el digito correspondiente en el respectivo 7seg, para ello el TMR0 se desborda cada 1s, para ello debe ser cargado con 61(equivale a un desbordamiento cada 50ms mas o menos), para obtener un desbordamiento de 1s utilizamos una variable(flag) que no entra en la actualizacion de indices hasta transcurrido 1s. Conexiones: RA0 -> Display 1º 7seg RA1 -> Display 2º 7seg RA2 -> Display 3º 7seg RA3 -> Display 4º 7seg RB0 -> a 7seg RB1 -> b 7seg RB2 -> c 7seg RB3 -> d 7seg RB4 -> e 7seg RB5 -> f 7seg RB6 -> g 7seg #include <16f648a.h> pic a utilizar #fuses XT,NOWDT,NOPROTECT,PUT,NOLVP ordenes para el programador #use delay (clock= ) Fosc=4Mhz #use standard_io(b) #use fixed_io(a_outputs=pin_a0,pin_a1,pin_a2,pin_a3) A0,A1,A2,A3 como salidas en porta char i=0,j=0,w=0,z=0,flag=0,var=20; variables globales /LLAMADA FUNCION INTERRUPCION #INT_TIMER0 void interrupcion()
14 if(flag>var) ya es 1 segundo? var--; SI -> decremento var... if(var<18) var=20;...ajuste fino de 1s flag=0; reset flag para contar 1s if(i>cool se ha mostrado por 1º 7seg digito 9? i=0; SI -> i=0 (muestra digito 0) (*) j++; incremento indice j if(j>9) se ha mostrado por 2º 7seg digito 9? j=0; SI -> j=0 (muestra digito 0) w++; incremento indice w if(w>9) se ha mostrado por 3º 7seg digito 9? w=0; SI -> w=0 (muestra digito 0) z++; incremento indice z if(z>9) se ha mostrado por 4º 7seg digito 9? z=0; SI -> z=0 (muestra digito 0) else (*) NO -> incrementa i i++; set_timer0(61); reset TMR0 flag++; incremento variable flag /PROGRAMA void main(void) int tab7seg[10]=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67; 7seg hex 0-9 set_tris_b(0x00); portb como salida enable_interrupts(int_timer0); interrupcion TIMER0 activada setup_counters(rtcc_internal,rtcc_div_256); configuracion interrupcion TMR0 set_timer0(61); carga TMR0 enable_interrupts(global); activadas interrupciones do bucle... output_high(pin_a0); output_high(pin_a1); output_high(pin_a2); output_low(pin_a3); output_b(tab7seg[ i ]); delay_ms(10); output_high(pin_a0); output_high(pin_a1); output_low(pin_a2); output_high(pin_a3); output_b(tab7seg[ j ]); delay_ms(10); activado º 7seg activado º 7seg
15 output_high(pin_a0); output_low(pin_a1); activado... output_high(pin_a2); output_high(pin_a3); output_b(tab7seg[ w ]);...3º 7seg delay_ms(10); output_low(pin_a0); activado... output_high(pin_a1); output_high(pin_a2); output_high(pin_a3); output_b(tab7seg[ z ]);...4º 7seg delay_ms(10); while(true);...infinito
16 9. Dado digital (7 seg). Programa: Dado digital Version: 0.0 Dispositivo: PIC 16F648A Compilador: CCS vs3.227 Entorno IDE: MPLAB IDE v7.20 Simulador: Proteus 6.7sp3 Notas: Dado digital, que al presionar el boton conectado al pin A0 del porta genera un numero pseudo-aleatorio mediante la funcion rand() que se encuentra en la libreria STDLIB.H. El numero pseudo-aleatorio es elegido mediante la funcion rand() y segun los "rebotes" producidos por el boton.tener en cuenta que hay que poner la directiva NOLVP para que el pin B4 sea de salida. Cuando agregamos un boton a nuestro circuito hay que tener en cuenta que este dispositivo genera "rebotes" que hay que ser eliminados para una correcta visualizacion en el display del digito seleccionado. Esta vez la eliminacion de "los rebotes" se ha realizado mediante software. Conexiones: A0 -> boton B0 -> a B1 -> b B2 -> c B3 -> d BCD: d c b a NUM #include <16f648a.h> pic a utilizar #include <STDLIB.H> libreria donde esta la funcion rand(); #fuses XT,NOWDT,NOPROTECT,PUT,NOLVP ordenes para el programador #use delay (clock= ) Fosc=4Mhz #use fixed_io(b_outputs=pin_b0,pin_b1,pin_b2,pin_b3) #use standard_io(a) /PROGRAMA void main(void) char num=0; variable almacena numero aleatorio set_tris_a(0xff); porta como entrada
17 disable_interrupts(global); todas las interrupciones desactivadas srand(10); maximo hasta 9 for( ; ; ) bucle... if(!input(pin_a0)) se ha pulsado el boton? do elimina... num=rand(); genera numero pseudo-aleatorio while(!input(pin_a0));...rebotes output_b(num); muestra por portb digito 7 segmentos...infinito
18 10. Hola Mundo (Lcd). Programa: Hola mundo Version: 0.0 Dispositivo: PIC 16F648A Compilador: CCS vs3.227 Entorno IDE: MPLAB IDE v7.21 Simulador: Proteus 6.7sp3 Notas: Se muestra por pantalla de lcd(lm016l) en la primera linea la frase "hola mundo Giño" y en la segunda linea "VsZeNeR"05". Tener en cuenta que hay que poner la directiva NOLVP para que el pin B4 sea de salida. Conexiones: B0 -> E B1 -> RS B2 -> RW B4 -> D4 B5 -> D5 B6 -> D6 B7 -> D7 #include <16f648a.h> pic a utilizar #fuses XT,NOWDT,NOPROTECT,PUT,NOLVP ordenes para el programador #use delay (clock= ) Fosc=4Mhz #define use_portb_lcd TRUE definir portb lcd #include<lcd.c> libreria manejo lcd /PROGRAMA void main(void) lcd_init(); inicializa lcd printf(lcd_putc,"hola mundo ; ) VsZeNeR"05" ); muestra por pantalla el mensaje
19 11. Abecedario (Lcd). Programa: Abecedario Version: 0.0 Dispositivo: PIC 16F648A Compilador: CCS vs3.227 Entorno IDE: MPLAB IDE v7.21 Simulador: Proteus 6.7sp3 Notas: Se muestra por pantalla de lcd(lm016l) el abecedario y vuelta a empezar Tener en cuenta que hay que poner la directiva NOLVP para que el pin B4 sea de salida. abecedario[] -> vector donde se almacena abecedario x -> indice para vector abecedario e indice para columna lcd y -> indice para fila lcd: y=1 -> Fila 1 y=2 -> Fila 2 Conexiones: B0 -> E B1 -> RS B2 -> RW B4 -> D4 B5 -> D5 B6 -> D6 B7 -> D7 #include <16f648a.h> pic a utilizar #fuses XT,NOWDT,NOPROTECT,PUT,NOLVP ordenes para el programador #use delay (clock= ) Fosc=4Mhz #define use_portb_lcd TRUE definir portb lcd #include<lcd.c> libreria manejo lcd /PROGRAMA void main(void) char abecedario[27]=" ","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y"," z",x,y=1; tabla y variables definidas lcd_init(); inicializa lcd do bucle... for(x=1;x<27;x++) bucle para mostrar digito if(y==1) 1º fila del lcd lcd_gotoxy(x,y); else 2º fila del lcd lcd_gotoxy((x-16),y); if(x>15) y=2; ya esta completa la 1º fila del lcd? SI -> escribe en 2º fila printf(lcd_putc,"%c",abecedario[ x ]); muestra por pantalla el caracter
20 delay_ms(300); printf(lcd_putc,"f " ) ; borra pantalla del lcd y=1; restablece indice while(true);...infinito
21 12. Dado digital (Lcd). Programa: Dado digital con lcd y buzzer Version: 0.0 Dispositivo: PIC 16F648A Compilador: CCS vs3.227 Entorno IDE: MPLAB IDE v7.21 Simulador: Proteus 6.7sp3 Notas: Dado digital, que al presionar el boton conectado al pin A0 del porta genera un numero pseudo-aleatorio mediante la funcion rand() que se encuentra en la libreria STDLIB.H. El numero pseudo-aleatorio es elegido mediante la funcion rand() y segun los "rebotes" producidos por el boton.tener en cuenta que hay que poner la directiva NOLVP para que el pin B4 sea de salida. Cuando agregamos un boton a nuestro circuito hay que tener en cuenta que este dispositivo genera "rebotes" que hay que ser eliminados para una correcta visualizacion en la lcd del digito seleccionado. Esta vez la eliminacion de "los rebotes" se ha realizado mediante software. Conexiones: A0 -> boton B0 -> E B1 -> RS B2 -> RW B4 -> D4 B5 -> D5 B6 -> D6 B7 -> D7 B3 -> Buzzer(beep) #include <16f648a.h> pic a utilizar #define RAND_MAX 7 dado solamente 6 numeros #include <STDLIB.H> libreria donde esta la funcion rand(); #fuses XT,NOWDT,NOPROTECT,PUT,NOLVP ordenes para el programador #use delay (clock= ) Fosc=4Mhz #use standard_io(b) #use fast_io(a) #define use_portb_lcd TRUE definir portb lcd #include<lcd.c> libreria manejo lcd /PROGRAMA void main(void) char num=0; variable almacena numero aleatorio set_tris_a(0xff); porta como entrada disable_interrupts(global); todas las interrupciones desactivadas lcd_init(); inicializa lcd srand(10); maximo hasta 9
22 lcd_putc("dado Electronico Pulse boton..." ); while(input(pin_a0)) lcd_putc("fdado: VsZeNeR"05" ); lcd_gotoxy(7,1); Se mantiene cabecera hasta que se pulse el boton Coordenadas dond se muestra el numero for( ; ; ) bucle... if(!input(pin_a0)) se ha pulsado el boton? do SI -> elimina... num=rand(); genera numero pseudo-aleatorio while(!input(pin_a0));...rebotes printf(lcd_putc,"%d",num); muestra por lcd numero lcd_putc("" ); retrocede un espacio output_high(pin_b3); activa buzzer(beep) delay_ms(50); tiempo de escucha del beep output_low(pin_b3); desactiva buzzer(beep)...infinito
23 13. Reloj-Calendario Rs232 Programa: Reloj-Calendario DS1302 y RS232 Version: 1.0 Dispositivo: PIC 16F648A Compilador: CCS vs3.227 Entorno IDE: MPLAB IDE v7.21 Simulador: Proteus 6.7sp3 Notas: Se muestra por virtual terminal la fecha y hora obtenida mediante la lectura del DS1302. Pudiendose modificar mediante los botones Conf/Ok y up. Se utiliza variables globales: day-> dia ds1302 mth -> mes ds1302 year -> año ds1302 hour -> hora ds1302 min -> minutos ds1302 sec-> segundos ds1302 menu -> variable que muestra opcion del menu configurar flag -> variable que cuenta hasta 130ms aprox./ tb vale como control menu var -> ajuste fino para que desborde cada 130ms aprox. Se carga el TMR0 con 0 por lo tanto se desborda en 65ms aprox, queremos visualizar y restaurar valores cogidos del ds1302 cada 130ms aprox por lo tanto utilizamos una variable llamada flag que sera la encargada de dicha tarea. Al inicio del programa debe ser configurado el reloj, siendo el boton "up" el encargado de ir moviendose mediante las opciones del menu:hora,minutos,... y el boton "Conf/Ok" el encargado de configurar el reloj(cuando estemos en modo ver hora y fecha) o el encargado de salir de la configuracion de las opciones(cuando estemos en formato de configurar fecha y hora). Tener en cuenta que hay que poner la directiva NOLVP para que el pin B4 sea de salida. Conexiones: A0 -> RST DS1302 A1 -> SCLK DS1302 A2 -> I/O DS1302 A3 -> Boton "up" A5 -> Boton "Conf/Ok" B1 -> Tx B2 -> Rx B3 -> Zumbador(beep) #include <16f648a.h> pic a utilizar #use delay(clock= ) Fosc=4Mhz #fuses HS,NOPUT,NOPROTECT,NOBROWNOUT,NOLVP,NOWDT,NOMCLR comandos para el programador #use standard_io(a) #use standard_io(b) #use rs232(baud=9600, xmit=pin_b1, rcv=pin_b2, FORCE_SW) manejo del RS232 #define RTC_SCLK PIN_A1 definimos pin"s... #define RTC_IO PIN_A2 #define RTC_RST PIN_A0...de conexion de la rtc ds1302
24 #include <ds1302.c> libreria de rtc ds1302 /VARIABLES GLOBALES byte day,mth,year,dow,hour,min,sec; variabes para ds1302 byte menu=0,flag=0,var=2; variables para menu configurar /DEFINICION DE FUNCIONES void configurar(void); void horas(void); void minutos(void); void dia(void); void mes(void); void anio(void); void beep(void); /LLAMADA FUNCION INTERRUPCION #INT_TIMER0 void interrupcion() if(flag>var) ya es 130ms aprox? var--; SI -> decremento var... if(var==0) var=2;...ajuste fino de 130ms aprox flag=0; reset flag para contar 130ms aprox rtc_get_date(day,mth,year,dow); coge dia,mes,año rtc_get_time(hour,min,sec ); coge hora,minuto,segundo printf("ffecha: %2X/%2X/%2X Hora: %2X:%2X:%2X",day,mth,year,hour,min,sec); lcd set_timer0(0); reset TMR0 flag++; incremento variable flag /PROGRAMA void main(void) enable_interrupts(int_timer0); interrupcion TIMER0 activada setup_counters(rtcc_internal,rtcc_div_256); configuracion interrupcion TMR0 set_timer0(0); carga TMR0 rtc_init(); inicializa rtc puts("reloj Calendario" ); puts("vszener"05" ); delay_ms(800);...inicial configurar(); ve a menu configurar enable_interrupts(global); activadas interrupciones
25 for( ; ; ) bucle... if(input(pin_a5)==0) Si se pulsa Conf... while(!input(pin_a5)) elimina rebotes beep(); configurar(); ve a menu configurar...infinito /FUNCION CONFIGURAR void configurar(void) disable_interrupts(global); desactivadas interrupciones do switch(menu) case 0: printf("fconfigurar horas?" ); horas if(!input(pin_a5)) while(!input(pin_a5)) beep(); horas(); menu=1; apunta siguiente opcion flag=1; para el retorno funcion ver sig break; case 1: printf("fconfigurar minutos?" ); minutos if(!input(pin_a5)) while(!input(pin_a5)) beep(); minutos(); menu=2; apunta siguiente opcion flag=1; para el retorno funcion ver sig break; case 2: printf("fconfigurar dia?" ); dias if(!input(pin_a5)) while(!input(pin_a5)) beep(); dia(); menu=3; apunta siguiente opcion flag=1; para el retorno funcion ver sig break; case 3: printf("fconfigurar mes?" ); mes if(!input(pin_a5)) while(!input(pin_a5))
26 beep(); mes(); menu=4; apunta siguiente opcion flag=1; para el retorno funcion ver sig break; case 4: printf("fconfigurar año?" ); años if(!input(pin_a5)) while(!input(pin_a5)) beep(); anio(); menu=5; apunta siguiente opcion flag=1; para el retorno funcion ver sig break; case 5: printf("fsalir configurar?" ); salir configuracion if(!input(pin_a5)) while(!input(pin_a5)) elimina rebotes menu=6; flag=1; beep(); do controla pulsador... if(!input(pin_a3)) while(!input(pin_a3)) menu++; flag++; if(menu>5) menu=0; if(!input(pin_a5)) controla pulsador... flag++;..."conf/ok" while(!flag);.."up" flag=0; while(menu<6); menu=0; actualiza indices menu rtc_set_datetime(day,mth,year,dow,hour,min); nueva hora,minuto,... enable_interrupts(global); activadas interrupciones set_timer0(0); carga TMR0 /FUNCION CONFIGURA HORAS void horas(void) printf("fconf.horas: Hora: %2X:%2X:%2X",hour,min,sec); muestra por v.terminal
27 do if(!input(pin_a3)) se ha pulsado up? while(!input(pin_a3)) elimina rebotes hour++; SI -> incremento hour switch(hour) limites... case 0x0A: hour=0x10;break; case 0x1A: hour=0x20;break; case 0x24: hour=0x00;...hour printf(" Hora: %2X:%2X:%2X",hour,min,sec); muestra por v.terminal while(input(pin_a5)); while(!input(pin_a5)) elimina rebotes /FUNCION CONFIGURA MINUTOS void minutos(void) printf("fconf.minutos: Hora: %2X:%2X:%2X",hour,min,sec); muestra por v.terminal do if(!input(pin_a3)) se ha pulsado up? while(!input(pin_a3)) elimina rebotes min++; SI -> incremento min switch(min) limites... case 0x0A: min=0x10;break; case 0x1A: min=0x20;break; case 0x2A: min=0x30;break; case 0x3A: min=0x40;break; case 0x4A: min=0x50;break; case 0x5A: min=0x00;...min printf(" Hora: %2X:%2X:%2X",hour,min,sec); muestra por v.terminal while(input(pin_a5)); while(!input(pin_a5)) elimina rebotes /FUNCION CONFIGURA DIAS void dia(void) printf("fconf.dias: Fecha: %2X/%2X/%2X",day,mth,year); muestra por v.terminal do if(!input(pin_a3)) se ha pulsado up? while(!input(pin_a3)) elimina rebotes day++; SI -> incremento day switch(day) limites... case 0x0A: day=0x10;break; case 0x1A: day=0x20;break; case 0x2A: day=0x30;break; case 0x32: day=0x01;
28 ...day printf("fconf.dias: Fecha: %2X/%2X/%2X",day,mth,year); muestra por v.terminal while(input(pin_a5)); while(!input(pin_a5)) elimina rebotes /FUNCION CONFIGURA MES void mes(void) printf("fconf.mes: Fecha: %2X/%2X/%2X",day,mth,year); muestra por v.terminal do if(!input(pin_a3)) se ha pulsado up? while(!input(pin_a3)) elimina rebotes mth++; SI -> incremento mth switch(mth) limites... case 0x0A: mth=0x10;break; case 0x13: mth=0x01;...mth printf("fconf.mes: Fecha: %2X/%2X/%2X",day,mth,year); muestra por v.terminal while(input(pin_a5)); while(!input(pin_a5)) elimina rebotes /FUNCION CONFIGURA AÑOS void anio(void) printf("fconf.año: Fecha: %2X/%2X/%2X",day,mth,year); muestra por v.terminal do if(!input(pin_a3)) se ha pulsado up? while(!input(pin_a3)) elimina rebotes year++; SI -> incremento mth switch(year) limites... case 0x0A: year=0x10;break; case 0x1A: year=0x20;break; case 0x2A: year=0x30;break; case 0x3A: year=0x40;break; case 0x4A: year=0x50;break; case 0x5A: year=0x60;break; case 0x6A: year=0x70;break; case 0x7A: year=0x80;break; case 0x8A: year=0x90;break; case 0x9A: year=0x00;...year printf("fconf.año: Fecha: %2X/%2X/%2X",day,mth,year); muestra por v.terminal while(input(pin_a5)); while(!input(pin_a5)) elimina rebotes
29 /FUNCION BEEP void beep(void) output_high(pin_b3); activa zumbador delay_ms(50); output_low(pin_b3); desactiva zumbador
30 14. Termómetro Digital con ds1620. Programa: Termometro digital mediante el ds1620 Version: 1.0 Dispositivo: PIC 16F648A Compilador: CCS vs3.249 Entorno IDE: MPLAB IDE v7.31 Simulador: Proteus 6.7sp3 Notas: Este programa muestra por el hyperterminal la temperatura leida del dispositivo ds1620. Conexiones: A0 -> DQ ds1620 A1 -> CLK/CONV# ds1620 A2 -> RST# ds1620 #include <16f648a.h> pic a utilizar #fuses XT,NOWDT,NOPROTECT,PUT,NOLVP ordenes para el programador #fuses INTRC oscilador interno #use delay (clock= ) Fosc=4Mhz #use rs232(baud=9600,xmit=pin_b2,rcv=pin_b1) manejo del RS232 #define DS1620_DQ PIN_A0 declaracion... #define DS1620_CLK PIN_A1 #define DS1620_RST PIN_A2...de pines para el ds1620 #include <vs_ds1620.c> libreria ds1620 /LLAMADA FUNCION INTERRUPCION #INT_TIMER1 void interrupcion() leemos la temp y la enviamos via serial rs232 al hyperterminal printf("\fvszener'06 -> Termometro Digital\n\r\n\rTemperatura: %3.1f ºC",read_ds1620()); /PROGRAMA void main(void) setup_oscillator(osc_4mhz); del oscilador interno a 4MHz enable_interrupts(int_timer1); activada SETUP_TIMER_1(T1_INTERNAL T1_DIV_BY_8); interrupcion TMR1 set_timer1(10); TMR1 enable_interrupts(global); interrupciones setup_uart(true); activamos la uart configuracion interrupcion TIMER1 configuracion carga activadas
31 for(;;) bucle infinito -> espera interrupcion del TMR1
La siguiente función configura el puerto como entrada y realiza su lectura: input_x( )
Laboratorio 2: Puertos de Entrada y Salida. 2.1 Objetivo. Familiarizarse con los Puertos de Entrada y Salida mediante la implementación práctica del ejemplo LED y Botones y el ejemplo Pantalla LCD. 2.2
Más detallesLaboratorio 8: Interrupción por Lectura de Entradas y por Desbordamiento del TMR0.
Laboratorio 8: Interrupción por Lectura de Entradas y por Desbordamiento del TMR0. 8.1 Objetivo. Familiarizarse con la utilización de la interrupción por cambio en las Entradas digitales mediante la implementación
Más detallesUniversidad Nacional de Ingeniería Arquitectura de Maquinas I
Universidad Nacional de Ingeniería Arquitectura de Maquinas I Unidad III: Introduccion a los Microcontroladores PIC MICROCHIP CCS un lenguaje de Alto nivel para PIC. Compilador C de CCS Este compilador
Más detallesTALLER DE CONSTRUCCION DE UN MICROBOT RASTREADOR PROGRAMACION TALLER DE CONSTRUCCIÓN DE UN MICROBOT RASTREADOR
TALLER DE CONSTRUCCION DE UN MICROBOT RASTREADOR PROGRAMACION ESTRUCTURA GENERAL DE UN PROGRAMA #include #use delay(clock=4000000) main() { 1 OPERACIONES CON LOS PUERTOS 1) Especificar qué líneas
Más detallesPROFESOR: Práctica 9. Convertidor Analógico-Digital
INSTITUTO POLITÉCNICO NACIONAL Centro de Estudios Científicos y Tecnológicos Nº 1 Gonzalo Vázquez Vela Academia de Sistemas Digitales Prácticas de Micro Electrónica Programable NOMBRE DEL ALUMNO: Apellido
Más detallesINTELIGENCIA ARTIFICIAL ELECTRÓNICA (16 Hrs)
Página 1 de 17 CAPITULO 8 INTELIGENCIA ARTIFICIAL ELECTRÓNICA (16 Hrs) Objetivo: Que el alumno explore en la inteligencia artificial usando elementos electrónicos y conceptos de programación 8.1 INTELIGENCIA
Más detallesCURSO BÁSICO MICROCONTROLADORES PIC
CURSO BÁSICO MICROCONTROLADORES PIC CONFIGURACIÓN BÁSICA FUSIBLES Los fusibles son palabras de configuración que definen las condiciones de funcionamiento del microcontrolador. Algunos fusibles importantes
Más detallesUsando los Codificadores Cuadráticos
Usando los Codificadores Cuadráticos Autor: Ing. Carlos Narváez Universidad de Oriente email: cnarvaez@udo.edu.ve Introducción El presente trabajo es una introducción a los denominados codificadores cuadráticos,
Más detallesMICROPROCESADORES II LENGUAJE C EN LOS MICROCONTROLADORES PIC
MICROPROCESADORES II LENGUAJE C EN LOS MICROCONTROLADORES PIC Tipos de datos en CCS TIPO TAMAÑO RANGO DESCRIPCION int1 short 1 bit 0 a 1 Binario int int8 8 bits 0 a 255 Entero int16 long 16 bits 0 a 65535
Más detallesPROFESOR: Práctica 5. Manejo de Motores
INSTITUTO POLITÉCNICO NACIONAL Centro de Estudios Científicos y Tecnológicos Nº 1 Gonzalo Vázquez Vela Academia de Sistemas Digitales Prácticas de Micro Electrónica Programable NOMBRE DEL ALUMNO: Apellido
Más detallesMICROCONTROLADORES II (FAMILIA PIC16F87X) LENGUAJE C PARA PICS
MICROCONTROLADORES II (FAMILIA PIC16F87X) LENGUAJE C PARA PICS 1 CARACTERÍSTICAS Velocidad de operación: hasta 20 MHz de reloj. 8K x 14 bits por palabra de memoria de programa FLASH. 368 x 8 bytes de memoria
Más detallesMicroprocesadores. Introducción al Lenguaje C - Parte IV. Prof. Luis Araujo. Universidad de Los Andes
Introducción al Lenguaje C - Parte IV Universidad de Los Andes Funciones Las funciones son porciones de código que devuelven un valor y permiten descomponer el programa en módulos que se llaman entre ellos
Más detallesPROFESOR: Práctica 10. Modulación por ancho de pulso (PWM) Emplea un microcontrolador para procesamiento de señales analógicas y digitales
INSTITUTO POLITÉCNICO NACIONAL Centro de Estudios Científicos y Tecnológicos Nº 1 Gonzalo Vázquez Vela Academia de Sistemas Digitales Prácticas de Micro Electrónica Programable NOMBRE DEL ALUMNO: Apellido
Más detallesMICROCONTROLADORES. 1. El PIC 16F84A es un microcontrolador de: a) 16 bits b) 8 bits c) 4 bits d) 32 bits e) 64 bits
1. El PIC 16F84A es un microcontrolador de: a) 16 bits b) 8 bits c) 4 bits d) 32 bits e) 64 bits MICROCONTROLADORES 2. La memoria de programa del PIC 16F84A es de tipo: a) ROM b) OTP c) RAM d) EPROM e)
Más detallesEl TIMER 0. (c) Domingo Llorente 2010 1
El TIMER 0 (c) Domingo Llorente 2010 1 Características Se trata de un registro de 8 bits. (SFR: 01h, 101h) Puede trabajar como contador o temporizador. Se puede leer o escribir en él. Dispone de un preescaler
Más detallesUNIVERSIDAD DE OVIEDO
1 Compiladores de C: Ficheros de Código Fuente.C Escritos para Lenguaje C Ficheros de Directivas y Encabezamiento.H COMPILADOR de C Fichero para depuración del Programa.COD Fichero con Errores de Compilación.ERR
Más detallesLos 7 elementos básicos de la programación de PIC en C
Estructura básica de un programa en Lenguaje C Todos los programas (código fuente) de microcontroladores PIC en C tienen una estructura básica, a partir de la cual se desarrolla cualquier aplicación del
Más detallesTUTORIAL II parte A. Observemos el diagrama de pines del microcontrolador 16F877A:
1 TUTORIAL II parte A OBJETIVOS Conocer el manejo de puertos del microcontrolador 16F877A, registros TRIS y PORT. Familiarizarse con las principales instrucciones del lenguaje y la estructura de un programa
Más detallesManipulación directa de puertos. Usando los puertos digitales.
Manipulación directa de puertos. Usando los puertos digitales. (Segunda traducción al castellano de los artículos escritos aqui: http://hekilledmywire.wordpress.com/2011/02/23/) Hola amigos lectores, hoy
Más detallesRegistros SFR vistos hasta ahora: Microcontroladores PIC
Registros SFR vistos hasta ahora: Microcontroladores PIC Microcontroladores PIC: Timer Características del Timer TMR0: Cumple básicamente la función de contador de eventos (o divisor de frecuencia). El
Más detallesPráctica 6. Control de LCD 16x2 con PIC 16F84A.
Práctica 6 Control de LCD 16x2 con PIC 16F84A. Eduardo V. Abad Descripción de las características y funcionamiento del LCD 44780 Las pantallas de cristal líquido (LCD) se han popularizado mucho en los
Más detallesGuía de Microcontroladores
Guía de Introducción Este documento tiene como objetivo de para comenzar con el desarrollo de programas para microcontroladores. Por motivos prácticos se utilizan líneas microcontroladores PIC de 8 bits
Más detallesDisplay 7 segmentos. Ing. Diego Chacón, Mdhd.
Display 7 segmentos Ing. Diego Chacón, Mdhd. El displays segmentos, es un componente que se utiliza para la representación de números en muchos dispositivos electrónicos. Cada vez es más frecuente encontrar
Más detallesEl módulo LCD Ejemplos de funcionamiento
SISTEMAS ELECTRÓNICOS Y AUTOMÁTICOS PRACTICAS DE MICROCONTROLADORES PIC PRÁCTICA 7: El módulo LCD El módulo LCD Ejemplos de funcionamiento - 1 - 1. Objetivos: - Conocer el funcionamiento y programación
Más detallesANEXO II. PROGRAMACIÓN DEL INTEGRADO PIC16F87XA
ANEXO II. PROGRAMACIÓN DEL INTEGRADO PIC16F87XA ANEXO II. PROGRAMACIÓN DEL INTEGRADO PIC16F87XA Página 1 de 15 1. FICHEROS DE CABECERA ANEXO II. PROGRAMACIÓN DEL INTEGRADO PIC16F87XA Página 2 de 15 #include
Más detallesConexionado del módulo LCD para ser controlado por conexión serie: Instrucciones para el control del LCD(comandos de control):
Conexionado del módulo LCD para ser controlado por conexión serie: El PICAXE-18 puede ser el entrenador de sistemas PICAXE-18x. La conexión de salida del PICAXE-18 (output7) tiene que ser directa sin pasar
Más detallesMICROCONTROLADORES PIC BÁSICO (PIC 16F84A / 16F627)
MICROCONTROLADORES PIC BÁSICO (PIC 16F84A / 16F627) TEMARIO Objetivo: El estudiante comprenderá la evolución de los microcontroladores y microprocesadores así como sus diferencias, desarrollara su habilidad
Más detallesCOMUNICACIÓN I2C PROTOTIPO BRAZO ROBÓTICO BM001
COMUNICACIÓN I2C PROTOTIPO BRAZO ROBÓTICO BM001 Autor: Oscar Eduardo Herrera Zuleta Estudiante de Ingeniería Electrónica. Corporación Universitaria Autónoma del Cauca. Revisado y Corregido Por: Ing. Francisco
Más detallesAprendiendo a programar Microcontroladores PIC en Lenguaje C con CCS
Aprendiendo a programar Microcontroladores PIC en Lenguaje C con CCS Por Andrés Raúl Bruno Saravia Entrega Nº 6 Cuáles son las estructuras básicas de C? Estas estructuras son las que le dan inteligencia
Más detallesCOMUNICACIÓN I2C (Bus de circuito inter-integrado)
Aplicar los conocimientos básicos de electrónica de manera teórica (lenguaje ANSI-C) y práctica (montaje de circuitos). Conocer las funciones que gobiernan las entradas y salidas del microcontrolador PIC18F47J53.
Más detallesAprendiendo a programar Microcontroladores PIC en Lenguaje C con CCS
Aprendiendo a programar Microcontroladores PIC en Lenguaje C con CCS Los compiladores de lenguaje C hoy son ampliamente utilizados para la creación de programas con microcontroladores PIC. El compilador
Más detallesCarrera: Técnico Superior en Técnicas Digitales. Alumnos: Emiliano Teseo y José Luis Fernández
Carrera: Técnico Superior en Técnicas Digitales Instituto: CENT 57 Trabajo final Año 2005 Alumnos: Emiliano Teseo y José Luis Fernández 1 ILUMINACION PARA VIDRIERAS Descripción general (Guía para el usuario)
Más detallesLCD. Las pantallas de cristal líquido o módulos LCD, como. Módulo. con interface serial
Módulo Módulo LCD con interface serial LCD con interface serial EDISON DUQUE C. Este módulo permite mostrar, en una pantalla de cristal líquido, los mensajes que son enviados desde una computadora o un
Más detallesSISTEMA MÍNIMO BASADO EN EL PIC16F84
PRÁCTICA 0 CIRCUITO BASE SISTEMA MÍNIMO BASADO EN EL PIC16F84 1 PRÁCTICA 1_1 COMPUERTA AND DE TRES ENTRADAS Hardware X0 X1 X2 Y 2 Comportamiento esperado INICIO Configurar Puerto A como entradas y Puerto
Más detallesPRÁCTICA 5: Medida del tiempo en un PIC
SISTEMAS ELECTRÓNICOS Y AUTOMÁTICOS PRACTICAS DE MICROCONTROLADORES PIC PRÁCTICA 5: Medida del tiempo en un PIC TMR0 TMR1 Display 7 segmentos - 1 - 1. Objetivos: - Gestión de los temporizadores en los
Más detallesProyecto Final: Controlador de Acuarios
Universidad Nacional de Rosario Facultad de Ciencias Exactas, Ingeniería y Agrimensura Escuela de Ingeniería Electrónica Informática Electrónica Proyecto Final: Controlador de Acuarios Cristian Martinez
Más detallesPIC16C5X (GAMA BAJA) Solo en dispositivos de 28 pins. Encapsulado y patillaje:
PIC6C5X (GAMA BAJA) Oscilador RESET SLEEP WatchDog Timer (WDT) Protección de código e IDs Periféricos: Timer/Contador de 8bits (T) con prescaler compartido para WDT o TMR Hasta 3 puertos I/O (RA,RB,RC)
Más detallesAprendiendo a programar Microcontroladores PIC en Lenguaje C con CCS
Aprendiendo a programar Microcontroladores PIC en Lenguaje C con CCS Por Andrés Raúl Bruno Saravia Entrega Nº 5. Cómo declaramos una variable en Lenguaje C? En C siempre se deben declarar las variables.
Más detallesPROGRAMANDO MICROCONTROLADORES PIC EN LENGUAJE C
Scientia et Technica Año XV, No 43, Diciembre de 2009. Universidad Tecnológica de Pereira. ISSN 0122-1701 37 PROGRAMANDO MICROCONTROLADORES PIC EN LENGUAJE C PIC Microcontrollers Programming in C language
Más detallesPRÁCTICA 4 LOS BITS DE CONFIGURACIÓN DEL PIC16F628
Los Bits de Configuración del PIC16F628 44 PRÁCTICA 4 LOS BITS DE CONFIGURACIÓN DEL PIC16F628 OBJETIVOS Identificar cada uno de los bits de configuración que rigen el funcionamiento del PIC16F628. Verificar
Más detallesPIC MICRO ESTUDIO Reloj Digital con alarma y termómetro digital www.electronicaestudio.com
PIC MICRO ESTUDIO Reloj Digital con alarma y termómetro digital www.electronicaestudio.com Guía de Operación Reloj digital con alarma y termómetro digital Descripción: Este modulo le permite conocer la
Más detallesDependiendo del dispositivo usado, se tienen hasta 5 puertos de entrada/salida disponibles: PORTA PORTB PORTC PORTD PORTE
25 3 ENTRADA / SALIDA Dependiendo del dispositivo usado, se tienen hasta 5 puertos de entrada/salida disponibles: PORTA PORTB PORTC PORTD PORTE Cada uno de estos puertos es de 8 bits, sin embargo no todos
Más detallesTeclado Matricial. Ing. Diego Chacón
Teclado Matricial Ing. Diego Chacón Teclado 4x4 y PIC16f877A Uno de los periféricos bastante util que usamos en algunos proyectos con microcontroladores es teclado matricial. Normalmente los encontramos
Más detallesRECURSOS FUNDAMENTALES
RECURSOS FUNDAMENTALES Los recursos que se considerarán son : Temporizadores Puertos de E/S La Palabra de Configuración EEPROM de datos 1 TEMPORIZADORES Una labor habitual en los programas de control suele
Más detallesGESTION DE UN LCD USANDO CCS COMPILER (PICC)
GESTION DE UN LCD USANDO CCS COMPILER (PICC) La mayoría de displays de cristal líquido se usan con controlador del tipo HD44780, con un número de líneas variable y una cantidad de caracteres también variable,
Más detallesDiagrama de bloques del sistema
Software de control: Diagrama de bloques del sistema Para controlar todos los parámetros de funcionamiento de la pila de combustible, se ha creado un software específico, este funciona como se muestra
Más detallesAlarma con Interfaz DTMF de Línea Telefónica basado en PIC16F84
Alarma con Interfaz DTMF de Línea Telefónica basado en PIC16F84 Propósito En toda aplicación donde normalmente se requiera el establecimiento de una conexión telefónica se hace necesario el diseño de una
Más detallesMANEJO DE DISPLAY LCD (Versión 1.1)
MANEJO DE DISPLAY LCD (Versión 1.1) Prof: Bolaños D. Si bien mucas aplicaciones donde debemos mostrar información podemos resolverlas con display de 7 segmentos, estos presentas algunas limitaciones importantes,
Más detallesEn la figura 1 puede verse el circuito eléctrico de nuestra primera aplicación.
Mundo e-basic 001 En este primer ejemplo, se realizará un programa en lenguaje BASIC que nos dará una idea del potencial de los módulos e-basic para realizar diversas tareas controlando en forma muy sencilla
Más detallesCapítulo III: DESCRIPCIÓN FUNCIONAL
Capítulo III: DESCRIPCIÓN FUNCIONAL Proyecto Fin de Carrera 13 Antonio Andújar Caballero 3. DESCRIPCIÓN FUNCIONAL. En el ecualizador digital diseñado se distinguen varios módulos diferenciados tanto física
Más detallesANEXOS DIAGRAMA DE FLUJO PRINCIPAL
ANEXOS DIAGRAMA DE FLUJO PRINCIPAL inicio CT = 25% Retardo 250 ms Leer voltaje Vol dec CT c 129 = 131? inc CT j = 0 mir = miir = 255 mar = mair = 0 cont = 1? b cont = 6? array1[j] =
Más detallesBucles: o Bucles infinitos o Bucles finitos o Bucles anidados Medir tiempos con MPLAB Ejemplos y ejercicios
SISTEMAS ELECTRÓNICOS Y AUTOMÁTICOS PRACTICAS DE MICROCONTROLADORES PIC PRÁCTICA 3: Bucles Bucles: o Bucles infinitos o Bucles finitos o Bucles anidados Medir tiempos con MPLAB Ejemplos y ejercicios -
Más detallesÁngel Castillo Jordán TFC EPSC 25
OBJETIVO: Usar la pantalla LCD USER MODULE LCD con sus APIS de dibujo para realizar un mini juego con dos barras horizontales que crecen. Una barra controlada por PSoC (velocidad constante) y la otra barra
Más detallesMANUAL DE INSTRUCCIONES RS124/40
MANUAL DE INSTRUCCIONES RS124/40 REGULADOR SOLAR DE CARGA Manual de instalación y características técnicas Regulador Solar 124/40 1 Características: PWM o ON / OFF formas de carga. Preparado para: exceso
Más detallesMicrocontrolador PIC 16F84
PROGRAMACIÓN PIC (II) Microcontrolador PIC 16F84 mail : enric.serra 0 - INTRODUCCIÓN. Este documento es una continuación al documento de programación del PIC 16f84. Este documento se puede copiar y utilizar
Más detallesint main() { //Obtenemos permiso acceso a la direccion de DATAPORT y las 2 siguientes if (ioperm(dataport, 3, 1)) {perror("ioperm"); return 1;}
El conector del puerto paralelo del PC EMBED Word.Picture.8 Definición de los pines Pin Señal Bit Dirección Pin Señal Bit Dirección 1 -Strobe C0 Salida 10 -Ack S6 Entrada 2 Datos 0 D0 E/S 11 Busy S7 Entrada
Más detallesGuía Experiencia Nº3 Microcontroladores
Universidad de Chile Facultad de Ciencias Físicas y Matemáticas Departamento de Ingeniería Eléctrica SD20A Seminario de Diseño Guía Experiencia Nº3 Microcontroladores Profesor: Javier Ruiz del Solar Ayudantes:
Más detallesTUTORIAL Teclado matricial. Manejar teclados matriciales por el método RWR. Conocer el uso y la utilidad de las Pull-Up del puerto B.
1 TUTORIAL Teclado matricial OBJETIVOS Manejar teclados matriciales por el método RWR. Conocer el uso y la utilidad de las Pull-Up del puerto B. INTRODUCCIÓN: El teclado matricial es uno de los dispositivos
Más detallesINTRODUCCIÓN... CAPÍTULO 1. ENTORNO ARDUINO... 1
ÍNDICE PREFACIO... INTRODUCCIÓN... XI XIII CAPÍTULO 1. ENTORNO ARDUINO... 1 Qué es Arduino?... 1 Cómo usar Arduino?... 2 Plataforma libre... 2 Placa Arduino UNO y sus partes... 3 Instalación del software
Más detallesPRACTICA #1. Aprender a programar una interrupción software empleando C y/o Ensamblador.
PRACTICA #1 Aprender a programar una interrupción software empleando C y/o Ensamblador. Aprender a manipular dispositivos externos (8253, 8255) desde C y/o ensamblador. PROCEDIMIENTO: Vamos a programar
Más detallesPeriféricos Básicos Visualizador LCD
Periféricos Básicos Visualizador LCD Es frecuente la necesidad de mostrar mensajes que tienen que ver con el estado de algo o el valor de un instrumento de medida electrónico. Para estos casos la utilización
Más detallesControl de servomotores. (c) Domingo Llorente
Control de servomotores (c) Domingo Llorente 2010 1 Conceptos básicos Un servomotor (también llamado Servo) es un dispositivo, que tiene la capacidad de ubicarse en cualquier posición dentro de su rango
Más detallesPrograma del curso de Arduino
Programa del curso de Arduino Víctor Pérez Domingo victorperezdomingo@gmail.com Febrero 2017 1 ÍNDICE ÍNDICE Índice 1. Curso 4 1.1. Objetivo del bloque 1................................... 4 1.2. Objetivo
Más detallesÍNDICE CAPÍTULO 1 FUNDAMENTOS DE LOS MICROCONTROLADORES
ÍNDICE CAPÍTULO 1 FUNDAMENTOS DE LOS MICROCONTROLADORES 1.1 Introducción 1.2 Fundamentos de los procesadores digitales secuenciales 1.2.1 Introducción 1.2.2 Arquitectura interna 1.2.2.1 Procesadores digitales
Más detallesCAN-101, HT6P20x2 Encoder para aplicaciones remotas de control
Nota de Aplicación: CAN-101 Título: HT6P20x2 Encoder para aplicaciones remotas de control Autor: Ing Iván C Sierra Revisiones Fecha Comentarios 0 28/01/13 En esta oportunidad le presentamos un nuevo encoder,
Más detallesLAB 5. Tarjeta de Desarrollo Spartan-3. Laboratorio de Sistemas Digitales ELO212 Primer Semestre de 2010
LAB 5 Tarjeta de Desarrollo Spartan-3 Laboratorio de Sistemas Digitales ELO212 Primer Semestre de 2010 Objetivos Generales Controlar dispositivos mediante una FPGA. Conocer la interfaz PS/2 para conexión
Más detallesDomótica con Arduino, WiFi y Android
Domótica con Arduino, WiFi y Android Módulo WiFi ESP8266 Usaremos para este ejemplo el módulo ESP8266 para activar las luces de casa desde un teléfono móvil Android con WiFi. Realizamos las siguientes
Más detallesPRÁCTICA 4: Entorno de desarrollo EasyPIC4
SISTEMAS ELECTRÓNICOS Y AUTOMÁTICOS PRACTICAS DE MICROCONTROLADORES PIC PRÁCTICA 4: Entorno de desarrollo EasyPIC4 Hardware de EasyPIC4 Software de grabación de EasyPIC4 Ejemplos y ejercicios Anexos -
Más detallesCAPÍTULO 3. Las principales funciones del microcontrolador son: adquirir por medio del A/D y también, mostrar mensajes de pesos y voltaje en el LCD.
CAPÍTULO 3 3. DISEÑO DEL SOFTWARE. La programación del PIC se realizó en lenguaje C, usando el compilador mikroc PRO for PIC. Este compilador se utilizó, ya que tiene una versión demo muy buena, además
Más detallesControl de un módulo LCD a través del bus I2C
Control de un módulo LCD a través del bus I2C Requerimientos hardware Placa basada en microcontrolador pic 16F877x (Plataforma Monibot) Módulo lcd por I2C modelo LCD03 Cable de comunicación de 4 hilos
Más detallesA BCD EA F ABC DA C B
BCDEFCBC BCBDE BCDEFBC DCB E FDBDE CBEFBC DB DDBC DD DEDDCB BDD BEDC BEDC D BEDC BEDC B BEDCB BEDCB C BEDC D BEDCB E B DD D D D D B B D D D D D D C C C C C C C C C C C C C C C C C C C D BEDC BDB BCBDEBFBB
Más detallesLaboratorio de Diseño de Robots Móviles Practica No. 2 Sistema mínimo del microcontrolador PIC16F877
Laboratorio de Diseño de Robots Móviles Practica No. 2 Sistema mínimo del microcontrolador PIC16F877 Objetivo: Conocer la estructura y características de la tarjeta con un microcontrolador PIC que se dispone
Más detalles1 Características de la pedalera
1 Características de la pedalera 8 bucles true bypass organizados en 2 módulos independientes 112 bancos de memoria 16 canciones con acceso a 7 bancos con una única pulsación Memoria de cada banco: o Activación
Más detallesPRÁCTICA 6: Gobierno del display 7 segmentos
SISTEMAS ELECTRÓNICOS Y AUTOMÁTICOS PRACTICAS DE MICROCONTROLADORES PIC PRÁCTICA 6: Gobierno del display 7 segmentos Display 7 segmentos - 1 - Ingeniería de Sistemas y Automática 1. Objetivos: Gobierno
Más detallesC2. Explica que es una MACRO en lenguaje C y para que se emplean. (0.5 puntos).
UNIVERSIDAD DE HUELVA ÁREA DE SISTEMAS 16-JUN-2008 ESCUELA POLITÉCNICA SUPERIOR PROCESADORES DE PROPÓSITO GENERAL TIEMPO: 2 5 Horas Nota: El examen resuelto puede tener algún error que se haya deslizado.
Más detallesClase 2: Programación
Clase 2: Conviértete en un Joven Inventor PENTA UC TAV 2014 Contenidos Qué es un micro-controlador? Configuración IDE Arduino Qué es programar? Ejemplo Tipos de datos Funciones útiles Contenidos Qué es
Más detallesCURSO DE PROGRAMACIÓN N EN C PARA MICROCONTROLADORES PIC 16F87XX JULIO 2004 04FP27CF153
CURSO DE PROGRAMACIÓN N EN C PARA MICROCONTROLADORES PIC 16F87XX JULIO 2004 04FP27CF153 CONTENIDOS 1. IDES 2. BOOTLOADER 3. PLATAFORMAS DESARROLLO DE PROYECTOS 4. RECORDATORIO DE C... CONTENIDOS 5. PROGRAMACIÓN
Más detallesExamen 22 de Febrero 2006
Problema 1 Examen 22 de Febrero 2006 La dirección de marketing de una conocida empresa de desodorantes ha decidido entregar un regalo con cada desodorante en spray. Para ello ha sido encargada la construcción
Más detallesPROYECTO DE ELECTRÓNICA
PROYECTO DE ELECTRÓNICA Sistema de Alarma Raúl Lapaz de Juan Francisco Javier López Alcarria 1 ÍNDICE - Objetivo:... 3 - Justificación:... 3 - Plan de trabajo:... 3 A) Montaje del circuito en protoboards:...
Más detallesInstituto Madero DIPREGEP Nro 1754 Educación Técnica Profesional Escuela Técnica Secundaria Ciclo Lectivo Planificación Anual
Instituto Madero DIPREGEP Nro 1754 Educación Técnica Profesional Escuela Técnica Secundaria Ciclo Lectivo 2012 Planificación Anual Docente: Ing Rodolfo Rubén Arévalo Espacio Curricular: Aplicaciones de
Más detallesPROYECTO: Velocista y coche teledirigido
PROYECTO: Velocista y coche teledirigido Departamento de Electricidad y Electrónica Ciclo Formativo de Grado Superior: Desarrollo de Productos Electrónicos Alumno: Profesores: Instituto: Localidad: Pedro
Más detallesAUTOMATIZACIÓN - CURSO: 2010-2011- Práctica 4: Sistema de Monitorización de tiempo mediante Arduino
AUTOMATIZACIÓN - CURSO: 2010-2011- Juan Antonio Corrales Ramón Carlos Alberto Jara Bravo Fernando Torres Medina Grupo de Innovación Educativa en Automática Departamento de Física, Ingeniería de Sistemas
Más detallesManual Controlador SUNRISE SP Controlador para Pantallas LED Sunrise SP Versión 1.0
Manual Controlador SUNRISE SP Controlador para Pantallas LED Sunrise SP Versión 1.0 03/11/2010 EDIT INGENIEROS S.L. A. Guerrero INDICE 1 1.0 Descripción Controlador SP para pantallas LED Sunrise SP...
Más detallesCodificación en C. Como pasar de Pseudocódigo a C (con pequeños trucos de C++)
Codificación en C Como pasar de Pseudocódigo a C (con pequeños trucos de C++) Plantilla Librerias Constantes Algoritmo #include #include #define PI 3.1416 int main(void){ /*Variables*/
Más detallesCómo gobernar un display LCD alfanumérico basado en el controlador HD44780
Cómo gobernar un display LCD alfanumérico basado en el controlador HD44780 Descarga desde: http://eii.unex.es/profesores/jisuarez/descargas/ip/lcd_alfa.pdf José Ignacio Suárez Marcelo Universidad de Extremadura
Más detallesMICROPROCESADORES 2003/2004 DADO ELECTRÓNICO. Jaime Pérez Crespo Rubén Seijas Valverde
MICROPROCESADORES 2003/2004 DADO ELECTRÓNICO Jaime Pérez Crespo Rubén Seijas Valverde Introducción: Con esta práctica se pretende familiarizarse con la programación en ensamblador de microcontroladores
Más detallesElectrónica Digital II. Contadores
Contadores 1.-Diseñe un contador síncrono descendente modulo 13.El tipo de biestable que se utiliza para su diseño 7476. El contador que se diseña posee un RESET externo que lo inicializa en su mayor conteo.
Más detallesDuración: 2 h MCF52221 PTA[2:0] SCL SDA PQS0 PQS1 PQS2 PQS3 PQS4 PQS5. Figura 1. Diagrama de bloques del sistema.
UNIVERSIDAD DE ALCALÁ ESCUELA POLITÉCNICA SUPERIOR DEPARTAMENTO DE ELECTRÓNICA I. T. Telecomunicación, esp. Sistemas de Telecomunicación I. T. Telecomunicación, esp. Sistemas Electrónicos I. T. Industrial,
Más detallesPROCESADORES I Guia TP7 Introducción al Assembler del PIC
Pseudo-instrucciones PIC16F628 PROCESADORES I Guia TP7 Introducción al Assembler del PIC Se describen a continuación las más relevantes, que serán necesarias para la realización de los diferentes ejercicios.
Más detalles1. Escribir un dato digital del WinCC al Arduino
1. Escribir un dato digital del WinCC al Arduino Con el siguiente ejercicio se pretende enviar un dato digital o tipo bool del WinCC al arduino y que sea visible por medio de un led y del cambio de color
Más detallesProgramación de Microcontroladores
Programación de Microcontroladores Simulación en Crocodile Technology Práctica Nº 1 Encender un led cuando arranque el microcontrolador. Práctica Nº 2 Encender un led tres veces consecutivas. 1 Práctica
Más detallesPIC 18F45XX EL TIMER 0
PIC 18F45XX EL TIMER 0 1. Hardware asociado 2. Características Se puede configurar como temporizador o contador de 8/16 bits. Se puede leer o escribir en él a través del registro TMR0. Dispone de un preescaler
Más detallesManual Contador-Temporizador CT-20
Manual Contador-Temporizador CT-20 ARBIT Ingeniería www.arbitingenieria.com.ar Año 2015 consulta@arbitingenieria.com 2 Contenido Descripción General... 3 Datos Técnicos... 4 Entradas Digitales... 4 Salidas
Más detallesCURSO: MICROCONTROLADORES UNIDAD 2: MÓDULOS DEL MICRO 16F877- TEORÍA PROFESOR: JORGE ANTONIO POLANÍA 1. TEMPORIZADORES E INTERRUPCIONES
CURSO: MICROCONTROLADORES UNIDAD 2: MÓDULOS DEL MICRO 16F877- TEORÍA PROFESOR: JORGE ANTONIO POLANÍA Las interrupciones en un microcontrolador son las encargadas de interrumpir la ejecución de un programa
Más detalles2. PANTALLA ALFANUMÉRICA DE LCD (HITACHI HD44780U)
2. PANTALLA ALFANUMÉRICA DE LCD (HITACHI HD44780U) Este controlador de la casa Hitachi se usa para mostrar caracteres alfanuméricos en paneles LCD de matriz pasiva (los típicos que se pueden encontrar
Más detallesPRACTICAS CON ARDUINO
PRACTICAS CON ARDUINO 1º DE BACHILLERATO PROYECTO INTEGRADO: TALLER DE ROBÓTICA Materiales: Placa Protoboard Microcontroladora Arduino Cable de conexión 1 LED 1 resistencia 120 Ω Cables PRÁCTICA Nº 1:
Más detallesRMS1-RM Manual del usuario
R4 www.exemys.com 1 Los Productos están en permanente evolución para satisfacer las necesidades de nuestros clientes. Por esta razón, las especificaciones y capacidades están sujetas a cambios sin previo
Más detallesCONVERTIDOR ANÁLOGICO-DIGITAL (ADC)
Aplicar los conocimientos básicos de electrónica de manera teórica (lenguaje ANSI-C) y práctica (montaje de circuitos). Conocer las funciones que gobiernan las entradas y salidas del microcontrolador PIC18F47J53.
Más detallesCONSERVAR ESTE DOCUMENTO COMO REFERENCIA EN LUGAR SEGURO
CONSERVAR ESTE DOCUMENTO COMO REFERENCIA EN LUGAR SEGURO Montaje e Instrucciones de Funcionamiento de los Presostatos Electr nicos 33D 33D Ð Funcionamiento y ajustes 1. Ajustes standard (MENU Setup) EL
Más detallesProyecto Rastreador + Coche Teledirigido
Proyecto Rastreador + Coche Teledirigido Profesor: Pedro Alonso Sanz Instituto: I.E.S. Joan Miró Localidad: San Sebastián de los Reyes Curso: Enero_009 Índice de contenido.- Explicación breve del Proyecto....-
Más detalles