universal lcd setup menu


Closed Thread
Results 1 to 3 of 3
  1. #1
    Join Date
    Mar 2005
    Location
    CROATIA
    Posts
    38

    Default universal lcd setup menu

    has enyone build something like this

    in my case i have 3*2 matrix key and 2x16 lcd
    i want to be able to set some stuf like:

    @ main loop pass: (wiew mode change, direct runings & setup entering)
    @ setup:
    menu1 -rtc (ds1307)
    -eeprom vars : menu2 - prog 1,2,3 times
    menu3 - 7 day scedule
    menu4 - secret menu (licencing key)
    menu5 - parametars seting
    Attached Images Attached Images   
    Last edited by ShoKre; - 13th March 2007 at 01:00.

  2. #2
    Join Date
    Mar 2005
    Location
    CROATIA
    Posts
    38


    Did you find this post helpful? Yes | No

    Default

    i didn't put whole code but this segment show you lcd dilema

    how to get ride with unfamiliar users (i can write user manual)

    this piece of code is not final is jusi in alpha phase....

    (1.my eng. is far of good 2. pbp people please ignore my cro. comment)


    Code:
     
    '________________________________ matrix tipke 3x2 ______________________________
    SCAN: 'SKENER TIPKOVNICE
    PORTA.0=0
    PORTA.1=1
    KEY=PORTC & %00000111
    PORTA.0=1
    PORTA.1=0
    KEY=KEY*10+(PORTC & %00000111)
    PORTA.0=0
    '---------------------- DELAY - DEBOUNCE - RELOOP ----------------------
       IF PRESS THEN         'AKO JE NESTO STISNUTO  
            'IF W<1 THEN SOUND PORTC.5 [100,5]      '| OBAVEZNO SLATI NA PR?   M
             W=W+1                                  '| BROJI STISKOVE          A
             IF W > CEKAJ_STISAK THEN PONAVLJAJ = DA'|                         T                       
       ELSE                                         '| DELAY DO RELOOPA        R
             W=0                                    '|                         I
             PONAVLJAJ = NE                         '|                         X
       ENDIF
    RETURN '--------------- TIPKA STISNUTA (PRESS DA ILI NE) ----------------
    TIPKA_STISNUTA:
    IF KEY = 77 THEN
        PRESS = NE
    ELSE
        PRESS = da
    ENDIF
    RETURN
    '________________________________ lcd setup IZBORNIK  _________________________
    SETUP:       '----------------           ----------------
    lcdout $fe,1,"MENU PODESAVANJA",$FE,$C0,"<-|>+|<>IZ|EN-OK"
    PAUSE 4000
    MENU=0
    SETUP_LOOP:
    GOSUB SCAN
    PAUSE 100
           SELECT CASE  KEY
                 CASE 65 '<- + ->
                      IF NOT PRESS THEN IZLAZ
                 CASE 73 'ENTER 
           IF NOT PRESS THEN BRANCHL MENU, [SET_SAT,PROGRAMI,TJEDNI,POSTAVKE,IZLAZ] 
                      'ENDIF
                 CASE 67 '<-
                      IF NOT PRESS AND MENU >= 1 THEN MENU=MENU-1
                 CASE 75 '->
                      IF NOT PRESS AND MENU <  5 THEN MENU=MENU+1
                 CASE 16 '1 + 2 + 3
                      GOSUB SKRIVENI     
           END SELECT
           
           SELECT CASE MENU
                 CASE 0             '----------------          '----------------
                      lcdout $fe,1, "NAMJESTANJE SATA",$FE,$C0,"EN-OK, <+> IZLAZ"
                 CASE 1             '----------------          '----------------
                      lcdout $fe,1, "IZMJENA PROGRAMA",$FE,$C0,"EN-OK, <+> IZLAZ"
                 CASE 2             '----------------          '----------------
                      lcdout $fe,1, "TJEDNI RASPORED ",$FE,$C0,"EN-OK, <+> IZLAZ"
                 CASE 3             '----------------          '----------------
                      lcdout $fe,1, "POSTAVKE SUSTAVA",$FE,$C0,"EN-OK, <+> IZLAZ"
                 CASE 4             '----------------          '----------------
                      lcdout $fe,1, "IZLAZ IZ POSTAVA",$FE,$C0,"EN-OK, <+> IZLAZ"                  
           END SELECT
    
    GOSUB TIPKA_STISNUTA
    GOTO SETUP_LOOP
    IZLAZ:
           lcdout $fe,1, "IZLAZ IZ SETUP-a",$FE,$C0,"I NASTAVAK RADA "
           PAUSE 2000
    GOTO PRE_MAIN_LOOP
    '-----------------------  SETIRANJE TRAJANJA PROGRAMA -----------------------------
    PROGRAMI:           '----------------          '----------------
          lcdout $fe,1, "<T-|>T+|EN-V|2+V",$FE,$C0,"3+PRG|<+> SPREMI"
     	  PAUSE 3000	    	
          X=1:Y=1:Z=1:A=0
    PROGRAMI_LOOP:
          GOSUB KEY2VAR
          IF Z>3 THEN Z=3 
          IF X>BROJ_VENTILA THEN X=BROJ_VENTILA
          IF Y>99 THEN Y = 15
          LOC = PROG_LOC + ((Z-1) * PROG_OFFSET)+x
          READ LOC,TEMP
          lcdout $fe,1,"PROG.=",#Z," VENT.=",#x,$FE,$C0,"MEM=",#TEMP," SET=",#y
          IF TEMP != y THEN A=A+1
          IF PRESS THEN A=0
          IF A>30 THEN  
             WRITE LOC,y
             A=0
          ENDIF  
    GOTO PROGRAMI_LOOP
    '________________________________ lcd LICENCA _____________________________________
    SKRIVENI:
             lcdout $fe,1,"LICENCNI KOOD",$FE,$C0
             read (PARAM_LOC+59),Y   'NEVIDLJIV KOOD
             read (PARAM_LOC+60),Z
             X=1':Y=0:Z=0            'ILI VIDLJIV KOOD
    SKRIVENI_LOOP:
          GOSUB KEY2VAR 
          IF X>2 THEN SKRIVENI_OUT
          lcdout $FE,$C0,"  ",dec3 Y,dec3 Z,"=",dec3 KOOD0,dec3 KOOD1
          A=A+1
          IF PRESS THEN A=0
          IF A>100 THEN SKRIVENI_OUT
    GOTO SKRIVENI_LOOP
    SKRIVENI_OUT:
    lcdout $fe,1," KOOD SPREMLJEN ",$FE,$C0,"POVRAT. NA IZBOR",$FE,$0C
           IF A.LOWBYTE = KOOD0 AND A.HIGHBYTE = KOOD1 THEN
               Write (PARAM_LOC+59),A.HIGHBYTE   'LICENCA
               Write (PARAM_LOC+60),A.LOWBYTE
           ELSE             '---------------- 
               lcdout $fe,2," KOOD NETOCAN ! " 
           ENDIF   
    PAUSE 2000
    goto setup
    '__________________________ lcd setup PARAMETRI_____________________________________
    POSTAVKE:
    
    POSTAVKE_LOOP
    return
    GOTO POSTAVKE_LOOP
    '________________________________ RUCNI START _____________________________________
    POKRENI:
    
    GOTO POKRENI
    START_OUT:
    LCDOUT $FE,$C0,"START PROGRAM ",#PROGRAM_FLAG
    GOTO PRE_MAIN_LOOP
    
    RUCNI_TEST:
          GOSUB KEY2VAR
          
    '________________________________STELANJE SATA ____________________________________
    SET_SAT:           '________________
          lcdout $fe,1," STIMANJE SATA :",$FE,$C0
          X=0:Y=0:Z=0
          PAUSE 2000 
          GOSUB CITAJ_SAT
    SAT_LOOP:
          LOOKUP2 Y,[SATI,MINUTA,DAN,DATUM,MJESEC,GOD],X     'STA CEMO MJENJATI
          LOOKUP Y, [ 60 ,  60  , 7 , 31  ,  12  ,99 ],TEMP  'MAXIMUMI ZA VREM.MJERE
          LOOKUP Y, [ 0  ,   4  , 7 ,  0  ,   4  , 7 ],P     'MAPIRANJE KURSORA
          GOSUB KEY2VAR
          IF Z>3 THEN Z=3 
          IF X>TEMP THEN X=TEMP
          IF Y>5 THEN Y = 5
          SELECT CASE Y
             CASE 0
                  SATI=X
             CASE 1
                  MINUTA=X
             CASE 2
                  DAN=X            
             CASE 3
                  DATUM=X
             CASE 4
                  MJESEC=X
             CASE 5
                  GOD=X
          END SELECT
          lcdout $FE,1,DEC2 SATI,":", DEC2 MINUTA,"DAN:",DEC1 DAN,"-",#X,#Y,#Z,$FE,$C0,_
                       DEC2 DATUM,".", DEC2 MJESEC,".20",DEC2 GOD,$FE,$0F,$FE,2
             IF Y>2 THEN LCDOUT $FE,$C0
          FOR C=0 TO P
             LCDOUT $FE,$14     'MAKNI KURSOR DA BLINKA GDJE SE CACKA
          NEXT C 
               
          A=A+1
          IF PRESS THEN A=0
          IF A=20 THEN GOSUB PISI_SAT 'SVAKI PUT 2 SEC NAKON RELEZA
          
    GOTO SAT_LOOP
    '_______________________________ TJEDNI ________________________________________
    TJEDNI:
    
    
    
    
    GOTO SETUP
    '___________ VAR=X,Y,Z IZ TIPKI SA TIMEOUTOM I AUTO REPEATOM I DEBOUNCEROM _________
    KEY2VAR:
    GOSUB SCAN
    PAUSE 100
          SELECT CASE KEY
                 CASE 65 '<- + ->
                      IF NOT PRESS THEN   '----------------          '----------------
                             lcdout $fe,1,"POHRANJENO. POV-",$FE,$C0,"RATAK U IZBORNIK"
                         PAUSE 2000
                         goto setup
                      ENDIF
                 CASE 56 '1 + 3
                      IF NOT PRESS THEN   '----------------          '----------------
                             lcdout $fe,1,"POHRANJENO. POV-",$FE,$C0,"RATAK U NORMALU "
                         PAUSE 2000
                         goto setup
                      ENDIF
                 CASE 73 'ENTER GORE
                      IF NOT PRESS THEN x=x+1
                      IF PONAVLJAJ THEN x=x+1 
                 CASE 67 '<-                              < + > y
                      IF NOT PRESS THEN y=y-1
                      IF PONAVLJAJ THEN y=y-1  
                 CASE 75 '->
                      IF NOT PRESS THEN y=y+1
                      IF PONAVLJAJ THEN y=y+1
                 CASE 37 '2 DOLE                          DOLE + GORE 2 + ENT X
                      IF NOT PRESS THEN x=x-1
                      IF PONAVLJAJ THEN x=x-1
                 CASE 57 '1     
                      IF NOT PRESS THEN Z=Z-1
                      IF PONAVLJAJ THEN Z=Z-1
                 CASE 76 '3                              1 + 3  Z
                      IF NOT PRESS THEN Z=Z+1
                      IF PONAVLJAJ THEN Z=Z+1
                 CASE 16 '1 + 2 + 3
                      GOTO SKRIVENI     
           END SELECT
           TIMEOUT=TIMEOUT+1
           IF PRESS THEN TIMEOUT=NE
           IF TIMEOUT = %11111111 THEN IZLAZ
    GOSUB TIPKA_STISNUTA
    RETURN       
    '_____________________________OCISTI X,Y,Z _______________________________________

  3. #3
    Join Date
    Aug 2007
    Posts
    26


    Did you find this post helpful? Yes | No

    Default

    Hello Shokre,,,,

    Got problem...when I try to compile You're code, I've got error "bad expression" in every line where if IF command....do you know why?

    I use Micro code PicBasic Pro compiler.

    tnx!

Similar Threads

  1. 16f688 LCD what have I done wrong
    By spitfiredriver in forum mel PIC BASIC Pro
    Replies: 6
    Last Post: - 8th August 2009, 19:54
  2. Play with LCD on PICDEM
    By The IceMan in forum mel PIC BASIC
    Replies: 5
    Last Post: - 22nd August 2008, 16:56
  3. Sending menu to PC from PIC16F876A
    By joseph Degorio in forum Serial
    Replies: 2
    Last Post: - 12th November 2007, 07:03
  4. Need help with LCD number display.
    By Steve Matson in forum mel PIC BASIC
    Replies: 8
    Last Post: - 26th June 2007, 23:07
  5. lcd 2*16 universal setup menu
    By ShoKre in forum mel PIC BASIC Pro
    Replies: 1
    Last Post: - 24th March 2007, 23:01

Members who have read this thread : 1

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts