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

📄 cmain.c

📁 16x16单片机仿真LED点阵有卷动和移动两种闪法随便用
💻 C
字号:
#include <reg52.h>

#define uchar unsigned char
#define uint unsigned int


sbit outen = P1^7;
sbit latch = P1^6;

		

//zero
uchar code zero[12][2]=
{
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};


//请
uchar code qing[12][2]=
{
	0x41,0x00,0x2F,0xE0,0x01,0x00,0x0F,0xE0,
	0xC1,0x00,0x4F,0xE0,0x44,0x40,0x47,0xC0,
	0x54,0x40,0x67,0xC0,0x44,0x40,0x00,0x00
};


//保
uchar code bao[12][2]=
{
	0x2F,0xC0,0x28,0x40,0x48,0x40,0x4F,0xC0,
	0xC9,0x40,0x41,0x00,0x5F,0xE0,0x43,0x00,
	0x45,0x80,0x49,0x40,0x51,0x20,0x00,0x00
};
//持
uchar code chi[12][2]=
{
	0x21,0x00,0x2F,0xE0,0xF1,0x00,0x21,0x00,
	0x2F,0xE0,0x30,0x80,0xEF,0xE0,0x28,0x80,
	0x24,0x80,0x20,0x80,0xE3,0x80,0x00,0x00
};

//车
uchar code che[12][2]=
{
	0x08,0x00,0xFF,0xE0,0x10,0x00,0x14,0x00,
	0x24,0x00,0x7F,0xC0,0x04,0x00,0x04,0x00,
	0xFF,0xE0,0x04,0x00,0x04,0x00,0x00,0x00
};

//厢
uchar code xiang[12][2]=
{
	0x7F,0xE0,0x40,0x00,0x4B,0xC0,0x7E,0x40,
	0x4B,0xC0,0x4A,0x40,0x5E,0x40,0x6B,0xC0,
	0x4A,0x40,0x8B,0xC0,0x8A,0x40,0x00,0x00
};

//内
uchar code nei[12][2]=
{
	0x04,0x00,0x04,0x00,0x7F,0xC0,0x44,0x40,
	0x44,0x40,0x4A,0x40,0x49,0x40,0x51,0x40,
	0x60,0x40,0x40,0x40,0x41,0xC0,0x00,0x00
};

//整
uchar code zheng[12][2]=
{
	0x11,0x00,0xFD,0xE0,0x57,0x40,0x7D,0x40,
	0x34,0x80,0x51,0x40,0xBF,0xA0,0x04,0x00,
	0x27,0xC0,0x24,0x00,0xFF,0xE0,0x00,0x00
};

//洁
uchar code jie[12][2]=
{
	0x41,0x00,0x21,0x00,0x1F,0xE0,0x81,0x00,
	0x51,0x00,0x2F,0xE0,0x20,0x00,0x4F,0xC0,
	0xC8,0x40,0x48,0x40,0x4F,0xC0,0x00,0x00
};
//,
uchar code dh[12][2]=
{
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x0C,0x00,0x0C,0x00,
	0x0C,0x00,0x18,0x00,0x00,0x00,0x00,0x00
};

//谢
uchar code xie[12][2]=
{
	0x84,0x40,0x5E,0x40,0x12,0x40,0xDF,0xE0,
	0x52,0x40,0x5F,0x40,0x52,0xC0,0x5E,0x40,
	0x6A,0x40,0x52,0x40,0x26,0xC0,0x00,0x00
};
//合
uchar code he[12][2]=
{
	0x04,0x00,0x0A,0x00,0x11,0x00,0x20,0x80,
	0xDF,0x60,0x00,0x00,0x00,0x00,0x3F,0x80,
	0x20,0x80,0x20,0x80,0x3F,0x80,0x00,0x00

};

//作
uchar code zuo[12][2]=
{
	0x12,0x00,0x12,0x00,0x27,0xE0,0x6A,0x00,
	0xB2,0x00,0x23,0xC0,0x22,0x00,0x22,0x00,
	0x23,0xE0,0x22,0x00,0x22,0x00,0x00,0x00
};

//祝
uchar code zhu[12][2]=
{
	0x40,0x40,0x27,0xE0,0xF4,0x40,0x14,0x40,
	0x24,0x40,0x67,0xC0,0xB2,0x80,0x22,0x80,
	0x22,0xA0,0x24,0xA0,0x38,0xE0,0x00,0x00
};

//您
uchar code nin[12][2]=
{
	0x24,0x00,0x27,0xE0,0x48,0x40,0xD5,0x80,
	0x49,0x40,0x51,0x20,0x47,0x00,0x08,0x00,
	0x54,0xC0,0x50,0xA0,0x9F,0x80,0x00,0x00
};

//旅
uchar code lui[12][2]=
{
	0x42,0x00,0x22,0x00,0xFB,0xE0,0x44,0x00,
	0x70,0xC0,0x57,0x00,0x55,0x40,0x55,0x80,
	0x54,0x80,0x95,0x40,0xB6,0x20,0x00,0x00,
};

//途
uchar code tu[12][2]=
{
	0x82,0x00,0x45,0x00,0x48,0x80,0x17,0x60,
	0xC2,0x00,0x4F,0xC0,0x42,0x00,0x4A,0x80,
	0x56,0x40,0xA0,0x00,0x9F,0xE0,0x00,0x00
};

//愉
uchar code yu[12][2]=
{
	0x42,0x00,0x45,0x00,0x68,0x80,0xD7,0x60,
	0xC0,0x00,0x4E,0xA0,0x4A,0xA0,0x4E,0xA0,
	0x4A,0xA0,0x4E,0xA0,0x4A,0x60,0x00,0x00
};

//快
uchar code kuai[12][2]=
{
	0x42,0x00,0x42,0x00,0x4F,0xC0,0xE2,0x40,
	0xD2,0x40,0x42,0x40,0x5F,0xE0,0x42,0x00,
	0x45,0x00,0x48,0x80,0x70,0x60,0x00,0x00
};

//!
uchar code well[12][2]=
{
	0x00,0x00,0x30,0x00,0x78,0x00,0x78,0x00,
	0x78,0x00,0x30,0x00,0x30,0x00,0x00,0x00,
	0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00
};

//管
uchar code guan[12][2]=
{
	0x21,0x00,0x7B,0xE0,0x94,0x80,0xFF,0xE0,
	0x80,0x20,0x3F,0x00,0x21,0x00,0x3F,0x80,
	0x20,0x80,0x20,0x80,0x3F,0x80,0x00,0x00

};

//好
uchar code hao[12][2]=
{
	0x27,0xC0,0x20,0x40,0xF8,0x80,0x49,0x00,
	0x49,0x00,0x4F,0xE0,0x91,0x00,0xD1,0x00,
	0x31,0x00,0x49,0x00,0x83,0x00,0x00,0x00

};

//自
uchar code zi[12][2]=
{
	0x04,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,
	0x3F,0xC0,0x20,0x40,0x20,0x40,0x3F,0xC0,
	0x20,0x40,0x20,0x40,0x3F,0xC0,0x00,0x00
};

//已
uchar code ji[12][2]=
{
	0x00,0x80,0x7F,0xC0,0x00,0x80,0x40,0x80,
	0x7F,0x80,0x40,0x00,0x40,0x00,0x40,0x20,
	0x40,0x20,0x40,0x20,0x7F,0xE0,0x00,0x00

};

//的
uchar code de[12][2]=
{
	0x11,0x00,0x21,0x00,0xFB,0xE0,0x8A,0x20,
	0x8C,0x20,0x8A,0x20,0xF9,0x20,0x89,0x20,
	0x88,0x20,0xF8,0x20,0x89,0xC0,0x00,0x00
};

//行
uchar code xing[12][2]={
	0x2F,0xC0,0x20,0x00,0x40,0x00,0x9F,0xE0,
	0x20,0x80,0x60,0x80,0xA0,0x80,0x20,0x80,
	0x20,0x80,0x20,0x80,0x27,0x80,0x00,0x00
};

//李
uchar code li[12][2]={
	0x04,0x00,0xFF,0xE0,0x0E,0x00,0x15,0x00,
	0x24,0x80,0xDF,0x60,0x02,0x00,0x04,0x00,
	0xFF,0xE0,0x04,0x00,0x1C,0x00,0x00,0x00
};


/*no_smoking*/
uchar code no_smoking[16][2]=
{
	{0x0f,0xf0},{0x10,0x08},{0x30,0x44},{0x78,0x4a},
	{0x9c,0x29},{0x8e,0x15},{0x87,0x0d},{0xbf,0xf5},
	{0xbf,0xf5},{0x80,0xe1},{0x80,0x71},{0x80,0x39},
	{0x40,0x1e},{0x20,0x0c},{0x10,0x08},{0x0f,0xf0}	
};

//勿
uchar code wu4[12][2]={
	0x10,0x00,0x10,0x40,0x3F,0xE0,0x49,0x40,
	0x89,0x40,0x12,0x40,0x12,0x40,0x24,0x40,
	0x48,0x40,0x10,0x40,0x63,0x80,0x00,0x00
};

//在
uchar code zai[12][2]={
	0x08,0x00,0xFF,0xE0,0x08,0x00,0x12,0x00,
	0x22,0x00,0x22,0x00,0x6F,0xC0,0xA2,0x00,
	0x22,0x00,0x22,0x00,0x3F,0xE0,0x00,0x00
};


//吸
uchar code xi1[12][2]={
	0x0F,0xC0,0xE4,0x80,0xA4,0x80,0xA5,0x00,
	0xA5,0xC0,0xA4,0x40,0xEA,0x80,0xAA,0x80,
	0x09,0x00,0x12,0x80,0x2C,0x60,0x00,0x00

};

//烟
uchar code yian[12][2]={
	0x2F,0xE0,0x29,0x20,0x29,0x20,0xB9,0x20,
	0xAF,0xE0,0x29,0x20,0x29,0x20,0x2A,0xA0,
	0x58,0x20,0x4F,0xE0,0x88,0x20,0x00,0x00

};



uchar idata buffer[16][8];	


uchar *pc[16];
void display(uint);	//显示
void delay(uint);	//延时
void move(void);	
void carry();
void t_state(void);	
void clean(void);	//清空显存
void slogan(uchar m);	
void LeftMove(uchar *p);	
void UpMove(void);	
void WordUpMove(void);	
void LoadNoSmoking(uchar *p);


/***************************************/
/**************主程序开始***************/
/***************************************/
void main(void)
{
	uchar i;
	TMOD=0x11;							
//	TH0=TH1=TL0=TL1=0x00;
	SCON=0x00;
	EA=1;
	ES=0;
	while(1)
{
		clean();
//		carry();	
						
		display(20);
					

	for(i=0;i<1;i++){
//禁烟标志
		LoadNoSmoking(no_smoking[0]);
		pc[0]=&zero[0][0];
		slogan(1);
//请勿在车厢内吸烟。
		pc[0]=&qing[0][0];pc[1]=&wu4[0][0];pc[2]=&zai[0][0];pc[3]=&che[0][0];pc[4]=&xiang[0][0];
		pc[5]=&nei[0][0];pc[6]=&xi1[0][0];pc[7]=&yian[0][0];pc[8]=&zero[0][0];
		slogan(9);
	}
		

		
		
//谢谢合作。		
		pc[0]=&xie[0][0];pc[1]=&xie[0][0];pc[2]=&he[0][0];pc[3]=&zuo[0][0];
		slogan(4);
		
//祝您旅途愉快!			
		pc[0]=&dh[0][0];pc[1]=&zhu[0][0];pc[2]=&nin[0][0];pc[3]=&lui[0][0];pc[4]=&tu[0][0];pc[5]=&yu[0][0];
		pc[6]=&kuai[0][0];pc[7]=&well[0][0];
		slogan(8);
		//slogan(8);
		pc[0]=&zero[0][0];
		for(i=0;i<5;i++)
			slogan(1);
		
//	
	}

}



/*###########子函数##########*/

 /*
void timer0() interrupt 1 using 2{

		ET0=0;
		TR0=0;

}

void timer1() interrupt 3 using 3{

		ET1=0;
		TR1=0;

}
*/

void clean(void){
	uchar i,j;
	for(i=0;i<16;i++)
		for(j=0;j<8;j++)
			buffer[i][j]=0x00;
			
	
}


void slogan(uchar m){	
	uchar i;
	for(i=0;i<m;i++)
			LeftMove(pc[i]);
			
	
}



void delay(uint t){			
  	int i,j;
 	for(i=0;i<t;i++)
 	for(j=0;j<10;j++);
}




void display(uint t){
	uint i;
	uchar j,k,a;
	uchar *disp;
	for(i=0;i<t;i++){						
		a=0x80;
		latch=0;
		outen=1;							
		P0=0;
		P2=0;
		for(j=0;j<8;j++){
			disp=buffer[j]+6;
			for(k=0;k<7;k++){
				SBUF=*disp--;
				while(!TI){;}				
				TI=0;
			}
			latch=1;
			//delay(1);
			latch=0;
			//delay(1);
			P0=a;
			outen=0;						
			delay(6);
			a=a>>1;
			//delay(2);
			outen=1;
		}
		P0=0;
		a=0x80;
		for(j=0;j<8;j++){
			disp=buffer[j+8]+6;
			for(k=0;k<7;k++){
				SBUF=*disp--;
				while(!TI){;}				   
				TI=0;
			}
			latch=1;
			//delay(1);
			latch=0;
			//delay(1);
			P2=a;
			outen=0;						
			delay(6);
			a=a>>1;
			//delay(2);
			outen=1;
		}
	}
}


void move(void){
	uchar *m,i,j;
		for(i=0;i<16;i++){
			for(j=0;j<7;j++){	
				m=&buffer[i][j];
				*m=*m<<1;
				*m=*m|*(m+1)>>7;			
			}
			buffer[i][7]=buffer[i][7]<<1; 
		}
}

 /*==============
void carry(){					
	uchar i,j,*car=wc;									
		for(i=0;i<16;i++)	//16行
			for(j=0;j<4;j++)	//4 byte
				buffer[i][j+3]=*car++;	
		
}
*////////////////////

void LeftMove(uchar *p){
	uchar i;
	buffer[0][7]=buffer[1][7]=buffer[14][7]=buffer[15][7]=0x00;
	for(i=0;i<12;i++)
		buffer[i+2][7]=*(p+2*i);	//装载高8位
	for(i=0;i<8;i++){	//左移8次,并显示
		move();
		display(1);
	}
	for(i=0;i<12;i++)
		buffer[i+2][7]=*(p+1+2*i);	//装载低4位
	for(i=0;i<4;i++){	//左移4次,并显示
		move();
		display(1);
	}

}



void LoadNoSmoking(uchar *p){
	uchar i;
	//buffer[0][7]=buffer[1][7]=buffer[14][7]=buffer[15][7]=0x00;//清除0、1、14、15行
	//buffer[0][0]=buffer[1][0]=buffer[14][0]=buffer[15][0]=0x00;//清除号码
	for(i=0;i<16;i++)
		buffer[i][7]=*(p+2*i);	//装载高8位
	for(i=0;i<8;i++){	//左移8次,并显示
		move();
		display(1);
	}
	for(i=0;i<16;i++)
		buffer[i][7]=*(p+1+2*i);	//装载低4位
	for(i=0;i<8;i++){	//左移8次,并显示
		move();
		display(1);
	}

}

/*
void UpMove(void){
	uchar i,j;
	for(i=0;i<15;i++){
		for(j=0;j<7;j++)
			buffer[i][j]=buffer[i+1][j];
		}
		for(i=0;i<7;i++)
			buffer[15][i]=0x00;	
		
	}
*/

/*
void WordUpMove(void){
	uchar i,j;

	buffer[15][0]=*pc[0];
	display(3);
	UpMove();
	buffer[15][0]=*(pc[0]+1);
	display(3);
	UpMove();
	for(i=0;i<12;i++){
		buffer[15][0]=*(pc[0]+2+i);
		for(j=0;j<2;j++){
			buffer[15][1+3*j]=*(pc[1+2*j]+2*i);
			buffer[15][2+3*j]=*(pc[1+2*j]+1+2*i)|(*(pc[2+2*j]+2*i)>>4);
			buffer[15][3+3*j]=(*(pc[2+2*j]+2*i)<<4)|(*(pc[2+2*j]+1+2*i)>>4);
		}
		display(3);
		UpMove();
	}
	//UpMove();
	buffer[15][0]=*(pc[0]+14);
	display(3);
	UpMove();
	buffer[15][0]=*(pc[0]+15);
 				
	display(150);
	display(150);
	//display(150);

}
*/


⌨️ 快捷键说明

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