Single Digit LED Scrolling Text example. + source code

pasanlaksiri

Member
Aug 22, 2006
4,179
0
0
Thalawathugoda
This is my first Scrolling LED Text written in mikroC. Its still hv no options at all. Just the scrolling part.

click to enlarge


Video - http://www.youtube.com/watch?v=XJoZY4N017Q


Source Code

Code:
char letter = 0,   buffer[5] = {0X00,0X00,0X00,0X00,0X00};
const char array[]={"<<<<<<<<<<Pasan Laksiri >> www.electro-tech-online.com <<<< My First LED Scrolling Text Project %%%%%%% IIIiiiillll"};
unsigned short y = 0, i, j = 0, PORTA_shadow, PORTB_shadow, temp = 0;
unsigned short PORTA_SELECT(unsigned short Select);
get_element();
shift(char x);
static const FontLookup [][6];
unsigned int x = 0;

bit Flag1;

void main(){

            CMCON = 7;   // All Comparators Off
            TRISA = 0;
            TRISB = 0;
            PORTA_shadow = 0;
            PORTA = PORTA_Shadow;
            PORTB_shadow = 0;
            PORTB = PORTB_shadow;
            OPTION_REG = 0X87;
            INTCON = 0XA0;

            for(;;){
                    PORTA_shadow = PORTA_SELECT(j);
                    PORTA = PORTA_shadow;
                    PORTB_shadow = buffer[j];
                    PORTB = PORTB_shadow;
                    delay_ms(1);
                    PORTA_shadow = 0;
                    PORTA = PORTA_shadow;
                    PORTB_shadow = 0;
                    PORTB = PORTB_shadow;
                    j++;
                    if( j > 4)
                    j = 0;

                    if(Flag1 == 1)
                             {
                              get_element();
                              Flag1 = 0;
                              }
                              }
                              }

get_element()
             {
              if( array[x] != '\0')
                  {
                   letter = array[x];
                   shift( FontLookup [(letter - 32)][y] );
                   y++;
                   if(y > 5 )
                        {
                         x++;
                         y = 0;
                         }
                         }
                         else
                             {
                              X = 0;
                              }
                         }

shift(char xp)
           {
            for(i = 1; i <= 4; i++)
                  {
                   buffer[ i - 1 ] = buffer [i];
                   }
                    buffer[4] = xp;
                    }




unsigned short PORTA_SELECT(unsigned short Select){
         switch(Select){
                      case  0 : return  0X01;
                      case  1 : return  0X02;
                      case  2 : return  0X04;
                      case  3 : return  0X08;
                      case  4 : return  0X40;

                      }
                     }

// ----------------------------ISR Routine--------------------------------------
void interrupt(){

                   temp++;
                        if(temp > 1){
                          temp = 0;
                          Flag1 = 1;
                         }
                                  INTCON.T0IF = 0;

                                  }


/*--------------------------------------------------------------------------------------------------
                                     Character generator


--------------------------------------------------------------------------------------------------*/

static const FontLookup [][6] =
{
    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },  // sp
    { 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00 },   // !
    { 0x00, 0x00, 0x07, 0x00, 0x07, 0x00 },   // "
    { 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14 },   // #
    { 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12 },   // $
    { 0x00, 0x23, 0x13, 0x08, 0x64, 0x62 },   // %
    { 0x00, 0x36, 0x49, 0x55, 0x22, 0x50 },   // &
    { 0x00, 0x00, 0x05, 0x03, 0x00, 0x00 },   // '
    { 0x00, 0x00, 0x1c, 0x22, 0x41, 0x00 },   // (
    { 0x00, 0x00, 0x41, 0x22, 0x1c, 0x00 },   // )
    { 0x00, 0x14, 0x08, 0x3E, 0x08, 0x14 },   // *
    { 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08 },   // +
    { 0x00, 0x00, 0x00, 0x50, 0x30, 0x00 },   // ,
    { 0x00, 0x10, 0x10, 0x10, 0x10, 0x10 },   // -
    { 0x00, 0x00, 0x60, 0x60, 0x00, 0x00 },   // .
    { 0x00, 0x20, 0x10, 0x08, 0x04, 0x02 },   // /
    { 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E },   // 0
    { 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00 },   // 1
    { 0x00, 0x42, 0x61, 0x51, 0x49, 0x46 },   // 2
    { 0x00, 0x21, 0x41, 0x45, 0x4B, 0x31 },   // 3
    { 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10 },   // 4
    { 0x00, 0x27, 0x45, 0x45, 0x45, 0x39 },   // 5
    { 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30 },   // 6
    { 0x00, 0x01, 0x71, 0x09, 0x05, 0x03 },   // 7
    { 0x00, 0x36, 0x49, 0x49, 0x49, 0x36 },   // 8
    { 0x00, 0x06, 0x49, 0x49, 0x29, 0x1E },   // 9
    { 0x00, 0x00, 0x36, 0x36, 0x00, 0x00 },   // :
    { 0x00, 0x00, 0x56, 0x36, 0x00, 0x00 },   // ;
    { 0x00, 0x08, 0x14, 0x22, 0x41, 0x00 },   // <
    { 0x00, 0x14, 0x14, 0x14, 0x14, 0x14 },   // =
    { 0x00, 0x00, 0x41, 0x22, 0x14, 0x08 },   // >
    { 0x00, 0x02, 0x01, 0x51, 0x09, 0x06 },   // ?
    { 0x00, 0x32, 0x49, 0x59, 0x51, 0x3E },   // @
    { 0x00, 0x7E, 0x11, 0x11, 0x11, 0x7E },   // A
    { 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36 },   // B
    { 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22 },   // C
    { 0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C },   // D
    { 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41 },   // E
    { 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01 },   // F
    { 0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A },   // G
    { 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F },   // H
    { 0x00, 0x00, 0x41, 0x7F, 0x41, 0x00 },   // I
    { 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01 },   // J
    { 0x00, 0x7F, 0x08, 0x14, 0x22, 0x41 },   // K
    { 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40 },   // L
    { 0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F },   // M
    { 0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F },   // N
    { 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E },   // O
    { 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06 },   // P
    { 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E },   // Q
    { 0x00, 0x7F, 0x09, 0x19, 0x29, 0x46 },   // R
    { 0x00, 0x46, 0x49, 0x49, 0x49, 0x31 },   // S
    { 0x00, 0x01, 0x01, 0x7F, 0x01, 0x01 },   // T
    { 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F },   // U
    { 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F },   // V
    { 0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F },   // W
    { 0x00, 0x63, 0x14, 0x08, 0x14, 0x63 },   // X
    { 0x00, 0x07, 0x08, 0x70, 0x08, 0x07 },   // Y
    { 0x00, 0x61, 0x51, 0x49, 0x45, 0x43 },   // Z
    { 0x00, 0x00, 0x7F, 0x41, 0x41, 0x00 },   // [
    { 0x00, 0x02, 0x04, 0x08, 0x10, 0x20 },   // back slash
    { 0x00, 0x00, 0x41, 0x41, 0x7f, 0x00 },   // ]
    { 0x00, 0x04, 0x02, 0x01, 0x02, 0x04 },   // ^
    { 0x00, 0x40, 0x40, 0x40, 0x40, 0x40 },   // _
    { 0x00, 0x00, 0x01, 0x02, 0x04, 0x00 },   // '
    { 0x00, 0x20, 0x54, 0x54, 0x54, 0x78 },   // a
    { 0x00, 0x7F, 0x48, 0x44, 0x44, 0x38 },   // b
    { 0x00, 0x38, 0x44, 0x44, 0x44, 0x20 },   // c
    { 0x00, 0x38, 0x44, 0x44, 0x48, 0x7F },   // d
    { 0x00, 0x38, 0x54, 0x54, 0x54, 0x18 },   // e
    { 0x00, 0x08, 0x7E, 0x09, 0x01, 0x02 },   // f
    { 0x00, 0x0C, 0x52, 0x52, 0x52, 0x3E },   // g
    { 0x00, 0x7F, 0x08, 0x04, 0x04, 0x78 },   // h
    { 0x00, 0x00, 0x44, 0x7D, 0x40, 0x00 },   // i
    { 0x00, 0x20, 0x40, 0x44, 0x3D, 0x00 },   // j
    { 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00 },   // k
    { 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00 },   // l
    { 0x00, 0x7C, 0x04, 0x18, 0x04, 0x78 },   // m
    { 0x00, 0x7C, 0x08, 0x04, 0x04, 0x78 },   // n
    { 0x00, 0x38, 0x44, 0x44, 0x44, 0x38 },   // o
    { 0x00, 0x7C, 0x14, 0x14, 0x14, 0x08 },   // p
    { 0x00, 0x08, 0x14, 0x14, 0x18, 0x7C },   // q
    { 0x00, 0x7C, 0x08, 0x04, 0x04, 0x08 },   // r
    { 0x00, 0x48, 0x54, 0x54, 0x54, 0x20 },   // s
    { 0x00, 0x04, 0x3F, 0x44, 0x40, 0x20 },   // t
    { 0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C },   // u
    { 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C },   // v
    { 0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C },   // w
    { 0x00, 0x44, 0x28, 0x10, 0x28, 0x44 },   // x
    { 0x00, 0x0C, 0x50, 0x50, 0x50, 0x3C },   // y
    { 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44 },   // z
    { 0x00, 0x00, 0x08, 0x36, 0x41, 0x00 },   // {
    { 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00 },   // |
    { 0x00, 0x00, 0x41, 0x36, 0x08, 0x00 },   // }
    { 0x00, 0x04, 0x02, 0x04, 0x08, 0x04 },   // ~
    { 0x00, 0x00, 0x00, 0x36, 0x00, 0x00 },   // ¦
    { 0x00, 0x0e, 0x51, 0x31, 0x11, 0x08 },   // Ç
    { 0x00, 0x3c, 0x41, 0x40, 0x21, 0x7c },   // ü
    { 0x00, 0x38, 0x54, 0x56, 0x55, 0x18 },   // é
    { 0x00, 0x20, 0x56, 0x55, 0x56, 0x78 },   // â
    { 0x00, 0x20, 0x55, 0x54, 0x55, 0x78 },   // ä
    { 0x00, 0x20, 0x55, 0x56, 0x54, 0x78 },   // à
    { 0x00, 0x08, 0x08, 0x2a, 0x1c, 0x08 },   // Right Arrow  (chr 134)
    { 0x00, 0x0e, 0x51, 0x31, 0x11, 0x08 },   // ç
    { 0x00, 0x38, 0x56, 0x55, 0x56, 0x18 },   // ê
    { 0x00, 0x38, 0x55, 0x54, 0x55, 0x18 },   // ë
    { 0x00, 0x38, 0x55, 0x56, 0x54, 0x18 },   // è
    { 0x00, 0x00, 0x45, 0x7c, 0x41, 0x00 },   // ï
    { 0x00, 0x00, 0x46, 0x7d, 0x42, 0x00 },   // î
    { 0x00, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f },   // free (chr 141)
    { 0x00, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f },   // free (chr 142)
    { 0x00, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f },   // free (chr 143)
    { 0x00, 0x7c, 0x54, 0x56, 0x55, 0x44 },   // É
    { 0x00, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f },   // free (chr 145)
    { 0x00, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f },   // free (chr 146)
    { 0x00, 0x38, 0x46, 0x45, 0x46, 0x38 },   // ô
    { 0x00, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f },   // free (chr 148)
    { 0x00, 0x38, 0x45, 0x46, 0x44, 0x38 },   // ò
    { 0x00, 0x3c, 0x42, 0x41, 0x22, 0x7c },   // û
    { 0x00, 0x3c, 0x41, 0x42, 0x20, 0x7c }    // ù
};