(一)第一篇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(K1)
{
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(x3)
{
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#的波形显示,及和下位机串口通信知识,以及下位机程序的编写。