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

📄 text1.c

📁 51单片机控制16*16led显示屏
💻 C
字号:
/*12M晶振,LED显示 0-23 显示满车(韩语)*/
/*2008-04-23*/
#include <reg51.h>
unsigned char code number[10][32]={
//0-9 16*16点阵码
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 jian=P3^2;
sbit add=P3^3;
/*p1.0~p1.3行译码信号,int0-s1进行加1操作,int1-s2进行减1操作*/
unsigned char temp;
unsigned char opt1;
unsigned char opt2;
unsigned char flag;
void disn(temp);
void disnl(unsigned char temph);
void disnr(unsigned char templ);
void disw();
void diswl();
void diswr();
void  disw()
 {  
	for(opt2=0;opt2<16;opt2++)
     {
       unsigned char i;
       P1=opt2;
       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;
	   for(i=0;i<10;i++);
	   ena=1;//释放总线
         }
    }
void disn(temp)
{ 
   unsigned char temph0,templ0;
   if(temp>9)
    {
      temph0=temp/10;
      templ0=temp-temph0*10;
	 }
   else 
    {
       temph0=0;
       templ0=temp;
	  }
  for(opt1=0;opt1<16;opt1++)
   {
    unsigned char i;
	P1=opt1;
    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;
    for(i=0;i<10;i++);
	ena=1;
     }
 }
//右显示
void disnr(unsigned char templ)
{
  unsigned char 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 char temph)
{
   unsigned char 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 char 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 char 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)
  SCON=0x00;//串口工作在方式0
  flag=0;
  temp=24;
  check=0;
  while(1)
   {
    if(jian==0)
     {  
	   TR0=1;
	   TH0=0x15;
       TL0=0xa0;
	   }
    if(TF0)
	 {
	  TF0=0;//关定时查询消除jian多次为1
	  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 + -