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

📄 liwu.c

📁 摇摇棒程序 用普通的51单片机控制16个LED
💻 C
字号:
#include<reg51.h>
typedef unsigned int uint;
typedef unsigned char uchar;
 
uchar code JSTU[144] =   
{
	
	//-------新---------
   0x00, 0x00,0x04,0x84,0x24,0x88,0x34,0xB2,0xAC,0x81,0x67,0xFE,0x2C,0xA0,0x34,0x9A,0x24,0x84,
  0x00,0x18,0x3F,0xE0,0x24,0x00,0x24,0x00,0x47,0xFF,0x44,0x00,0x44,0x00,0x00,0x00, 0x00, 0x00,
	//-------年---------
  0x00, 0x00,0x02,0x20,0x04,0x20,0x08,0x20,0x30,0x20,0xC7,0xE0,0x44,0x20,0x44,0x20,0x44,0x20,
  0x7F,0xFF,0x44,0x20,0x44,0x20,0x44,0x20,0x44,0x20,0x40,0x20,0x00,0x20,0x00,0x00, 0x00, 0x00,
  	//-------快---------
    0x00, 0x00,0x0E,0x00,0x00,0x00,0xFF,0xFF,0x10,0x00,0x0D,0x01,0x11,0x02,0x11,0x0C,0x11,0x70,
  0xFF,0x80,0x11,0x60,0x11,0x10,0x11,0x0C,0x1F,0x06,0x01,0x03,0x01,0x02,0x00,0x00, 0x00,0x00,
	//-------乐---------
   0x00, 0x00,0x00,0x00,0x00,0x04,0x02,0x18,0x3F,0x30,0x22,0xE0,0x22,0x48,0x22,0x04,0x62,0x02,
  0x5F,0xFC,0x42,0x00,0xC2,0x00,0xC2,0x40,0x42,0x30,0x02,0x1C,0x00,0x08,0x00,0x00, 0x00, 0x00
};
   
uchar code DX[144]= 
{
	//-------天---------				  
    0x00, 0x00,0x00,0x00,0x02,0x01,0x42,0x02,0x42,0x04,0x42,0x08,0x42,0x10,0x42,0x60,0x7F,0x80,
  0x42,0x40,0x42,0x20,0x42,0x10,0x42,0x08,0x42,0x0C,0x42,0x06,0x02,0x04,0x00,0x00, 0x00,0x00,
	//-------天---------				  
    0x00, 0x00,0x00,0x00,0x02,0x01,0x42,0x02,0x42,0x04,0x42,0x08,0x42,0x10,0x42,0x60,0x7F,0x80,
  0x42,0x40,0x42,0x20,0x42,0x10,0x42,0x08,0x42,0x0C,0x42,0x06,0x02,0x04,0x00,0x00, 0x00,0x00,
	//-------开---------
   0x00, 0x00,0x02,0x00,0x42,0x02,0x42,0x04,0x42,0x08,0x42,0x30,0x7F,0xC0,0x42,0x00,0x42,0x00,
  0x42,0x00,0x42,0x00,0x7F,0xFE,0x42,0x00,0x42,0x00,0x42,0x00,0x42,0x00,0x00,0x00, 0x00, 0x00,
	//-------心---------
  0x00, 0x00,0x00,0x20,0x01,0xC0,0x00,0x00,0x00,0x00,0x0F,0xFC,0x00,0x02,0x80,0x02,0x40,0x02,
  0x38,0x02,0x10,0x02,0x00,0x02,0x02,0x1E,0x01,0x00,0x00,0xE0,0x00,0x40,0x00,0x00, 0x00, 0x00
};


uchar code CK[144]= 
{
	//-------笑---------
    0x00, 0x00,0x08,0x01,0x30,0x41,0xC2,0x42,0x62,0x42,0x52,0x44,0x42,0x48,0x4A,0x70,0x13,0xC0,
  0xE4,0x60,0x44,0x50,0x64,0x48,0x54,0x44,0x48,0x46,0x40,0x43,0x40,0x02,0x00,0x00, 0x00,0x00,
	//-------口---------
   0x00, 0x00,0x00,0x00,0x00,0x00,0x3F,0xFC,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x10,
  0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x3F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00, 0x00, 0x00,
	//-------常---------
   0x00, 0x00,0x04,0x00,0x18,0x00,0x10,0x7C,0x90,0x40,0x77,0x40,0x55,0x40,0x15,0x40,0xF5,0xFF,
  0x15,0x40,0x15,0x40,0x37,0x48,0xD0,0x44,0x54,0x78,0x18,0x00,0x10,0x00,0x00,0x00, 0x00, 0x00,
	//-------开---------
   0x00, 0x00,0x02,0x00,0x42,0x02,0x42,0x04,0x42,0x08,0x42,0x30,0x7F,0xC0,0x42,0x00,0x42,0x00,
  0x42,0x00,0x42,0x00,0x7F,0xFE,0x42,0x00,0x42,0x00,0x42,0x00,0x42,0x00,0x00,0x00, 0x00, 0x00
};


//------------两边加0x0000是为了两个字之间延时时不出现字的”拖尾“现象---------



/*------------------小心图-------------------*/
uchar code small_heart[36] = 
{
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xc0,0x07,0xe0,0x07,0xf0,0x07,0xf0,0x03,0xf8,
	0x03,0xf8,0x07,0xf0,0x07,0xf0,0x07,0xe0,0x03,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
/*-------------------大心图--------------------*/
uchar code big_heart[36]=
{
	0x00,0x00,0x00,0x00,0x0f,0x80,0x1f,0xc0,0x1f,0xe0,0x1f,0xe0,0x1f,0xf0,0x0f,0xf8,0x07,0xfc,
	0x07,0xfc,0x0f,0xf8,0x1f,0xf0,0x1f,0xe0,0x1f,0xe0,0x1f,0xc0,0x0f,0x80,0x00,0x00,0x00,0x00
};
/*------------------笑脸图-------------------*/
uchar code smile[36]=
{
	0x00,0x00,0x03,0x80,0x0c,0x60,0x10,0x18,0x20,0xc4,0x4c,0x24,0x4c,0x12,0x4c,0x12,0x40,0x12,
	0x40,0x12,0x4c,0x12,0x4c,0x12,0x4c,0x24,0x20,0xc4,0x10,0x18,0x0c,0x60,0x03,0x80,0x00,0x00
};


uchar wave_time = 0;
uchar state = 10;    //无效状态 
uchar flag = 0;		 //显示过一遍则置1


//----延时-----
void  delay(uchar time);


void  main(void)
{
	signed int i;
	IT0 = 1;
	IE0 = 0;
	EX0 = 1;
	EA =1 ;

//----P2接上面八位,P1接下面八位----
	P1 = 0xff;
	P2 = 0xff;
	while(1)
	{
	//--如果没有中断产生则不显示---
		if(!flag)
		{
			IE0 = 0;//--中断请求置0---
			EA = 0;	//--关中断----

			//----状态转换-------
			switch(state)
			{
				//-------技术师范---------
				case 0:
				{
					delay(50);		//	使图形在中央附近显示
					for(i = sizeof(JSTU)-1; i >=  0;i--)
					{
						P1 = ~JSTU[i];
						P2 = ~JSTU[--i];
						delay(2);
					}		
					flag = 1;
					break;
				}
						
				//-------电信学院--------
				case 1:
				{
					delay(50);		//	使图形在中央附近显示
					for(i = sizeof(DX)-1;i >= 0;i--)
					{
						P1 = ~DX[i];
						P2 = ~DX[--i];
						delay(2);
					}
					flag = 1;
					break;
				}

				//--------05测控1W----------
				case 2:
				{
					delay(50);		//	使图形在中央附近显示
					for(i = sizeof(CK)-1;i >= 0;i--)
					{
						P1 = ~CK[i];
						P2 = ~CK[--i];
						delay(2);
					}
					flag = 1;
					break;
				}

				//--------笑脸------------
				case 3:
				{
					delay(50);		//	使图形在中央附近显示
					for(i = sizeof(smile)-1;i >= 0;i--)
					{
						P1 = ~smile[i];
						P2 = ~smile[--i];
						delay(5);
					}
					flag = 1;
					break;
				}

				//---------心跳(小)----------
				case 4:
				{
					delay(50);		//	使图形在中央附近显示
					for(i = sizeof(small_heart)-1;i >= 0;i--)
					{
						P1 = ~small_heart[i];
						P2 = ~small_heart[--i];
						delay(5);
					}
					flag = 1;
					break;
				}
				//---------心跳(大)----------
				case 5:
				{
					delay(50);		//	使图形在中央附近显示
					for(i = sizeof(big_heart)-1;i >= 0;i--)
					{
						P1 = ~big_heart[i];
						P2 = ~big_heart[--i];
						delay(5);
					}
					flag = 1;
					break;
				}
				//----其它不显示----
				default:
				{
					P1 = 0xff;
					P2 = 0xff;
					flag = 1;
					break;
			 	}
			}
		
			EA = 1;
		}
	}
}

//-----延时-----
void delay(uchar time)
{
	uint i,j;
	for(i = 0;i < 15;i++)
	for(j = 0;j < time;j++);
}

//-----外部中断-----
void INT_0() interrupt 0 using 1
{
	flag = 0;
	if(wave_time++ >= 90)wave_time = 0;//---90次一个轮回

	if(wave_time < 15)  state = 0;//技术师范
	else if (wave_time < 30) state = 1;// 电信学院
	else if (wave_time < 45) state = 2;//  05测控1W
	else if (wave_time < 60) state = 3;// 	笑脸
	else if (wave_time %2 == 0)   state= 4;//	大心图
	else if (wave_time %2 == 1)   state= 5;//	小心图
	IE0 = 0;//----防抖动-----
}

⌨️ 快捷键说明

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