POV led一直是自己喜欢玩的一类DIY,这次再升级一下,制作一款立体和平面都可以显示文字的旋转LED,单片机选择STC12C5A32S2 LQFP48脚封装,IO口数量35个,就是说用这35个 控制35个LED灯,不选择驱动芯片的原因是 制作难度会上升,有易到难的设计,慢慢提升。
原理图的设计
原理,图片上的文字都有说明,看不清楚的到文章末下载资料后查看
无线供电板原理图
准备材料:
焊接调试,制作过程比较顺利,没有一下提升太多难度,对原理图的设计和程序的设计又进了一步
程序断断续续调试了一段时间 实现的效果
void main(void)
{
uint i=0,j=0 ;
P1=0XFF;
P2=0XFF;
P0=0XFF;
// led1=0 ;
//主程序中只检测按键
while(1)
{
if(KEY==0) //红外接收管 判断起始位
{
j++;
if(j>768) //根据显示的字数定义改数值768/16=48个字 显示完48个字后 重新开始
{
j=0 ;
}
// 由于半径问题 平面显示一列 立体要显示两列 才够平衡 不然立体的字很宽
for(i=j;i<96+j;i++) //每转一圈 前进一列 这里定义一圈中同时显示96/16=6个字,
{ //在这个程序中如果此参数设置过大会造成头吃尾的后果,如果过少盲点又会太大
//所以比较麻烦 要根据电机速度来调整此参数
P1=love[i*2]; //字幕数据低位送显示
P0=love[i*2+1]; //字幕数据高位送显示 //这里行和列 都是IO口独立驱动的LED
P2=zimo[i*4]; //送数据低位显示
P4=(zimo[i*4+1]);//送数据高位显示 这里用了单片机P4 和P5口 是LQFP48脚才有的
P5=(zimo[i*4+1])>>4;//这里行和列 都是IO口独立驱动的LED
DelayUs(150); //延时让LED亮起来 每列延时的时间
P4=P5=0XFF;
P2=zimo[i*4+2]; //送数据低位显示
P4=(zimo[i*4+3]);//送数据高位显示 这里用了单片机P4 和P5口 是LQFP48脚才有的
P5=(zimo[i*4+3])>>4;//这里行和列 都是IO口独立驱动的LED
DelayUs(150); //延时让LED亮起来 每列延时的时间
P2=0XFF;
P4=P5=0XFF;
P1=0XFF;
P0=0XFF;
}
}
}
}
更多的程序资料到这下载,包括原理图元件清单,单片机程序,上位机改字软件
链接:https://pan.baidu.com/s/1NYSIjJ3Y06JET0UAtPDm8A?pwd=zx5j
提取码:zx5j