how to scroll text smoothly on 5x7 display? (no shift registers)


Closed Thread
Results 1 to 2 of 2
  1. #1
    Join Date
    Feb 2013
    Posts
    1,078

    Default how to scroll text smoothly on 5x7 display? (no shift registers)

    Hello.

    I have 16F876 and 5x7 pixel led display. Rows of display are connected to PORTB.1-7 and columns to PORTC.1-5.

    I wrote a simple multiplex program which displays static character on display. However, I want to scroll some text on display, from right to left, via 1 pixel increments. All code examples I've found, use HC595 or similar to wire the led display, so code is based on SHIFTOUT. Since I'm not using such register, I have no way to shift out something.

    Any ideas?

  2. #2
    Join Date
    Apr 2011
    Location
    Welches, Oregon
    Posts
    198


    Did you find this post helpful? Yes | No

    Default Re: how to scroll text smoothly on 5x7 display? (no shift registers)

    This is some code I used some time ago for a single 5x7 display marquee - or maybe I only used 5x5... To be honest, I don't remember where I left it - working or not, or what exactly it was doing. Its a starting point... no guarantees. Happy to answer questions if I still can.


    Code:
    MSG VAR BYTE [26]
               Row var byte [6]
               Col var byte
               SPD VAR WORD
               LTR VAR BYTE
               LTRCOL VAR BYTE
               POS VAR BYTE
               LP VAR BYTE
              TRISB=0     'PORTB AS OUTPUT 
              TRISD=0     'PORTD AS OUTPUT
              LTRCOL=0:pos=0
    
              'HARD CODE TEST MESSAGE
              MSG[0]= "P":MSG[1]= "R":MSG[2]= "E":MSG[3]= "S":MSG[4]= "S":MSG[5]= " "
              MSG[6]= "M":MSG[7]= "E":MSG[8]= " ":MSG[9]= " ":MSG[10]= " ":MSG[11]= " "
              MSG[12]= " ":MSG[13]= "P":MSG[14]= "R":MSG[15]= "E":MSG[16]= "S":MSG[17]= "S"
              MSG[18]= " ":MSG[19]= "M":MSG[20]= "E":MSG[21]= " ":MSG[22]= " ":MSG[23]= " "
              MSG[24]= " ":MSG[25]= " "                                                       
    
              Looper:                                                                 'START MAIN LOOP
    
                FOR SPD=0 TO 300                                                      'SPEED LOOP SETS TIME STATIC COLUMS ARE DRAWN
                  FOR COL=1 TO 5                                                      'COL LOOP MULTIPLEXES COLUMNS; EACH COL IN TURN, ROW VALS AS BYTE
                    PORTD=255                                                         'TURN OFF ALL COLUMNS
                    PORTB=ROW[col]                                                    'SET ROWS VAL [BINARY 0=ON, 1=OFF]
                    SELECT CASE COL                                                   'CASE TURNS ON COLUMNS AFTER ROW VAL LOADED
                      CASE 1:  portD.1 =0
                      CASE 2:  portD.2 =0
                      CASE 3:  portD.3 =0
                      CASE 4:  portD.4 =0
                      CASE 5:  portD.5 =0
                    END SELECT  
                  NEXT COL                                                            'NEXT COLUMN
                NEXT SPD                                                              'MULTIPLEX COLUMNS AGAIN
                LOOKDOWN msg[pos],["ABCDEFGHIJKLMNOPQRSTUVWXYZ* "],LTR                'FIND POSITION OF EACH LETTER IN TURN
                 IF (POS =26) OR (LTR=26) THEN                                        'MAX STRING LENGTH... RESET TO REPEAT FROM ELEMENT 0
                  POS=0: GOTO LOOPER
                  ENDIF
                READ (LTR*5)+LTRCOL, ROW[6]                                           'LTR= START OF 5 COL CODES IN DATA STATEMENTS; LTRCOL= NEXT COLUMN DATA-LOAD "OFF-SCREEN" TO SHIFT IN
                LTRCOL=LTRCOL+1                                                       '+1 FOR NEXT TIME -- TO GET NEXT COLUMN FOR SHIFT IN 
                iF LTRCOL=6 THEN                                                      'IF LETTER IS DONE SHIFTING
                  LTRCOL=0: ROW[6]=255 :pos=pos+1                                     'LTR * 5 INCREMENTS, SO RESET COL COUNTER, ADD COL SPACE BETWEEN LETTERS, AND INCREMENT FOR NEXT STRING ELEMENT
                ENDIF                                                     
                                                                                      'SHIFT COLUMNS LEFT
                FOR COL=2 TO 6                                                        'SHIFT COLUMNS LEFT 1 POSITION
                  ROW[COL-1]=ROW[COL]
                NEXT COL     
              Goto Looper                                                             'REPEAT MAIN LOOP
    
              END         
    
              DATA $87,$EB,$EB,$EB,$87,   $83,$AB,$AB,$AB,$D7,   $C7,$BB,$BB,$BB,$BB  'ABC; HEX CODES: EACH COL IS HEX INTERPRETATION OF BINARY ON/OFF
              DATA $83,$BB,$BB,$BB,$C7,   $83,$AB,$AB,$AB,$AB,   $83,$EB,$EB,$EB,$EB  'DEF; '0' FOR ON '1' FOR OFF; HEX FOR LESS TYPING!
              DATA $C7,$BB,$BB,$EF,$8F,   $83,$EF,$EF,$EF,$83,   $BB,$BB,$83,$BB,$BB  'GHI
              DATA $9F,$BF,$BF,$BF,$83,   $83,$EF,$EF,$D7,$BB,   $83,$BF,$BF,$BF,$9F  'JKL
              DATA $83,$F7,$EF,$F7,$83,   $83,$F7,$EF,$DF,$83,   $C7,$BB,$BB,$BB,$C7  'MNO
              DATA $83,$EB,$EB,$EB,$F7,   $C7,$BB,$BB,$9B,$C7,   $83,$EB,$EB,$CB,$B7  'PQR
              DATA $A3,$AB,$AB,$AB,$8B,   $FB,$FB,$83,$FB,$FB,   $C3,$BF,$BF,$BF,$C3  'STU
              DATA $F3,$CF,$BF,$CF,$F3,   $E3,$9F,$E3,$9F,$E3,   $BB,$D7,$EF,$D7,$BB  'VWX
              DATA $E3,$EF,$8F,$EF,$E3,   $9B,$AB,$AB,$AB,$B3,   $FF,$FF,$FF,$FF,$FF  'YZ [SPC]
    Last edited by Amoque; - 11th June 2014 at 04:55.

Similar Threads

  1. LCD's with Shift Registers, and LCDOUT
    By Darrel Taylor in forum PBP Extensions
    Replies: 11
    Last Post: - 3rd April 2015, 14:34
  2. Smart Star (how to use shift registers)
    By mackrackit in forum Code Examples
    Replies: 3
    Last Post: - 30th November 2008, 20:06
  3. Olympic timer Scroll Text
    By Patrick in forum mel PIC BASIC Pro
    Replies: 8
    Last Post: - 16th December 2006, 13:03
  4. Shift Registers
    By shahidali55 in forum General
    Replies: 2
    Last Post: - 7th September 2006, 20:07
  5. Shift Registers For LCD Display
    By jetpr in forum mel PIC BASIC Pro
    Replies: 6
    Last Post: - 7th July 2006, 15:03

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