@TOC 最开始接触POV的制作应该是在大学一年级的时候,看到师兄们做的摇摇棒,感觉好有意思,那个时候只会用STC89C52,当时用一块大的洞洞板 分成几份,又细又长的洞洞板,全用插件手工焊接,那个时候有兴趣的支撑,焊接都不怕麻烦。那个时候做出来摇晃起来就能看到自己设定的图案,后来慢慢的得知这个原理其实就是POV。
如果你在网上搜索“POVled”一词(POV即persistancd of vision),会找到世界各地的各种ED旋转屏的制作介绍,那些摇晃出的空中图案,漂浮在车轮上的动画,以及形态各异的时钟,一定给你留下深刻印象。看到这些千奇百怪、创意无限的电子作品,除了羡慕、敬佩、感叹外,你是否想过自己亲自动手也做一个,做一个属于你自己的LED旋转屏呢?其实,无论你看到的LED旋转屏如何神奇,如何复杂,其原理都一样,也很简单,说白了就是一个晃动的流水灯。
下面就来分享一款基于STC89C52制作的十字单色旋转LED!
考虑到旋转的电路板要尽量轻一些,如果主板上背个电池,就显得太重了,因此我们采用无线供电的方式,现如今无线供电技术已经非常成熟了,我们选择一个成本比较低的方案来设计制作,这种电流小一点的无线供电淘宝大概就3元左右
接下来就要选则一个电机,我用了配套的370电机

最后,还需要一个电机带动旋转板子的结构件

制作POV系列 必须要买的就是以上3种配件,剩下的就是画板和采购元件了
先来画无线供电的电路板

这是一个自激震荡电路,线圈出来是交流电压,2个线圈感应得电供给旋转主板整流稳压。
接下来我们还是采用STC89C52 LQFP44脚的 单片机来设计旋转板和灯板

图画好后就可以发给嘉立创白嫖一次打样了,因此有免费打样的可以不需要花钱做电路板了,把需要的元件淘宝买一下,焊接制作过程忽略了,

对了亚克力直径淘宝找人做一下,或者用3D打印一个,又或者找个铁盒子来当底座用,能固定住电机就可以了
接下来是程序的编写了

#include "NEW_8051.H"
#include "task.h"
#include <stddef.h>bit BIT_timeout=0;
uint i=0,j=0;
#define ucNumRows 176//定义一周显示字个数 一个字16列 160/16=10个字
/*********延时子程序**********/
/*****n(us)延时子程序*****/
void DelayUs(uint N)
{uint x ;for(x=0;x<=N;x++);
}/*********中断子程序**********/
void int0() interrupt 0  //使用外部中断0
{BIT_timeout=1; //起点标志位
}/********************************/
void start(void)
{P1=0XFF;P2=0XFF;P0=0XFF;P3=0XFF; }
/***************************************/
void OS_ALLRun(void)
{if(BIT_timeout)    //起点判断{           BIT_timeout=0; //清零j++;                         if( j>1920 )//显示完文字后 循环; j=16*需要显示的字数    这里大概有120个字符 所以120*16=1920{j=0 ;}            for(i=j;i<ucNumRows+j;i++)  //立体显示176列 数据   176/16=11个字{                               P2=zimo[i*2];  //送数据低位显示P0=zimo[i*2+1];//送数据高位显示DelayUs(15);P0=P2=0XFF;                          if(BIT_timeout)//这里如果没有显示完一圈的数据 回到起点了//直接跳出 就不会出现头吃尾的现象 而且盲点很小{return;}}}
}
#include "NEW_8051.H"
#include "task.h"bit BIT_10MS;extern void OS_ALLRun(void);
extern void start(void);/*********************************************************************************************************
** 函数名称: init
** 功能描述: 初始化程序,此处包含定时器0、串行口初始化
** 输  入: 无
** 输  出: 无
** 全局变量: 无
** 调用模块: **
** 作  者:
** 日  期:
**-------------------------------------------------------------------------------------------------------
** 修 改 人:
** 日  期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void init()
{//"系统初始化"//IE = 0x00;      //"清除中断"EA = 1;           //总中断//ES = 1;         //4"串行中断允许"//EX0 = 1;        //0"外部中断0允许"//ET0 = 1;        //1"定时器0中断允许"//EX1 = 1;        //2"外部中断1允许"//ET1 = 1;        //3"定时器1中断允许"//ET2 = 1;//IP = 0;         //"清除中断优先级"//PS = 1;         //"串行中断优先"//PX0 = 1;        //"外部中断0"//PT0 = 1;        //"定时器中断0"//PX1 = 1;        //"外部中断1"//PT1 = 0;        //"定时器中断1"//TCON--------     "定时器控制寄存器",   TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0//TCON = 0;//TF1             "T1溢出标志"//TR1 = 1;        //"T1运行控制"//TF0             "T0溢出标志"//TR0 = 1;        //"T0运行控制"//IE1             "外部中断1申请标志"//IT1 = 1;        //"外部中断1触发方式 0=电平 1=边沿"//IE0             "外部中断0申请标志"//IT0 = 1;        //"外部中断0触发方式 0=电平 1=边沿"//TMOD--------    "定时器模式控制寄存器"//  | GATE   | C//T   | M0     | M1    | GATE   | C//T   | M0       | M1        |//"高4位用于T1  低4位用于T0"//TMOD = 0x21;//SCON  "串行控制"//| SM0 | SM1 | SM2 | REN | TB8 | RB8 | TI  | RI  |//"| SM0  SM1 | 工作方式  |   说    明   |   波 特 率    |"//"|   0    0 | 方 式 0   |? 同步移位   |   fosc/12     |"//"|   0    1 | 方 式 1   | 10位异步收发 |  定时器控制   |"//"|   1    0 | 方 式 2   | 11位异步收发 |fosc/32|fosc/64|"//"|   1    1 | 方 式 3   | 11位异步收发 |  定时器控制   |"//"SM2 多机通讯允许"//"REN 接收允许控制"//"TB8 发送数据第9位"//"RB8 接收数据第9位"//"TI  发送中断标志"//"RI  接受中断标志"//SCON = 0x50;//PCON "电源控制寄存器"//SMOD"波特率选择位 =1 方式1,2,3 波特率加倍"//"波特率=2^(sod)*fosc/(32*12*(256-初值))"//T2CON = 0x0;//TR2 = 1;//ET2 = 1;
//-----------中斷初始化-------------------------------------------------  BELL
//INT0 init
#ifdef EN_OS_INT0IT0 = 1;    //外部中断为边沿触发EX0 = 1;    //允许外部中断
#endif#ifdef EN_OS_INT1
//  PX1 = 1;    //"外部中断1"IT1 = 1;    //外部中断为边沿触发EX1 = 1;    //允许外部中断#endif#ifdef EN_OS_SERIALSCON = 0x50;//TMOD|= 0x20;//BRT       = 0xfb;  //0xfb: 18.432MHz,12T,SMOD=0,9600bpsAUXR   |= 0x11;TH1  = 0xFB;TL1  = 0xFB;TR1  = 1; ES   = 1;       //允許串口中斷PS = 1;         //"串行中断优先"PSH;
#endif#ifdef EN_OS_TIMER0
/****************定时器0初始化****************/TMOD|=0X02;ET0=1; TH0=0x000; //设定定时器初值 20USTL0=0x0E1; //TR0=1;
#endif
/****************定时器1初始化****************/
#ifdef EN_OS_TIMER1TMOD|=0X20;//8位自动重载模式ET1=1;  //定时器0开中断TH1=0x00;//定时160us 晶振18.432MTL1=0x00;
#endif
/***************************/
#ifdef EN_OS_UART2S2CON  = 0x50;  //0101,0000 8位可变波特率,无奇偶校验位,允许接收BRT       = 0xfb;  //0xfb: 18.432MHz,12T,SMOD=0,9600bpsAUXR   |= 0x11;  //T0x12,T1x12,UART_M0x6,BRTR,S2SMOD,BRTx12,EXTRAM,S1BRSIE2      = 0x01;    //允许串口2中断,ES2=1
#endif/***/
#ifdef EN_OS_PCA0//用于16位定时CMOD = 0x80;      //12分频CCON = 0x00;   //清中断标志CL = 0;CH = 0;CCAP0H = 0xEF; //40ms定时CCAP0L = 0xD8;
//  CCAPM0 = 0x49; //设置PCA0为16位定时器,允许PCA模块0中断//CR=1; //启动PCA计数
#endif
/*******************************************/
#ifdef EN_OS_PCA1//用于16位定时CMOD = 0x80;        //12分频CCON = 0x00;   //清中断标志CL = 0;CH = 0;  CCAP1H =0x01;CCAP1L =0x68;  //us定时//CCAPM1 = 0x49;  允许PCA模块1中断#endif
/***********************************************************************/
}
/*********************************************************************************************************
** 函数名称: main
** 功能描述: 主函数,用户程序从这里执行
** 输  入: 无
** 输  出: 无
** 全局变量: 无
** 调用模块: init()
**
** 作  者:
** 日  期:
**-------------------------------------------------------------------------------------------------------
** 修 改 人:
** 日  期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/void main(void)
{init();start();while(1){OS_ALLRun();}
}
#include "NEW_8051.H"
#include "task.h"//PC2002字幕软件  配置 (逐列 阳码 逆向)
uchar code zimo[]={
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",0*/0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",1*/0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",2*/0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",3*/0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",4*/0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xFF,0xBF,0xFE,0xDF,0xFD,
0x6F,0xFB,0xB7,0xF6,0xDB,0xED,0xED,0xDB,0xF6,0xB7,0xFB,0x6F,0xFD,0xDF,0xFF,0xFF,/*"《",0*/0xEF,0xFD,0xF7,0xFE,0x7B,0xFF,0x39,0x00,0x8C,0xFF,0xDD,0xFF,0xBF,0xFF,0xBB,0xFF,
0xBB,0xBF,0xBB,0x7F,0x3B,0x80,0xBB,0xFF,0xBB,0xFF,0xBB,0xFF,0xBF,0xFF,0xFF,0xFF,/*"行",1*/0xEF,0xFD,0xF7,0xFE,0x7B,0xFF,0x39,0x00,0x8C,0xFF,0xDD,0xFF,0xBF,0xFF,0xBB,0xFF,
0xBB,0xBF,0xBB,0x7F,0x3B,0x80,0xBB,0xFF,0xBB,0xFF,0xBB,0xFF,0xBF,0xFF,0xFF,0xFF,/*"行",2*/0xF7,0xBF,0xF7,0xBF,0xF5,0xB7,0x15,0xB4,0x55,0xB5,0x55,0xB5,0x55,0xB5,0x00,0x80,
0x56,0xB5,0x56,0xB5,0x56,0xB5,0x16,0xB4,0xF7,0xB7,0xF7,0xBF,0xF7,0xBF,0xFF,0xFF,/*"重",3*/0xEF,0xFD,0xF7,0xFE,0x7B,0xFF,0x39,0x00,0x8C,0xFF,0xDD,0xFF,0xBF,0xFF,0xBB,0xFF,
0xBB,0xBF,0xBB,0x7F,0x3B,0x80,0xBB,0xFF,0xBB,0xFF,0xBB,0xFF,0xBF,0xFF,0xFF,0xFF,/*"行",4*/0xEF,0xFD,0xF7,0xFE,0x7B,0xFF,0x39,0x00,0x8C,0xFF,0xDD,0xFF,0xBF,0xFF,0xBB,0xFF,
0xBB,0xBF,0xBB,0x7F,0x3B,0x80,0xBB,0xFF,0xBB,0xFF,0xBB,0xFF,0xBF,0xFF,0xFF,0xFF,/*"行",5*/0xFD,0xDF,0xFB,0x6F,0xF6,0xB7,0xED,0xDB,0xDB,0xED,0xB7,0xF6,0x6F,0xFB,0xDF,0xFD,
0xBF,0xFE,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*"》",6*/0xFF,0xDF,0xF7,0x9F,0xF7,0xCF,0xF7,0xF7,0xF7,0xE7,0xF7,0xDB,0xF6,0xDB,0xF5,0xDD,
0xF3,0xBE,0x77,0xBF,0xB7,0xBF,0xD7,0xBF,0xE3,0xBF,0xF7,0xBF,0xFF,0xBF,0xFF,0xFF,/*"之",7*/0xFF,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,
0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x3F,0xFF,0x7F,0xFF,0xFF,0xFF,/*"一",8*/0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",9*/0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",10*/0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",11*/0xEF,0xFD,0xF7,0xFE,0x7B,0xFF,0x39,0x00,0x8C,0xFF,0xDD,0xFF,0xBF,0xFF,0xBB,0xFF,
0xBB,0xBF,0xBB,0x7F,0x3B,0x80,0xBB,0xFF,0xBB,0xFF,0xBB,0xFF,0xBF,0xFF,0xFF,0xFF,/*"行",12*/0xEF,0xFD,0xF7,0xFE,0x7B,0xFF,0x39,0x00,0x8C,0xFF,0xDD,0xFF,0xBF,0xFF,0xBB,0xFF,
0xBB,0xBF,0xBB,0x7F,0x3B,0x80,0xBB,0xFF,0xBB,0xFF,0xBB,0xFF,0xBF,0xFF,0xFF,0xFF,/*"行",13*/0xF7,0xBF,0xF7,0xBF,0xF5,0xB7,0x15,0xB4,0x55,0xB5,0x55,0xB5,0x55,0xB5,0x00,0x80,
0x56,0xB5,0x56,0xB5,0x56,0xB5,0x16,0xB4,0xF7,0xB7,0xF7,0xBF,0xF7,0xBF,0xFF,0xFF,/*"重",14*/0xEF,0xFD,0xF7,0xFE,0x7B,0xFF,0x39,0x00,0x8C,0xFF,0xDD,0xFF,0xBF,0xFF,0xBB,0xFF,
0xBB,0xBF,0xBB,0x7F,0x3B,0x80,0xBB,0xFF,0xBB,0xFF,0xBB,0xFF,0xBF,0xFF,0xFF,0xFF,/*"行",15*/0xEF,0xFD,0xF7,0xFE,0x7B,0xFF,0x39,0x00,0x8C,0xFF,0xDD,0xFF,0xBF,0xFF,0xBB,0xFF,
0xBB,0xBF,0xBB,0x7F,0x3B,0x80,0xBB,0xFF,0xBB,0xFF,0xBB,0xFF,0xBF,0xFF,0xFF,0xFF,/*"行",16*/0xFF,0xFF,0xFF,0xFF,0xFF,0xA7,0xFF,0xC7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*",",17*/
};

字幕软件PC2002设置参考图

程序比较简单,成本也不高,适合大学的学生入门制作,用兴趣来引导单片机的学习,我觉得是最好的!
旋转的效果如下

十字旋转LED POV制作

下面我将制作资料打包分享给大家!!
链接:https://pan.baidu.com/s/1SaaE3l9ksqv6uKFYNREHKg?pwd=ugxx
提取码:ugxx

POV系列制作之十字旋转LED相关推荐

  1. POV系列之立体平面旋转LED

    POV led一直是自己喜欢玩的一类DIY,这次再升级一下,制作一款立体和平面都可以显示文字的旋转LED,单片机选择STC12C5A32S2 LQFP48脚封装,IO口数量35个,就是说用这35个 控 ...

  2. 基于Arduino制作的32灯立体旋转LED

    上一篇做了基于STC89C52的十字旋转LED,现在用Arduino来制作一款旋转LD,灯数量加到32颗,说干就干,前后画图.学习Arduino .调试.用了20多天时间.接下来分享一下这个旋转LED ...

  3. POV系列之彩色16灯旋转LED

    做了好几款单色的旋转LED,慢慢的要尝试彩色旋转LED了,这次先试试做成7彩色的,灯采用3528RGB灯,单片机采用IAP15W4K61S4,这芯片性价比不高了,由于其有60个IO口驱动16个RGB灯 ...

  4. 【转帖】POV LED基于51单片机的旋转LED电子钟

    http://hi.baidu.com/52_diy/blog/item/d8310dfac0a97716a8d3114b.html POV即persistancd of vision 利用单片机控制 ...

  5. 单片机旋转led程序c语言,基于单片机POV的旋转LED灯程序

    /************************************************************************************** *Name:旋转LED ...

  6. appinventor贪吃蛇制作步骤_旋转RGB制作指导

    0 前言 旋转LED的原理这里就不多说了,大家可以自行去查阅相关资料.之前是采用的16个单色LED,显示效果比较单一,这次采用了16个RGB,每个RGB最多可以显示7种颜色,增加了软硬件设计的复杂度, ...

  7. 【花雕动手做】有趣好玩的音乐可视化系列项目(28)--LED乒乓球灯

    偶然心血来潮,想要做一个音乐可视化的系列专题.这个专题的难度有点高,涉及面也比较广泛,相关的FFT和FHT等算法也相当复杂,不过还是打算从最简单的开始,实际动手做做试验,耐心尝试一下各种方案,逐步积累 ...

  8. 单片机旋转led程序c语言,[ 单片机 ] 旋转LED制做过程

    8.我采用的是USB烧写器,烧写的程序 9.我用的电源是一个LM317可调稳压电源 10.通电试验 需要注意的是要安排好电机轴两边的电路重量尽量相近. 2.程序 程序很简单,我这里给出一个C51 的示 ...

  9. 旋转LED:光の翼电子钟

    文章目录 旋转LED:光の翼电子钟 制作目的 经验分享 原理图 PCB 实物图 BOM 程序 成本计算 视频 白嫖 旋转LED:光の翼电子钟 制作目的 我是学生,面临考研,想脱离手机. 锻炼能力,巩固 ...

最新文章

  1. 句法分析常用算法框架以及NLPIR、Dependency Viwer
  2. 远程桌面的分辨率最大不会超过本机真实物理机的分辨率
  3. c程序语言设定定义域,4.22C语言学习日记:变量的定义域及编译预处理
  4. java note项目_note(java)
  5. 观察者模式 Observer 发布订阅模式 源 监听 行为型 设计模式(二十三)
  6. Vuex 2.0 源码分析
  7. 4.6 高斯约当消元法
  8. ROS 教程之 navigation :在 catkin 环境下创建costmap layer plugin
  9. CCCC-GPLT L3-014. 周游世界 团体程序设计天梯赛
  10. 容器使用的12条军规——《Effective+STL中文版》试读
  11. 程序员如何保护好自己的发际线
  12. android 8187驱动 win7,RTL8187 无线网卡在win7下的驱动问题
  13. jQuery,JS实现自定义鼠标右键菜单
  14. Java程序编写 • 【第4章 程序:随机本周菜品;简易计算器】
  15. linux用gzip文件,Linux中的Gzip命令
  16. 在python中安装包出现Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None))
  17. 开源公告|更可信的人脸识别,腾讯优图TFace正式开源!
  18. linux文件系统的基本特征,Linux文件系统的基本结构
  19. MATLAB怎么让三围图动起来,Matlab小技巧 -- 让图动起来!
  20. 无法打开因为apple无法检查其是否包含恶意软件_最全汇总:iPhone 无法充电或充电缓慢的原因及解决办法...

热门文章

  1. PHP实现RSA算法
  2. 请编程实现求解s=1/(1*2)+1/(2*3)+1/(3*4)+……+1/(10*11),输出结果保留两位小数。
  3. JAVA中DateTime获取当前时间
  4. java面试题对日开发_【埃森哲Java面试】面试的是对日java的后端开发-看准网
  5. SpringBoot导出Jar包并测试(使用IDEA)
  6. LeetCode每日一题——904. 水果成篮
  7. LeetCode_904 水果成篮
  8. CTF Web方向考点总结
  9. logback中logger的 additivity 属性
  10. rpm查询,删除,安装命令详解