Autor Tema: calculadora con lcd en pic basic  (Leído 13574 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado galo003789

  • PIC10
  • *
  • Mensajes: 1
calculadora con lcd en pic basic
« 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

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: calculadora con lcd en pic basic
« Respuesta #1 en: 18 de Enero de 2008, 16:04:17 »
Gracias por compartirlo y bienvenido
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado dianitagh

  • PIC10
  • *
  • Mensajes: 1
Re: calculadora con lcd en pic basic
« Respuesta #2 en: 15 de Noviembre de 2010, 21:29:57 »
super bien muchas gracias! que compilador usaste?

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: calculadora con lcd en pic basic
« Respuesta #3 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

Bueno saludos a todos! Nos leemos!  :mrgreen:
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web

Desconectado hernanordonez74

  • PIC10
  • *
  • Mensajes: 1
Re: calculadora con lcd en pic basic
« Respuesta #4 en: 23 de Julio de 2012, 00:18:50 »
Gracias mi pana me has salvado la vida.
Saludos desde Ecuador

Desconectado judex

  • PIC10
  • *
  • Mensajes: 7
Re: calculadora con lcd en pic basic
« Respuesta #5 en: 24 de Julio de 2012, 17:16:06 »
buen ejercicio
 :-/

Desconectado JADMCABALLO

  • PIC10
  • *
  • Mensajes: 1
Re: calculadora con lcd en pic basic
« Respuesta #6 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

Desconectado jose_abismal

  • PIC10
  • *
  • Mensajes: 1
Re: calculadora con lcd en pic basic
« Respuesta #7 en: 07 de Enero de 2013, 00:48:01 »
gracias    amigo    me  acabas magnifico programa