Académique Documents
Professionnel Documents
Culture Documents
1 OBJETIVOS
1
UNIVERSIDAD POLITÉCNICA SALESIANA SISTEMAS MICROPROCESADOS II
2
UNIVERSIDAD POLITÉCNICA SALESIANA SISTEMAS MICROPROCESADOS II
Siguiendo el diagrama vemos que los 4 MHz obtenidos se 3.2 PREPARACION DEL PROYECTO
transforman en 96MHz que a continuación son divididos
por 2 por lo que se quedan en 48 MHz. Para la implementación de este taller en el protoboard se
Con la configuración del fuse USBDIV1 estamos
indicando que estos 48MHz obtenidos del PLL son los utilizó los siguientes materiales:
que vamos a utilizar para el módulo USB. Aclarar que Una pantalla LCD 2x16
podríamos emplear directamente la frecuencia de un 4 microcontroladores PIC 18F4550
cristal de 48MHz con NOUSBDIV. Una fuente DC variable
Configurado el clock del módulo USB, debemos ahora 1 Módulo grabador de PIC
hacerlo con el clock del resto de módulos del procesador. 1 teclado matricial de 4x4
Igual que para el USB obtenemos el clock del módulo 12 pulsadores
PLL. Si nos fijamos en el diagrama partimos de los 96 8 resistencias de 330 ohm
MHz conseguidos con los 4 MHz procedentes del PLL. 13 resistencias de 10 k ohm
Esta frecuencia la vamos a dividir por un valor 8 capacitores cerámicos de 22 pF
configurado por CPUDIV. Podemos trabajar a frecuencias Cables de conexión y Protoboard
diferentes a la del módulo USB pero en este caso vamos 2 cristal de cuarzo de 4 MHz
a emplear la misma. Para ello, para obtener 48MHz 8 Diodos led
debemos dividir por 2 por lo que
1 Buzzer
configuraremos CPUDIV1.
1 pantalla lcd
Si somos observadores vemos en el diagrama otro
CPUDIV. ¿Por qué la frecuencia de reloj para el 4 resistencias de 1 k ohm
procesador no nos viene por ahí? La respuesta es que al 1 potenciómetro de 10 k ohm
configurar el fuse HSPLL estamos indicando que 1 puente H L293D
hacemos uso de un cristal con frecuencia superior a 4 1 motor de 5 voltios
MHz (HS) y además que lo hacemos por mediación del
PLL (HSPLL), por lo que ese CPUDIV queda 3.3 CONSTRUCCION DEL PROYECTO
deshabilitado.
Con respecto a los drivers que vamos a emplear van a 1. Realizar el diseño del diagrama de flujo para
ser, por un lado, lógicamente, el correspondiente al PIC entender los circuitos planteados.
18F4550 y el correspondiente a la librería de uso de una 2. Diseñar el circuito en el software Proteus .
clase de dispositivo CDC USB. 3. Programar en el software Micro C el código a ser
utilizado en el PIC 18F4550
4. Cargar el código .hex a la simulación del circuito
en el software Proteus.
5. Grabar el programa en el PIC 18F4550
6. Armar el circuito en el Protoboard con la ayuda
del diagrama simulado en el software Proteus
7. Armar los circuitos de master clear, oscilador.
8. Para el circuito de comunicación en serie
conectar las salidas del maestro del puerto D al
lcd.
9. Para el circuito de comunicación en paralelo se
conectan las salidas del puerto D del maestro a
las entradas del puerto B del esclavo.
10. Para del circuito de comunicación en paralelo se
conectan las salidas del esclavo del puerto D a
Fig4.Diagrama estructurado de comunicación USB
los leds y el motor.
11. Se procede a comprobar el circuito.
FUNCIONAMIENTO I2C
4. ANALISIS Y RESULTADOS
La práctica está dividida en dos partes la primera parte es
el diseño y programación de una comunicación i2c y la 4.1 Descripción y funcionamiento de los pines
segunda parte es el diseño y programación de una empleados en el proyecto.
comunicación USB. Funcionamiento comunicación USB
3
UNIVERSIDAD POLITÉCNICA SALESIANA SISTEMAS MICROPROCESADOS II
6. CONCLUSIONES
7 RECOMENDACIONES
Tomar en cuenta la posición de los diodos led y
su respectiva polarización ya sea en lógicas
directa o lógica inversa.
Al momento de conectar el pic en el grabador
verificar el primer pin se encuentre mirando
hacia la palanca del zif ya que caso contrario
puede quemar el grabador y el pic.
8 REFERENCIAS:
Libros:
[1] F. Valdez, R. Pallas, “Entrada y salida en paralelo”,
Microcontroladores: Fundamentos y aplicaciones con
PIC,Marcobo, Edición 2, Barcelona, España, 2007, Pp
180-184.
Web:
[3] PIC 18F4550, 2013 [Online]
Recuperado en:
http://todoelectrodo.blogspot.com/2013/02/pic-
18f4550.html
[4] Pantalla LCD 16×2 con PIC (Librería en C para
HD44780) , 2014 [Online]
Recuperado en:
https://www.geekfactory.mx/tutoriales/tutoriales-
pic/pantalla-lcd-16x2-con-pic-libreria/
4
UNIVERSIDAD POLITÉCNICA SALESIANA SISTEMAS MICROPROCESADOS II
9 ANEXOS:
Anexo A
DIAGRAMA DE FLUJO MAESTRO COMUNICACIÓN PARALELO
5
UNIVERSIDAD POLITÉCNICA SALESIANA SISTEMAS MICROPROCESADOS II
PROGRAMACION USB
#include <Built_in.h>
unsigned char Leer_USB[64] absolute 0x500;
unsigned char Escribir_USB[64] absolute 0x540;
unsigned char Reservar_USB[256] absolute 0x400;
void interrupt(){
Usb_Interrupt_Proc(); //Mantiene viva la comunicacion
}
void EntradaAnalogica(){
unsigned analogVal;
analogVal = ADC_get_sample(0);
Escribir_USB[11] = Hi(analogVal);
Escribir_USB[12] = Lo(analogVal);
analogVal = ADC_get_sample(1);
Escribir_USB[13] = Hi(analogVal);
Escribir_USB[14] = Lo(analogVal);
analogVal = ADC_get_sample(2);
Escribir_USB[15] = Hi(analogVal);
Escribir_USB[16] = Lo(analogVal);
analogVal = ADC_get_sample(3);
Escribir_USB[17] = Hi(analogVal);
Escribir_USB[18] = Lo(analogVal);
analogVal = ADC_get_sample(4);
Escribir_USB[19] = Hi(analogVal);
Escribir_USB[20] = Lo(analogVal);
analogVal = ADC_get_sample(5);
Escribir_USB[21] = Hi(analogVal);
Escribir_USB[22] = Lo(analogVal);
analogVal = ADC_get_sample(6);
Escribir_USB[23] = Hi(analogVal);
Escribir_USB[24] = Lo(analogVal);
analogVal = ADC_get_sample(7);
Escribir_USB[25] = Hi(analogVal);
Escribir_USB[26] = Lo(analogVal);
while(!HID_Write(&Escribir_USB, 64));
}
void EntradaDigital(){
Escribir_USB[4] = PORTB;
while(!Hid_write(&Escribir_USB, 64));
}
void main() {
char dato; // Se recibo datos de la PC
TRISA = 255; // Entradas Analogicas
TRISB = 255; // Entradas Digitales
TRISC = 0x00;
PORTC = 0x00;
TRISD = 0x00;
PORTD = 0x00;
ADCON1 = 7; // A0-A7 Analogicos lo demas, son digitales
HID_Enable(&Leer_USB,&Escribir_USB);
6
UNIVERSIDAD POLITÉCNICA SALESIANA SISTEMAS MICROPROCESADOS II
while(1){
EntradaAnalogica();
EntradaDigital();
dato = HID_Read(); // Devuelve el numero de bytes recibidos
if(dato == 1){
dato = 0;
PORTD = 0B01010101; //
DELAY_MS(500);
PORTD = 0B10101010; //
DELAY_MS(500);
PORTD = 0;
}
if(dato == 4){
dato = 0;
PORTD = 0b00000001; //
DELAY_MS(300);
PORTD = 0b00000010; //
DELAY_MS(300);
PORTD = 0b00000100; //
DELAY_MS(300);
PORTD = 0b00001000; //
DELAY_MS(300);
PORTD = 0b00010000; //
DELAY_MS(300);
PORTD = 0b00100000; //
DELAY_MS(300);
PORTD = 0b01000000; //
DELAY_MS(300);
PORTD = 0b10000000; //
DELAY_MS(300);
PORTD = 0;
}
delay_ms(50);
}
}
DIAGRAMA DE FLUJO MAESTRO COMUNICACIÓN SERIE
7
UNIVERSIDAD POLITÉCNICA SALESIANA SISTEMAS MICROPROCESADOS II