Documentos de Académico
Documentos de Profesional
Documentos de Cultura
RESUMEN
DIAGRMAS DE BLOQUE
2. CONSIDERACIONES DE DISEÑO
Para el desarrollo de nuestra aplicación (Control De Temperatura ON/OF) se nos hizo conveniente utilizar los
puertos PTB y PTD. Debido a que en el puerto PTD contamos con el módulo de comunicación serial; y en el
puerto PTB nos coincidirían los pesos de los pines del MCU con los pines de la LCD; es por ello que omitimos el
uso del PTA ya que este puerto solo cuenta con 6 pines y no nos coincidirían los pesos con los de la LCD; por
ello no se nos era conveniente utilizarlo. Una vez establecimos este criterio configuramos los registros de
dirección de datos E/S así:
REQUERIMIENTOS DE LA APLICACIÓN
MCU JL8-08: de este componente se requirió de tres de sus módulos; los cuales fueron el conversor
análogo-digital (ADC), comunicación serial asíncrono del MCU JL8-08 (RS-232), y el oscilador.
o El módulo análogo-digital ADC: fue utilizado con el propósito de convertir la señal análoga
capturada por el sensor de temperatura LM-35. Para la utilización de este módulo fue
necesario habilitar 2 de los 3 registros los cuales fueron; (ADSCR) Y (ADICLK).
Decidimos colocar en 1 el bit 0 del registro (ADSCR) ya que seleccionando este bit o canal de
conversión (ADCH0) obtendríamos habilitada el pin (PTB1) como entrada (ADC). Y este es uno
de los pines que nos quedan libres del puerto (PTB). Ya que los otros pines estaban siendo
utilizados por la LCD. La habilitación de este pin (PTB1) como entrada la observamos en la
siguiente tabla
Circuitos Digitales II, Año 2016, Junio 11 de 2016. Universidad Tecnológica de Pereira. ISSN 0122-1701. 1
Tabla 1.
Este registro nos permite elegir la frecuencia de reloj para el (ADC) la cual debe ser
aproximadamente 1MHZ según el data-sheet del MCU. Y para lograr estar cerca de esta
frecuencia nos basamos en la tabla 2. La cual nos indica que si ponemos el bit 5 o (ADIV0) en
“1” y el divisor del reloj de bus será 2; y así estaremos lo más cerca posible de la frecuencia de
reloj sugerida. Este cálculo lo veremos más adelante en la sección de cálculos.
Circuitos Digitales II, Año 2016, Junio 11 de 2016. Universidad Tecnológica de Pereira. ISSN 0122-1701. 1
Tabla 2.
o Modulo comunicación serial asíncrona del MCU JL8-08 (RS-232): se usó para la lectura grafica
de la temperatura por medio del PC y mostrada por una interfaz creada en matlab. Para lograr
esta comunicación fue necesario habilitar 2 de los 3 registros de control (SCI) para así lograr
una velocidad de comunicación de 9600 baudios y un tamaño de 8 bits, sin paridad y con un
solo bit de paro (9600, 8, N, 1).
Este registro fue configurado así con el fin de lograr una velocidad de comunicación de 9600
baudios y un tamaño de 8 bits, sin paridad y con un solo bit de paro (9600, 8, N, 1). Esto lo
evidenciamos en la siguiente tabla 3.
Tabla 3.
Circuitos Digitales II, Año 2016, Junio 11 de 2016. Universidad Tecnológica de Pereira. ISSN 0122-1701. 1
En este registro habilitamos SCRIE en “1” para generar las interrupciones de la CPU, TE y RE en
“1” es para mantener el transmisor y receptor activado ósea la PTD6 y PTD7 del MCU
o El modulo oscilador: es necesario ensamblarlo externamente para este tipo de MCU; ya que
no cuentan con su oscilador interno. Este circuito es el encargado de establecer la frecuencia
a la cual va a trabajar nuestro MCU
CI-LM-35: este circuito integrado es un sensor de temperatura el cual utilizamos para adquirir la
temperatura del bombillo de 100 watts. Esta señal análoga capturada es del orden de los (mV) por ello
fue necesario amplificar la señal con un CI-LM358 y posteriormente esta señal es enviada al PTB1 el
cual es un pin con la funcionalidad de ADC.
Este sensor tiene la capacidad de detectar cambios de temperatura cada 10mv, mientras que el
modulo (ADC) del MCU es capaz de detectar cambios de señales a los 20mV por ello es necesario
amplificar la señal, con un amplificador en configuración no inversora con una ganancia de 2v/v. el
acondicionamiento de esta señal la veremos en la sección de cálculos
Algunas características del sensor utilizado es que el opera con una alimentación de 4 hasta 30v y que
tiene la capacidad de medir temperaturas que estuviesen en el rango de −55℃ hasta 150℃ por lo
cual se nos acomoda para el desarrollo de nuestra aplicación en la cual tendremos temperaturas que
podrían variar entre 0℃ hasta 99℃
CI-LM358 : este circuito integrado es el encargado de la amplificación del voltaje que nos suministra
el sensor de temperatura. El cual se diseñó para que tuviese una ganancia de 2v/v
CALCULOS
para el desarrollo de nuestro aplicación necesitamos tan solo de cuatro cálculos lo cuales fueron hallar la
Configuración del registro del reloj de entrada (ADICLK) del modulo (ADC), velocidad de comunicación serial,
acondicionamiento de la señal obtenida por el sensor, y resistencia del transistor el cual permite el paso a de
la alimentación del relé
Circuitos Digitales II, Año 2016, Junio 11 de 2016. Universidad Tecnológica de Pereira. ISSN 0122-1701. 1
Configuración del registro del reloj de entrada (ADICLK) del modulo (ADC):
Para configurar el registro del reloj de entrada (ADICLK) el cual debe ser aproximadamente de 1MHz;
debemos saber la frecuencia del bus. Una vez conocido este valor ya podremos conocer la frecuencia
de reloj a la que trabajara nuestro modulo (ADC).
𝐹𝐵𝑈𝑆 1.23𝑀𝐻𝑍
𝐹𝐴𝐷𝐶 = = = 614.4𝐾𝐻𝑍
𝐷𝐼𝑉 𝐴𝐷𝐶 2
Acondicionamiento de la señal obtenida par el sensor: como ya lo hemos dicho este sensor tiene la
capacidad de detectar cambios de temperatura cada 10mv por °C, mientras que el modulo (ADC) del
MCU es capaz de detectar cambios de señales a los 20mV por ello es necesario amplificar la señal, con
un amplificador en configuración no inversora con una ganancia de 2v/v, para ello se procedió así:
o Como el voltaje de salida entregado por el sensor hacia el amplificador esta dado por:
𝑉𝑠 = (10𝑚𝑉) ∗ 𝑇°𝐶 (𝐸𝐶1)
𝑣𝑜𝑢𝑡
Y sabemos que la ganancia (A) esta dada por 𝑣𝑖𝑛𝑡
donde 𝑣𝑜𝑢𝑡 para nuesto caso seria lo
mismo que 𝑉𝐴𝐷𝐶 ; y 𝑣𝑖𝑛𝑡 seria lo mismo que 𝑉𝑠 entonces tendremos que:
𝑣
𝐴 = 𝐴𝐷𝐶 (𝐸𝐶2)
𝑣𝑆
Finalmente concluimos que para leer la temperatura se deberá leer el registro de datos.
Resistencia del transistor: esta resistencia es la resistencia de base de un transistor en donde este es
es el que permite el paso de corriente para la alimentación de la bobina del relé el cual tiene una
resistencia interna de 113 ohmios según su data_sheet. Este relé es el que cierra el circuito de la
alimentación del bombillo.
Para el cálculo de esta resistencia se tiene la siguiente ecuación
𝑉𝑖−𝑉𝑏𝑒 5−0.7
𝑅𝐵 = 𝐼𝑐 𝑅𝐵 = 5 = 17𝐾
𝛽 113
175
Circuitos Digitales II, Año 2016, Junio 11 de 2016. Universidad Tecnológica de Pereira. ISSN 0122-1701. 1
3. DIAGRAMA CIRCUITAL
Circuitos Digitales II, Año 2016, Junio 11 de 2016. Universidad Tecnológica de Pereira. ISSN 0122-1701. 1
DIAGRAMAS DE FLUJO:
Inicio
Main
MAINMA
Configuración
Temp_obt
Detec_pul
Ctrl_temp
Comu_pc
Circuitos Digitales II, Año 2016, Junio 11 de 2016. Universidad Tecnológica de Pereira. ISSN 0122-1701. 1
Temp_obj
Config=”0”
ADCO=0
COC0=O
Tobt<=99
Envio coco
Detec_pul
Tecla==”0
”
Circuitos Digitales II, Año 2016, Junio 11 de 2016. Universidad Tecnológica de Pereira. ISSN 0122-1701. 1
Detec_pul
Tecla==”0”
No se presiona pul
Tecla==”1”
Config T+ Y T-
Tecla==”2
”
Circuitos Digitales II, Año 2016, Junio 11 de 2016. Universidad Tecnológica de Pereira. ISSN 0122-1701. 1
CTrl_temp
Temp-obj
Detect_pul Ajuste=’0’ Tact=’t-
PTD2=1
Tact>=
t+
PTD2=0
CTRL_Temp
Circuitos Digitales II, Año 2016, Junio 11 de 2016. Universidad Tecnológica de Pereira. ISSN 0122-1701. 1
Envio_comp
Cnfg==”0”
Fla=´1´?
Scte=’0’?
SCDR=deci+0x30
Scte==´0´
?
Scdr=uni+0x30
Scte==’0’
?
Sdcr=dec+0x30
Scte==’0’?
A
Circuitos Digitales II, Año 2016, Junio 11 de 2016. Universidad Tecnológica de Pereira. ISSN 0122-1701. 1
Scdr=unim+0x30
Scte==’0’
?
Scdr=decact+0x30
Scte==’0’
?
Scdr=uniact+0x30 Scte==’0
’?
Scte==0?
Fla==0
FIN
Circuitos Digitales II, Año 2016, Junio 11 de 2016. Universidad Tecnológica de Pereira. ISSN 0122-1701. 1
gui_Singleton = 1;
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
else
gui_mainfcn(gui_State, varargin{:});
end
handles.output = hObject;
handles.puerto=serial('COM1');
fopen(handles.puerto);
guidata(hObject, handles);
varargout{1} = handles.output;
estado=get(handles.pushbutton1,'Value');
t = linspace(0,1,400);
y = zeros(size(t));
X =1;
while estado==1
fprintf(handles.puerto,'*');
% Espera de 200ms
pause(0.2);
% Lectura de la temperatura
datos=fscanf(handles.puerto);
if ((datos(1,1)-48)==0)
Circuitos Digitales II, Año 2016, Junio 11 de 2016. Universidad Tecnológica de Pereira. ISSN 0122-1701. 1
msgbox('¡Config de Temp!','Mensaje');
end
if ((datos(1,1)-48)~=0)
liminf=(((datos(1,1)-48)*10)+(datos(1,2)-48));
limsup=(((datos(1,3)-48)*10)+(datos(1,4)-48));
y(end) = (((datos(1,5)-48)*10)+(datos(1,6)-48));
set(handles.text9,'String',[datos(1:2) '°C']);
set(handles.text11,'String',[datos(3:4) '°C']);
set(handles.text2,'String',[datos(5:6) '°C']);
%set(handles.text3,'String',[datos(3:4) '°C']);
y(1:end-1) = y(2:end);
axes(handles.axes2);
plot(t,y,'b',t,liminf,'g',t,limsup,'g');
xlabel('Tiempo');
ylabel('Temp');
ylim([0 100]);
grid on
drawnow
estado=get(handles.pushbutton1,'Value');
end
end
estado=get(handles.pushbutton2,'Value');
while estado==1
fprintf(handles.puerto,'*');
pause(0.2);
datos=fscanf(handles.puerto);
set(handles.text9,'String',['°C']);
set(handles.text11,'String',['°C']);
set(handles.text2,'String',['°C']);
estado=get(handles.pushbutton1,'Value');
end
fclose(handles.puerto);
delete(handles.puerto);
% Cierre de la GUI
delete(hObject);
estado=get(handles.pushbutton3,'Value');
t = linspace(0,1,400);
y = zeros(size(t));
X =1;
while estado==1
fprintf(handles.puerto,'*');
% Espera de 200ms
pause(0.2);
% Lectura de la temperatura
datos=fscanf(handles.puerto);
if ((datos(1,1)-48)==0)
msgbox('¡Config de Temp!','Mensaje');
end
if ((datos(1,1)-48)~=0)
liminf=(((datos(1,1)-48)*10)+(datos(1,2)-48));
limsup=(((datos(1,3)-48)*10)+(datos(1,4)-48));
y(end) = (((datos(1,5)-48)*10)+(datos(1,6)-48));
set(handles.text9,'String',[datos(1:2) '°C']);
set(handles.text11,'String',[datos(3:4) '°C']);
set(handles.text2,'String',[datos(5:6) '°C']);
%set(handles.text3,'String',[datos(3:4) '°C']);
y(1:end-1) = y(2:end);
axes(handles.axes2);
Circuitos Digitales II, Año 2016, Junio 11 de 2016. Universidad Tecnológica de Pereira. ISSN 0122-1701. 1
plot(t,y,'b',t,liminf,'g',t,limsup,'g');
xlabel('Tiempo');
ylabel('Temp');
ylim([0 100]);
grid on
drawnow
estado=get(handles.pushbutton1,'Value');
end
end
fclose(handles.puerto);
delete(handles.puerto);
% Cierre de la GUI
delete(hObject);
Código en ensambldor
/******************************************************************/
/* NOMBRE1:David Fernando Cajigas Cordoba */
/* NOMBRE2:Julio Cesar Ramirez */
/* VERSIÓN: Control ON/OF TEMP */
/******************************************************************/
Circuitos Digitales II, Año 2016, Junio 11 de 2016. Universidad Tecnológica de Pereira. ISSN 0122-1701. 1
void ret_lcd2(void) {
asm {
Circuitos Digitales II, Año 2016, Junio 11 de 2016. Universidad Tecnológica de Pereira. ISSN 0122-1701. 1
//inicio LCD
void ini_lcd(void) {
ret_lcd3();
ret_lcd3();
ret_lcd3();
ret_lcd3();
PTB=0x30;
PTB_PTB3=1;
PTB_PTB3=0;
Circuitos Digitales II, Año 2016, Junio 11 de 2016. Universidad Tecnológica de Pereira. ISSN 0122-1701. 1
ret_lcd3();
PTB=0x30;
PTB_PTB3=1;
PTB_PTB3=0;
ret_lcd1();
ret_lcd1();
PTB=0x30;
PTB_PTB3=1;
PTB_PTB3=0;
ret_lcd1();
PTB=0x20;
PTB_PTB3=1;
PTB_PTB3=0;
ret_lcd1();
cmd_lcd(0x28);
cmd_lcd(0x0C);
cmd_lcd(0x01);
cmd_lcd(0x06);
cmd_lcd(0x83);
for(i=0;i!=9;i++) {
dat_lcd(MSG1[i]);
}
dat_lcd(0xDF);
}
void mos_decmin(){
switch (DECMIN){
case 0:
cmd_lcd(0xC3);
Circuitos Digitales II, Año 2016, Junio 11 de 2016. Universidad Tecnológica de Pereira. ISSN 0122-1701. 1
dat_lcd('0');
cmd_lcd(0xC3);
break;
case 1:
cmd_lcd(0xC3);
dat_lcd('1');
cmd_lcd(0xC3);
break;
case 2:
cmd_lcd(0xC3); //Posición 5, renglón 1
dat_lcd('2');
cmd_lcd(0xC3);
break;
case 3:
cmd_lcd(0xC3)
dat_lcd('3');
cmd_lcd(0xC3);
break;
case 4:
cmd_lcd(0xC3);
dat_lcd('4');
cmd_lcd(0xC3);
break;
case 5:
cmd_lcd(0xC3);
dat_lcd('5');
cmd_lcd(0xC3);
break;
case 6:
cmd_lcd(0xC3);
dat_lcd('6');
cmd_lcd(0xC3);
break;
case 7:
cmd_lcd(0xC3);
dat_lcd('7');
cmd_lcd(0xC3);
break;
case 8:
cmd_lcd(0xC3);
dat_lcd('8');
cmd_lcd(0xC3);
break;
case 9:
cmd_lcd(0xC3);
Circuitos Digitales II, Año 2016, Junio 11 de 2016. Universidad Tecnológica de Pereira. ISSN 0122-1701. 1
dat_lcd('9');
cmd_lcd(0xC3);
break;
}
}
void mos_unimax(){
switch (UNIMAX){
case 0:
cmd_lcd(0xCC);
dat_lcd('0');
cmd_lcd(0xCC);
break;
case 1:
cmd_lcd(0xCC);
dat_lcd('1');
cmd_lcd(0xCC);
break;
case 2:
cmd_lcd(0xCC);
dat_lcd('2');
cmd_lcd(0xCC);
break;
case 3:
cmd_lcd(0xCC);
dat_lcd('3');
cmd_lcd(0xCC);
break;
case 4:
cmd_lcd(0xCC)
dat_lcd('4');
cmd_lcd(0xCC);
break;
case 5:
cmd_lcd(0xCC);
dat_lcd('5');
cmd_lcd(0xCC);
break;
case 6:
cmd_lcd(0xCC);
Circuitos Digitales II, Año 2016, Junio 11 de 2016. Universidad Tecnológica de Pereira. ISSN 0122-1701. 1
dat_lcd('6');
cmd_lcd(0xCC);
break;
case 7:
cmd_lcd(0xCC);
dat_lcd('7');
cmd_lcd(0xCC);
break;
case 8:
cmd_lcd(0xCC);
dat_lcd('8');
cmd_lcd(0xCC);
break;
case 9:
cmd_lcd(0xCC);
dat_lcd('9');
cmd_lcd(0xCC);
break;
}
}
void mos_decmax(){
switch (DECMAX){
case 0:
cmd_lcd(0xCB);
dat_lcd('0');
cmd_lcd(0xCB);
break;
case 1:
cmd_lcd(0xCB);
dat_lcd('1');
cmd_lcd(0xCB);
break;
case 2:
cmd_lcd(0xCB);
dat_lcd('2');
cmd_lcd(0xCB);
break;
case 3:
cmd_lcd(0xCB);
dat_lcd('3');
cmd_lcd(0xCB);
break;
case 4:
cmd_lcd(0xCB);
dat_lcd('4');
Circuitos Digitales II, Año 2016, Junio 11 de 2016. Universidad Tecnológica de Pereira. ISSN 0122-1701. 1
cmd_lcd(0xCB);
break;
case 5:
cmd_lcd(0xCB);
dat_lcd('5');
cmd_lcd(0xCB);
break;
case 6:
cmd_lcd(0xCB);
dat_lcd('6');
cmd_lcd(0xCB);
break;
case 7:
cmd_lcd(0xCB);
dat_lcd('7');
cmd_lcd(0xCB);
break;
case 8:
cmd_lcd(0xCB);
dat_lcd('8');
cmd_lcd(0xCB)
break;
case 9:
cmd_lcd(0xCB);
dat_lcd('9');
cmd_lcd(0xCB)
break;
}
}
void mos_unimin(){
switch (UNIMIN){
case 0:
cmd_lcd(0xC4); // psociones lcd
dat_lcd('0');
cmd_lcd(0xC4);
break;
case 1:
cmd_lcd(0xC4);
dat_lcd('1');
cmd_lcd(0xC4);
break;
case 2:
cmd_lcd(0xC4);
dat_lcd('2');
cmd_lcd(0xC4);
Circuitos Digitales II, Año 2016, Junio 11 de 2016. Universidad Tecnológica de Pereira. ISSN 0122-1701. 1
break;
case 3:
cmd_lcd(0xC4);
dat_lcd('3');
cmd_lcd(0xC4);
break;
case 4:
cmd_lcd(0xC4);
dat_lcd('4');
cmd_lcd(0xC4);
break;
case 5:
cmd_lcd(0xC4);
dat_lcd('5');
cmd_lcd(0xC4);
break;
case 6:
cmd_lcd(0xC4);
dat_lcd('6');
cmd_lcd(0xC4);
break;
case 7:
cmd_lcd(0xC4);
dat_lcd('7');
cmd_lcd(0xC4);
break;
case 8:
cmd_lcd(0xC4);
dat_lcd('8');
cmd_lcd(0xC4);
break;
case 9:
cmd_lcd(0xC4);
dat_lcd('9');
cmd_lcd(0xC4);
break;
}
}
void adq_temp ()
{
if (AJUSTE==0||AJUSTE==2||AJUSTE==4){
//Solicita una muestra y espera resultado de conversión
ADSCR_ADCO=0;
while (ADSCR_COCO==0);
Circuitos Digitales II, Año 2016, Junio 11 de 2016. Universidad Tecnológica de Pereira. ISSN 0122-1701. 1
case 8:
cmd_lcd(0x88);
dat_lcd('8');
break;
case 9:
Circuitos Digitales II, Año 2016, Junio 11 de 2016. Universidad Tecnológica de Pereira. ISSN 0122-1701. 1
cmd_lcd(0x88);
dat_lcd('9');
break;
}
switch (UNIMED){
case 0:
cmd_lcd(0x89);
dat_lcd('0');
break;
case 1:
cmd_lcd(0x89);
dat_lcd('1');
break;
case 2:
cmd_lcd(0x89);
dat_lcd('2');
break;
case 3:
cmd_lcd(0x89);
dat_lcd('3');
break;
case 4:
cmd_lcd(0x89);
dat_lcd('4');
break;
case 5:
cmd_lcd(0x89);
dat_lcd('5');
break;
case 6:
cmd_lcd(0x89);
dat_lcd('6');
break;
case 7:
cmd_lcd(0x89);
dat_lcd('7');
break;
case 8:
cmd_lcd(0x89);
dat_lcd('8');
break;
case 9:
cmd_lcd(0x89);
dat_lcd('9');
Circuitos Digitales II, Año 2016, Junio 11 de 2016. Universidad Tecnológica de Pereira. ISSN 0122-1701. 1
break;
}
} else{
cmd_lcd(0x88);
dat_lcd('N');
cmd_lcd(0x89);
dat_lcd('D');
}
}
}
char PUL(){
asm{
brset 3,PTD,UNO
brset 4,PTD,TRES
brset 5,PTD,DOS
clr TECLA
rts
UNO: jsr RETARDO
UN: brset 3,PTD,UN
jsr RETARDO
lda #1
sta TECLA
rts
DOS: jsr RETARDO
DO: brset 5,PTD,DO
jsr RETARDO
lda #2
sta TECLA
rts
TRES: jsr RETARDO
TR: brset 4,PTD,TR
jsr RETARDO
lda #3
sta TECLA
rts
}
return TECLA;
}
void LeePul() {
PUL();
if (TECLA==0){
}
Circuitos Digitales II, Año 2016, Junio 11 de 2016. Universidad Tecnológica de Pereira. ISSN 0122-1701. 1
if (TECLA==1){
AJUSTE++;
if (AJUSTE==1){
cmd_lcd(0xC3);
cmd_lcd(0x0D);
}
if (AJUSTE==2){
cmd_lcd(0x0C);
}
if (AJUSTE==3){
cmd_lcd(0xC4);
cmd_lcd(0x0D);
}
if (AJUSTE==4){
if(DECMIN==9&&UNIMIN>4){
UNIMIN=4;
mos_unimin();
cmd_lcd(0x0C);
TMIN=(DECMIN*10+UNIMIN);
TMAX=TMIN+4;
DECMAX=TMAX/10;
UNIMAX=TMAX%10;
AUXDEC=DECMAX;
AUXUNI=UNIMAX;
mos_decmax();
mos_unimax();
} else
cmd_lcd(0x0C);
TMIN=(DECMIN*10+UNIMIN);
TMAX=TMIN+4;
DECMAX=TMAX/10;
UNIMAX=TMAX%10;
AUXDEC=DECMAX;
AUXUNI=UNIMAX;
mos_decmax();
mos_unimax();
}
if (AJUSTE==5){
cmd_lcd(0xCB);
cmd_lcd(0x0D);
}
if (AJUSTE==6){
cmd_lcd(0X0C);
if (AJUSTE==7){
Circuitos Digitales II, Año 2016, Junio 11 de 2016. Universidad Tecnológica de Pereira. ISSN 0122-1701. 1
cmd_lcd(0xCC);
cmd_lcd(0x0D);
}
if (AJUSTE==8){
cmd_lcd(0x0C);
TMAX=(DECMAX*10+UNIMAX);
mos_unimax();
AJUSTE=0;
}
}
if (TECLA==2){
if(AJUSTE==1) {
if (DECMIN<=8){
DECMIN++;
mos_decmin();
}
else
DECMIN=0;
mos_decmin();
}
if (AJUSTE==3) {
if (DECMIN==9) {
if (UNIMIN<4) {
UNIMIN++;
mos_unimin();
}
else
UNIMIN=0;
mos_unimin();
}
if (DECMIN!=9) {
if(UNIMIN<9) {
UNIMIN++;
mos_unimin();
}else
UNIMIN=0;
mos_unimin();
}
}
if (AJUSTE==5) {
if (DECMAX>=AUXDEC && DECMAX<9){
DECMAX++;
mos_decmax();
}
else
Circuitos Digitales II, Año 2016, Junio 11 de 2016. Universidad Tecnológica de Pereira. ISSN 0122-1701. 1
DECMAX=AUXDEC;
mos_decmax();
}
if (AJUSTE==7) { .
if (DECMAX==AUXDEC){
if (UNIMAX>=AUXUNI && UNIMAX<9){
UNIMAX++;
mos_unimax();
}
else
UNIMAX=AUXUNI;
mos_unimax();
}
if (DECMAX!=AUXDEC){
if(UNIMAX<9){
UNIMAX++;
mos_unimax();
}else
UNIMAX=0;
mos_unimax();
}
}
}
if (TECLA==3){
if (AJUSTE==1) {
if (DECMIN!=0){
DECMIN--;
mos_decmin();
}
else
DECMIN=9;
mos_decmin();
}
if (AJUSTE==3){
if (DECMIN==9){
if (UNIMIN!=0){
UNIMIN--;
mos_unimin();
}
else
UNIMIN=4;
mos_unimin();
}
Circuitos Digitales II, Año 2016, Junio 11 de 2016. Universidad Tecnológica de Pereira. ISSN 0122-1701. 1
if (DECMIN!=9) {
if(UNIMIN!=0){
UNIMIN--;
mos_unimin();
}
else
UNIMIN=9;
mos_unimin();
}
}
if (AJUSTE==5){
if (DECMAX>AUXDEC&&DECMAX<=9){
DECMAX--;
mos_decmax();
}
else
DECMAX=9;
mos_decmax();
}
if (AJUSTE==7){
if (DECMAX==AUXDEC){
if (UNIMAX>AUXUNI && UNIMAX<=9){
UNIMAX--;
mos_unimax();
}
else
UNIMAX=9;
mos_unimax();
}
if (DECMAX!=AUXDEC){
if(UNIMAX>0&&UNIMAX<=9){
UNIMAX--;
mos_unimax();
} else
UNIMAX=9;
mos_unimax();
}
}
}
}
void Env_pc(){ //Funcion para enviar temp
if(AJUSTE!=0){
if (SCS1_SCTE==0);
SCDR=0+0x30;
Circuitos Digitales II, Año 2016, Junio 11 de 2016. Universidad Tecnológica de Pereira. ISSN 0122-1701. 1
while (SCS1_SCTE==0);
SCDR=0x0A;
FLAG=0;
}
if (AJUSTE==0){
if (FLAG==1) {
while (SCS1_SCTE==0);
SCDR=DECMIN+0x30;
while (SCS1_SCTE==0);
SCDR=UNIMIN+0x30;
while (SCS1_SCTE==0);
SCDR=DECMAX+0x30; //Envía decenas de T+
while (SCS1_SCTE==0);
SCDR=UNIMAX+0x30; //Envía unidades de T+
while (SCS1_SCTE==0);
SCDR=DECMED+0x30; //Envía decenas de Tact
while (SCS1_SCTE==0);
SCDR=UNIMED+0x30; //Envía unidades de Tact
while (SCS1_SCTE==0);
SCDR=0x0A; //Envía terminador (LF)
FLAG=0;
}
}
}
A=TMIN-6;
B=TMAX+6;
PTD_PTD2=0;
}else
PTD_PTD2=1;
}
}
else
PTD_PTD2=0;
}
interrupt 13 void INT_REC(void) {
char AUX; //Variable auxiliar
AUX=SCS1; //Reconoce recepción
if (SCDR=='*') //Valida si es el caracter de solicitud y si hay solicitudes pendientes
if (FLAG==0) //Indica solicitud de envío pendiente
FLAG=1;
}
//Programa principal
void main(void) {
//Configuración MCU
CONFIG1_COPD=1;
DDRB=0xFD;
DDRD=0x44;
PTD_PTD2=0;
AJUSTE=0;
ADICLK=0x20;
ADSCR=0x01;
//Comunicacion serial
SCC1=0x40; //SCI
SCC2=0x2C;
SCBR=0x01;
EnableInterrupts; //Habilita interrupciones
}
}
}
Circuitos Digitales II, Año 2016, Junio 11 de 2016. Universidad Tecnológica de Pereira. ISSN 0122-1701. 1
DATOS E IMÁGENES DE DIFERENTES SITUACIONES A LAS QUE SE SOMETE EL DISPOSITIVO, PARA DEMOSTRAR SU
CORRECTO FUNCIONAMIENTO.
A continuación veremos algunas imágenes del circuito ya ensamblado totalmente y algunas imágenes como
prueba de su correcto funcionamiento:
Circuitos Digitales II, Año 2016, Junio 11 de 2016. Universidad Tecnológica de Pereira. ISSN 0122-1701. 1
Circuitos Digitales II, Año 2016, Junio 11 de 2016. Universidad Tecnológica de Pereira. ISSN 0122-1701. 1