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

📄 ex4.c

📁 基于51单片机的16*16点阵
💻 C
字号:
#include <reg52.h>
#define BLKN 8
#define uchar unsigned char
#define uint  unsigned int
uchar i,j,k;
 //uint i;                                                                                                                                                                                                                                                                                                                             
 sbit G  =P1^7;
 sbit RCK=P1^6;
 sbit SCLR=P1^5;
 void delay(uint x)
 {
     uint a,b;
 	 for(a=x;a>0;a--)
	    for(b=110;b>0;b--);
 }
 uchar code bmp[][128]=
 {	
	{
	0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xCF,
	0xE4,0x00,0xFF,0xFF,0xE0,0x73,0xE7,0xCF,0xF3,0xF9,0xFF,0xF3,0xC3,0x13,0xE7,0xC9,
	0xF3,0xF9,0xC0,0x01,0xF0,0x83,0xE1,0x00,0x80,0x09,0xFE,0x7F,0x80,0x73,0x00,0xC3,
	0xC4,0xC9,0xFE,0x7F,0xE3,0x33,0xE0,0x01,0xE4,0xC9,0xFE,0x7F,0xE0,0x93,0xE6,0x73,
	0xE4,0xC9,0xFE,0x7F,0xC0,0x90,0x87,0x23,0x0C,0x09,0xFE,0x7F,0xC3,0x81,0x87,0x27,
	0xCC,0xC9,0xFE,0x7F,0x92,0x33,0xE7,0x8F,0xCC,0xF9,0xFE,0x71,0xF3,0xF3,0xE7,0x87,
	0xCF,0xC1,0x80,0x00,0xF3,0xF3,0x86,0x20,0xCF,0xF1,0xFF,0xFF,0xF3,0xF3,0xC0,0xF9,
	0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
	},		 //     0

	{
	0xF9,0xCF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF1,0x8F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
	0xF1,0x8F,0xFF,0x9F,0xFF,0xFF,0xF3,0x3F,0xF3,0x9F,0xFF,0x8F,0xC7,0x1F,0xF1,0x1F,
	0xE3,0x1F,0xFF,0x99,0xE0,0x40,0xF3,0x39,0xE3,0x1F,0x80,0x00,0xE4,0xCC,0xE6,0x00,
	0xE7,0x3F,0xF8,0x39,0xE4,0xCC,0xE6,0x49,0xC0,0x3F,0xC8,0x03,0x80,0xCC,0xC4,0xC3,
	0xC0,0x33,0xE0,0x8F,0xE4,0xCC,0x80,0x4F,0xCE,0x39,0xE1,0x0F,0xE4,0x0C,0x86,0x43,
	0x8E,0x38,0xF1,0x07,0xE0,0xC0,0xE4,0x49,0x9E,0x38,0xE1,0x27,0xE7,0xCF,0xE4,0xC8,
	0x1C,0x38,0xC8,0x63,0xE7,0xCF,0xE1,0xC8,0x18,0x00,0x9C,0xF0,0x80,0x20,0xE2,0x0F,
	0x18,0x00,0xF1,0xF9,0xFE,0x01,0xE7,0x8F,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
	
	} //			  1
  };
 uchar idata dispram[128];	//显示缓存
 void main()
 {
   

	SCON=0x00;             //串口工作模式0;移位寄存器方式
	TMOD=0x01;			   //定时器T0工作方式1:16位方式
	TR0=1;                 //启动定时器t0
	P1=0x3f;               //P1端口初值:允许接收、锁定、显示
    IE=0x82;
		
	while(1)
	  {
		for(i=0;i<2;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[k*BLKN+2]=dispram[(k+1)*BLKN+2];
			 dispram[k*BLKN+3]=dispram[(k+1)*BLKN+3];
			 dispram[k*BLKN+4]=dispram[(k+1)*BLKN+4];
			 dispram[k*BLKN+5]=dispram[(k+1)*BLKN+5];
			 dispram[k*BLKN+6]=dispram[(k+1)*BLKN+6];
			 dispram[k*BLKN+7]=dispram[(k+1)*BLKN+7];
			
			}
		  	 dispram[120]=bmp[i][j*BLKN];
			 dispram[121]=bmp[i][j*BLKN+1];
			 dispram[122]=bmp[i][j*BLKN+2];
			 dispram[123]=bmp[i][j*BLKN+3];
			 dispram[124]=bmp[i][j*BLKN+4];
			 dispram[125]=bmp[i][j*BLKN+5];
			 dispram[126]=bmp[i][j*BLKN+6];
			 dispram[127]=bmp[i][j*BLKN+7];
		  	 delay(50);
		  }
		  delay(1000);
		}
      }

 }
 void leddisplay(void)  interrupt 1 using 1
 {
   uchar i,j=BLKN;			 //设定显示屏刷新率62.5帧/s
   TH0=0xfd;
   TL0=0xf0;
   i=P1;					 //读取当前显示的行列
   i=++i&0x0f;				 /*行数自动加一,屏蔽高4位 ,注意P1.0,P1.1,P1.2,P1,3控制行的显示,
                               通过4线16线译码器,对16行进行控制*/
   do
     {										                
	   j--;		 
	   SBUF=dispram[i*BLKN+j];	  //送显示数据,SBUF串行数据缓冲寄存器
	   while(!TI);				   /*串行发送停止位的开始时,由内部硬件使T11,向CPU发出中断请求
	                                ,在中断服务程序中,必须用软件使其清0*/
	   TI=0;
	 }
   while(j);					  //完成一行数据的发送
   G=1;							  //消隐(关闭显示)
   P1&=0xf0;					  //行号端口清0
   RCK=1;						   //显示数据打入输出锁存器
   P1|=i;						   //写入行号
   RCK=0;						   //锁存显示数据
   G=0;							   //打开显示
}

⌨️ 快捷键说明

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