TODOPIC

Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: galo003789 en 18 de Enero de 2008, 04:22:51

Título: calculadora con lcd en pic basic
Publicado por: galo003789 en 18 de Enero de 2008, 04:22:51
hola que tal este es mi primer aporte, espero q les interese, esta es una calculadora que puede sumar, restar, multiplicar y dividir, mostrando el resultado en decimales. Se pueden ingresar numeros que utilicen hasta una word (hasta el 65535), también visualiza los numeros en la lcd al igual q el resultado, para el ingreso de los datos utiliza un teclado hexadecimal.

Esta programado en picbasic pro ademas les adjunto la simulacion en proteus

DEFINE OSC 20
DEFINE LCD_DREG PORTB 'LCD data port
DEFINE LCD_DBIT 4 'LCD data starting bit 0 or 4
DEFINE LCD_RSREG PORTB 'LCD register select port
DEFINE LCD_RSBIT 0 'LCD register select bit
DEFINE LCD_EREG PORTB 'LCD enable port
DEFINE LCD_EBIT 2 'LCD enable bit
DEFINE LCD_RWREG PORTB 'LCD read/write port
DEFINE LCD_RWBIT 1 'LCD read/write bit
DEFINE LCD_BITS 4 'LCD bus size 4 or 8
DEFINE LCD_LINES 2 'Number lines on LCD
DEFINE LCD_COMMANDUS 2000 'Command delay time in us
DEFINE LCD_DATAUS 50 'Data delay time in us
       
TRISC=%11100001
TRISB=0
TRISA=0
ADCON1=7
PORTA=255
PORTB=255
PORTC=0

INICIO2:
X VAR BYTE
X=0
Y VAR BYTE
Y=0

SUM VAR WORD
SUM=0
RES VAR WORD
RES=0
MUL VAR WORD
MUL=0
DIVIN VAR WORD
DIVIN=0
DIVDEC VAR WORD
DIVDEC=0
DECI VAR WORD
DECI=0
G VAR BYTE
G=0
H VAR BYTE
H=0
I VAR BYTE
I=0
J VAR BYTE
J=0
K VAR WORD
K=0
L VAR WORD
L=0
FLAG VAR BYTE
FLAG=0
CLC VAR BYTE
CLC=0

A VAR PORTC.1
B VAR PORTC.2
C VAR PORTC.3
D VAR PORTC.4
UNO VAR PORTC.5
DOS VAR PORTC.6
TRES VAR PORTC.7
CUATRO VAR PORTC.0

LCDOUT $FE, 1

INICIO:

'TECLADO
HIGH A
IF UNO=1 THEN X=1
IF DOS=1 THEN X=2
IF TRES=1 THEN X=3
IF CUATRO=1 THEN X=10
IF UNO=1 || DOS=1 || TRES=1 || CUATRO=1 THEN GOSUB ANTIREBOTE:Y=Y+1
PAUSE 10
LOW A

HIGH B
IF UNO=1 THEN X=4
IF DOS=1 THEN X=5
IF TRES=1 THEN X=6
IF CUATRO=1 THEN X=11
IF UNO=1 || DOS=1 || TRES=1 || CUATRO=1 THEN GOSUB ANTIREBOTE:Y=Y+1
PAUSE 10
LOW B

HIGH C
IF UNO=1 THEN X=7
IF DOS=1 THEN X=8
IF TRES=1 THEN X=9
IF CUATRO=1 THEN X=12
IF UNO=1 || DOS=1 || TRES=1 || CUATRO=1 THEN GOSUB ANTIREBOTE:Y=Y+1
PAUSE 10
LOW C

HIGH D
IF UNO=1 THEN X=20 'ON
IF DOS=1 THEN X=0
IF TRES=1 THEN X=14 'ENTER
IF CUATRO=1 THEN X=13
IF UNO=1 || DOS=1 || TRES=1 || CUATRO=1 THEN GOSUB ANTIREBOTE:Y=Y+1
PAUSE 10
LOW D

IF Y=1 && X<10 THEN G=X:LCDOUT $FE, 2, #X
IF Y=2 && X<10 THEN H=X:LCDOUT $FE, 2, #G, #X
IF Y=3 && X<10 THEN I=X:LCDOUT $FE, 2, #G, #H, #X
IF FLAG=0 && Y=0 THEN LCDOUT $FE, 2, "0  "
IF X=10 THEN LCDOUT $FE, 2, "+  "
IF X=11 THEN LCDOUT $FE, 2, "-  "
IF X=12 THEN LCDOUT $FE, 2, "*  "
IF X=13 THEN LCDOUT $FE, 2, "/  "
IF X=20 THEN GOTO INICIO2

'PRIMER NUMERO
IF FLAG=0 THEN
    IF Y=2 && X>=10 THEN
    J=X
    K=G
    LCDOUT $FE, 2, #K
    PAUSE 100
    FLAG=1
    Y=0
    G=0:H=0:I=0
    ENDIF
   
    if y=3 && x>=10 THEN
    J=X
    K=(G*10)+H
    LCDOUT $FE, 2, #K
    PAUSE 100
    FLAG=1
    Y=0
    G=0:H=0:I=0
    ENDIF
   
    IF Y=4 && X>=10 THEN
    J=X
    K=(g*100)+(H*10)+(i)
    LCDOUT $FE, 2, #K
    PAUSE 100
    FLAG=1
    Y=0
    G=0:H=0:I=0
    ENDIF
ENDIF

'SEGUNDO NUMERO
iF FLAG=1 THEN
    IF Y=2 && X=14 THEN
    L=G
    LCDOUT $FE, 2, #L
    PAUSE 100
    CLC=1
    GOSUB OPERACIONES
    ENDIF
   
    IF Y=3 && X=14 THEN
    L=(G*10)+H
    LCDOUT $FE, 2, #L
    PAUSE 100
    CLC=1
    GOSUB OPERACIONES
    ENDIF
   
    IF Y=4 && X=14 THEN
    l=(g*100)+(H*10)+i
    LCDOUT $FE, 2, #L
    PAUSE 100
    CLC=1
    GOSUB OPERACIONES
    ENDIF
ENDIF

GOTO INICIO

ANTIREBOTE:
IF UNO=1 || DOS=1 || TRES=1 || CUATRO=1 THEN
GOTO ANTIREBOTE
ELSE
RETURN
ENDIF

OPERACIONES:

IF CLC=1 THEN
    IF J=10 THEN
    SUM=K+L
    LCDOUT $FE, 2, #k, "+",#l,"="
    LCDOUT $FE, $C0, #SUM
    PAUSE 100
    X=0
    ENDIF
   
    IF J=11 THEN
        IF L>K THEN
        RES=L-K
        LCDOUT $FE, $C0,"-", #RES       
        ELSE
        RES=K-L
        LCDOUT $FE, $C0, #RES
        ENDIF
    LCDOUT $FE, 2, #k, "-",#l,"="
    PAUSE 100
    X=0
    ENDIF
   
    IF J=12 THEN
    MUL=K*L
    LCDOUT $FE, 2, #k, "*",#l,"="
    LCDOUT $FE, $C0, #MUL
    PAUSE 100
    X=0
    ENDIF
   
    IF J=13 THEN
    DIVIN=K/L
    DIVDEC=K//L
    DECI=(DIVDEC*100)/L
    LCDOUT $FE, 2, #k, "/",#l,"="
    LCDOUT $FE, $C0, #DIVIN,".",#DECI
    PAUSE 100
    X=0
    ENDIF

HIGH D
IF UNO=1 THEN X=20 'ON
IF DOS=1 THEN X=0
IF TRES=1 THEN X=14 'ENTER
IF CUATRO=1 THEN X=13
IF UNO=1 || DOS=1 || TRES=1 || CUATRO=1 THEN GOSUB ANTIREBOTE:Y=Y+1
PAUSE 10
LOW D

IF X=20 THEN LCDOUT $FE,1,"0":GOTO INICIO2
GOTO OPERACIONES

ELSE
GOTO INICIO
ENDIF
Título: Re: calculadora con lcd en pic basic
Publicado por: navaismo en 18 de Enero de 2008, 16:04:17
Gracias por compartirlo y bienvenido
Título: Re: calculadora con lcd en pic basic
Publicado por: dianitagh en 15 de Noviembre de 2010, 21:29:57
super bien muchas gracias! que compilador usaste?
Título: Re: calculadora con lcd en pic basic
Publicado por: firepic en 15 de Noviembre de 2010, 22:46:44
Bienvenido Galo!  :-/
Muchas gracias por el aporte!  :)

Dianita, sobre tu pregunta:
super bien muchas gracias! que compilador usaste?

Galo mismo lo dijo:
Esta programado en picbasic pro ademas les adjunto la simulacion en proteus

Pic Basic Pro es un buen compilador, yo lo usé por buen tiempo hasta que me cambié a C...
Aquí puedes leer más sobre este compilador: http://store.melabs.com/prod/pbp.html (http://store.melabs.com/prod/pbp.html)

Bueno saludos a todos! Nos leemos!  :mrgreen:
Título: Re: calculadora con lcd en pic basic
Publicado por: hernanordonez74 en 23 de Julio de 2012, 00:18:50
Gracias mi pana me has salvado la vida.
Saludos desde Ecuador
Título: Re: calculadora con lcd en pic basic
Publicado por: judex en 24 de Julio de 2012, 17:16:06
buen ejercicio
 :-/
Título: Re: calculadora con lcd en pic basic
Publicado por: JADMCABALLO en 13 de Agosto de 2012, 03:15:36
EXCELENTE APORTE! MUCHAS GRACIAS de casualidad no sabes como usarlo pero en C compiler? es que necesito grabarlo en un pic18f4685 y el microcode studio no me lo permite
Título: Re: calculadora con lcd en pic basic
Publicado por: jose_abismal en 07 de Enero de 2013, 00:48:01
gracias    amigo    me  acabas magnifico programa