Está en la página 1de 12

Guillermo Esquivel Jaimes

Proyecto Final
Temporizador
Microprocesadores
Claudia Vernica Carillo

Objetivo:

El objetivo del proyecto consiste en implementar los conocimientos


adquiridos en clase para presentar un programa junto a un modelo
funcional fsico que utilice los temas vistos en clase tales como;
asignacin de pines del puerto, funciones secundarias de los puertos,
modos de bajo consumo, interrupciones, Timers y convertidor analgico
digital.

Desarrollo:
El proyecto construido consiste en un temporizador que al cumplir el
tiempo programado y designado por un push button al que se le adjunt
una interrupcin por puerto, incrementa el tiempo de retroceso
desplegado en el conjunto de displays de siete segmentos decodificados
por medio de un circuito integrado 74LS74, con los cuales se envan
desde el microprocesador en BCD, despus de ser ajustado el tiempo
comienza el retroceso del tiempo y al llegar los contadores a cero, un
pulso en rampa generado por un temporizador comienza a incrementar
la intensidad del buzzer para generar un sonido de alarma.

Esquemtico:

Programa:
int dsecs =0;
int mins =0;
int minsd=0;
volatile int flag = HIGH;
int count=0;
int count2=0;
int secs=1;
int buzz=0;
void setup()
{
pinMode(18, INPUT_PULLUP);
attachInterrupt(18, blink, FALLING);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
pinMode(14, OUTPUT);
pinMode(15, OUTPUT);
pinMode(19, OUTPUT);

}
void loop()
{
digitalWrite(19,LOW);
if(flag) {
flag = LOW;
}
switch(dsecs) {
case 0:
cerod();
break;
case 1:
unod();
break;

case 2:
dosd();
break;
case 3:
tresd();
break;
case 4:
cuatrod();
break;
case 5:
cincod();
break;
}
if(mins==0 & minsd==0 & dsecs==0 & secs==0)
{
for(buzz=0;buzz<=250;buzz++)
{
analogWrite(19,buzz);
delay(10);
}
digitalWrite(19,HIGH);
delay(100000);

}
diezsecs();
}

//FUNCIONES
void blink()
{
count = count+1;
mins=count;
secs=1;
if(mins>9)
{
count2=count2+1;
minsd=count2;
count=0;
mins=count;
}

flag = HIGH;
}
void diezsecs()
{
nueve();
sleep(1000);

displaymins();
displaydecmin();
ocho();
sleep(1000);
displaymins();
displaydecmin();
siete();
sleep(1000);
displaymins();
displaydecmin();
seis();
sleep(1000);
displaymins();
displaydecmin();
cinco();
sleep(1000);
displaymins();
displaydecmin();
cuatro();
sleep(1000);
displaymins();
displaydecmin();
tres();
sleep(1000);
displaymins();
displaydecmin();
dos();
sleep(1000);
displaymins();
displaydecmin();
uno();
sleep(1000);
displaymins();
displaydecmin();
cero();
sleep(1000);
displaymins();
displaydecmin();
dsecs=dsecs -1;
if(dsecs ==-1)
{
dsecs=5;
mins=mins-1;
}
if(mins==-1)
{
mins=9;
minsd=minsd-1;
}

}
/////////////////////
//////segundos
void cero()
{
digitalWrite(2,
digitalWrite(3,
digitalWrite(4,
digitalWrite(5,
secs=0;
}
void uno()
{
digitalWrite(2,
digitalWrite(3,
digitalWrite(4,
digitalWrite(5,
}
void dos()
{
digitalWrite(2,
digitalWrite(3,
digitalWrite(4,
digitalWrite(5,
}
void tres()
{
digitalWrite(2,
digitalWrite(3,
digitalWrite(4,
digitalWrite(5,
}
void cuatro()
{
digitalWrite(2,
digitalWrite(3,
digitalWrite(4,
digitalWrite(5,
}
void cinco()
{
digitalWrite(2,
digitalWrite(3,
digitalWrite(4,
digitalWrite(5,
}
void seis()
{
digitalWrite(2,
digitalWrite(3,
digitalWrite(4,
digitalWrite(5,
}
void siete()
{
digitalWrite(2,
digitalWrite(3,
digitalWrite(4,
digitalWrite(5,
}

LOW);
LOW);
LOW);
LOW);

HIGH);
LOW);
LOW);
LOW);

LOW);
HIGH);
LOW);
LOW);

HIGH);
HIGH);
LOW);
LOW);

LOW);
LOW);
HIGH);
LOW);

HIGH);
LOW);
HIGH);
LOW);

LOW);
HIGH);
HIGH);
LOW);

HIGH);
HIGH);
HIGH);
LOW);

void ocho()
{
digitalWrite(2,
digitalWrite(3,
digitalWrite(4,
digitalWrite(5,
}
void nueve()
{
digitalWrite(2,
digitalWrite(3,
digitalWrite(4,
digitalWrite(5,
}

LOW);
LOW);
LOW);
HIGH);

HIGH);
LOW);
LOW);
HIGH);

///////////////////////////////////
//decenas de segundos//
void cerod()
{
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
}
void unod()
{
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
}
void dosd()
{
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
digitalWrite(8, LOW);
}
void tresd()
{
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, LOW);
}
void cuatrod()
{
digitalWrite(6,
digitalWrite(7,
digitalWrite(8,
}
void cincod()
{
digitalWrite(6,
digitalWrite(7,
digitalWrite(8,
}

LOW);
LOW);
HIGH);

HIGH);
LOW);
HIGH);

/////////////////////////////////
////minutos
void cerom()
{
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
}
void unom()
{
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
}
void dosm()
{
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
}
void tresm()
{
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
}
void cuatrom()
{
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, HIGH);
digitalWrite(12, LOW);
}
void cincom()
{
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
digitalWrite(11, HIGH);
digitalWrite(12, LOW);
}
void seism()
{
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, LOW);
}
void sietem()
{
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, LOW);
}
void ochom()

{
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
}
void nuevem()
{
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
}
void cerodm()
{
digitalWrite(13, LOW);
digitalWrite(14, LOW);
digitalWrite(15, LOW);
}
void unodm()
{
digitalWrite(13, HIGH);
digitalWrite(14, LOW);
digitalWrite(15, LOW);
}
void dosdm()
{
digitalWrite(13, LOW);
digitalWrite(14, HIGH);
digitalWrite(15, LOW);
}
void tresdm()
{
digitalWrite(13, HIGH);
digitalWrite(14, HIGH);
digitalWrite(15, LOW);
}
void cuatrodm()
{
digitalWrite(13,
digitalWrite(14,
digitalWrite(15,
}
void cincodm()
{
digitalWrite(13,
digitalWrite(14,
digitalWrite(15,
}

LOW);
LOW);
HIGH);

HIGH);
LOW);
HIGH);

void displaymins()
{
switch(mins) {
case 0:

cerom();
break;
case 1:
unom();
break;
case 2:
dosm();
break;
case 3:
tresm();
break;
case 4:
cuatrom();
break;
case 5:
cincom();
break;
case 6:
seism();
break;
case 7:
sietem();
break;
case 8:
ochom();
break;
case 9:
nuevem();
break;
}
}
void displaydecmin()
{
switch(minsd) {
case 0:
cerodm();
break;
case 1:
unodm();
break;
case 2:
dosdm();
break;
case 3:
tresdm();
break;
case 4:
cuatrodm();
break;
case 5:
cincodm();
break;
}
}

Proyecto Terminado:

Conclusiones:
De este proyecto podemos concluir la importancia de los
microprocesadores en el mundo real, pues son ahora la tecnologa que
se aplica en la industria de la mecatrnica, automatizacin y domtica.
Los microprocesadores tienen un papel protagnico en el control de
elementos fsicos y sus direcciones virtuales comunicando el mundo del
software con el hardware, durante este proyecto se pudo experimentar
con programacin de bajo nivel, accediendo a los cdigos en su forma
nativa de ensamblador como programacin orientada objetos en
compiladores como Energia, se pudo hacer uso de la comunicacin serial
que cuentan los microprocesadores tanto como de los protocolos Jtag
usados en el debugging del programa.
De manera integral pudimos hacer uso de los conocimientos vistos a lo
largo del semestre para compilarlos y someterlos a prueba con una
aplicacin en el mundo real.
El objetivo trasciende la prueba de los conocimientos adquiridos, e invita
al alumno a adaptarse a nuevos usos de las enseanzas ms bsicas del
microcontrolador para implementarlos en algo complejo, partiendo de la

premisa que teniendo bases firmes, es posible entender los conceptos


superiores.
Referencias:
www.energia.nu/reference