39、基于51单片机的16x16点阵广告牌设计(全套资料)

编号:39

基于51单片机的16x16点阵广告牌设计

功能描述:

      本设计由51单片机系统+4路74LS595++1路按键16*16点阵屏组成
1、主控采用89C52单片机
2、利用74LS595芯片驱动 16*16点阵模块显示
3、可实现汉字上移、下移、左移、右移显示,通按键进行切换状态。
4、默认显示汉字“我们毕业了”,可通过取模软件自行改字。

Proteus7.8以上版本均可使用
 

视频演示链接:

39、基于51单片机的16x16点阵广告牌设计

仿真图:

电路图:

实物图:

程序源码:

//主函数
void main()
{
	EA=1;
	TMOD=0x01;
	TH0=0x3c;
	TL0=0xb0;
	ET0=1;
	TR0=1;
	//595c初始化
	Init595_l1();
	Init595_l2();
	Init595_c1();
	Init595_c2();
	
	//循环演示
	while(1)	  //循环
	{  
		if(flag==1)
		{
			for(k=0;k<5;k++)                                  //更改k能改变速度
			{ 
				for(i=1;i<17;i++)									 	//一个for循环,分别选中16个列
				{  
					if(flag==1)
					{ 
						Write_byte595_l1(0xff);
						Write_byte595_l2(0xff);
						if(i<9)
						{
							Write_byte595_c1(a[i-1]);
							Write_byte595_c2(0x00);
						}
						else
						{
							Write_byte595_c2(a[i-9]);
							Write_byte595_c1(0x00);
						}
						Write_byte595_l1(H1[i*2-2+2*X]);
						Write_byte595_l2(H1[i*2-1+2*X]);			//显示内容
						delay(7);
					}
				}
			}
		}                                  //左移函数
		if(flag==2)
		{
			for(k=0;k<5;k++)
			{  
				for(i=1;i<17;i++)									 	//一个for循环,分别选中16个列
				{  
					if(flag==2)
					{ 
						Write_byte595_l1(0xff);
						Write_byte595_l2(0xff);
						if(i<9)
						{
							Write_byte595_c1(a[i-1]);
							Write_byte595_c2(0x00);
						}
						else
						{
							Write_byte595_c2(a[i-9]);
							Write_byte595_c1(0x00);
						}
						Write_byte595_l2(H2[i*2-1-2*X+32*(zishu+1)]);		   //32乘以要显示的汉字加1
						Write_byte595_l1(H2[i*2-2-2*X+32*(zishu+1)]);		   //32乘以要显示的汉字加1
						delay(7);
					}
				}
			}
		}                                   //右移函数
		
		if(flag==3)
		{
			for(k=0;k<5;k++)
			{  
				for(i=1;i<17;i++)									 	//一个for循环,分别选中16个列
				{ 	
					if(flag==3)
					{
						Write_byte595_c1(0x00);
						Write_byte595_c2(0x00);
						if(i<9)
						{
							Write_byte595_l1(b[i-1]);
							Write_byte595_l2(0xff);
						}
						else
						{
							Write_byte595_l2(b[i-9]);
							Write_byte595_l1(0xff);
						}
						Write_byte595_c1(H3[i*2-2+2*X]);
						Write_byte595_c2(H3[i*2-1+2*X]);
						delay(7);
					}
				}
			}
		}                                         // 上移函数		
		if(flag==4)
		{
			for(k=0;k<5;k++)
			{  
				for(i=1;i<17;i++)									 	//一个for循环,分别选中16个列
				{ 	
					if(flag==4)
					{
						Write_byte595_c1(0x00);
						Write_byte595_c2(0x00);
						if(i<9)
						{
							Write_byte595_l1(b[i-1]);
							Write_byte595_l2(0xff);
						}
						else
						{
							Write_byte595_l2(b[i-9]);
							Write_byte595_l1(0xff);
						}
						Write_byte595_c1(H4[i*2-2-2*X+32*(zishu+1)]);			  //32乘以要显示的汉字加1
						Write_byte595_c2(H4[i*2-1-2*X+32*(zishu+1)]);			  //32乘以要显示的汉字加1
						delay(7);
					}
				}
			} 
		}	                     //下移函数	
		if(flag==5)
		{
			for(j=1;j<(zishu+2);j++)				   //字数+2(加1时是正好都显示,为了显示完显示一个空格,所以此处加2)
			{ 
				for(k=0;k<20;k++)			   //调速
				{  
					for(i=1;i<17;i++)									 	//一个for循环,分别选中16个列
					{  
						if(flag==5)
						{ 
							Write_byte595_l1(0xff);
							Write_byte595_l2(0xff);
							
							if(i<9)
							{
								Write_byte595_c1(a[i-1]);
								Write_byte595_c2(0x00);
							}
							else
							{
								Write_byte595_c2(a[i-9]);
								Write_byte595_c1(0x00);
							}
							Write_byte595_l1(H1[i*2-2+0x20*j]);
							Write_byte595_l2(H1[i*2-1+0x20*j]);			//显示内容
							delay(7);
						}
					}
				}                                        //逐次显示
			
				Write_byte595_c1(0x00);
				Write_byte595_c2(0x00);
				Write_byte595_l1(0xff);
				Write_byte595_l2(0xff);
				delay(70);
			}
		
		}
		X++;														//显示左移
		if(X==16+16*zishu)													//16加16乘以要显示的汉字数
		X=0;													//从头开始
	}
}

文件下载:

百度网盘 请输入提取码

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

单片机技能设计

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值