Informe Serial - Eeprom .

16
ESCUELA MILITAR DE INGENIERÍA MCAL. ANTONIO JOSE DE SUCRE ´´BOLIVIA´´ INFORME # 7 TRABAJO # 7 INGENIERIA DE SISTEMAS ELECTRONICOS MICROPROCESADORES ALUMNOS: S2170-9 Rivera Parada Eduardo A9600-8 Fernando Torres Caballero A9533-8 Marco Vladimir Inca Nina PARALELO: 6to Semestre FECHA: 09/11/2011

Transcript of Informe Serial - Eeprom .

Page 1: Informe Serial - Eeprom .

ESCUELA MILITAR DE INGENIERÍA MCAL. ANTONIO JOSE DE SUCRE ´´BOLIVIA´´

INFORME # 7

TRABAJO # 7

INGENIERIA DE SISTEMAS ELECTRONICOS

MICROPROCESADORES

ALUMNOS:

S2170-9 Rivera Parada Eduardo

A9600-8 Fernando Torres Caballero

A9533-8 Marco Vladimir Inca Nina

PARALELO: 6to Semestre

FECHA: 09/11/2011

LA PAZ - BOLIVIA

Page 2: Informe Serial - Eeprom .

PUERTO SERIAL ASINCRONO - EEPROM

OBJETIVO Mediante el uso del programa mikroC, Proteus, Hyperterminal lograr demostrar cómo 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 escribirán algunos números o letras y esta información 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 estaría reemplazando a la terminal virtual.

DIAGRAMA DE FLUJO

Puerto seria AsíncronoMotores DC:

Page 3: Informe Serial - Eeprom .

Envio del mensaje al LCD:

Page 4: Informe Serial - Eeprom .

EEPROM:

CAPTURAS DE PANTALLA

Motores DC:

INCISO A.-

Page 5: Informe Serial - Eeprom .

INCISO B.-

Page 6: Informe Serial - Eeprom .

Envio del mensaje al LCDInciso a.-

Page 7: Informe Serial - Eeprom .

Inciso b.-

Eeprom:

Page 8: Informe Serial - Eeprom .

En el virtual terminal:

Ahora lo aplicaremos al puerto serie ,DB-9. Para ello usaremos el Hyperterminal y también 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:

Page 9: Informe Serial - Eeprom .

Por último configuramos que estén en 19200 y luego hacemos correr nuestro simulador y obtenemos lo siguiente en el hyperterminal:

Page 10: Informe Serial - Eeprom .

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');}

Page 11: Informe Serial - Eeprom .

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);

char Eeprom_Read18(char direc);

void Eeprom_Write18(char dato,char direc);

void main(void)

{

INTCON.GIE=0;

TRISA=0X00;

TRISD=0X00;

TRISB = 0x00;

PORTA = 0x00;

LATA = 0x00;

ADCON1 = 0x0F;

CMCON = 0x07;

Page 12: Informe Serial - Eeprom .

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);

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

{

mn=1;

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;

EECON1.WR=1;

while(EECON1&2);

INTCON.GIE=1;

EECON1.WREN=0;

}

Page 13: Informe Serial - Eeprom .

void gprintf (char *men)

{

char p;

do{

p = *men++;

Soft_UART_Write(p);

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

}

BIBLIOGRAFIA: Informes de prácticas de laboratorio entregadas por el docente, además de la proporción de software para poder realizar este laboratorio.