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

📄 dm114.c

📁 LED数码管的简单控制程序
💻 C
字号:
#include <reg51.h>


sbit DIN=P1^0;
sbit CLK=P1^1;
sbit STB=P1^2;
sbit OE =P1^3;
sbit key0=P1^4;
unsigned char mode,number,p;
unsigned char flag;

unsigned  char code ANODE[8][90]={0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,
                                  0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,
							      0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,
							      0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,
                                  0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,
								  0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,
								  0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
								  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 };

void send(unsigned char add)
{unsigned char ADS,j;
 ADS=add; 
for(j=0;j<8;j++)
  { 
    CLK=0;
    DIN=ADS&0x01;
    ADS=ADS>>1;
    CLK=1; 
       } 
 }


void delay(unsigned int n)
{unsigned int k;
while(n--)
{for(k=0;k<250;k++)
 {;}
 }
}
/////////////////////////////////////////////////////
void clock_inital0() reentrant                    //定时器0的初始化;
{TR0=0;TH0=0x3c;TL0=0xb0;TR0=1;}

///////////////////////////////////////////////////
void clock_inital1() reentrant                   //定时器1的初始化;
{TR1=0;
 TH1=0x00;
 TL1=0x00;
 TR1=1;}
//////////////////////////////////////////////////
void keynum0()                      //display mode
{
   flag++;
   mode=0;
   if(flag>=9) {flag=0; mode=1;}

 }
////////////////////////////////////////
void key()                                     //键盘子程序;
{ unsigned char keycode;
  key0=1;
 
  keycode=P1&0x10;                 
 if(keycode!=0x10)                            //判断是否有键按下;
 {
   delay(20);                                 //延时去抖动;
   keycode=P1&0x10; 
   while(keycode!=0x10)                       //确认有键按下;
   {
      if(key0==0)                             //KEY0按下后执行子程序;
	  { 
	     keynum0();                           //	   
	  	    while(1)                          //等待键释放; 
	{ if(key0==1) break;
		  delay(10);
                     }
                      }
     break; }
   }
  
}
////////////////////////////////////////////////

///////////////////////////////////////////////////
main()
{
 
  TMOD=0x11;
  EA=1;
  TF1=0;
  TF0=0;
  clock_inital1();
  clock_inital0();
  ET1=1;
  ET0=1;

  STB=0;
  OE=0;
  flag=1;
  mode=0;
  number=0;
  p=0;



  while(1)  
  {	 if((P1&0x10)!=0x10)
    {key();}
   }

  
}

///////////////////////////////////////////////////////////////
void clk_int0() interrupt 1                 //定时器0中断程序;
{ 
   clock_inital0();  

   number++;

}
///////////////////////////////////////////////////////////////
void clk_int1() interrupt 3  
{ unsigned char i;   
   clock_inital1();
  if(mode==0)
   {switch(flag)
    { 
     case 1:  for(i=0;i<90;i++)
	           {send(ANODE[0][i]);}   
  			    STB=1;
			    STB=0;
				break;
	 case 2:  for(i=0;i<90;i++)
	           {send(ANODE[1][i]);}   
  			    STB=1;
			    STB=0;
				break;
	 case 3:  for(i=0;i<90;i++)
	           {send(ANODE[2][i]);}   
  			    STB=1;
			    STB=0;
				break;
	 case 4:  for(i=0;i<90;i++)
	           {send(ANODE[3][i]);}   
  			    STB=1;
			    STB=0;
				break;
	 case 5:  for(i=0;i<90;i++)
	           {send(ANODE[4][i]);}   
  			    STB=1;
			    STB=0;
				break;
     case 6:  for(i=0;i<90;i++)
	           {send(ANODE[5][i]);}   
  			    STB=1;
			    STB=0;
				break;
     case 7:  for(i=0;i<90;i++)
	           {send(ANODE[6][i]);}   
  			    STB=1;
			    STB=0;
				break;
	 case 8:  for(i=0;i<90;i++)
	           {send(ANODE[7][i]);}   
  			    STB=1;
			    STB=0;
				break;

     default : flag=1;break;
       }
   
	 }

  if(mode==1)
  {if(number>=12){ number=0;p++;}
                 if(p==7) p=0;
                 for(i=0;i<90;i++)
	              { send(ANODE[p][i]);}  STB=1;STB=0;
  }


}

⌨️ 快捷键说明

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