Running LED


1. Salah satu contoh rangkaian digital adalah running LED.
2. Running LED merupakan bentuk sederhana dari rangkaian digital yang biasa digunakan sehari-hari.
3. Running LED dapat berupa dalam berbagai bentuk tergantung bagaimana kita memvariasikannya. Dapat   berupa  nama ataupun hanya sekedar garis saja.

FLOWCHART RUNNING LED
















CONTOH LISTING RUNNING LED

include <at89x51.h> 
#define ResetCol P1_0
#define NextCol P1_1
#define PortData P0
#define PortCtrl P1
#define CycleTime 3600/100
#define DelayTime 30

#define DispWidth 32
unsigned char ColomX,CycleCounter,BufferDisplay[DispWidth],BufferHiden[DispWidth];
bit OneCycle;

#define ShortDelay _asm nop _endasm;

code unsigned char YCcorpStart[]={
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
code unsigned char YCcorp[]={
          0xfe,0x33,0x33,0xfe,0x00,0x00,0xff,0x1c,0x36,0x63,0xc0,0x00,0x00,0x7f,0xc0,0xc0,
          0x7f,0x00,0x00,0x00,0xff,0x03,0x02,0xfe,0x02,0x03,0xff,0x00,0x00,0xfe,0x33,0x33,
          0xfe,0x00,0x00,0x7f,0xc0,0xc0,0x7f,0x00,0x00,0x00,0xff,0x0c,0x18,0x30,0xff,0x00,
          0x00,0xff,0x00,0x00,0xff,0xc0,0xc0,0xc0,0x00,0x00,0xfe,0x33,0x33,0xfe,0x00,0x00,
          0xff,0x00,0x00,0x00,0x01,0x00,0x00,0xfe,0x33,0x33,0xfe,0x00,0x00,0x01};
code unsigned char YCcorpEnd[]={
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};


void timer0_handler(void) interrupt 1
{
  PortData=0;
  if(ColomX==DispWidth)
    {
    ColomX=0;
    ResetCol=1;
    ShortDelay;
    ResetCol=0;
    }
  else
    {
    NextCol=1;
    ShortDelay;
    NextCol=0;
    }
  PortData=BufferDisplay[ColomX++];
  if(!--CycleCounter)
    {
    CycleCounter=CycleTime;
    OneCycle=1;
    }
  }

void LoadImage2Buffer(data char *p,code unsigned char *Image)
{
  unsigned char ctr;
  for(ctr=0;ctr<DispWidth;ctr++)
    {
    *p++=*Image++;
    }
}
void ClearBuffer(data char *Disp)
{
  LoadImage2Buffer(Disp,YCcorpStart);
}
void ShiftImageUp()
{
  unsigned char ctr,tmp;
  for(ctr=0;ctr<DispWidth;ctr++)
    {
    tmp=BufferDisplay[ctr];
    BufferDisplay[ctr]=BufferDisplay[ctr]>>1|BufferHiden[ctr]<<7;
    BufferHiden[ctr]=BufferHiden[ctr]>>1|tmp<<7;
    }
}
void Delay(unsigned char DT)
{
  do
    {
    while(!OneCycle);
    OneCycle=0;
    }
    while(--DT);
}

void main()
{
  unsigned char ctr1,ctr2;
  code unsigned char *Image;
  ColomX=0;
  CycleCounter=CycleTime;
  PortData=PortCtrl=0;
  TMOD=2;
  TH0=0;
  EA=TR0=ET0=1; 
  while(1)
  {

    //tampilkan tulisan
    Image=YCcorpStart;
    while(Image<=YCcorpEnd)
      {
      LoadImage2Buffer(BufferDisplay,Image);
      Image++;
      Delay(DelayTime);
      }
  }
}


 



Posting Komentar