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
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 } // ù
};