0% encontró este documento útil (0 votos)
20 vistas6 páginas

Práctica 1

Este documento presenta el código para hacer que un display numérico muestre los números del 1 al 9 de forma secuencial cada segundo. Define las librerías, etiquetas de puertos y prototipos de funciones necesarios. La función principal llama a una función que enciende los segmentos necesarios para cada número y añade un retardo de 1 segundo entre cada cambio. Finalmente, asigna los puertos como salidas digitales para controlar los segmentos.

Cargado por

Angel Montillo
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
20 vistas6 páginas

Práctica 1

Este documento presenta el código para hacer que un display numérico muestre los números del 1 al 9 de forma secuencial cada segundo. Define las librerías, etiquetas de puertos y prototipos de funciones necesarios. La función principal llama a una función que enciende los segmentos necesarios para cada número y añade un retardo de 1 segundo entre cada cambio. Finalmente, asigna los puertos como salidas digitales para controlar los segmentos.

Cargado por

Angel Montillo
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 6

PRÁCTICA 1.

Universidad Veracruzana
Ingenieria en Electrónica y Comunicaciones
Docente: Dr. Adrián Sánchez Vidal
Facultad Ingenieria Eléctrica y Electrónica
Experiencia educativa: Microprocesadores y
microcontroladores
Equipo: 5

Autores:
Castillo Campomanes Kenya
Hernandez Hernandez Liliana Lizbeth
Montillo Balderas Miguel Angel
I. Introducción
Durante la experiencia microprocesadores y microcontroladores hemos aprendido a
programar el microcontrolador dsPIC30f4011 para diferentes aplicaciones que este
puede tener, en la siguiente práctica presentaremos el código fuente con el cual
lograremos que un display cátodo común enumere la secuencia de 1 a 9 cambiando
cada segundo dichos números.

II. Código

//ARCHIVOS DE CABECERA
#include<p30f4011.h>
#define FCY 5000000UL
#include <libpic30.h>

En esta parte del código definimos las diferentes librerías que necistamos para la
ejecución del programa.

//ETIQUETAS
#define sega PORTBbits.RB0 // DEFINE EL PUERTO RB0 PARA
ENCENDER EL SEGMENTO A DEL DISPLAY
#define segb PORTDbits.RD3 // DEFINE EL PUERTO RD3 PARA
ENCENDER EL SEGMENTO B DEL DISPLAY
#define segc PORTBbits.RB2 // DEFINE EL PUERTO RB2 PARA
ENCENDER EL SEGMENTO C DEL DISPLAY
#define segd PORTEbits.RE8 // DEFINE EL PUERTO RE8 PARA
ENCENDER EL SEGMENTO D DEL DISPLAY
#define sege PORTBbits.RB4 // DEFINE EL PUERTO RB4 PARA
ENCENDER EL SEGMENTO E DEL DISPLAY
#define segf PORTEbits.RE0 // DEFINE EL PUERTO RE0 PARA
ENCENDER EL SEGMENTO F DEL DISPLAY
#define segg PORTBbits.RB6 // DEFINE EL PUERTO RB6 PARA
ENCENDER EL SEGMENTO G DEL DISPLAY

Definimos los diferentes puertos que asignaremos a cada segmento para el


encendido del display.

//PROTOTIPO DE FUNCIONES
void PUERTOS_IO(); //FUNCION PRINCIPAL QUE ENCENDERA LOS
SEGMENTOS DEL 0 AL 9 POR CADA SEGUNDO.

Le presentamos al compilador el nombre de la función que hará funcionar nuestro


display para después solo llamarla en la función principal.

//FUNCION PRINCIPAL
void main (){
PUERTOS_IO(); //FUNCION QUE SE VA A REPETIR
INFINITAMENTE
while(1){

//Inicia con el 0
sega=1;
segb=1;
segc=1;
segd=1;
sege=1;
segf=1;
segg=0;
__delay_ms(5000);

//NUMERO 1
sega=0;
segb=1;
segc=1;
segd=0;
sege=0;
segf=0;
segg=0;
__delay_ms(5000);

//NUMERO 2
sega=1;
segb=1;
segc=0;
segd=1;
sege=1;
segf=0;
segg=1;
__delay_ms(5000);

//NUMERO 3
sega=1;
segb=1;
segc=1;
segd=1;
sege=0;
segf=0;
segg=1;
__delay_ms(5000);

//NUMERO 4
sega=0;
segb=1;
segc=1;
segd=0;
sege=0;
segf=1;
segg=1;
__delay_ms(5000);

//NUMERO 5
sega=1;
segb=0;
segc=1;
segd=1;
sege=0;
segf=1;
segg=1;
__delay_ms(5000);

//NUMERO 6
sega=1;
segb=0;
segc=1;
segd=1;
sege=1;
segf=1;
segg=1;
__delay_ms(5000);

//NUMERO 7
sega=1;
segb=1;
segc=1;
segd=0;
sege=0;
segf=0;
segg=0;
__delay_ms(5000);

//NUMERO 8
sega=1;
segb=1;
segc=1;
segd=1;
sege=1;
segf=1;
segg=1;
__delay_ms(5000);

//NUMERO 9
sega=1;
segb=1;
segc=1;
segd=1;
sege=0;
segf=1;
segg=1;
__delay_ms(5000);
}
}
Dentro de la función principal insertamos el nombre la función prototipo que
habiamos generado previamente y posterior a ello creamos un while quien será el
encargado de repetir infinitamente el contenido de la función. Podemos observar que
para generar cada número debemos encender distintos segmentos del display y
posterior a el encendido que mostrará el número insertamos un delay que nos
ayudará a que permanezca apagado durante un segundo.

//IMPLEMENTACION DE FUNCIONES
void PUERTOS_IO(){
TRISBbits.TRISB0=0; //ASIGNA EL PUERTO B0 COMO SALIDA
ADPCFGbits.PCFG0=1; //ASIGNA EL PUERTO B0 COMO DIGITAL

TRISDbits.TRISD3=0; //ASIGNA EL PUERTO D3 COMO SALIDA

TRISBbits.TRISB2=0; //ASIGNA EL PUERTO B0 COMO SALIDA


ADPCFGbits.PCFG2=1; //ASIGNA EL PUERTO B0 COMO DIGITAL

TRISEbits.TRISE8=0; //ASIGNA EL PUERTO E8 COMO SALIDA

TRISBbits.TRISB4=0; //ASIGNA EL PUERTO B0 COMO SALIDA


ADPCFGbits.PCFG4=1; //ASIGNA EL PUERTO B0 COMO DIGITAL

TRISEbits.TRISE0=0; //ASIGNA EL PUERTO E0 COMO SALIDA

TRISBbits.TRISB6=0; //ASIGNA EL PUERTO B0 COMO SALIDA


ADPCFGbits.PCFG6=1; //ASIGNA EL PUERTO B0 COMO DIGITAL
}

Finalmente asignamos los distintos puertos como salidas o entradas según los
requerimentos, en este caso ocuparemos todos los puertos como salidas digitales, es
importante observar y recordar que los puertos B deben asignarse no solo como
salidas sino como salidas digitales también debido a que dichos puertos también
pueden ser análogicos, mientras que los demás puertos son digitales por default.

III. Imágenes
IV. Conclusiones

Podemos concluir que la función delay tiene muchas aplicaciones y bondades,


observamos dentro de la práctica como realizando diferentes cálculos podemos
generar un retraso en la implementación de las diferentes instruciones de nuestro
código lo cual podemos manipular a nuestro antojo y beneficio.

También podría gustarte