Top Banner
ESCUELA MILITAR DE INGENIERÍA MCAL. ANTONIO JOSE DE SUCRE ´´BOLIVIA´´ INFORME # 02 TRABAJO # 02 INGENIERIA DE SISTEMAS MICROPROSESADORES ALUMN@S: 7992772 TICONA MUJICA NELSON 8302381 LIMACHI HERRERA DANY MILTON PARALELO: Tercer Semestre FECHA: 4 / 04 / 2013 LA PAZ - BOLIVIA
17

Proyecto Ticona Mujica Nelson Limachi Herrera Dany

Nov 12, 2014

Download

Documents

T Mujica Nelson
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript

ESCUELA MILITAR DE INGENIERA MCAL. ANTONIO JOSE DE SUCRE BOLIVIA

INFORME # 02 TRABAJO # 02

INGENIERIA DE SISTEMAS MICROPROSESADORESALUMN@S: 7992772 8302381 TICONA MUJICA NELSON LIMACHI HERRERA DANY MILTON

PARALELO:

Tercer Semestre

FECHA:

4 / 04 / 2013

LA PAZ - BOLIVIA

PROGRAMACION EN LENGUAJE C PARA MICROCONTROLADORES PIC 18F4550

DISPLAY DE 7 SEGMENTOS

OBJETIVO Realizar diferentes aplicaciones del micro controlador PIC 18F4550 con herramientas Como el Proteus y Mikroc.

OBJETIVO DE LAPREBA

1. Utilizando el circuito del ejemplo para un contador hexadecimal de 00 a ff, el programa debe ser cclico. 2. Utilizando el ejercicio del ejemplo para un contador de 00 a255, pero que la informacin sea desplegada en 3 formatos: hexadecimal, en octal y en decimal. El programa debe ser cclico. 3. Utilizando el circuito del ejemplo desplegar dos contadores, el programa debe realizar lo siguiente: En los 4 displays superiores debe desplegarse un contador incremental 0000 a 9999. En los 4 displays inferiores debe desplegarse un contador decremental 9999 a 0000. 4. Utilice el circuito del ejemplo para un contador de 00 a255, pero que la informacin sea desplegada en bases numrica binaria.

2

PROGRAMAS Diagrama de flujo:

:

4

6

CAPTURAS DE PANTALLA SIMULADOR debe toda la informacion necesaria para la verificacion del fncionamiento en el documento

Ejercicio 1unsigned char counter, tmp; unsigned char unmili,dcmili,num; int numero,mnum; // 0 1 2 3 4 5 6 7 8 9 A

unsigned char seg7[]={ 0x3f,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7f,0x6f,0x77, // B C D E F

0x7C,0x39,0x5E,0x79,0x71 };

//subrutinas void separa_digitos(void); void muestra_digitos(void); void main() {

ADCON1 = 0x0F; TRISC = 0; TRISD = 0; numero = 0; PORTC = 0; PORTD = 0; while(1) { separa_digitos(); muestra_digitos(); numero++; if(numero==255) { numero =0; }

} } void muestra_digitos(void) { delay_ms(30); num=seg7 [unmili]; PORTC=0x07; PORTD=num; Delay_ms(18); num=seg7[dcmili]; PORTC=0x06; PORTD=num; Delay_ms(18); } void separa_digitos(void) { mnum=numero; unmili=(unsigned char)mnum%16; mnum=mnum/16; dcmili=(unsigned char)mnum%16;

}

8

Ejercicio 2unsigned char cont, tmp;

unsigned char unmili,dcmili,cnmili,num; //DECIMAL unsigned char unhex,dchex; unsigned char unoct,dcoct,cnoct; //HEXADECIMAL //OCTAL

int numero,mnum,hexnum,octnum; // 0 1 2 3 4 5 6 7 8 9 A

unsigned char seg7[]={ 0x3f,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7f,0x6f,0x77, // B C D E F

0x7C,0x39,0x5E,0x79,0x71 };

//subrutinas void separa_digitos(void); void muestra_digitos(void); void main()

{ ADCON1 = 0x0F; TRISC= 0; TRISD = 0; numero = 0; PORTC = 0; PORTD = 0; while(1) { separa_digitos(); muestra_digitos(); numero++; if(numero==255) { numero =0; } delay_ms(50);

} } void muestra_digitos(void) {

num=seg7 [unmili]; PORTC=0x07; PORTD=num; Delay_ms(18); num=seg7[dcmili]; PORTC=0x06; PORTD=num; Delay_ms(18); num=seg7 [cnmili]; PORTC=0x05; PORTD=num; Delay_ms(18);

//DECIMAL

//DECIMAL

num=seg7 [unoct]; //OCTAL portc=0x04; portd=num; delay_ms(20); num=seg7 [dcoct]; portc=0x03; portd=num; delay_ms(20); num=seg7 [cnoct]; portc=0x02; portd=num; delay_ms(20); //OCTAL

num=seg7[unhex] ; //HEXADECIMAL portc=0x01; portd=num; Delay_ms(22); num=seg7 [dchex]; portc=0x00; portd=num; Delay_ms(22); //HEXADECIMAL

10

} void separa_digitos(void) { mnum=numero; unmili=mnum%10; mnum=mnum/10; dcmili=mnum%10; mnum=mnum/10; cnmili=mnum%10;

octnum=numero; unoct=octnum%8; octnum=octnum/8; dcoct=octnum%8; octnum=octnum/8; cnoct=octnum%8;

hexnum=numero; unhex=hexnum%16; hexnum=hexnum/16; dchex=hexnum%16; }

Ejercicio 3 unsigned char unmili,dcmili,cnmili,mimili,num; //DECIMAL unsigned char umili,dmili,cmili,mmili; //DECIMAL

int numero,numeroi,mnum,innum; // // B C D E 0 F 1 2 3 4 5 6 7 8 9 A unsigned char seg7[]={ 0x3f,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7f,0x6f,0x77, 0x7C,0x39,0x5E,0x79,0x71 }; //subrutinas void separa_digitos(void); void muestra_digitos(void); void main()

{ ADCON1 = 0x0F; TRISC= 0; TRISD = 0; numero = 0; numeroi=9999; PORTC = 0; PORTD = 0; while(1) { separa_digitos(); muestra_digitos(); numero++; numeroi--; if(numero==9999) { numero =0; } delay_ms (20); if(numeroi==0) { numeroi =9999; } delay_ms(50); } } void muestra_digitos(void) { // contador de 0 a 9999 num=seg7 [unmili]; PORTC=0x07; PORTD=num; Delay_ms(20); num=seg7 [dcmili]; portc=0x06; portd=num; Delay_ms(20); num=seg7 [cnmili]; portc=0x05; portd=num; 12

Delay_ms(20); num=seg7 [mimili]; portc=0x04; portd=num; Delay_ms(20); //contador de 9999 a 0 num=seg7 [umili]; portc=0x03; portd=num; Delay_ms(20); num=seg7 [dmili]; portc=0x02; portd=num; Delay_ms(20); num=seg7 [cmili]; portc=0x01; portd=num; Delay_ms(20); num=seg7 [mmili]; portc=0x00; portd=num; Delay_ms(20); } void separa_digitos(void) { mnum=numero; unmili=(unsigned char)mnum%10; mnum=mnum/10; dcmili=(unsigned char)mnum%10; mnum=mnum/10; cnmili=(unsigned char)mnum%10; mnum=mnum/10;

mimili=(unsigned char)mnum%10;

innum=numeroi; umili=innum%10; innum=innum/10; dmili=innum%10; innum=innum/10; cmili=innum%10; innum=innum/10; mmili=innum%10; } Ejercicio 4 unsigned char umili,dmili,cmili,ummili,dmmili,cmmili,ummmili,dmmmili,num; int numero,mnum; // 0 1 //Numeros binarios unsigned char seg7[]={ 0x3f,0x06}; //subrutinas void separa_digitos(void); void muestra_digitos(void); void main() { ADCON1 = 0x0F; TRISC TRISD = 0; = 0;

numero = 0; PORTC = 0; PORTD = 0; while(1) { separa_digitos(); 14

muestra_digitos(); numero++; if(numero==255) { numero =0; } } } void muestra_digitos(void) { //contador decimal num=seg7 [umili]; portc=0x07; portd=num; Delay_ms(10); num=seg7 [dmili]; portc=0x06; portd=num; Delay_ms(18); num=seg7 [cmili]; portc=0x05; portd=num; Delay_ms(18); num=seg7 [ummili]; portc=0x04; portd=num; Delay_ms(18); num=seg7 [dmmili]; portc=0x03; portd=num; Delay_ms(18); num=seg7 [cmmili]; portc=0x02; portd=num; //ff

Delay_ms(18); num=seg7 [ummmili]; portc=0x01; portd=num; Delay_ms(18); num=seg7 [dmmmili]; portc=0x00; portd=num; Delay_ms(18); } void separa_digitos(void) { mnum=numero; umili=mnum%2; mnum=mnum/2; dmili=mnum%2; mnum=mnum/2; cmili=mnum%2; mnum=mnum/2; ummili=mnum%2; mnum=mnum/2; dmmili=mnum%2; mnum=mnum/2; cmmili=mnum%2; mnum=mnum/2; ummmili=mnum%2; mnum=mnum%2; dmmmili=mnum/2; }

CAPTURA DE PANTALLA DEL GRAVADOR

16

BIBLIOGRAFIA: ANEXOS Resumen de hojas de datos utilizadas Programas debidamente identificados (cdigos fuente, libreras adicionales, e informacin adicional para el funcionamiento de la simulacin) Circuitos en Proteus 7.6 para su verificacin de simulacin Informes de prcticas de laboratorio entregadas por el docente. http://www.youtube.com/watch?v=fK0oCK_HV0U ( Video de Youtube) http://www.taringa.net/posts/ciencia-educacion/15636298/Conexion-SerialPC-PIC-Visual-C-10-CCS-y-Proteus.html ( pagina web)