單片機論壇

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 79062|回復: 229
打印 上一主題 下一主題
收起左側

曼联上海比赛门票: 創意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, 下載次數: 1385)
代碼: 0004_Software.rar (3.55 KB, 下載次數: 1030)

評分

參與人數 11威望 +9 黑幣 +46 收起 理由
chit100 + 5
楊yy + 5 很給力!
桂電小天使 + 5 絕世好帖!
彬Lsl + 5 很給力!
SHA手 + 5 很給力!
czy099128 + 5 很給力!
HGH鐵柱 + 4 絕世好帖!
半塊電路板 + 5 贊一個!
environmentx + 7
高山有崖 + 4
V剎V + 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#
無效樓層,該帖已經被刪除
7#
nanguoguangzi 發表于 2013-7-9 05:42 | 只看該作者
支持,好作品
8#
新手不新 發表于 2013-7-10 16:43 | 只看該作者
不怎么好玩
9#
630540132 發表于 2013-7-12 14:41 | 只看該作者
太了不起了...什么時候我才可以額這樣子的能力哦...
10#
無效樓層,該帖已經被刪除
11#
鍋鍋卟帥 發表于 2013-7-16 10:10 | 只看該作者
厲害啊
12#
鍋鍋卟帥 發表于 2013-7-16 10:13 | 只看該作者
厲害啊
13#
鍋鍋卟帥 發表于 2013-7-16 10:14 | 只看該作者
有創意??!
14#
無效樓層,該帖已經被刪除
15#
朗朗繁星 發表于 2013-7-16 22:11 | 只看該作者
好哈學習學習
16#
wuhaisheng258 發表于 2013-7-17 11:25 | 只看該作者
謝謝分享
17#
無效樓層,該帖已經被刪除
18#
№奔跑№ 發表于 2013-7-18 19:56 | 只看該作者
菜鳥加初學者表示膜拜
19#
1156615097 發表于 2013-7-23 22:25 | 只看該作者
有套件賣嗎?我要
20#
liaows 發表于 2013-7-24 09:06 | 只看該作者
謝謝分享,試做一下。
21#
weiyy216 發表于 2013-7-25 16:26 | 只看該作者
請問樓主   顯示效果受旋轉速度影響嗎?如裝在自行車輪子上的那種。
22#
無效樓層,該帖已經被刪除
23#
鮮の水晶葡萄 發表于 2013-7-30 22:24 | 只看該作者
不錯不錯
24#
fxping163 發表于 2013-8-3 14:09 | 只看該作者
可以,有創意。
25#
CK、東哥 發表于 2013-8-4 22:13 | 只看該作者
不錯,支持下
26#
啵~~ 發表于 2013-8-5 10:17 | 只看該作者
謝謝樓主啦
27#
康師傅 發表于 2013-8-7 16:27 | 只看該作者
學習啦!
28#
pkj 發表于 2013-8-8 16:57 | 只看該作者
真厲害,向你學習
29#
aimei 發表于 2013-8-9 23:09 | 只看該作者
這個不錯,準備做個來玩玩
30#
f800380564 發表于 2013-8-10 18:50 | 只看該作者
大神  牛逼啊
31#
SisuoComputer 發表于 2013-8-11 17:26 | 只看該作者
謝謝分享。。。。。。。。。。。
32#
SisuoComputer 發表于 2013-8-11 17:27 | 只看該作者
厲害。。。。。。。。。。
33#
隕落的Einstein 發表于 2013-8-17 20:29 | 只看該作者
很有創意!樓主,你確定是這份程序?這程序算不出來轉速。你是不是在來回調那個Delay_ms(5);?
34#
隕落的Einstein 發表于 2013-8-17 20:42 | 只看該作者
順便問下,樓主有霍爾元件選型網站、資料、手冊嗎?
35#
蘇樟超 發表于 2013-9-11 14:30 | 只看該作者
原理圖器件名稱,電阻值標的不是很明確。
36#
蘇樟超 發表于 2013-9-11 14:31 | 只看該作者
3Mhz249是什么?LED限流電阻是51歐姆?
37#
蘇樟超 發表于 2013-9-11 14:31 | 只看該作者
3Mhz249是什么?LED限流電阻是51歐姆?
38#
愛你一萬年 發表于 2013-9-24 19:58 | 只看該作者
學一下
39#
模擬 發表于 2013-10-1 16:34 | 只看該作者
不錯,不錯,不錯,學習學習
40#
模擬 發表于 2013-10-1 16:34 | 只看該作者
學習一下
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|單片機論壇 |51黑電子論壇技術交流 QQ 管理員QQ:125739409;技術交流QQ群636986012

Powered by 曼联vs曼城

快速回復 曼联vs曼城 返回列表