Universidad Autónoma de Nuevo León Facultad de Ingeniería Mecánica y Eléctrica
Mi c r oc ont r ol ador e s Pr o y ec t o1 Ar ge lDí azGar z a1601338 El i huEmmanue lEs c al er aRodr í gue z1596688 Homer oAr andaHe Her nández1588973
M1 Seme mes t r eEner oJuni o I ng.SaúlMont e sdeOc aLuna
Cd.Uni ve r si t ari a,04deMa Mayode2016
Proyecto: Dos contadores de 0 al 99 que cuenten cada que reciban un pulso de su respectivo push button. Se debe dejar libres los pines PB0 y PB1, el SC y ! entradas el "DC #etardo de 1 $s %ista de $ateriales: 1 Protoboard 1 Co$putadora o %aptop 1 Pro&ra$a '(reescale Code)arrior* 1 BD+ interace 1 +icrocontrolador +C9S0-S/ #esistencias de 0 oh$ #esistencias de 100 oh$ 2ransistores !3!!!!" Displays Catodo Co$un Cable para protoboard
Para esto se dise45 un pro&ra$a con el cual cada par de displays au$entaban de or$a unitaria al recibir una se4al procedente de un push botton de or$a $anual, conectados al co$6n de estos displays se encontraban transistores haciendo el trabajo de con$utadores y asi activar cada uno de los display en el $o$ento en que uera requerido, estos se encontraban conectados en el colector, teniendo en el e$isor a tierra y la base diri&ida hacia el $icrocontrolador.
Marco Teórico
2ransistor !3!!!!. s un transistor de silicio y baja potencia, dise4ado para aplicaciones de a$pliicaci5n lineal y con$utaci5n. 7no de sus principales abricantes es la Philips Se$iconductors. dentiicado ta$bi8n co$o P3!!!! por otros abricantes. Descripci5n
s un transistor de silicio de $ediana potencia con una polaridad npn, construido $ediante el proceso de base epitaial y desi&nado para aplicaciones de a$pliicaci5n lineal y con$utaci5n. Puede a$pliicar peque4as corrientes a tensiones peque4as o $edias y trabajar a recuencias $ediana$ente altas. s abricado en dierentes or$atos, los $s co$unes son los 2;<9!,2;<1-,S;2
>oltaje colector e$isor en corte ?0> @>ceoA
•
Corriente de colector constante -00$" @cA
•
Potencia total disipada 00$)@PdA
•
anancia o he $=ni$a
•
(recuencia de trabajo !0 +h @(tA
•
ncapsulado de $etal 2;<1-
•
structura 3P3
•
Su co$ple$entario P3P es el 2ransistor !3!90/
Display Catodo Comun.
El displays segmentos, es un componente ue se utili!a para la representación de n"meros en muc#os dispositivos electrónicos$ %ada ve! es más &recuente encontrar L%'(s en estos euipos )de*ido a su *a+ísima demanda de energía, todavía #ay muc#os ue utili!an el display de - segmentos por su simplicidad$ Este elemento se ensam*la o arma de manera ue se pueda activar cada segmento )diodo LE' por separado logrando de esta manera com*inar los elementos y representar todos los n"meros en el display )del . al /$ El display de - segmentos más com"n es el de color, por su &acilidad de visuali!ación$ El display cátodo com"n tiene todos los ánodos de los diodos LE' unidos y conectados a tierra$ 0ara activar un segmento de estos #ay ue poner el ánodo del segmento a encender a 1cc )tensión de la &uente a través de una resistencia para limitar el paso de la corriente$
Diagramas de los componentes
Transistor 2N2222A
Display de Cátodo Común.
Microcontrolador MC9S08SE8
Asignación de pines del microcontrolador. PTC ! 0in 2 del display PTC"! 0in A del display PTC#! 0in % del display PTC$! 0in ' del diaplay PTC%!0in E del display PTC&! 0in F del display PTC'! 0in 3 del display PT(! Al s4itc# 5 PT("! Al 64itc# 7 PTA0! Al transistor 7 PTA'! Al transistor 5 PTA&! Al transistor 8 PTA%! Al transistor 9
Diagrama de )l*+o
Código en Ensam,lador
: Include derivative;speciport sym*ols : ?'EF @6tartup A26ENBC @6tartup
: : varia*leDdata section : B3
BAM6tart
E>ample1ar '6$2 5
B3
BM6tart
'%$2
.
'I60LAC6 '%$2 G555555.. :. '%$2 G.55..... :5 '%$2 G55.55.5. :7 '%$2 G5555..5. :9 '%$2 G.55..55. :8 '%$2 G5.55.55. :H '%$2 G5.55555. :
: Insert your data de
'%$2 G555..... :'%$2 G5555555. :J '%$2 G5555.55. :/
@6tartup L'K? BAMEnd5
: initiali!e t#e stac pointer
?6 %LI
: ena*le interrupts
U5 EOU P2. para unas etiuetas ue nosotros elegimos
: 'eclaramos direcciones
'5 EOU P25 U7 EOU P29 '7 EOU P28 ENBA'A6 EOU P2H 2N5 EOU P2 %N5 EOU P2J %N7 EOU P2/ %N9 EOU P2A %N8 EOU P22
Q6B 'E%LABA%INE6 M1 P.,U5 M1 P.,'5 M1 P.,U7 M1 P.,'7 M1 P.,ENBA'A6 M1 P.,2N5
:2rincamos a la etiueta de declaraciones :%argamos un . a las etietas anteriores
M1 P/,%N5 M1 P/,%N7 M1 P/,%N9 M1 P/,%N8
mainLoop Q6B 2ABBI' impresión del codigo en los displays
:2rincamos al *arrido, ue es la
L'A 02' AN' P%. %M0 ENBA'A6 2EO mainLoop 6A ENBA'A6 AN' P8. %M0 2N5 2EO 6R5 6A 2N5
2B%LB ,02',%NA'B5 etiueta %NA'B5
:6i el *it del 02' es cero, se salta a la
&eed@4atc#dog 2BA mainLoop
:2rincamos al mainLoop
6R5 2B%LB -,02',%NA'B7 etiueta %NA'B5
&eed@4atc#dog
:6i el *it del 02' es cero, se salta a la
2BA mainLoop
%NA'B5 Q6B %N5 %N5 2BA mainLoop
%NA'B7 Q6B %N7 %N7 2BA mainLoop
%N5 %N5
L'A %N5 %M0 P.
2NE UNI'A'E65 UNI'A'E65 2BA B6U5
UNI'A'E65 IN% U5 'E% %N5
:2rincamos al mainLoop
:2rincamos a la etiueta de :2rincamos al mainLoop
:2rincamos a la etiueta de :2rincamos al mainLoop
:%argamos el acumulador con :%omparamos con . :Mientras no sea cero, *rincamos a :2rincamos a B6U5
:Incrementamos uno U5 :'ecrementamos uno %N5
B6
'E%ENA65
IN% '5
'E% %N7
:Incrementamos uno '5 :'ecrementamos uno %N7
B6
B6U5
L'A P.
:%argamos A con .
6A U5
:Lo almacenamos en U5
L'A P/
:%argamos A con /
6A %N5
:Lo almacenamos en %N5
L'A %N7
:%argamos %N7 en el acumulador
%M0 P.
:%omparamos con un .
2NE 'E%ENA65 'E%ENA65 2BA BE6'5
BE6'5 con .
L'A P.
:Mientras no sea cero, saltamos a :6altamos a BE6'5
:%argamos el acumulador
6A '5
:Lo almacenamos en '5
L'A P/
:%argamos el acumulador con /
6A %N7
:Lo almacenamos en %N7
B6
%N7 L'A %N9 ue #ay en %N9
:%argamos el acumulador con lo
%M0 P.
:Lo comparamos con .
2NE UNI'A'E67 UNI'A'E67
:Mientras no sea cero, *rincamos a
2BA B6U7
UNI'A'E67 IN% U7 'E% %N9
:2rincamos a B6U7
:Incrementamos uno U7 :'ecrementamos uno %N9
B6
'E%ENA67 IN% '7 'E% %N8 B6
:Incrementamos uno '7 :'ecrementamos uno %N8
B6U7 con .
L'A P.
:%argamos el acumulador
6A U7
:Lo almacenamos en U7
L'A P/
:%argamos el acumulador con /
6A %N9 L'A %N8 en %N8
:Lo almacenamos en %N9 :%argamos el acumulador con lo ue #ay
%M0 P.
:Lo comparamos con .
2NE 'E%ENA67 'E%ENA67
:Mientras no sea cero, *rincamos a
2BA BE6'7
BE6'7 con .
:2rincamos a BE6'7
L'A P.
:%argamos el acumulador
6A '7
:Lo almacenamos en '7
L'A P/
:%argamos el acumulador con /
6A %N8
:Lo almacenamos en %N8
B6
'E%LABA%INE6 L'A P.
:'eclaramos el puerto 2
6A 02''
:como entrada
L'A P%.
:'eclaramos resistencias de 0ull Up
6A 020E
:a *it y *it - del puerto 2
L'A PFF
:'eclaramos el puerto 2%
6A 0%''
:como salida
L'A P.F
:'eclaramos los *its del . al 9 del puerto
A 6A 0A''
:%omo salidas
B6 2ABBI' &eed@4atc#dog :Encendemos el display U5 %LBK
:2orramos el registro K?
%LB?
L'A P5
:%argamos 5 al 0A' para polari!ar el transistor de U5
6A 0A' L'? U5 L'K? PE...,?
6? 0%' 26B BEAB'
:%argamos ? con U5 :%argamos K? con la direccion PE...?
:Lo cargamos al 0%' :2rincamos a un retardo
:Encendemos el display '5
%LBK
:2orramos el registro K?
%LB? L'A P7
:%argamos 7 al 0A' para polari!ar el transistor de '5
6A 0A' L'? '5 L'K? PE...,?
:%argamos ? con '5 :%argamos K? con la direccion PE...?
6? 0%' 26B BEAB'
:Lo cargamos al 0%' :2rincamos a un retardo
:Encendemos el display U7 %LBK
:2orramos el registro K?
%LB? L'A P8
:%argamos 8 al 0A' para polari!ar el transistor de U7
6A 0A' L'? U7 L'K? PE...,?
6? 0%' 26B BEAB'
:%argamos % con U7 :%argamos K? con la direccion PE...?
:Lo cargamos al 0%' :2rincamos a un retardo
:Encendemos el display '7
%LBK
:2orramos el registro K?
%LB? L'A PJ
:%argamos J en 0A' para polari!ar el transistor de '7
6A 0A' L'? '7 L'K? PE...,?
6? 0%' 26B BEAB'
:%argamos ? con '7 :%argamos K? con la direccion PE...?
:Lo cargamos al 0%' :2rincamos a un retardo
B6
:1olvemos a la su*rutina
BEAB' L'K? PFF
:%argamos K? con FF
%I%L &eed@4atc#dog
L'A P5
:%argamos A con 5
%I%L7 'E%A
:'ecrementamos A
2NE %I%L7 AI? ;5
:6i no es . saltamos al %I%L7 :6i es . restamos 5 a ?
%0K? .
:%omparamos K? con .
2NE %I%L
:6i no es . 6altamos a %I%L
B6
:Begresamos a la su*rutina
BEAB'7 L'K? P9FFF
%I%L8 &eed@4atc#dog
L'A P5
%I%L9 'E%A 2NE %I%L9 AI? ;5 %0K? . 2NE %I%L8
B6
:SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS :S spurious ; 6purious Interrupt 6ervice Boutine$ :S
)un4anted interrupt
S
S
:SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS spurious
: placed #ere so t#at security value
N0
: does not c#ange all t#e time$
BI
:SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS :S
Interrupt 1ectors
S
:SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS B3 PFFFA
'%$R spurious
:
'%$R spurious
: 6RI
'%$R @6tartup
: Beset
Código
%onclusiones$;
Luego de la reali!ación de este proyecto y durante el mismo, lo más sencillo de reali!ar o al menos lo ue pareció ser lo más sencillo &ue el armar las cone>iones en el proto*oard pues solo de*íamos guiarnos de los datas#eets para poder diseTar el circuito, donde sí se encontraron una serie de inconvenientes y pro*lemas, &ue durante el diseTo del programa de &uncionamiento pues nos topamos con pro*lemas en cosas como las interrupciones o el ue no contara cuando de*ía, o algunas situaciones similares y creo ue el poder resolver esos detalles &ue el mayor reto dentro de este proyecto, ya ue en ocasiones pareciera ue es más di&ícil encontrar el error en el programa ue en si resolverlo$