Está en la página 1de 17

ESCUELA MILITAR DE INGENIERA MCAL.

ANTONIO JOSE DE SUCRE BOLIVIA

INFORME # 02 TRABAJO # 02

INGENIERIA DE SISTEMAS MICROPROSESADORES


ALUMN@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.

PROGRAMAS Diagrama de flujo:

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

Ejercicio 1
unsigned 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;

Ejercicio 2
unsigned 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)

También podría gustarte