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

📄 mywork.c

📁 该文件提供51c程序点阵led显示模块
💻 C
字号:
#include<reg52.h>
#include<absacc.h>
#define uchar unsigned char

void Send_Dot_Lcd(uchar *p);	                   //Lcd driver;
void Scan_Dot_Lcd();							    //Lcd scan
void Led_Driver(uchar address,uchar Data);         //Led Show driver;
void Light_Led(uchar address,uchar Data);	        //Red Led lighten
void Delay_10ms();                         	        //delay  1s;
void Lcd_Show1();  									//1a,1b,3c,4c
void Lcd_Show2();									//2a,2b,1c,4c
void Lcd_Show3(); 									//3a,3b,1c,2c
void Lcd_Show4();  									//4a,4b,2c,3c
unsigned char Address;

static uchar code Dot_Lcd[3][8]={	//{0x10,0x38,0x10,0x12,0xFF,0x12,0x10,0x10},      //	东北禁行
				   	{0x10,0x38,0x10,0x50,0xFF,0x50,0x10,0x10},				 //西北禁行
					{0x0,0x0,0x0,0x2,0xFF,0x2,0x0,0x0},						 //东禁行
					//{0x0,0x0,0x0,0x40,0xFF,0x40,0x0,0x0},			 //	西禁行
					{0x0,0x3C,0x7E,0x7E,0x7E,0x7E,0x3C,0x0}					 //	全部禁行
				};
static uchar code Led[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};	 

//P1;
sbit P1_4=P1^4;
sbit P1_5=P1^5;
sbit P1_6=P1^6;
sbit P1_7=P1^7;
							 
			
void main()
{
    // System	initializing
	int time;
	uchar i,*p,j,m,n;
	p=Led;
	P0=0xFF;
	P1=0xF0;	
	P2=0xFF;
	for(;;)	 //Main Loop;
	{
		m=3;
		n=0;
		for(i=0;i<30;i++)				//run 30s
		{
			Light_Led(0x8F,0x0C);
			Light_Led(0x9F,0xF3);
	       		for(j=0;j<10;j++)			//send data 1s
			{ 
			 	for(time=0;time<10000;time++)
				{
					Lcd_Show1();
					Led_Driver(0xbf,*(p+m));		   
					Address=PBYTE[0x4f];
					Address=PBYTE[0x6f];
					Led_Driver(0xbf,*(p+n));
					Address=PBYTE[0x5f];
					Address=PBYTE[0x7f];
					Led_Driver(0xaf,*(p+m));
					Address=PBYTE[0x4f];
					Address=PBYTE[0x6f];
					Led_Driver(0xaf,*(p+n));
					Address=PBYTE[0x5f];
					Address=PBYTE[0x7f];					  
					Delay_10ms();
				 }
			}
			if(n==0&&m==3)
			{	
				m--;
				n=9;
			}
			else  if(n==0&m>0)
				{
					n=9;
					m--;
				}
				else  
					n--;
	   	}
		n=0;
		m=3;
		for(i=0;i<3;i++)				//run 3s
		{
			Light_Led(0x8F,0x8a);
			Light_Led(0x9F,0xF2);
	        for(j=0;j<10;j++)				//send data 1s
			{ 
			 	for(time=0;time<10000;time++)
				{
					Lcd_Show2();
					Led_Driver(0xbf,*(p+m));		   
					Address=PBYTE[0x4f];
					Address=PBYTE[0x6f];
					Led_Driver(0xbf,*(p+n));
					Address=PBYTE[0x5f];
					Address=PBYTE[0x7f];
					Led_Driver(0xaf,*(p+m));
					Address=PBYTE[0x4f];
					Address=PBYTE[0x6f];
					Led_Driver(0xaf,*(p+n));
					Address=PBYTE[0x5f];
					Address=PBYTE[0x7f];					  
					Delay_10ms();
				 }
			}
			n--;
		}
		
		m=3;
		n=0
		for(i=0;i<30;i++)				//run 30s
		{
			Light_Led(0x8F,0x61)
			Light_Led(0x9F,0xf8);
	        for(j=0;j<10;j++)				//send data 1s
			{ 
			 	for(time=0;time<10000;time++)
				{
					Lcd_Show3();
					Led_Driver(0xbf,*(p+m));		   
					Address=PBYTE[0x4f];
					Address=PBYTE[0x6f];
					Led_Driver(0xbf,*(p+n));
					Address=PBYTE[0x5f];
					Address=PBYTE[0x7f];
					Led_Driver(0xaf,*(p+m));
					Address=PBYTE[0x4f];
					Address=PBYTE[0x6f];
					Led_Driver(0xaf,*(p+n));
					Address=PBYTE[0x5f];
					Address=PBYTE[0x7f];					  
					Delay_10ms();
				 }
			}
			if(n==0&&m==3)
			{	
				m--;
				n=9;
			}
			else  if(n==0&m>0)
				{
					n=9;
					m--;
				}
				else  
					n--;
	   	}
		
		n=0;
		m=3;
		for(i=0;i<3;i++)				//run 3s
		{
			Light_Led(0x8F,0x51);
			Light_Led(0x9F,0xF4);
	        for(j=0;j<10;j++)				//send data 1s
			{ 
			 	for(time=0;time<10000;time++)
				{
					Lcd_Show4();
					Led_Driver(0xbf,*(p+m));		   
					Address=PBYTE[0x4f];
					Address=PBYTE[0x6f];
					Led_Driver(0xbf,*(p+n));
					Address=PBYTE[0x5f];
					Address=PBYTE[0x7f];
					Led_Driver(0xaf,*(p+m));
					Address=PBYTE[0x4f];
					Address=PBYTE[0x6f];
					Led_Driver(0xaf,*(p+n));
					Address=PBYTE[0x5f];
					Address=PBYTE[0x7f];					  
					Delay_10ms();
				 }
			}
			n--;
		}		
	}
}


void Send_Dot_Lcd(uchar *p)
{
	uchar i,j;
	for(i=0;i<8;i++)
	{
	  	for(j=0;j<8;i++)   //  send a byte;
		{
			P1_6=*p^j;
		   	P1_5=0;
			P1_5=1;
		 }
		p++;
	}
}

void Scan_Dot_Lcd()
{
	uchar temp=0xfe,temp1,temp2,i;
 	for(i=0;i<8;i++)
 	{
 		temp1=temp>>7;
		temp2=temp<<1;
		temp=temp1|temp2;
		P2=temp;
 	}
}


void Led_Driver(uchar address,uchar Data)
{
   PBYTE[address]=Data;
}
void Light_Led(uchar address,uchar Data)
{
  PBYTE[address]=Data;
}


void delay_10ms()				 //Delay 10ms
{
	unsigned int j;   
	for(j=6245;j>0;j--);		//误差约为10us
}

void Lcd_Show1()	 	//1a,1b,3c,4c	  右禁行 ,
{
	uchar address=0x0f,i,n;
	for(n=0;n<8;n++)
	{
		
		Send_Dot_Lcd(Dot_Lcd[1][n]);		//1a,1b
		Send_Dot_Lcd(Dot_Lcd[2][n]);		//cross forbiden
		Send_Dot_Lcd(Dot_Lcd[0][n]);		//3c
		Send_Dot_Lcd(Dot_Lcd[0][n]);		//4c
		for(i=0;i<3;i++) 
		{	
			Address=PBYTE[address];
			Scan_Dot_Lcd();
			address+=0x10;
		}  
	}
}

							
void Lcd_Show2()					//2a,2b,1c,4c
{
	uchar address=0x0f,i,n;
	for(n=0;n<8;n++)
	{
		Send_Dot_Lcd(Dot_Lcd[0][n]);		//1c
		Send_Dot_Lcd(Dot_Lcd[1][n]);		//2a,2b
		Send_Dot_Lcd(Dot_Lcd[2][n]);		//3 cross forbiden
		Send_Dot_Lcd(Dot_Lcd[0][n]);		//4c
		for(i=0;i<3;i++) 
		{	
			Address=PBYTE[address];
			Scan_Dot_Lcd();
			address+=0x10;
		}
	 }	
}


void Lcd_Show3()					//3a,3b,1c,2c
{
	uchar address=0x0f,i,n;
	for(n=0;n<8;n++)
	{
		Send_Dot_Lcd(Dot_Lcd[1][n]);		//1c
		Send_Dot_Lcd(Dot_Lcd[1][n]);		//2c
		Send_Dot_Lcd(Dot_Lcd[2][n]);		//3a,3b
		Send_Dot_Lcd(Dot_Lcd[3][n]);		//4 Cross Forbiden
		for(i=0;i<3;i++) 
		{	
			Address=PBYTE[address];
			Scan_Dot_Lcd();
			address+=0x10;
		}  
	}
}

									
void Lcd_Show4()					//4a,4b,2c,3c
{
	uchar address=0x0f,i,n;
	for(n=0;n<8;n++)
	{
		Send_Dot_Lcd(Dot_Lcd[2][n]);		//1 Cross Forbiden
		Send_Dot_Lcd(Dot_Lcd[0][n]);		//2c
		Send_Dot_Lcd(Dot_Lcd[0][n]);		//3c
		Send_Dot_Lcd(Dot_Lcd[1][n]);		//4a,4b
		for(i=0;i<3;i++) 
		{	
			Address=PBYTE[address];
			Scan_Dot_Lcd();
			address+=0x10;
		} 
	 }	
}

⌨️ 快捷键说明

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