You are on page 1of 13

ESCUELA MILITAR DE INGENIERA MCAL.

ANTONIO JOSE DE SUCRE BOLIVIA

INFORME # 7 TRABAJO # 7

INGENIERIA DE SISTEMAS ELECTRONICOS MICROPROCESADORES ALUMNOS: S2170-9 A9600-8 A9533-8 PARALELO: Rivera Parada Eduardo Fernando Torres Caballero Marco Vladimir Inca Nina

6to Semestre FECHA: 09/11/2011

LA PAZ - BOLIVIA

PUERTO SERIAL ASINCRONO - EEPROM OBJETIVO Mediante el uso del programa mikroC, Proteus, Hyperterminal lograr demostrar cmo es que la memoria Eeprom almacena datos. OBJETIVO DE LAPREBA Primeramente se probara con ayuda de la terminal virtual como es que trabaja la Eeprom, sse escribirn algunos nmeros o letras y esta informacin se guardara en la memoria de la Eeprom y luego presionando @ debe mostrar los datos escritos anteriormente. Una vez demostrado aquello podremos apreciar el mismo problema pero usando el Hyperterminal, el cual estara reemplazando a la terminal virtual. DIAGRAMA DE FLUJO Puerto seria Asncrono Motores DC:

Envio del mensaje al LCD:

EEPROM:

CAPTURAS DE PANTALLA Motores DC: INCISO A.-

INCISO B.-

Envio del mensaje al LCD Inciso a.-

Inciso b.-

Eeprom:

En el virtual terminal:

Ahora lo aplicaremos al puerto serie ,DB-9. Para ello usaremos el Hyperterminal y tambin un simulador de puerto serial:

Debemos asegurarnos que en el simulador el puerto serie este con el mismo puerto COM1:

Luego entramos al Hyperterminal para reemplazar al virtual machine:

Por ltimo configuramos que estn en 19200 y luego hacemos correr nuestro simulador y obtenemos lo siguiente en el hyperterminal:

CODIGO Motores DC unsigned short dato=0; unsigned short recOK; void gprintf(char *men); void main(void) { TRISB = 0x00; PORTA = 0x00; LATA = 0x00; ADCON1 = 0x0F; CMCON = 0x07; Soft_Uart_Init(PORTA, 0, 1, 9600, 0); gprintf("Control de giro de Motores DC"); Soft_Uart_Write(10); Soft_Uart_Write(13); gprintf("Precione A para giro de motor Izquierdo"); Soft_Uart_Write(10); Soft_Uart_Write(13); gprintf("Preciona D para giro de motor Derecho"); Soft_Uart_Write(10); Soft_Uart_Write(13); gprintf("Preciona W para Giro de ambos motores"); Soft_Uart_Write(10); Soft_Uart_Write(13); gprintf("Preciona X para Detener motores"); Soft_Uart_Write(10); Soft_Uart_Write(13); while(1) { do{ dato = Soft_Uart_Read(&recOK); //Recive y guarde en recOK } while(recOK); gprintf("Enviado = "); Soft_Uart_Write(dato); Soft_Uart_Write(10); Soft_Uart_Write(13); PORTB = dato; } } void gprintf(char *men) { char d; do{ d = *men++; Soft_Uart_Write(d); } while (d!='\0'); }

Envio del mensaje al LCD: unsigned short dato=0; unsigned short recOK; void gprintf(char *men); void main(void) { PORTB=0X00; //Limpiando los latches de salida del PORTB (PORTB=0) LATB=0X00; //Metodo alternativo para limpiar los latches de salida ADCON1=0X0F; //Configuracion A/D para entrada digital CMCON=0X07; //CONFIGURANDO LOS COMPARADORES COMO ENTRADA DIGITAL TRISB=0X00; TRISD=0X00; LATD=0X00; PORTD=0X00; TRISA=0X00; PORTA=0X00; //Limpiando los latches se salida del PORTA (PORTA=0) LATA=0X00; Lcd8_Config(&PORTD,&PORTB,0,2,1,7,6,5,4 ,3,2,1,0); Lcd8_Out(1,1,"Mensaje :") ; Lcd8_Cmd(LCD_CURSOR_OFF); Lcd8_Cmd(LCD_BLINK_CURSOR_ON); } Soft_Uart_Init(PORTA, 0, 1, 9600, 0); gprintf("Envio de datos al LCD"); Soft_Uart_Write(10); Soft_Uart_Write(13); gprintf("Envie a continuacion su mensaje al LCD"); Soft_Uart_Write(10); Soft_Uart_Write(13); while(1) { do{ dato = Soft_Uart_Read(&recOK); //Recive y guarde en recOK } while(recOK); Soft_Uart_Write(dato); //enviando un caracter al pc //transmicion de datos Lcd8_Out(3,1,dato); delay_ms(1); } } void gprintf(char *men) { char d; do{ d = *men++; Soft_Uart_Write(d); } while (d!='\0');

Eeprom: unsigned short dato; char mn,op,qr; unsigned short recOK; void gprintf(char *men); TRISB = 0x00; char Eeprom_Read18(char direc); void Eeprom_Write18(char dato,char direc); void main(void) { PORTA = 0x00; LATA = 0x00; ADCON1 = 0x0F; CMCON = 0x07; INTCON.GIE=0; TRISA=0X00; TRISD=0X00;

PORTA=0; PORTD=0; Soft_Uart_Init(PORTA, 0, 1, 19200, 0); // 19200 es la frecuencia para el puerto serie gprintf("Oprima una tecla"); Soft_Uart_Write(10); Soft_Uart_Write(12); gprintf("Precione @ para mostrar la informacion escrita"); Soft_Uart_Write(10); Soft_Uart_Write(13); while(1) { do{ dato = Soft_Uart_Read(&recOK); //Recive y guarde en recOK mn=mn+1; qr=mn; } while(recOK); gprintf("Tecla precionada = "); Eeprom_Write18(dato,mn); Soft_Uart_Write(dato); Soft_Uart_Write(10); Soft_Uart_Write(13);

while(mn<qr) {op=Eeprom_Read(mn); mn=mn+1; Soft_UART_Write(op); Soft_UART_Write(10); Soft_UART_Write(13);}} } } char Eeprom_Read18(char direc) { EEADR = direc; EECON1.EEPGD=0; EECON1.CFGS=0; EECON1.RD=1; return(EEDATA); } void Eeprom_Write18(char dato, char direc) { EEADR = direc; EEDATA=dato; EECON1.EEPGD=0; EECON1.CFGS=0; EECON1.WREN=1; INTCON.GIE=0; EECON2=0x55; EECON2=0xAA;

if(dato=='@')//comilla simple para que acepte @ , caso contrario se escribira 64. { mn=1; }

EECON1.WR=1; while(EECON1&2); INTCON.GIE=1; EECON1.WREN=0;

void gprintf (char *men) { char p; do{

p = *men++; Soft_UART_Write(p); }while (p!='\0'); // en caso que sea distinto }

BIBLIOGRAFIA: Informes de prcticas de laboratorio entregadas por el docente, adems de la proporcin de software para poder realizar este laboratorio.

You might also like