Documentos de Académico
Documentos de Profesional
Documentos de Cultura
INFORME # 02 TRABAJO # 02
PARALELO:
Tercer Semestre
FECHA:
4 / 04 / 2013
LA PAZ - BOLIVIA
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.
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
0x7C,0x39,0x5E,0x79,0x71 };
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
0x7C,0x39,0x5E,0x79,0x71 };
{ 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
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;
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; }
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)