Informe GLCD
Informe GLCD
Informe GLCD
I.
INTRODUCCIN:
Patillaje:
II. OBJETIVOS
Objetivo General:
Disear e implementar un cronometro
utilizando la interrupcin tmr0.
Objetivos Especficos:
Implementar el contador
utilizando lenguaje C.
timer
III.
GLCD
MARCO TERICO
PIC 16F877A
por
una
matriz
de pxeles monocromos
Diagrama de bloques:
c).Simulacin
Paraverificar
quenuestro
programaest
funcionando
correctamente
losimulamos
enProteus.
a).-Diseo
del
algoritmo y
modificacion
de
la
imagenes
Bajo consumo.
b).-Desarrollo
del codigoen
el idede
mikroc
KS0107B.
IV.
METODOLOGA
PROGRAMACIN
Lenguaje MikroC
unsigned cnt;
int seg;
int minu;
int mind;
int inicio;
int pausa;
int alarma;
int tempu;
int tempd;
int alarmu;
int alarmd;
if (alarma==1){
void interrupt() {
alarma=0;
if (TMR0IF_bit) {
cnt++;
while (alarma==0){
// increment counter
TMR0IF_bit = 0;
if ( PORTB.B1 == 1){
// clear TMR0IF
minu++;
TMR0 = 96;
Delay_ms(200);
}
if ( PORTB.B2 == 1){
alarma=1;
}
void main() {
if (minu>=10){
seg=0;
mind++;
minu=0;
minu=0;
mind=0;
OPTION_REG = 0x84;
TRISB = 00000111;
TRISD = 0;
// PORTB is output
// PORTB is output
PORTD = 0xFF;
// Initialize PORTB
TRISC = 0;
// PORTB is output
PORTC = 0xFF;
// Initialize PORTB
TMR0 = 96;
INTCON = 0xA0;
cnt = 0;
// Initialize cnt
if (mind>=6){
minu=0;
mind=0;
}
PORTD=minu;
PORTC=mind;
}
alarmu=minu;
alarmd=mind;
PORTD=minu;
minu=0;
PORTC=mind;
mind=0;
while(1){
PORTD=0;
if ( PORTB.B2 == 1){
PORTC=0;
alarma=1;
alarma=0;
Delay_ms(500);
Delay_ms(500);
if ( PORTB.B0 == 1){
Delay_ms(500);
inicio=1;
PORTD=minu;
if (inicio==1) {
PORTC=mind;
do {
pausa=0;
seg++;
cnt = 0;
if (cnt>200){
// Reset cnt
RB4_bit=1;
if ( PORTB.B1 == 1){
if (cnt<200){
pausa=1;
RB4_bit=0;
if (pausa ==1){
if (seg>=5){
RB6_bit=1;
minu++;
pausa=0;
seg=0;
Delay_ms(200);
tempu=minu;
if (minu>=10){
tempd=mind;
mind++;
while(pausa==0){
minu=0;
PORTD=minu;
PORTC=mind;
if (mind>=6){
if ( PORTB.B1 == 1){
minu=0;
pausa=1;
mind=0;
Delay_ms(500);
PORTD=minu;
PORTD=15;
PORTC=mind;
PORTC=15;
} while(1);
if ( PORTB.B1 == 1){
pausa=1;
goto INICIO
Lenguaje Ensambrador
org 05h
list p=16f877a
#include <p16f877a.inc>
INICIO
__CONFIG h'3FBA'
clrf inicia
clrf pause
BSF STATUS,RP0
;Ir banco 1
BCF STATUS,RP1
CLRF TRISA
MOVLW b'11000111'
TMR0
;PORTA salida
;Configuracin del modulo
;Variable
CERO
EQU
0x00 ;0
clrf PORTC
UNO
EQU
;Limpia puertos B y D
0x01 ;1
bsf STATUS,RP0
DOS
EQU
0x02 ;2
TRES
EQU
0x03 ;3
EQU
SIETE EQU
0x04 ;4
movwf TRISD
movwf TRISC
movwf TRISB
0x05 ;5
0x06 ;6
0x07 ;7
bcf STATUS,RP0 ;Regresa al Banco 0
OCHO
EQU
0x08 ;8
btfsc PORTB, 0 ;Salta si RB0 = 1 presionado
NUEVE EQU
0x09 ;9
goto START
goto INICIO
;Variable contador
START
contador equ h'24'
clrf contador ;Inicializa contador de decenas
clrf PORTC
org 0h
LOOP
movwf PORTD
call dels
incf inicia,1
bsf
Led
;Encender Led
movlw SEIS
btfsc inicia, 1
movwf PORTD
goto numeros
call dels
numeros
movlw CERO
movwf PORTD
movlw SIETE
;Ciclo que muestra las unidades
movwf PORTD
call dels
call dels
movlw OCHO
movwf PORTD
movlw UNO
call dels
movwf PORTD
call dels
movlw NUEVE
movwf PORTD
movlw DOS
call dels
movwf PORTD
call dels
incf contador,1 ;Incrementa contador de decenas
movlw TRES
;Verifica si contador=10
movwf PORTD
movlw h'A'
call dels
xorwf contador,w
btfsc STATUS,Z ;z=0?
movlw CUATRO
goto START
movwf PORTD
call dels
;el conteo
movlw CINCO
UNIDADES
movlw h'0'
xorwf contador,w
btfsc STATUS,Z ;Verifica si contador=1;
goto PRINT0
movlw CERO
movwf PORTC
movlw h'1'
xorwf contador,w
goto LOOP
PRINT1:
movlw UNO
goto PRINT1
movwf PORTC
goto LOOP
movlw h'2'
PRINT2:
xorwf contador,w
movlw DOS
movwf PORTC
goto PRINT2
goto LOOP
PRINT3:
movlw h'3'
movlw TRES
xorwf contador,w
movwf PORTC
goto LOOP
goto PRINT3
PRINT4:
movlw CUATRO
movlw h'4'
movwf PORTC
xorwf contador,w
goto LOOP
PRINT5:
goto PRINT4
movlw CINCO
movwf PORTC
movlw h'5'
goto LOOP
xorwf contador,w
btfsc STATUS,Z ;Verifica si contador=5;
goto PRINT5
dels
btfsc PORTB, 0 ;Salta si RB0 = 1 presionado
incf inicia,1
btfsc inicia, 1
goto pausa
goto INICIO
MOVF valor1,W
LA VARIABLE
;AGARRA EL VALOR DE
bcf Led
CALL retardo
;PAUSA DE 1 SEGUNDO
retardo
* Preescaler
MOVLW d'64'
CONTA para 1 segundo
btfsc pause, 0
;Cargar el valor de
MOVWF CONTA
bsf Led
CALL retardo
;PAUSA DE 1 SEGUNDO
INCF valor1,F
;INCREMENTE VARIBALE A
1
MOVF valor1,W
VARIABLE
;W SE CARGA CON LA
XORLW .5
;COMPARA SI A LLEGADO A
10
espera1
CLRF INTCON
interrupciones
;Deshabilitar
MOVLW d'102'
TMR0 para 122 cuentas
;Cargar el valor de
MOVWF TMR0
;(Complemento)
BTFSS INTCON,T0IF
espera
BTFSS STATUS,Z
LLEGADO
GOTO dels
CLRW
CLRF valor1
VARIBALE
;CHEKADOR SI A
TMR0
;BUCLE
GOTO espera
DECFSZ CONTA,F
;Decrementar el registro CONTA hasta cero
;TAMBIEN LIMPIA LA
GOTO espera1
pausa
RETURN
;retorno de
call
bsf
Ledp
GOTO retardo
bsf
Ledp
GOTO retardo
btfsc PORTB, 1 ;Salta si RB1 = 1 presionado
incf pause,1
btfsc pause, 1
return
end
SIMULACIN
VII.
V.
CONCLUSIONES Y RECOMENDACIONES
CONCLUSIONES:
RECOMENDACIONES:
VI.
BIBLIOGRAFA:
http://es.scribd.com/doc/44252680/LCD16X2#scribd
http://www.mikroe.com/chapters/view/80/capitulo2-programacion-de-los-microcontroladores/
http://es.wikipedia.org/wiki/
Microcontrolador
BIOGRAFA: