单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 37662|回复: 185
打印 上一主题 下一主题
收起左侧

创意pov镜面旋转LED屏(含C源码、原理图)

  [复制链接]
跳转到指定楼层
楼主
在51hei黑论坛也逛了蛮久了,一直在看别人的作品,今天我也贡献一点内容,大家多多指教啊.
POV,英文Persistance Of Vision的缩写,即视觉暂留的意思。
用POV的原理来做显示屏,优势主要表现在:能以少量LED实现传统方式下海量LED才能实现的显示屏。例如POV的16个LED可以轻松地同时显示16个汉字,而传统LED屏需要4096个LED。 随之而来的是,体积小巧便于安装在适当的场合。字样或图案的显示效果,如漂浮在半空中。

网上有老外做的LED旋转显示屏,在技术上软硬件都不难,只需要花些时间慢慢调就能出来。关键是,给旋转的LED供电,对电子爱好者来说,是个麻烦事。这里,给出一个不需要给LED电路供电的方法。即让LED和单片机电路固定不动,而是旋转一面镜子。原理1.用一个小直流电机将一块镜子旋转起来(镜子背面贴一个小磁铁片);2.在镜子旋转的支架上,固定一个干黄管或霍尔芯片(检测是否有磁铁靠近),霍尔芯片的输出脚连到单片机上,这样单片机就知道电机的旋转速度。3.根据人眼的视觉滞留(大概是0.1~0.2秒),和上述测到的实时的电机旋转速度,在不同的瞬间,点亮LED,最终就形成LED显示的一个屏幕。(小时候的晚上,拿着蚊香在空中划过,就变成了一条红线,同理,一条LED线划过,会变成一个面。)单片机电路 实物




放置单片机电路:

旋转后 显示效果:

由于此旋转结构是木头铁皮做的支架,精度较低,所以显示效果还可以再提高很多,这里只是抛砖引玉。


介绍

下面实物图中有两部分组成,一是旋转LED屏Demo板,二是风扇电机。Demo板固定在旋转轴上,电机转动后,Demo板上的16 个LED灯的旋转轨迹是个圆柱面。运行后,显示文字或图形,效果图如下图的"奥运加油"字样。
   
  实物图        

  
效果图
本设计另一个特点:以10个IO控制点亮16个LED灯(甚至可以做到32个LED),这样使得2051这样小单片机也能实现。
将Demo板绑在自行车的钢丝上(PCB上有6个定位钻孔,很方便),如下图。同时绑上3电池。在下图“小磁铁”处自行车内侧放一个小磁铁,以便Demo板上的霍尔芯片能感应到。车轮旋转起来后,显示的字样如下图右侧。

   




其它效果



原理图: 原理图.pdf (52.26 KB, 下载次数: 1135)
代码: 0004_Software.rar (3.55 KB, 下载次数: 812)

评分

参与人数 7威望 +9 黑币 +26 收起 理由
SHA手 + 5 很给力!
czy099128 + 5 很给力!
HGH铁柱 + 4 绝世好帖!
半块电路板 + 5 赞一个!
environmentx + 7
高山有崖 + 4
V刹V + 5 回帖助人的奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏17 转播转播 分享分享 分享淘帖 顶5 踩
回复

使用道具 举报

沙发
 楼主| laowen 发表于 2013-6-26 16:16 | 只看该作者
 
  1. ///////////////////////////////////////////////////
  2. //
  3. //硬件配置: P00~P07=LED1~LED8,
  4. //                    P27~P20=LED9~LED16,
  5. //          INT0=Hall IC
  6. //
  7. //                        Crystal: 11.0592M
  8. ///////////////////////////////////////////////////
  9. #include <reg51.h>
  10. #include <string.h>


  11. //STC系列特殊寄存器
  12. sfr AUXR        =         0x8e ;//bit7~0 : T0x12 T1x12 UART_M0x6 EADCI , ESPI ELVDI - -
  13. sfr        P1M0        =        0x91;
  14. sfr        P1M1        =        0x92;
  15. sfr        P2M0        =        0x95;
  16. sfr        P2M1        =        0x96;
  17. sfr        P3M0        =        0xb1;
  18. sfr        P3M1        =        0xb2;

  19. unsigned int Font[3][16]=//赛先生
  20. {
  21. {0x1010,
  22. 0x6110,
  23. 0x4120,
  24. 0x5541,
  25. 0x550F,
  26. 0x7F42,
  27. 0x5542,
  28. 0xD55C,
  29. 0x5542,
  30. 0x7F42,
  31. 0x55F9,
  32. 0x5541,
  33. 0x4120,
  34. 0x5130,
  35. 0x6020,
  36. 0x0000
  37. },
  38. {0x0000,0x0A08,0x7210,0x2260,0x2380,0x2200,0xFE00,0x2200,  0x23F0,0x2208,0x2208,0x0208,0x0230,0x0000,0x0000,0x0000},
  39. {0x0408,0x1808,0xF108,0x1108,0x1108,0x1108,0xFFF8,0x1108,  0x1108,0x1108,0x1108,0x1008,0x0008,0x0000,0x0000,0x0000}

  40. };


  41. unsigned char MASK_1BIT_ON[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
  42. unsigned int ReverseHighByteOrder(unsigned int a)
  43. {
  44.         unsigned char c,i;
  45.         unsigned int b;
  46.         b=(a>>8)&0x00ff;//b=调换之前的high字节

  47.         c=0;//c=调换之后的字节
  48.         for(i=0;i<8;i++)
  49.         {
  50.                 if(MASK_1BIT_ON[i]&b)
  51.                         c=c|MASK_1BIT_ON[7-i];
  52.         }


  53.         b=c;
  54.         b=(b<<8)&0xff00;
  55.         b=b+(a&0x00ff);
  56.         return b;
  57. }
  58. unsigned int ReverseLowByteOrder(unsigned int a)
  59. {
  60.         unsigned char b,c,i;
  61.         b=a&0xff;//b=调换之前的低字节

  62.         c=0;//c=调换之后的低字节
  63.         for(i=0;i<8;i++)
  64.         {
  65.                 if(MASK_1BIT_ON[i]&b)
  66.                         c=c|MASK_1BIT_ON[7-i];
  67.         }

  68.         a=a&0xff00;
  69.         a=a+c;
  70.         return a;
  71. }
  72. void Delay_ms(ms)
  73. {
  74.         int i,j;
  75.         for(i=0;i<ms;i++)
  76.         {
  77.                 for(j=0;j<10;j++)
  78.                 {}
  79.         }
  80. }

  81. char HallIC_Coming;//是否是Hall IC碰到磁场
  82. int Timer0_Cnt;//Timer0中断计数
  83. ///////////////////////////////////////////////////
  84. //
  85. //主函数
  86. //
  87. ///////////////////////////////////////////////////
  88. void main()
  89. {       
  90.         int i;
  91.         for(i=0;i<16;i++)
  92.         {
  93.                 Font[0][i]=        Font[0][i]^0xffff;//反相
  94.         //        Font[0][i]=ReverseLowByteOrder(Font[0][i]);//低字节的bit0~7修改为bit7~0
  95.                 Font[0][i]=ReverseHighByteOrder(Font[0][i]);//高字节的bit0~7修改为bit7~0
  96.         }

  97.         //Test
  98.         P0=0x00;//全部打开LED
  99.         P2=0x00;
  100.         Delay_ms(1000);
  101.         P2=0xff;

  102.            //Timer0的设置
  103.         TR0 = 1;                //timer0启动
  104.         ET0 = 1;                //timer0中断
  105.            TMOD |= 0x01;   //timer0设置为mode1
  106.         TH0=TL0=0;

  107.         EX0 = 1;       
  108.         EA = 1;

  109.         //计算电机旋转速度
  110. /*        Timer0_Cnt=0;
  111.         HallIC_Coming=0;
  112.         for(i=0;i<100;i++)
  113.         {
  114.                 while(HallIC_Coming==0);
  115.                 HallIC_Coming=0;
  116.         }
  117. */        TR0=0;
  118.         ET0=0;
  119.        
  120.        

  121.         ////////////////////////////
  122.         //正式开始
  123.         HallIC_Coming=0;
  124.         while(1)
  125.         {
  126.                
  127.                 if(HallIC_Coming)//等待Hall IC触发的中断
  128.                 {
  129.                         //处理
  130.                         for(i=0;i<16;i++)                       
  131.                         {
  132.                                 P2=Font[0][i]&0xff;
  133.                                 P0=(Font[0][i]>>8)&0xff;
  134.                                 Delay_ms(5);
  135.                         }
  136.                         ////////////////////////////
  137.                         P0=P2=0xff;
  138.                         HallIC_Coming=0;
  139.                 }

  140.         }

  141. }


  142. ////////////////////////////////////////////////////////////////////////////////////////
  143. //
  144. //外部中断0 (INT0,由Hall IC输出脚触发)
  145. //
  146. ////////////////////////////////////////////////////////////////////////////////////////
  147. void ISR_INT0(void) interrupt 0
  148. {
  149.         HallIC_Coming=1;
  150. }

  151. //Timer0中断
  152. void ISR_Timer0(void) interrupt 1
  153. {
  154.         Timer0_Cnt++;
  155. }
复制代码
回复

使用道具 举报

板凳
左左右右 发表于 2013-7-1 16:52 | 只看该作者
 
膜拜啊 能做出这么牛的东西来,51hei(51黑)论坛有你更精彩.
回复

使用道具 举报

地板
左左右右 发表于 2013-7-1 16:55 | 只看该作者
我也来51hei很久了 咋就很难有进步呢 现在还只能搞流水灯之类的简单东西.
回复

使用道具 举报

5#
Binz1960 发表于 2013-7-4 20:26 | 只看该作者
谢谢分享
回复

使用道具 举报

6#
匿名  发表于 2013-7-5 05:45
好东西
回复

使用道具

7#
nanguoguangzi 发表于 2013-7-9 05:42 | 只看该作者
支持,好作品
回复

使用道具 举报

8#
新手不新 发表于 2013-7-10 16:43 | 只看该作者
不怎么好玩
回复

使用道具 举报

9#
630540132 发表于 2013-7-12 14:41 | 只看该作者
太了不起了...什么時候我才可以額這樣子的能力哦...
回复

使用道具 举报

10#
匿名  发表于 2013-7-12 20:34
很有创意啊
回复

使用道具

11#
锅锅卟帅 发表于 2013-7-16 10:10 | 只看该作者
厉害啊
回复

使用道具 举报

12#
锅锅卟帅 发表于 2013-7-16 10:13 | 只看该作者
厉害啊
回复

使用道具 举报

13#
锅锅卟帅 发表于 2013-7-16 10:14 | 只看该作者
有创意!!
回复

使用道具 举报

14#
朗朗繁星 发表于 2013-7-16 22:11 | 只看该作者
好哈学习学习
回复

使用道具 举报

15#
wuhaisheng258 发表于 2013-7-17 11:25 | 只看该作者
谢谢分享
回复

使用道具 举报

16#
匿名  发表于 2013-7-17 20:06
高手  佩服楼主
回复

使用道具

17#
№奔跑№ 发表于 2013-7-18 19:56 | 只看该作者
菜鸟加初学者表示膜拜
回复

使用道具 举报

18#
1156615097 发表于 2013-7-23 22:25 | 只看该作者
有套件卖吗?我要
回复

使用道具 举报

19#
liaows 发表于 2013-7-24 09:06 | 只看该作者
谢谢分享,试做一下。
回复

使用道具 举报

20#
weiyy216 发表于 2013-7-25 16:26 | 只看该作者
请问楼主   显示效果受旋转速度影响吗?如装在自行车轮子上的那种。
回复

使用道具 举报

21#
鲜の水晶葡萄 发表于 2013-7-30 22:24 | 只看该作者
不错不错
回复

使用道具 举报

22#
fxping163 发表于 2013-8-3 14:09 | 只看该作者
可以,有创意。
回复

使用道具 举报

23#
CK、东哥 发表于 2013-8-4 22:13 | 只看该作者
不错,支持下
回复

使用道具 举报

24#
啵~~ 发表于 2013-8-5 10:17 | 只看该作者
谢谢楼主啦
回复

使用道具 举报

25#
康师傅 发表于 2013-8-7 16:27 | 只看该作者
学习啦!
回复

使用道具 举报

26#
pkj 发表于 2013-8-8 16:57 | 只看该作者
真厉害,向你学习
回复

使用道具 举报

27#
aimei 发表于 2013-8-9 23:09 | 只看该作者
这个不错,准备做个来玩玩
回复

使用道具 举报

28#
f800380564 发表于 2013-8-10 18:50 | 只看该作者
大神  牛逼啊
回复

使用道具 举报

29#
SisuoComputer 发表于 2013-8-11 17:26 | 只看该作者
谢谢分享。。。。。。。。。。。
回复

使用道具 举报

30#
SisuoComputer 发表于 2013-8-11 17:27 | 只看该作者
厉害。。。。。。。。。。
回复

使用道具 举报

31#
陨落的Einstein 发表于 2013-8-17 20:29 | 只看该作者
很有创意!楼主,你确定是这份程序?这程序算不出来转速。你是不是在来回调那个Delay_ms(5);?
回复

使用道具 举报

32#
陨落的Einstein 发表于 2013-8-17 20:42 | 只看该作者
顺便问下,楼主有霍尔元件选型网站、资料、手册吗?
回复

使用道具 举报

33#
苏樟超 发表于 2013-9-11 14:30 | 只看该作者
原理图器件名称,电阻值标的不是很明确。
回复

使用道具 举报

34#
苏樟超 发表于 2013-9-11 14:31 | 只看该作者
3Mhz249是什么?LED限流电阻是51欧姆?
回复

使用道具 举报

35#
苏樟超 发表于 2013-9-11 14:31 | 只看该作者
3Mhz249是什么?LED限流电阻是51欧姆?
回复

使用道具 举报

36#
爱你一万年 发表于 2013-9-24 19:58 | 只看该作者
学一下
回复

使用道具 举报

37#
模拟 发表于 2013-10-1 16:34 | 只看该作者
不错,不错,不错,学习学习
回复

使用道具 举报

38#
模拟 发表于 2013-10-1 16:34 | 只看该作者
学习一下
回复

使用道具 举报

39#
伤心童话 发表于 2013-10-2 22:09 | 只看该作者
不错啊!刚接触。多多交流。
回复

使用道具 举报

40#
jinchouxing 发表于 2013-10-3 21:29 | 只看该作者
 
努力学习中
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

     

QQ|手机版|小黑屋|单片机论坛

Powered by 单片机教程网

快速回复 返回顶部 返回列表