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

📄 mov_right_up.c

📁 中文广告牌,这是我上大学时的毕业论文
💻 C
字号:
/*******************************
;          点阵显示
;
;P2.5--P2.0口是行驱动,选择任一行亮,P2.4控制前16行的开关允许,P2.5控制后16行的开关允许;
;P1.4--P1.0口是列驱动,锁存任一点阵数据,P1.4是锁存的开关允许,0开,1关.
;P0作为数据输出口;
;P3.3,P3.4分别是E2PROM的SDA和SCL口.
;*********************************/

#include<reg52.h>
#define  uchar unsigned char
bit  mov_left,mov_up;
sbit  e_U_ROW=0xA4;
sbit  e_D_ROW=0xA5;
sbit  e_LIND=0x94;
unsigned char data  mark1,b;
unsigned char idata dis[128];
//void mov_up();
//void mov_left();
void delay(unsigned int);
void clear();
void main(void)
{	register uchar data i,j,k,l,flat;
	uchar code BMP[][128] =        // 数据表
{
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x70,0x00,//"动",
      0x00,0x00,0x30,0x00,0x00,0x00,0x30,0x00,0x00,0x30,0x30,0x00,0xF8,0x0F,0x30,0x00,
      0x00,0x00,0x30,0x00,0x00,0x00,0x30,0x08,0x00,0x00,0xFF,0x1F,0x00,0x00,0x30,0x18,
      0x00,0xC0,0x30,0x18,0xFC,0x3F,0x30,0x18,0x80,0x03,0x30,0x18,0x80,0x03,0x30,0x18,
      0x80,0x01,0x10,0x18,0xC0,0x00,0x10,0x18,0x40,0x08,0x18,0x18,0x60,0x10,0x18,0x18,
      0x20,0x30,0x18,0x18,0x10,0x60,0x0C,0x18,0x08,0x60,0x0C,0x08,0xCC,0xDF,0x04,0x08,
      0xFC,0xC0,0x06,0x08,0x08,0x40,0x03,0x0C,0x00,0x80,0x01,0x0C,0x00,0x80,0x00,0x0C,
      0x00,0x40,0xE0,0x07,0x00,0x30,0x80,0x07,0x00,0x08,0x00,0x01,0x00,0x00,0x00,0x00},

/*"感"*/{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x00,0x00,0x00,0x88,0x01,
      0x00,0x00,0x08,0x03,0x20,0x00,0x08,0x13,0xE0,0xFF,0xFF,0x3F,0x60,0x00,0x18,0x00,
      0x60,0x00,0x18,0x00,0x60,0x00,0x19,0x04,0x60,0xFF,0x1B,0x0E,0x60,0x00,0x1C,0x06,
      0x60,0x00,0x10,0x03,0x60,0x06,0xB3,0x01,0x60,0xFE,0xB3,0x01,0x20,0x06,0xE1,0x00,
      0x20,0x06,0x61,0x00,0x30,0x06,0xF1,0x10,0x10,0xFE,0xD9,0x11,0x18,0x06,0x8F,0x13,
      0x08,0x00,0x06,0x3E,0x04,0x00,0x01,0x3C,0x02,0xC2,0x01,0x20,0x00,0x8E,0x03,0x03,
      0x20,0x06,0x03,0x06,0x20,0x06,0x02,0x0C,0x30,0x06,0x20,0x0C,0x38,0x06,0x60,0x0C,
      0x18,0x06,0x60,0x00,0x00,0xFC,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},

/*"地"*/{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x40,0x00,0x38,0x00,
      0xC0,0x00,0x18,0x00,0xC0,0x00,0x18,0x00,0xC0,0x40,0x18,0x00,0xC0,0xC0,0x18,0x00,
      0xC0,0x40,0x18,0x00,0xC0,0x40,0x18,0x04,0xC0,0x40,0x18,0x0F,0xC0,0x44,0xD8,0x04,
      0xC0,0x44,0x38,0x04,0xFC,0x43,0x1F,0x04,0xC0,0xC0,0x18,0x04,0xC0,0x78,0x18,0x04,
      0xC0,0x44,0x18,0x04,0xC0,0x40,0x18,0x04,0xC0,0x40,0x18,0x04,0xC0,0x40,0x18,0x04,
      0xC0,0x40,0x18,0x06,0xC0,0x40,0xD8,0x07,0xC0,0x40,0x18,0x13,0xC0,0x4C,0x18,0x10,
      0xC0,0x43,0x08,0x10,0xF0,0x40,0x00,0x10,0x3E,0xC0,0x00,0x30,0x0C,0xC0,0x00,0x70,
      0x00,0xC0,0xFF,0x3F,0x00,0x80,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},

/*"带*/{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x20,0x00,0x00,0x86,0xE3,0x00,
      0x00,0x86,0x61,0x00,0x00,0x86,0x61,0x00,0x00,0x86,0x61,0x08,0xF8,0xFF,0xFF,0x1F,
      0x00,0x86,0x61,0x00,0x00,0x86,0x61,0x00,0x00,0x86,0x61,0x00,0x00,0x86,0x60,0x00,
      0x00,0x00,0x00,0x10,0xF0,0xFF,0xFF,0x3F,0x10,0x80,0x00,0x38,0x18,0x80,0x03,0x0C,
      0x1C,0x80,0x01,0x04,0x88,0x80,0x01,0x03,0x00,0xFF,0xFF,0x03,0x00,0x81,0x81,0x01,
      0x00,0x81,0x81,0x01,0x00,0x81,0x81,0x01,0x00,0x81,0x81,0x01,0x00,0x81,0x81,0x01,
      0x00,0x81,0x81,0x01,0x00,0x81,0x81,0x01,0x00,0x81,0xF9,0x01,0x00,0x81,0xE1,0x01,
      0x80,0x80,0xC1,0x00,0x00,0x80,0x01,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00}
};
	  uchar code BMP2[][128]=
      {{
 0x40,0x12,0xF0,0x36,0x3C,0x66,0x30,0x26,0x30,0x06,0xFE,0x7F,0x30,0x26,0xB0,0x66,
      0x70,0x36,0x38,0x34,0x3E,0x1C,0x34,0x0C,0x30,0x9E,0x30,0xB3,0xBC,0xE0,0x10,0xC0,
 0x08,0x08,0x18,0x18,0x0C,0x0C,0x46,0x44,0xFE,0xFE,0x66,0x63,0x66,0x61,0x66,0x62,
      0x7E,0x66,0x66,0x6C,0x66,0x64,0x66,0x60,0x66,0x60,0x7E,0x34,0x22,0x38,0x00,0x10,
 0x00,0x04,0x08,0x0C,0x18,0x0C,0x98,0x4C,0x98,0xFD,0xFE,0x6F,0xD8,0x6D,0x98,0x6D,
      0x98,0x6D,0x98,0x7D,0xD8,0x2D,0xB8,0x01,0x9E,0x41,0x84,0x41,0x80,0xFF,0x00,0x7F,
 0x00,0x03,0x90,0x11,0xF0,0x3F,0xB0,0x19,0x30,0x5B,0xFE,0xFF,0xB0,0x19,0x30,0x1B,
      0x18,0x1D,0x0C,0x28,0xFA,0x7F,0xD8,0x36,0xD8,0x36,0xD8,0x36,0xD8,0x36,0xFE,0xFF},


 {0x40,0x12,0xF0,0x36,0x3C,0x66,0x30,0x26,0x30,0x06,0xFE,0x7F,0x30,0x26,0xB0,0x66,
      0x70,0x36,0x38,0x34,0x3E,0x1C,0x34,0x0C,0x30,0x9E,0x30,0xB3,0xBC,0xE0,0x10,0xC0,
 0x80,0x61,0x04,0x37,0x8C,0x5A,0x98,0xFF,0x88,0x61,0x90,0x61,0xBE,0x61,0x98,0x7F,
      0x98,0x5A,0x18,0x1E,0x18,0x1E,0x58,0x1B,0x38,0x9B,0x9C,0x99,0xC8,0xF8,0x20,0xF0,
 0x00,0x10,0xF8,0x3F,0x00,0x18,0x00,0x0C,0x00,0x06,0x00,0x03,0x00,0x03,0x00,0x03,
      0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x20,0x03,0xC0,0x03,0x80,0x01,
 0x10,0x08,0x30,0x18,0xF8,0xFD,0xD8,0x36,0xFC,0x7F,0x32,0x18,0xF0,0x1F,0x30,0x18,
      0xF0,0x1F,0x30,0x18,0xF0,0x1F,0xC0,0x4C,0xFE,0xFF,0x60,0x0C,0x30,0x0C,0x08,0x0C}};






// 汉字表:
// 我的地盘我说了算
       
		mov_up=0;
		mov_left=0;
		IE=0xff;
        //e_LIND=1;
        mark1=0;
        clear();
        P2=0xff;
        P1=0xff;
        //mov_left();
        TH0=0xF8;
        TL0=0x30;
        TMOD=0x01;
 while(1)
 {
	mov_left=0;
	mov_up=0;
	for(l=0;l<2;l++)
    {
          for(j=0;j<16;j++)
          {
             for(k=0;k<4;k++)
             {
                 dis[flat++]=BMP2[l][j*2+k*32];
                 dis[flat++]=BMP2[l][j*2+k*32+1];
             }
          }
		  flat=0;
		  mov_left=1;
          TR0=1;
          delay(1000);
          //mark1=0;
       	  for(i=0;i<63;i++)
       	  {
          	for(j=0;j<16;j++)
           	{
             	for(k=0;k<3;k++)
             	{
                dis[8*j+2*k]=dis[8*j+2*k]>>1|dis[8*j+2*k+1]<<7;
                dis[8*j+2*k+1]=dis[8*j+2*k+1]>>1|dis[8*j+2*k+2]<<7;
             	}
             	dis[8*j+6]=dis[8*j+6]>>1|dis[8*j+7]<<7;
             	dis[8*j+7]=(dis[8*j+7]>>1)&0x7f;
          	}

          delay(300);
          }
   }
   mov_left=0;


   TR0=0;
   mov_up=1;
   for(i=0;i<128;i++)
  {
       dis[i]=BMP[0][i];

  }
  TR0=1;
  for(i=1;i<5;i++)
  {
       for(j=0;j<32;j++)
       {
              for(k=0;k<31;k++)
              {

                      for(l=0;l<4;l++)
                      {
                           dis[k*4+l]=dis[k*4+l+4];
                      }

               }
               dis[124]=BMP[i][j*4];
               dis[125]=BMP[i][j*4+1];
               dis[126]=BMP[i][j*4+2];
               dis[127]=BMP[i][j*4+3];
               delay(200);
      }
  }
  mov_up=0;
 }

}




void display(void) interrupt 1 using 1
{
      register uchar j,a,p;
      TH0=0xF8;
      TL0=0x30;

      e_U_ROW=1;
      e_D_ROW=1;            //关显示
      a=P2;
      a++;
	  P1=0x1f;
	if(mov_left==1)
	{
      if(mark1==128)
      {
          mark1=0;
          b=0;
      }
      else ;
      for(j=0;j<8;j++)
      {
         P0=dis[mark1++];
         p=P1;
         P1=++p;
      }
      e_LIND=1;
      if(b==8)
      {
          a=a|0x10;
          a=a&0x1F;            //确保开后8行开关允许
          P2=a;
      }

      else
      {
          a=a|0x28;
          a=a&0x2F;            //确保开前8行开关允许,其保持后数位不变
          P2=a;
          b++;

      }
   }
   else if(mov_up==1)        //向上显示汉字的扫描程序
   {
	  	  P1=0x11;
      	  if(mark1==128)         
      	  {
          	mark1=0;
          	b=0;
      	  }
      	  else ;
      	  for(j=0;j<4;j++)
          {
         	P0=dis[mark1++];
         	p=P1&0x0f;
         	P1=++p;
      	  }
      	  e_LIND=1;
      	  if(b==0x10)
      	  {
            a=a|0x10;
          	a=a&0x1F;            //确保开后16行开关允许
          	P2=a;
          }
      	  else
      	  {
             a=a|0x20;
             a=a&0x2F;            //确保开前16行开关允许,其保持后数位不变
             P2=a;
             b++;

          }

	}

 

}	



void clear()
{
   register uchar data i,a;
   P0=0;
   P1=0xFF;
   for(i=0;i<16;i++)
   {    a=P1;
        a++;
        P1=a;

   }
   e_LIND=1;
}


void delay(unsigned int t)
{
   register unsigned char d;
   for(;t>0;t--)
   {
        for(d=0;d<250;d++)
		;
   }
}

⌨️ 快捷键说明

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