POV系列制作之十字旋转LED
@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相关推荐
- POV系列之立体平面旋转LED
POV led一直是自己喜欢玩的一类DIY,这次再升级一下,制作一款立体和平面都可以显示文字的旋转LED,单片机选择STC12C5A32S2 LQFP48脚封装,IO口数量35个,就是说用这35个 控 ...
- 基于Arduino制作的32灯立体旋转LED
上一篇做了基于STC89C52的十字旋转LED,现在用Arduino来制作一款旋转LD,灯数量加到32颗,说干就干,前后画图.学习Arduino .调试.用了20多天时间.接下来分享一下这个旋转LED ...
- POV系列之彩色16灯旋转LED
做了好几款单色的旋转LED,慢慢的要尝试彩色旋转LED了,这次先试试做成7彩色的,灯采用3528RGB灯,单片机采用IAP15W4K61S4,这芯片性价比不高了,由于其有60个IO口驱动16个RGB灯 ...
- 【转帖】POV LED基于51单片机的旋转LED电子钟
http://hi.baidu.com/52_diy/blog/item/d8310dfac0a97716a8d3114b.html POV即persistancd of vision 利用单片机控制 ...
- 单片机旋转led程序c语言,基于单片机POV的旋转LED灯程序
/************************************************************************************** *Name:旋转LED ...
- appinventor贪吃蛇制作步骤_旋转RGB制作指导
0 前言 旋转LED的原理这里就不多说了,大家可以自行去查阅相关资料.之前是采用的16个单色LED,显示效果比较单一,这次采用了16个RGB,每个RGB最多可以显示7种颜色,增加了软硬件设计的复杂度, ...
- 【花雕动手做】有趣好玩的音乐可视化系列项目(28)--LED乒乓球灯
偶然心血来潮,想要做一个音乐可视化的系列专题.这个专题的难度有点高,涉及面也比较广泛,相关的FFT和FHT等算法也相当复杂,不过还是打算从最简单的开始,实际动手做做试验,耐心尝试一下各种方案,逐步积累 ...
- 单片机旋转led程序c语言,[ 单片机 ] 旋转LED制做过程
8.我采用的是USB烧写器,烧写的程序 9.我用的电源是一个LM317可调稳压电源 10.通电试验 需要注意的是要安排好电机轴两边的电路重量尽量相近. 2.程序 程序很简单,我这里给出一个C51 的示 ...
- 旋转LED:光の翼电子钟
文章目录 旋转LED:光の翼电子钟 制作目的 经验分享 原理图 PCB 实物图 BOM 程序 成本计算 视频 白嫖 旋转LED:光の翼电子钟 制作目的 我是学生,面临考研,想脱离手机. 锻炼能力,巩固 ...
最新文章
- 句法分析常用算法框架以及NLPIR、Dependency Viwer
- 远程桌面的分辨率最大不会超过本机真实物理机的分辨率
- c程序语言设定定义域,4.22C语言学习日记:变量的定义域及编译预处理
- java note项目_note(java)
- 观察者模式 Observer 发布订阅模式 源 监听 行为型 设计模式(二十三)
- Vuex 2.0 源码分析
- 4.6 高斯约当消元法
- ROS 教程之 navigation :在 catkin 环境下创建costmap layer plugin
- CCCC-GPLT L3-014. 周游世界 团体程序设计天梯赛
- 容器使用的12条军规——《Effective+STL中文版》试读
- 程序员如何保护好自己的发际线
- android 8187驱动 win7,RTL8187 无线网卡在win7下的驱动问题
- jQuery,JS实现自定义鼠标右键菜单
- Java程序编写 • 【第4章 程序:随机本周菜品;简易计算器】
- linux用gzip文件,Linux中的Gzip命令
- 在python中安装包出现Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None))
- 开源公告|更可信的人脸识别,腾讯优图TFace正式开源!
- linux文件系统的基本特征,Linux文件系统的基本结构
- MATLAB怎么让三围图动起来,Matlab小技巧 -- 让图动起来!
- 无法打开因为apple无法检查其是否包含恶意软件_最全汇总:iPhone 无法充电或充电缓慢的原因及解决办法...
热门文章
- PHP实现RSA算法
- 请编程实现求解s=1/(1*2)+1/(2*3)+1/(3*4)+……+1/(10*11),输出结果保留两位小数。
- JAVA中DateTime获取当前时间
- java面试题对日开发_【埃森哲Java面试】面试的是对日java的后端开发-看准网
- SpringBoot导出Jar包并测试(使用IDEA)
- LeetCode每日一题——904. 水果成篮
- LeetCode_904 水果成篮
- CTF Web方向考点总结
- logback中logger的 additivity 属性
- rpm查询,删除,安装命令详解