基于51单片机的点阵广告栏设计

(一)第一篇CSDN博客,基于16*16点阵广告栏设计

(1)硬件设计

在这里插入图片描述

  • 这是仿真图硬件设计电路,主要由AT89C51单片机,一个4-16译码器,4个8*8点阵,组成,点阵主要设计了5种功能,其中4种为点阵显示功能,包括静止,闪烁,正向平移和反向平移,主要由上边的按键控制,另一个功能是由外部串口更改内部数组内容。主要由COMPIM这个空间和串口配置工具进行串口连接,串口助手进行串口更改信息。

在这里插入图片描述在这里插入图片描述

  • 这是点阵图和译码器的连接图,A0-A15是对行进行选通,然后通过P0 P2端对列码低八位和高八位赋值。
    在这里插入图片描述在这里插入图片描述
  • COMPIM l连线及配置,RXD接RXD,TXD接TXD,参数配置如上,串口根据自己的配置进行填写。
  • 在这里插入图片描述
    从FIRST PORT中选择COM3,下面选择COM4电机ADD pair就行串口连接,如果你配置的是COM3 COM4口那么在COMPIM中就可以写COM4,用串口助手时就可以写COM3。在这里插入图片描述

(2)代码

#include<reg52.h>
#include<chuankou.h>
#define uchar unsigned char
#define uint unsigned int
#define out0 P0
#define out2 P2
#define out1 P1
sbit P3_6=P3^6;//进去串口模式指示灯

uchar K=0,x=0;//k=检测串口标志位 x=进入不同的模式标志位
void delay(uint j)
{
uchar i=250;
for(;j>0;j–)
{
while(–i);
i=100;
}
}

uchar string[]=
{

0x7F,0xF7,0x7B,0xF7,0xBB,0xF7,0xBB,0xF7,0xDB,0xF6,0xEB,0xB6,0xF3,0x76,0x00,0x86,
0xF3,0xF2,0xEB,0xF4,0xDB,0xF6,0xBB,0xF7,0xBB,0xF7,0x7B,0xF7,0x7F,0xF7,0xFF,0xFF,

0xFF,0xFF,0x03,0xC0,0x7B,0xEF,0x7B,0xEF,0x03,0xC0,0xFF,0x7F,0x77,0xBD,0x77,0xCD,
0xB0,0xF1,0xA7,0xFD,0xDB,0xFD,0xAB,0xC1,0x7B,0xBD,0x1B,0xBD,0xFF,0x8D,0xFF,0xFF

};
unsigned char b=sizeof(string)/sizeof(char); //检测数组长度
void main()
{
uchar i,j,n,k; //
P3_6=1;
EX0=1;
IT0=1;
EX1=1;
IT1=1;
EA=1;
init_com();//初始化串口
3、平移功能
while(1)
{
while(x0)
{
for(j=0;j<b/2;j++)
{
while(K
1)
{
for(i=0;i<64;i++)
{
P1=du_com();
string[i]=P1;
}
K=0;
P3_6=1;
}

    for(n=0;n<40;n++)
	{
	      for(i=0;i<16;i++)
		  {
			out1=i%16;
			out0=string[(i*2+(j*2))%b];
			out2=string[(i*2+1+(j*2))%b];
			delay(1);
			out0=0xff;
			out2=0xff;
      }
   }
}		

}
4、反向平移功能
while(x==1)
{
for(j=b/2;j>0;j–)
{

    for(n=0;n<40;n++)
	{
	      for(i=0;i<16;i++)
		  {
			out1=i%16;
			out0=string[(i*2+(j*2))%b];
			out2=string[(i*2+1+(j*2))%b];
			delay(1);
			out0=0xff;
			out2=0xff;
         }
    }
 }		

}
5、静态显示
while(x2)
{
for(n=0;n<40;n++)
{
for(i=0;i<16;i++)
{
out1=i%16;
out0=string[(i2+(j2))%b];
out2=string[(i2+1+(j2))%b];
delay(1);
out0=0xff;
out2=0xff;
}
}
}
6、闪烁功能
while(x
3)
{
for(k=0;k<2;k++)
{
for(n=0;n<40;n++)
{
for(i=0;i<16;i++)
{
out1=i%16;
out0=string[i2+k32];
out2=string[i2+1+k32];
delay(1);
out0=0xff;
out2=0xff;
}

	    }	
	}
}

}
}

void fangshi1(void) interrupt 0
{
x++;
if(x==4)
x=0;

}
void wai1(void) interrupt 2
{

 P3_6=0;
 K=1;

}

  • 第一次用CSDN,第一次写,写的不足的地方希望大家批评改正,有什么疑问,可以在下面留言。下篇博客写基于C#的波形显示,及和下位机串口通信知识,以及下位机程序的编写。
  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值