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

📄 led.c

📁 一个16X16点阵的程序,用C语言写的,可以实现左跑马效果.
💻 C
字号:
#include <reg52.h>
//#include <math.h>
#define BLKN 2
sbit G=0x97;
sbit R_CLK=0x96;
sbit SCLR=0x95;
void delay(unsigned int);
unsigned char data dispram[32];
 
/*-----------------------------------
      主函数void main(void)
-----------------------------------*/

void main(void)
{ 
register unsigned char i,j,k,l;
unsigned char code Bmp[][32]={
{0xFF,0xAF,0xFF,0xB7,0xC0,0x01,0xDF,0xBF,0xDF,0xBF,0xC0,0xB7,0xDF,0xB3,0xD0,0xB7,
0xD6,0xD7,0xD6,0xCF,0xD6,0xDF,0xD0,0xAD,0xBF,0x6D,0xBE,0xF5,0x7D,0xFB,0xFF,0xFF},

{0xFD,0xFF,0xFE,0xFB,0xC0,0x01,0xDF,0xFB,0xBF,0xF7,0xFF,0xFF,0xFF,0xFF,0x80,0x03,
0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFA,0xFF,0xFD,0xFF},

{0xFE,0xF7,0xEF,0x73,0xF3,0x37,0xF7,0x6F,0x80,0x01,0xBF,0xFB,0x70,0x17,0xFF,0xBF,
0xFF,0x7F,0x80,0x01,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFD,0x7F,0xFE,0xFF},

{0xFF,0x7F,0x07,0xBF,0x70,0x01,0x6B,0xFB,0x5F,0xFF,0x5C,0x07,0x6F,0xFF,0x77,0xFF,
0x70,0x01,0x56,0xDF,0x6E,0xDF,0x7E,0xDF,0x7D,0xDD,0x7D,0xDD,0x7B,0xDD,0x77,0xE1},

{0xEF,0x7F,0xEF,0x7F,0xAF,0x7F,0xAE,0x03,0x82,0xAB,0xAD,0xAB,0x6B,0x6B,0xEB,0x6B,
0xE6,0xDB,0xCD,0xDB,0x2B,0xBB,0xEF,0x7B,0xEE,0xFB,0xED,0xFB,0xEB,0xD7,0xFF,0xEF},

{0xFF,0xFF,0xFC,0x03,0x05,0xBB,0xDD,0xBB,0xDC,0x03,0xDD,0xBB,0x05,0xBB,0xDC,0x03,
0xDD,0xBB,0xDF,0xBF,0xDC,0x03,0xC7,0xBF,0x3F,0xBF,0xFF,0xBF,0xF0,0x01,0xFF,0xFF},

{0xFF,0x83,0xC0,0x7F,0xFD,0xDF,0xFB,0xDF,0xF7,0xBF,0xE0,0x7F,0xFC,0xDF,0xF3,0xEF,
0xC0,0x07,0xEF,0x73,0xFB,0x5F,0xF7,0x6F,0xEF,0x77,0xDF,0x7B,0xBD,0x7B,0xFE,0xFF},

{0xFF,0x7F,0xFF,0x7F,0x03,0x7F,0xFA,0x01,0x7A,0xFB,0xB5,0xB7,0xD7,0xBF,0xEF,0xBF,
0xE7,0xBF,0xE7,0x9F,0xDB,0x5F,0xDB,0x6F,0xBE,0xE7,0x79,0xF1,0xC7,0xFB,0xFF,0xFF},

{0xBF,0xFF,0xDE,0x7F,0xC9,0x83,0xDB,0xBB,0xFB,0xBB,0xFB,0xBB,0x1B,0xBB,0xDB,0xBB,
0xDA,0xBB,0xD9,0xAB,0xDB,0xB7,0xDF,0xBF,0xDF,0xBF,0xAF,0xFF,0x70,0x01,0xFF,0xFF},

{0xF6,0xFF,0xF6,0x7F,0xEE,0xFB,0xEC,0x01,0xDD,0xFB,0xCB,0xB7,0x97,0xBF,0x5D,0xAF,
0xDC,0xB7,0xDD,0xB7,0xDB,0xBB,0xDB,0xB9,0xD7,0xBB,0xDE,0xBF,0xDF,0x7F,0xFF,0xFF},

{0xFF,0xFF,0xE0,0x07,0xC0,0x03,0xDF,0xFB,0xD1,0x89,0xBF,0xFD,0xBF,0xFD,0xBF,0xFD,
0xDF,0xFB,0xDC,0x3B,0xEE,0x77,0xF7,0xEF,0xFB,0xDF,0xFD,0xBF,0xFE,0x7F,0xFF,0xFF},


};


SCON=0x00;
TMOD=0x01;
TR0=1;
P1=0x3f;
IE=0x82;
while(1)
  {
  delay(2000);
  for (i=0;i<32;i++)
     {
     dispram[i]=Bmp[10][i];
     if (i%2) delay(100);
     }
  delay(3000);
  for (i=0;i<11;i++)
     {
     for (j=0;j<16;j++)
        {
        for (k=0;k<15;k++)
           {
           dispram[k*BLKN]=dispram[(k+1)*BLKN];
           dispram[k*BLKN+1]=dispram[(k+1)*BLKN+1];
           }
        dispram[30]=Bmp[i][j*BLKN];
        dispram[31]=Bmp[i][j*BLKN+1];
        delay(100);
        }
     }
  delay(3000);
  for (i=0;i<11;i++)
     {
      for (j=0;j<2;j++)
        for (k=1;k<9;k++)
           {
            for (l=0;l<16;l++)
               {
                dispram[l*BLKN]=dispram[l*BLKN]<<1 | dispram[l*BLKN+1]>>7;
                dispram[l*BLKN+1]=dispram[l*BLKN+1]<<1 | Bmp[i][l*BLKN+j]>>(8-k);
               }
            delay(100);
            }
      }
   delay(3000);
   for (i=0;i<32;i++)
      {
       dispram[i]=0x00;
       if (i%2) delay(100);
      }
   }
}
 
/* 延时函数*/
void delay(unsigned int dt)
{
register unsigned char bt;
for (;dt;dt--)
  for (bt=0;bt<200;bt++);
}

/*显示屏扫描(定时器T0中断)函数*/
void leddisplay(void) interrupt 1 using 1
{
register unsigned char i,j=BLKN;
TH0=0xFE;
TL0=0x30;
i=P1;
i=++i&0x0f;
do
   { 
    j--;
    SBUF=dispram[i*BLKN+j];
    while (! TI); TI=0;
   }while(j);
G=1;
P1&=0xf0;
R_CLK=1;
P1|=i;
R_CLK=0;
G=0;
}

⌨️ 快捷键说明

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