⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wl001.c

📁 89S52 单片机 + 74HC595 + 组成的8X8 LED 点阵驱动显示程序
💻 C
字号:
#include <led.h>
#define uint unsigned int 
#define uchar unsigned char 

void delayms(unsigned int ms);
void alldie(unsigned int ms);
void alllight(unsigned int ms);
void dotlight(unsigned char pp0, unsigned char pp1);
void MatrixDisplay(struct Character *ptr, unsigned char size, unsigned char rev);
void worddisplay(unsigned char word,unsigned int ms, unsigned char rev);
void decode(struct Character *ptr, unsigned char size);
void sendbyte(unsigned char byte);
void out595(void);

unsigned int ledup,leddown;

//------------------------------------------------------------------------
main()
{
uchar temp=0x00;
uchar alphabet = 'A';
uint i;

alllight(2000);
alldie(2000);
alllight(2000);
alldie(2000);

 while(1)
 {
  for(i=0; i<24; i++)
  { 
    ledup = 6 ; leddown = 0 ;

	while( ledup )
	{
	  ledup--;
	  for(leddown=0; leddown<6; leddown++) worddisplay(alphabet,20,1); 
	 }
     
     ledup = 0 ; leddown = 6 ;

	while( leddown )
	{
	  leddown--;
   	  for(ledup=0; ledup<6; ledup++) worddisplay(alphabet,20,1); 
	}

  
	 alphabet++;
	 //worddisplay(alphabet,100,0);
      
   }
	 
  worddisplay(temp,200,0);
  temp++;
  if(temp==0x0a)temp=0x00;

 }
 
}

//--------------------------


//-----------------------------------

void delayms(unsigned int ms)
{
    uint i;	
	while(ms--)
	{
		for(i = 0; i < 5; i++); 
	}

}
//-----------------------
//------------------------------------------------
void sendbyte(uchar byte)
{    
        uchar c; 
      
     for(c=0;c<8;c++)
        {
         CLK=0;
         DAT=byte&0x80;
         byte=byte<<1;
         CLK=1;
         }
         
}
//----------------------------------------------
void out595(void)
{
        RCLK=0;
        nop();
	    RCLK=1;	
}
//-----------------------------------------------
void alldie(uint ms)
{
  P1=0xFF;
  sendbyte(0xFF);
  out595();
  delayms(ms);
}
//--------------------------
void alllight(uint ms)
{

 P1=0x00;
 Red=0; 
 sendbyte(0x00);
 out595();
 delayms(ms);

}
//-------------------------------
void dotlight(uchar pp0, uchar pp1)
{

 P1=pp1;
 sendbyte(pp0);
 out595();

}
//-----------------------------------------------


//----------------------------------------------------
void decode(struct Character *ptr, unsigned char size)
{

  unsigned short int i,j;
  unsigned char tempstart, tempqty;

  tempstart=0; tempqty=0;

  for(i=0; i<64; i++) LED[i]=0;

  for(j=0; j<size; j++)
     {
 
	   if(ptr[j].line=='H'){ tempqty = ptr[j].qty; tempstart=ptr[j].start;
		                    while(tempqty--)
		                        {
			                      LED[tempstart - 1] = 1 ;
			                      tempstart++ ;
			                      }
		                    }
       
	   if(ptr[j].line=='V'){tempqty = ptr[j].qty; tempstart=ptr[j].start;
                            while(tempqty--)
		                         {
			                      LED[tempstart - 1] = 1 ;
 			                      tempstart = tempstart + 8 ;
 			                      }
		                     }

       if(ptr[j].line=='L'){tempqty = ptr[j].qty; tempstart=ptr[j].start;
                            while(tempqty--)
		                        {
			                      LED[tempstart - 1] = 1 ;
 				                  tempstart = tempstart + 7 ;
 			                     }
		                    }
 
         if(ptr[j].line=='R'){tempqty = ptr[j].qty; tempstart=ptr[j].start;
                              while(tempqty--)
		                          {
			                       LED[tempstart - 1] = 1 ;
 				                   tempstart = tempstart + 9 ;
 			                      }
		                      } 

         if(ptr[j].line=='D'){

                              LED[ptr[j].start - 1] = 1 ; 				

		                     } 

	   }

}
//-------------------------------------------------

//------------------------------------------------
void MatrixDisplay(struct Character *ptr, unsigned char size, unsigned char rev)
{
 
 uint i,j;
 uchar pp0,pp1;
 unsigned char *tempLED;
 pp0=0xef;pp1=0x7f;

 decode(ptr,size);

 tempLED=&LED[0];

 for(i=0; i<8; i++)
   {
    pp1=_crol_(pp1,1);
    for(j=0; j<8; j++)
	  {
	   pp0=_crol_(pp0,1);
       tempLED++;
	   if(*tempLED==1) { dotlight(pp0,pp1); delayms(ledup); alldie(leddown); }
	  }
	}

}
//------------------------------------------------



//------------------------------------------------
void worddisplay(uchar word,uint ms,uchar rev)
{

 while(ms--)
 {
    if(word==0x01) MatrixDisplay(one,2,rev); 
    if(word==0x02) MatrixDisplay(two,5,rev);
    if(word==0x03) MatrixDisplay(thr,7,rev);
    if(word==0x04) MatrixDisplay(fou,3,rev); 
    if(word==0x05) MatrixDisplay(fiv,6,rev); 
    if(word==0x06) MatrixDisplay(six,5,rev); 
    if(word==0x07) MatrixDisplay(sev,3,rev);
    if(word==0x08) MatrixDisplay(eig,7,rev); 
    if(word==0x09) MatrixDisplay(nin,5,rev); 
    if(word==0x00) MatrixDisplay(zer,4,rev); 
//  if(word==0xff){MatrixDisplay(test);}
    if(word=='A') MatrixDisplay(A,5,rev); 
    if(word=='B') MatrixDisplay(BB,6,rev); 
    if(word=='C') MatrixDisplay(C,5,rev); 
    if(word=='D') MatrixDisplay(D,4,rev); 
    if(word=='E') MatrixDisplay(E,4,rev); 
    if(word=='F') MatrixDisplay(F,3,rev); 
    if(word=='G') MatrixDisplay(G,6,rev);
    if(word=='H') MatrixDisplay(H,3,rev); 
    if(word=='I') MatrixDisplay(I,3,rev); 
    if(word=='J') MatrixDisplay(J,3,rev);
    if(word=='K') MatrixDisplay(K,3,rev); 
    if(word=='L') MatrixDisplay(L,2,rev); 
    if(word=='M') MatrixDisplay(M,4,rev); 
    if(word=='N') MatrixDisplay(N,3,rev); 
    if(word=='O') MatrixDisplay(O,4,rev); 
    if(word=='P') MatrixDisplay(PP,4,rev);
    if(word=='Q') MatrixDisplay(Q,5,rev); 
    if(word=='R') MatrixDisplay(R,5,rev); 
    if(word=='S') MatrixDisplay(S,7,rev);
    if(word=='T') MatrixDisplay(T,2,rev); 
    if(word=='U') MatrixDisplay(U,3,rev); 
    if(word=='V') MatrixDisplay(V,4,rev);
    if(word=='W') MatrixDisplay(W,5,rev); 
    if(word=='X') MatrixDisplay(X,2,rev);
    if(word=='Y') MatrixDisplay(Y,3,rev);
    if(word=='Z') MatrixDisplay(Z,3,rev); 

  }
}
//---------------------------------------------------------



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -