Vous êtes sur la page 1sur 7

MOCHIS, SINALOA

28/ SEP / 2014 LOS

M.C. Salvador Acosta Haro


Microcontroladores:
Reporte de prctica #2: conteo de 0-99 display 7 segmentos doble,
simulacin y fsico.

Ing. Mecatrnica
Amzquita Seplveda Ramiro Helaman 11440008

Manejo de comandos bsicos del microcontrolador


pic18f4550
//En los primeros programas que realizaremos en ccs compiler nos daremos cuenta
de cuales son los comandos necesarios para poder usar los pines del pic como
salida o como entrada, aprenderemos la lgica que tiene el micro para
posteriormente manejar prcticas mucho ms complejas.
// Los comandos ms usuales tienen que ver con los registros de funciones
especiales (SFR) TRISx, PORTx, y el manejo de algunos fuses los cuales se declaran
juntamente al inicio del programa para que el pic reconosca como va a trabajar .
//En los fuses el #fuses XT nos da la habilitacin para usar en el micro un cristal
externo como fuente de pulsos o seal para ejecutar cada instruccin que tiene
programada el pic, las patas que se utilizan son la 13 y 14, usamos dos capacitores
de 27pF y un cristal de 4MHz. Con un cristal externo el micro se vuelve ms exacto
al ejecutar las instrucciones ya que maneja ms precisin en el tiempo.
//Para poder realizar esta prctica necesitamos conocer el funcionamiento del
display de 7 segmentos doble, ste tiene dos entradas que activan la iluminacin
de cada parte de segmentos, tanto la izquierda como la derecha pero slo puede
ser activado uno de ellos a la vez, o es la izquierda o la derecha pero no pueden
estar ambos activos al mismo tiempo, por ello necesitamos alternarlos de manera
rpida para que visiblemente se d la sensacin de que ambos estn encendidos.

//Encender todos los segmentos necesarios para que aparezca un nmero requiere
que se enve un valor hexadecimal de dos nmeros que representa los 4 bits menos
significativos uno y los 4 bits ms significativos el otro, esto dependiendo de que
puerto se est utilizando. Esto de los valores hexadecimales es para hacer ms
prctico el manejo y envo de datos por el puerto, as que se tiene que hacer un
reconocimiento del display para obtener los valores hexadecimales para cada
nmero. Se debe tener cuidado para ello si el display es de ctodo comn o nodo
comn, pues si es de ctodo comn se tendr que enviar un uno para activar un
segmento del display y un cero en caso de que fuera de nodo comn. Para formar
la tabla de los valores hexadecimales de los nmeros del 0-9 se puede hacer
mediante la simulacin del proteus.

#include <18f4550.h>
//con esto se reconoce que se trabajar con el pic18f4550 y sus posibles librerias
#use delay(clock=4000000)
//se usar el reloj a una velocidad de 4 MHz
#fuses XT, NOWDT, NOPUT, NOPROTECT, NOBROWNOUT, NOLVP, NOCPD, NOWRT,
NODEBUG
el del uso del cristal

//arriba se pusieron varios fuses pero el importante para este circuito es el XT ya que es

void main()
//inicio del programa principal
{
byte CONST DISPLAY[10]={0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};
cada nmero del display

byte ud=0;
byte dec=0;
while(1)

de ejecutar comandos

{
int x=0;

lado izquierdo al derecho


clara y dure mas tiempo

Do
{
output_high(pin_c0);
output_low(pin_c1);
encendido despus del ciclo

output_d(DISPLAY[ud]);
valor que toma el vector

//arriba se declara un vector de tipo byte con los valores hexadecimales que tomar
//una variable de tipo byte para las unidades
//una variable de tipo byte para las decenas

//inicio del ciclo infinito, esto para que no se salga del programa cuando termine

//esta variable de tipo entero la usar para que se pueda hacer un intercambio del
//varias veces en un ciclo y en el display pueda aparecer el nmero de manera ms
//inicio del ciclo para repeticin del mismo nmero
//comando para enviar voltaje al lado izquierdo del display doble segmento
//apaga el pin del lado derecho del display doble segmento en caso de que est
//se manda prender por el puerto D los valores de segmentos que corresponden al

delay_us(1000);
output_high(pin_c1);
output_low(pin_c0);
output_d(DISPLAY[dec]);
numero que tiene el vector en
tomar esa posicin del

delay_us(1000);
x++;
display

}while(x<255);
vea mas claro

ud++;

del vector display

if(ud>9)
{ud=0;
dec++;

variable display en DEC

if(dec>9)
dec=0;
}
}
}

//display para ese valor de UD, el cual ir cambiando a medida que se incremente
//un retardo de 1 milisegundo
//ahora mandamos voltaje al lado derecho del display
//apagamos el lado izquierdo del display
//mandamos voltaje al diplay pero ahora en el otro lado para que aparezca el
//la posicin que tenga el vector, tomando el valor que tiene la variable byte DEC para
//vector
//retardo de 1 milisegundo
//incrementamos la variable que hace que se repita el mismo nmero en el
//hasta que llegue a 255 se sale de este ciclo el mismo nmero, esto para que se
//se incrementa el valor de la variable UD por lo que la siguiente vez tomara otro valor
//si la variable UD pasa el 9 se ejecutarn las instrucciones de abajo
//la variable UD toma el valor de cero nuevamente
//la variable DEC se incrementa, ya aparecera nuevo valor cuando se muestre la
//si DEC la variable DEC es mayor a 9 se ejecuta el cdigo de abajo
//la variable DEC se iguala a cero nuevamente, para que al llegar a 99 se reinicie

La simulacin en proteus se ve algo parecida a la siguiente imagen:

Conclusin
Se debe hacer un estudio de como funciona cada componente que vas a usar en un
circuito o una simulacin, se debe buscar el datasheet, ver su funcionamiento tanto en
simulacin como en fsico. Para la implementacin del circuito de reset se usa una
resistencia de 10k salida de la pata del masterclear a voltaje, tambin del mismo nodo
sacamos una resistencia de 100ohms seguido de un switch button que va a tierra, a los
cuales se une un capacitor de 10uF que ir en paralelo al switch y la resistencia de
100ohms, este capacitor tambin va hacia tierra.

Vous aimerez peut-être aussi