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

📄 chengxu(原版).txt

📁 51单片机控制16*16led显示屏
💻 TXT
字号:
/*12M晶振,LED显示 0-23 显示满车*/
#include <reg51.h>
#define yi 1
//#define  RAMADDR XBYTE[0x6000]
//unsigned char code  RAMDATA=0x99;
unsigned char code number[10][32]={
//'0'
//'0',
0x07,0xE0,0x0F,0xF0,0x18,0x18,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,
0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x18,0x18,0x0F,0xF0,0x07,0xE0,


0x01,0xC0,0x01,0xC0,0x01,0xC0,0x0F,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,
0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x1F,0xF8,

0x0F,0xF0,0x18,0x18,0x30,0x0C,0x20,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x18,
0x00,0x70,0x00,0xE0,0x03,0x80,0x0E,0x00,0x1C,0x04,0x30,0x0C,0x3F,0xFC,0x3F,0xFC,


0x0F,0xF0,0x30,0x08,0x30,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x1C,0x00,0x10,0x07,0xF0,
0x00,0x10,0x00,0x18,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x30,0x0C,0x30,0x18,0x1F,0xE0,


0x00,0x30,0x00,0x70,0x00,0xF0,0x01,0xB0,0x03,0x30,0x06,0x30,0x0C,0x30,0x18,0x30,
0x30,0x30,0x60,0x30,0xFF,0xFF,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x01,0xFE,


0x1F,0xFC,0x1F,0xFC,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x1F,0xF0,0x1F,0xF8,
0x00,0x1C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x10,0x0C,0x3F,0xF8,0x1F,0xF0,


0x07,0xF8,0x08,0x1C,0x10,0x0C,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x37,0xF8,
0x38,0x0C,0x30,0x06,0x30,0x06,0x30,0x06,0x30,0x06,0x38,0x06,0x1F,0xFC,0x0F,0xF8,



0x3F,0xFF,0x30,0x06,0x30,0x0C,0x20,0x18,0x00,0x30,0x00,0x60,0x00,0xC0,0x01,0x80,
0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,


0x0F,0xF0,0x18,0x18,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x18,0x18,0x0F,0xF0,
0x1F,0xF8,0x30,0x0C,0x60,0x06,0x60,0x06,0x60,0x06,0x30,0x0C,0x18,0x18,0x0F,0xF0,


0x0F,0xF8,0x18,0x1C,0x30,0x0E,0x70,0x07,0x70,0x07,0x70,0x07,0x70,0x07,0x38,0x07,
0x1F,0xFF,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x06,0x30,0x0C,0x38,0x18,0x1F,0xF0
};

unsigned char code word[2][32]={

0x00,0x00,0x1F,0x8C,0x00,0x0C,0x00,0x0C,0x7F,0xEC,0x06,0x0C,0x06,0x0F,0x06,0x0C,
0x0F,0x0C,0x0F,0x0C,0x19,0x8C,0x30,0xCC,0x60,0x6C,0x00,0x0C,0x00,0x0C,0x00,0x00,

0x00,0x00,0x3F,0xCC,0x30,0xCC,0x30,0xCC,0x30,0xCC,0x30,0xCF,0x30,0xCC,0x30,0xCC,
0x3F,0xCC,0x00,0x0C,0x00,0x0C,0x18,0x00,0x18,0x00,0x18,0x00,0x0F,0xFC,0x00,0x00


};

sbit ena=P2^0;//输出总允许信号
sbit lat=P2^1;//0锁存
sbit check=P2^5;//26管脚
sbit check1=P2^6;
sbit clk=P3^1;
sbit jian=P3^2;
sbit add=P3^3;




//sbit  check2=P1^6;
/*p1.0~p1.3行译码信号,int0-s1进行加1操作,int1-s2进行减1操作*/

unsigned char temp;
unsigned int opt1;
unsigned int opt2;
unsigned int flag;
//unsigned int jian;
void disn(temp);
void disnl(unsigned int temph);
void disnr(unsigned int templ);
void disw();
void diswl();
void diswr();
void delay(unsigned int t)
{while (t--);}
void int1() interrupt 2 using 1
{  
  EA=0;
  delay(30000);//软件延时10ms消抖
  delay(30000);
  delay(30000);
  if(temp>=24)
  {temp=24;}
 else
  {
   temp+=1;
   flag=0;}

  EA=1;
  }
/*dec button*/
/*void int0(void) interrupt 0 using 0
{  
  EA=0;
  delay(30000);//软件延时10ms消抖
  delay(30000);
  delay(30000);

 if (temp<=0)
    flag=1;
 if(temp>0)
    temp--;
 EA=1;
}
*/
void disw()
	{  
	 
   for(opt2=0;opt2<16;opt2++)
   {
    unsigned int i;

	P1=opt2;
//	delay(50);
    ena=1;
    lat=0;
    diswr();
    diswl();
    for(i=0;i<10;i++);
	lat=1;
    for(i=0;i<10;i++);
	lat=0;
	for(i=0;i<10;i++);
    ena=0;
	//delay(50);
	for(i=0;i<10;i++);
	ena=1;

	}
  }
void disn(temp)
{ 
   unsigned int temph0,templ0;
   if(temp>9)
   {
    temph0=temp/10;
    templ0=temp-temph0*10;
	}
   else 
   {
       temph0=0;
       templ0=temp;
	 }
  

  for(opt1=0;opt1<16;opt1++)
   {
    unsigned int i;
	P1=opt1;
	//delay(50);
	ena=1;
	lat=0;
    disnl(temph0);
	disnr(templ0);
    for(i=0;i<10;i++);
	lat=1;
    for(i=0;i<10;i++);
	lat=0;
	for(i=0;i<10;i++);
    ena=0;
//	delay(50);
	for(i=0;i<10;i++);
	ena=1;
	
	}

  }
//右显示
void disnr(unsigned int templ)
{
 unsigned int k;  
 unsigned char i,dat1,dat2;

 for(k=2*opt1;k<2*opt1+2;k++)
  {   
      dat1=number[templ][k];
	  dat2=0;
	  for(i=0;i<8;i++)
	  {
	  dat2<<=1;

	  	if(dat1&0x01)
		  dat2=dat2+1;

	  	  dat1>>=1;	
			}

      SBUF=dat2;
	  while(TI==0);
	  TI=0;
       }
 }
void disnl(unsigned int temph)
{
   unsigned int k;  
 unsigned char i,dat1,dat2;

 for(k=2*opt1;k<2*opt1+2;k++)
  {   
      dat1=number[temph][k];
	  dat2=0;
	  for(i=0;i<8;i++)
	  {
	  dat2<<=1;

	  	if(dat1&0x01)
		  dat2=dat2+1;

	  	  dat1>>=1;	
			}

      SBUF=dat2;
	  while(TI==0);
	  TI=0;
       }
 }
void diswl()
{
 unsigned int k;  
 unsigned char i,dat1,dat2;

 for(k=2*opt2;k<2*opt2+2;k++)
  {   
      dat1=word[0][k];

	  dat2=0;
	  for(i=0;i<8;i++)
	  {
	  dat2<<=1;

	  	if(dat1&0x01)
		  dat2=dat2+1;

	  	  dat1>>=1;	
			}
      SBUF=dat2;
	  while(TI==0);
	  TI=0;
       }
  }
void diswr()
{
 unsigned int k;  
 unsigned char i,dat1,dat2;

 for(k=2*opt2;k<2*opt2+2;k++)
  {   
      dat1=word[1][k];

	  dat2=0;
	  for(i=0;i<8;i++)
	  {
	  dat2<<=1;

	  	if(dat1&0x01)
		  dat2=dat2+1;

	  	  dat1>>=1;	
			}
     SBUF=dat2;
	  while(TI==0);
	  TI=0;
   }
 }
void main(void)
{
 
  TMOD=0x11;
  TH0=0x15;
  TL0=0xa0;
  	EA=0;               // CPU所有中断开(IE最高位MSB)
   EX0=0;              // INT0中断开
	//IT0=0;              // INT0低电平触发(为1则为下降沿触发)
    EX1=0;              // INT1中断开
	IT1=0;              // INT1低电平触发(为1则为下降沿触发)
  SCON=0x00;//串口工作在方式0
  flag=0;
  temp=24;
  check=0;

  while(1)
  {
   
     if(jian==0)
    	{  
	      TR0=1;
	      TH0=0x15;
          TL0=0xa0;
	     }
     if(TF0)
	     {
	       TF0=0;
	       TH0=0x15;
           TL0=0xa0;
           if(jian==1)
	         {
		        TR0=0;
	            if (temp==1||temp>24||temp==0)
	            {temp=0;
                flag=1;}
                else
               temp--;
	         }
         }


      if(add==0)
    	{  
	     TR1=1;
	     TH1=0x15;
         TL1=0xa0;
	      }
      if(TF1)
	     {
	      TF1=0;
	      TH1=0x15;
          TL1=0xa0;
           if(add==1)
	         {
		       TR1=0;
	           if(temp>=24)
               temp=24;
              else
              {
			   temp+=1;
               flag=0;
			 }
	        }
          }
	 
     if(flag==0)
     disn(temp);
      else
  	 disw();
  }
}

⌨️ 快捷键说明

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