Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Scrolling messages to left pic16F887 mikroC pro

Status
Not open for further replies.

supra_56

Member level 1
Joined
Sep 30, 2009
Messages
39
Helped
4
Reputation
8
Reaction score
4
Trophy points
1,288
Location
Toronto, Canada
Activity points
1,715
Scrolling messages to left pic16F887 8x32 dot matrix mikroC pro

I converted from proteus to mikroC pro using pic16F887, 8Mhz or later, 74hc595, 8x32 dot matrix. I got code and schematic from ilker_32 can be found: https://www.edaboard.com/threads/152066/

pic16F887 with 8Mhz
I got code working.

Here is code:

Code:
#define PIN_ST_CP      PORTC.F2   // RCLK ----> Pin 12 ST_CP
#define PIN_SH_CP      PORTC.F3  // SRCLK ---> Pin 11 SH_CP
#define PIN_SER_IN    PORTC.F5  // SER -----> Pin 14
//***********************columns of hc595**********************************
#define clock     PORTB.F0    //RCLK ----> Pin 11 ST_CP
#define latch     PORTB.F2   //RCLK ---> Pin 12 SH_CP
#define data      PORTB.F1  //SER -----> Pin 14

char s1[26];
long i;

const char  msg_default[50] = "Merry-Xmas and Happy New Year From supra";
const char ascii4[96][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 }   // ¦
};

void HC595_Display(unsigned char send_data)
{
  unsigned char bit_mask;

  for (bit_mask=1; bit_mask ;bit_mask <<=1)
  {
      if((send_data & bit_mask))
        data=1;
      else
        data=0;

      clock=1;
      delay_us(20);
      clock=0;
  }

      latch=1;
      delay_us(50);
      latch=0;
}

void main(){
   int char_index;
  int col_index;
  int x = 0;
  int delaycount;
  unsigned int startposition;

    ANSEL=0;
    ANSELH=0;
    TRISB=0;
    TRISC=0x00;
    HC595_Display(0);
    PORTC=0;
  startposition = 0;

   for(i=0; i<32; i++)
    s1[i] = msg_default[i];

        for(i=0; i<sizeof(msg_default); i++)
       s1[i] = msg_default[i];
      delay_ms(100);

   while (1)
   {
    delaycount=4; //-------> a control scanning speed here .
     while (delaycount)
     {
      col_index = startposition %6;
      char_index = startposition /6;
       if (char_index >= sizeof(s1))
       {
        startposition = 0;
        char_index = 0;
        col_index = 0;
      }
      x = s1[char_index];

// 74HC595
      PIN_SH_CP=0;
      PIN_ST_CP=0;
      PIN_SER_IN=0;
      PIN_SH_CP=1;
      delay_us(1000);
      PIN_SH_CP=0;
      PIN_SER_IN=1;

       for (i=0;i<8;i++) // 80 We use one column
       {
        PIN_ST_CP=1;
        delay_us(200);
        PIN_ST_CP=0;
        delay_us(1000);
        PIN_SH_CP=1;
        delay_us(1000);
        PIN_SH_CP=0;

        if (col_index == 6)
       {
          col_index = 0;
          char_index++;
          if (char_index >= sizeof(s1))
            char_index = 0;
          x = s1[char_index];
       }
        else
        {
          if ( x < 32)
           HC595_Display(0);
           else if( x < 128)
            HC595_Display(ascii4[x-32][col_index]);
            col_index++;
          }
            delay_us(1000);  //brightness
            HC595_Display(0);
      }
            delaycount--;
    }
            startposition++;
  }
 }
 
Last edited:

Re: Scrolling messages to left pic16F887 8x32 dot matrix mikroC pro

hye supra..thanks for your coding code..i have try ur coding..but afew question i want to ask..
1. did u use the same circuit diagram as ilker_32?..because base on what i do with ur program, i need to change a little with ilker_32 circuit..n its working..
2. but, my word is not moving from left to right, but from bottom u upper..what i need to do with the code to change it?i tried it many time modify the coding n its not working..
 

Re: Scrolling messages to left pic16F887 8x32 dot matrix mikroC pro

hye supra..thanks for your coding code..i have try ur coding..but afew question i want to ask..
1. did u use the same circuit diagram as ilker_32?..because base on what i do with ur program, i need to change a little with ilker_32 circuit..n its working..
2. but, my word is not moving from left to right, but from bottom u upper..what i need to do with the code to change it?i tried it many time modify the coding n its not working..

Sorry for late reply.
For ur question #1. Yes i did same circuit
For ur question # 2. I have same pb, but it is upside down. There is nothing wrong with ur code. Look @ ilker_32's schematic again carefully. Look @ U20. U will c Q0 started @ bottom to all ways up Q7 @ top. That Q0 of U20 goes to left side pin #1 of dot matrix. The pin @ 2 of column goes to Q6 Of U20 and so on. And so do same for each dot matrix columns. Check not gate of U18 connection. Pay attention That Q0 is pin #15 of 74hc595.

If u hv pb again. Please feel free and do not hesitate to write.

Btw: I used 8x32 dot matrix.
 
Last edited:

Re: Scrolling messages to left pic16F887 8x32 dot matrix mikroC pro

Sorry for late reply.
For ur question #1. Yes i did same circuit
For ur question # 2. I have same pb, but it is upside down. There is nothing wrong with ur code. Look @ ilker_32's schematic again carefully. Look @ U20. U will c Q0 started @ bottom to all ways up Q7 @ top. That Q0 of U20 goes to left side pin #1 of dot matrix. The pin @ 2 of column goes to Q6 Of U20 and so on. And so do same for each dot matrix columns. Check not gate of U18 connection. Pay attention That Q0 is pin #15 of 74hc595.

If u hv pb again. Please feel free and do not hesitate to write.

Btw: I used 8x32 dot matrix.


thanks for ur help..
yes..i did it exactly same as he did..but no word come out...
so i decide to modify it..and its working..sorry for my mistake before, my word is scrolling from upper to bottom..
so i need to rotate the dot matrix to 90 degree then we can see and read it scrolling from the right to the left..
here i attch my display.. led.jpg
 

Re: Scrolling messages to left pic16F887 8x32 dot matrix mikroC pro

thanks for ur help..
yes..i did it exactly same as he did..but no word come out...
so i decide to modify it..and its working..sorry for my mistake before, my word is scrolling from upper to bottom..
so i need to rotate the dot matrix to 90 degree then we can see and read it scrolling from the right to the left..
here i attch my display..View attachment 60427

Congratulation! You did right thing. I was looking @led.jpg. My mistaken I was quoted stating That Q0 of U20 goes to left side pin #1 of dot matrix. It should be That Q0 of U20 goes to right side pin #8 of dot matrix. And Q1 of U20 goes to right side pin #7 of dot matrix and so on.

The bottom side Q0 goes to pin 1 on left side of dot matrix. Q1 goes to pin 2 on left side of dot matrix and so on.

Sorry for my mistaken. Let me know how u doing. I used freepcb, pcb123, expressch, tinycad, and orcad schematic
 

Re: Scrolling messages to left pic16F887 8x32 dot matrix mikroC pro

Congratulation! You did right thing. I was looking @led.jpg. My mistaken I was quoted stating That Q0 of U20 goes to left side pin #1 of dot matrix. It should be That Q0 of U20 goes to right side pin #8 of dot matrix. And Q1 of U20 goes to right side pin #7 of dot matrix and so on.

The bottom side Q0 goes to pin 1 on left side of dot matrix. Q1 goes to pin 2 on left side of dot matrix and so on.

Sorry for my mistaken. Let me know how u doing. I used freepcb, pcb123, expressch, tinycad, and orcad schematic

its ok..you have helped me so much with ur coding. it very useful to me as newbie..
but i wonder to know how to make it scrolling from right to the left..i still studying ur coding..
im using proteus 7.8 sp 2..here i attch my circuit..as u can see i remove not gate from the circuit..
and i make a few experiment in order to switching the direction of scrolling.. be careful with direction of bottom 74HC595..hope it can help u..

 
Re: Scrolling messages to left pic16F887 8x32 dot matrix mikroC pro

I was looking @ ur sch. But u didn't connected probably. U simple do wrong. Look @ ur sch again. Look @ U4. U4 is corrected. Can u do U1, U2 and U7 exactly U4?

Pin 9(Q7') of U4 goes to pin 14 of U1. Then Pin 9(Q7') of U1 goes to pin 14 of U2. Then Pin 9(Q7') of U2 goes to pin 14 of U7. Then Pin 9(Q7') of U7 unconnected

Ur U4 of dot matrix connected to U6 is corrected. Can u do rest of U1, 2 and 7?
 

Re: Scrolling messages to left pic16F887 8x32 dot matrix mikroC pro

hye supra..
finally i did it..thanks for ur help.. you give me an idea when you talk about dot matrix..
you coding is working perfectly.. just we need to know how we set the row and column o/p...that`s it..thanks so much..
i modify a little bit ur coding, the maximum word that PIC can support is 96 words..more than that RAM cannot support it..am i right?
ok..next step is adding 2 or more dot matrix..when i adding 4 dot matrix, i realize that word starting blinking..so i need adjust delay in coding?..

---------- Post added at 21:30 ---------- Previous post was at 20:45 ----------

I was looking @ ur sch. But u didn't connected probably. U simple do wrong. Look @ ur sch again. Look @ U4. U4 is corrected. Can u do U1, U2 and U7 exactly U4?

Pin 9(Q7') of U4 goes to pin 14 of U1. Then Pin 9(Q7') of U1 goes to pin 14 of U2. Then Pin 9(Q7') of U2 goes to pin 14 of U7. Then Pin 9(Q7') of U7 unconnected

Ur U4 of dot matrix connected to U6 is corrected. Can u do rest of U1, 2 and 7?

you maybe miss understood what i try to do..actually, this is single dot matrix experiment...i know that pin 9(Q7`) using for shifting...
this experiment help me for know the direction words if i change the polarity of bits..for the final circuit i already done it as u said..
here the latest circuit i did..a few connection are change..

final.jpg
 
Last edited:
  • Like
Reactions: dndirangu

    V

    Points: 2
    Helpful Answer Positive Rating

    dndirangu

    Points: 2
    Helpful Answer Positive Rating
Re: Scrolling messages to left pic16F887 8x32 dot matrix mikroC pro

Ur sch is straight forward as I understood that u r using single dot matrix and w/out not gate. I will get back to u when i do w/out not gate, but i' getting one wk off because of long wkend holiday on September 5th , but i can get back sooner b4 i'm off.
 

its ok..take ur time..i will update to u if there is info about my project..:-D
 
Re: Scrolling messages to left pic16F887 8x32 dot matrix mikroC pro

its ok..you have helped me so much with ur coding. it very useful to me as newbie..
but i wonder to know how to make it scrolling from right to the left..i still studying ur coding..
im using proteus 7.8 sp 2..here i attch my circuit..as u can see i remove not gate from the circuit..
and i make a few experiment in order to switching the direction of scrolling.. be careful with direction of bottom 74HC595..hope it can help u..



Nice work Sir... I have your circuit running but the display is running in parallel not in series can you please help me figure out how can i display my text form one 8x8 dot matrix to another...thanks a lot,,
 

Re: Scrolling messages to left pic16F887 8x32 dot matrix mikroC pro

Nice work Sir... I have your circuit running but the display is running in parallel not in series can you please help me figure out how can i display my text form one 8x8 dot matrix to another...thanks a lot,,


@shenn164
Plz, look at post dated by mr-aeddy... 20-08-11 14:30. Used mr-aeddy crt sch and followed exactly wiring.

hth.

regards,
supra
 

hello supra,

can i ask u..base on mr_aeddy design.. which one is row and column?..and in real hardware, did we need another component between dot matrix and 74hc595?..or direct connection same as circuit given?
 

hello supra,

can i ask u..base on mr_aeddy design.. which one is row and column?..and in real hardware, did we need another component between dot matrix and 74hc595?..or direct connection same as circuit given?

The top is column and btm is row.
No, If u r using one colour. Yes, if u r bi-colour or rgb dot matrix, u need another component. I do have schematic for china olympic 2008 that worked with RGB dot matrix colour.

As for mr_aeddy doesn't used 74hc595 for column. it is good ideas in other to reduced components.

regards,
 

thanks for ur feedback..i got it sir..my project r using one colour but it sounds interesting to me, if i wan to make bi-colour project in future..may i have ur schematic sir..
 

Re: Scrolling messages to left pic16F887 8x32 dot matrix mikroC pro

can u post hear complete code & sch in ZIP file ?
 

New code for mikroC PRO.

I am porting new mikroC PRO v5.30. The older compiler V8.0 or later doesn't work on mikroC PRO.
So in schematic posted by ilker_32. On bottom of 74hc595 is columns and the top of 74hc595 is row.
Look in bold i made some changed


So here is new code for scrolling from left to right:

Code:
 * Description:
 *     This is a simple program used to demostrate how to How To scroll messages
 *      to left. Using 74hc595, 8*32 dotmatrix 
 *     MCU:             pic16F887
 *     Oscillator:      HS, 8.0000 MHZ
 *     Ext. Modules:    -
 *     SW:              mikroC PRO for PIC v5.30
 *     Date:            16th Nov, 2011
*/

        
 //***********************columns **********************************
        #define PIN_ST_CP PORTC.F2 //  ----> Pin 12 ST_CP
        #define PIN_SH_CP PORTC.F3 // ---> Pin 11 SH_CP
        #define PIN_SER_IN PORTC.F5 // DS -----> Pin 14
        
 //***********************rows**********************************
        #define clock PORTB.F0 //----> Pin 11 ST_CP
        #define latch PORTB.F2 // ---> Pin 12 SH_CP
        #define data PORTB.F1 // -----> Pin 14

      char s1[50];
      long i;

      const char msg_default[50] = "Merry-Xmas and Happy New Year From supra";
      const char ascii4[96][5] = {
        {0x00, 0x00, 0x00, 0x00, 0x00}, // sp
        {0x00, 0x00, 0x2f, 0x00, 0x00}, // !
        {0x00, 0x07, 0x00, 0x07, 0x00}, // "
        {0x14, 0x7f, 0x14, 0x7f, 0x14}, // #
        {0x24, 0x2a, 0x7f, 0x2a, 0x12}, // $
        {0x23, 0x13, 0x08, 0x64, 0x62}, // %
        {0x36, 0x49, 0x55, 0x22, 0x50}, // &
        {0x00, 0x05, 0x03, 0x00, 0x00}, // '
        {0x00, 0x1c, 0x22, 0x41, 0x00}, // (
        {0x00, 0x41, 0x22, 0x1c, 0x00}, // )
        {0x14, 0x08, 0x3E, 0x08, 0x14}, // *
        {0x08, 0x08, 0x3E, 0x08, 0x08}, // +
        {0x00, 0x00, 0x50, 0x30, 0x00}, // ,
        {0x10, 0x10, 0x10, 0x10, 0x10}, // -
        {0x00, 0x60, 0x60, 0x00, 0x00}, // .
        {0x20, 0x10, 0x08, 0x04, 0x02}, // /
        {0x3E, 0x51, 0x49, 0x45, 0x3E}, // 0
        {0x00, 0x42, 0x7F, 0x40, 0x00}, // 1
        {0x42, 0x61, 0x51, 0x49, 0x46}, // 2
        {0x21, 0x41, 0x45, 0x4B, 0x31}, // 3
        {0x18, 0x14, 0x12, 0x7F, 0x10}, // 4
        {0x27, 0x45, 0x45, 0x45, 0x39}, // 5
        {0x3C, 0x4A, 0x49, 0x49, 0x30}, // 6
        {0x01, 0x71, 0x09, 0x05, 0x03}, // 7
        {0x36, 0x49, 0x49, 0x49, 0x36}, // 8
        {0x06, 0x49, 0x49, 0x29, 0x1E}, // 9
        {0x00, 0x36, 0x36, 0x00, 0x00}, // :
        {0x00, 0x56, 0x36, 0x00, 0x00}, // ;
        {0x08, 0x14, 0x22, 0x41, 0x00}, // <
        {0x14, 0x14, 0x14, 0x14, 0x14}, // =
        {0x00, 0x41, 0x22, 0x14, 0x08}, // >
        {0x02, 0x01, 0x51, 0x09, 0x06}, // ?
        {0x32, 0x49, 0x59, 0x51, 0x3E}, // @
        {0x7E, 0x11, 0x11, 0x11, 0x7E}, // A
        {0x7F, 0x49, 0x49, 0x49, 0x36}, // B
        {0x3E, 0x41, 0x41, 0x41, 0x22}, // C
        {0x7F, 0x41, 0x41, 0x22, 0x1C}, // D
        {0x7F, 0x49, 0x49, 0x49, 0x41}, // E
        {0x7F, 0x09, 0x09, 0x09, 0x01}, // F
        {0x3E, 0x41, 0x49, 0x49, 0x7A}, // G
        {0x7F, 0x08, 0x08, 0x08, 0x7F}, // H
        {0x00, 0x41, 0x7F, 0x41, 0x00}, // I
        {0x20, 0x40, 0x41, 0x3F, 0x01}, // J
        {0x7F, 0x08, 0x14, 0x22, 0x41}, // K
        {0x7F, 0x40, 0x40, 0x40, 0x40}, // L
        {0x7F, 0x02, 0x0C, 0x02, 0x7F}, // M
        {0x7F, 0x04, 0x08, 0x10, 0x7F}, // N
        {0x3E, 0x41, 0x41, 0x41, 0x3E}, // O
        {0x7F, 0x09, 0x09, 0x09, 0x06}, // P
        {0x3E, 0x41, 0x51, 0x21, 0x5E}, // Q
        {0x7F, 0x09, 0x19, 0x29, 0x46}, // R
        {0x46, 0x49, 0x49, 0x49, 0x31}, // S
        {0x01, 0x01, 0x7F, 0x01, 0x01}, // T
        {0x3F, 0x40, 0x40, 0x40, 0x3F}, // U
        {0x1F, 0x20, 0x40, 0x20, 0x1F}, // V
        {0x3F, 0x40, 0x38, 0x40, 0x3F}, // W
        {0x63, 0x14, 0x08, 0x14, 0x63}, // X
        {0x07, 0x08, 0x70, 0x08, 0x07}, // Y
        {0x61, 0x51, 0x49, 0x45, 0x43}, // Z
        {0x00, 0x7F, 0x41, 0x41, 0x00}, // [
        {0x02, 0x04, 0x08, 0x10, 0x20}, // back slash
        {0x00, 0x41, 0x41, 0x7f, 0x00}, // ]
        {0x04, 0x02, 0x01, 0x02, 0x04}, // ^
        {0x40, 0x40, 0x40, 0x40, 0x40}, // _
        {0x00, 0x01, 0x02, 0x04, 0x00}, // '
        {0x20, 0x54, 0x54, 0x54, 0x78}, // a
        {0x7F, 0x48, 0x44, 0x44, 0x38}, // b
        {0x38, 0x44, 0x44, 0x44, 0x20}, // c
        {0x38, 0x44, 0x44, 0x48, 0x7F}, // d
        {0x38, 0x54, 0x54, 0x54, 0x18}, // e
        {0x08, 0x7E, 0x09, 0x01, 0x02}, // f
        {0x0C, 0x52, 0x52, 0x52, 0x3E}, // g
        {0x7F, 0x08, 0x04, 0x04, 0x78}, // h
        {0x00, 0x44, 0x7D, 0x40, 0x00}, // i
        {0x20, 0x40, 0x44, 0x3D, 0x00}, // j
        {0x7F, 0x10, 0x28, 0x44, 0x00}, // k
        {0x00, 0x41, 0x7F, 0x40, 0x00}, // l
        {0x7C, 0x04, 0x18, 0x04, 0x78}, // m
        {0x7C, 0x08, 0x04, 0x04, 0x78}, // n
        {0x38, 0x44, 0x44, 0x44, 0x38}, // o
        {0x7C, 0x14, 0x14, 0x14, 0x08}, // p
        {0x08, 0x14, 0x14, 0x18, 0x7C}, // q
        {0x7C, 0x08, 0x04, 0x04, 0x08}, // r
        {0x48, 0x54, 0x54, 0x54, 0x20}, // s
        {0x04, 0x3F, 0x44, 0x40, 0x20}, // t
        {0x3C, 0x40, 0x40, 0x20, 0x7C}, // u
        {0x1C, 0x20, 0x40, 0x20, 0x1C}, // v
        {0x3C, 0x40, 0x30, 0x40, 0x3C}, // w
        {0x44, 0x28, 0x10, 0x28, 0x44}, // x
        {0x0C, 0x50, 0x50, 0x50, 0x3C}, // y
        {0x44, 0x64, 0x54, 0x4C, 0x44}, // z
        {0x00, 0x08, 0x36, 0x41, 0x00}, // {
        {0x00, 0x00, 0x7f, 0x00, 0x00}, // |
        {0x00, 0x41, 0x36, 0x08, 0x00}, // }
        {0x04, 0x02, 0x04, 0x08, 0x04}, // ~
        {0x00, 0x00, 0x36, 0x00, 0x00} // ¦
        };

void HC595_Display(unsigned char send_data)
 {
          unsigned char bit_mask;
          for (bit_mask = 1; bit_mask; bit_mask <<= 1)
           {
            if((send_data & bit_mask))
              [B]data = 0;[/B]
            else
              [B]data = 1;[/B]
              [B]clock = 0;[/B]
              delay_us(20);
              [B]clock = 1;[/B]
           }
              [B]latch = 0;[/B]
              delay_us(20);
             [B] latch = 1;[/B]
 }

void main()
 {
        int char_index;
        int col_index;
        int x = 0;
        int delaycount;
        unsigned int startposition;

        ANSEL = 0;
        ANSELH = 0x00;
        TRISB = 0x00;
        TRISC = 0x00;
        HC595_Display(0);
        PORTC = 0;
        startposition = 0;

          for(i = 0; i < sizeof(msg_default); i++)
            s1[i] = msg_default[i];
            delay_us(100);

   while(1)
    {
           delaycount = 2; //-------> a control scanning speed here .
      while (delaycount)
       {
               // column
                [B]PIN_SER_IN = 0;
                PIN_SH_CP = 1 ;
                PIN_SH_CP = 0;
                PIN_SER_IN = 1;[/B]
           
                col_index = startposition %6;
                char_index = startposition /6;
                
            if (char_index >= sizeof(s1))
             {
                startposition = 0;
                char_index = 0;
                col_index = 0;
             }
                x = s1[char_index];

        for (i = 0; i < 32; i++) // 8 We use one column
         {       
                 //column
                 [B]PIN_ST_CP = 1;
                 PIN_ST_CP = 0;
                 PIN_SH_CP = 1;
                 PIN_SH_CP = 0;[/B]
                                  
            if (col_index == 5)
             {
                  col_index = 0;
                  char_index++;
                  if (char_index >= sizeof(s1))
                  char_index = 0;
                  x = s1[char_index];
             }
            else
            {
              if ( x < 32)
                  HC595_Display(0);
               else if( x < 128)
                  HC595_Display(ascii4[x-32][col_index]);
                  col_index++;
            }
                delay_us(100); //brightness
                HC595_Display(0);
         }
                delaycount--;
       }
                startposition++;
     }
 }
 
Last edited:

is the code for scrolling from right to left or from left to right? can the max232 work with this code? thx
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top