新聞中心

        EEPW首頁 > 光電顯示 > 設計應用 > 旋轉LED屏原理介紹

        旋轉LED屏原理介紹

        作者: 時間:2012-03-21 來源:網絡 收藏

          POV led”一詞(POV即persistancd of vision),LED屏。那些搖晃出的空中圖案,漂浮在車輪上的動畫,以及形態各異的時鐘,一定給你留下深刻印象。你是否想過自己親自動手做一個LED屏呢?其實說白了就是一個晃動的流水燈。

        旋轉LED屏原理介紹

          在51單片機最簡系統的其中的一個端口P0接上8個LED,就是一個典型的流水燈實驗電路。由于沒有幾個元件,說干就干,把所有元件焊在萬能板上,不需花費多長時間,就可完成整個制作。

          

        旋轉LED屏原理介紹

          下面是隨便找一個流水燈的C51程序

          #include

          void main(void)

          {

          unsigned int i,ch;

          ch=0x01;

          while(1)

          {

          for(i=500;i>0;i--);

          if(ch==0x00) ch=0x01; else ch=ch1;

          P0=~ch;

          }

          }

          將這程序編譯下載到系統的單片機上,待LED燈光開始正常開跑后,我們拿著它在手上來回晃動,你發現這光已經不是一條豎直線了,它已經變成了一條條斜線。你可以適當修改程序中的延時,讓這一連串的斜線更漂亮些(寬和高基本一致),怎么樣,我們的最簡LED屏就這樣做成了。

          

        旋轉LED屏原理介紹

          高興之余,發現這與我們的目標好象還有點遙遠,我們并不需要這些斜線,怎樣才能做出網上的那些大蝦那樣顯示的各種各樣的文字圖案呢?接下來,我們還得想其它辦法,換一下思路,將需要的圖案數據一串存在數組中,運行時又將數據一串串讀出來,驅動LED,這樣就能看到我們想看到的圖案了。

        這是用此思路編的流水燈C51程序

          #include

          code unsigned char led[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

          void main(void)

          {

          unsigned int i,j;

          while(1)

          {

          for(j=0;j8;j++){

          P0=~led[j];

          for(i=3000;i>0;i--);

          }

          }

          }

          運行看一下,結果與我們的第一個程序效果是一樣的,但這個程序的優勢在于我們可以按我們的要求,改變數組中的數據來驅動端口上的LED,達到我們預期的顯示效果。這可以說是流水燈的萬能程序。這樣我們邁出了第一步。

          再來看如何產生需要的圖案。

          現在我們讓LED顯示數字12為例,我們先作一個表。

          0 1 0 0 1 1 1 1 低四位

          1 1 0 0 1 0 0 1

          0 1 0 0 0 0 0 1

          0 1 0 0 0 0 1 0

          0 1 0 0 0 1 0 0 高四位

          0 1 0 0 1 0 0 0

          0 1 0 0 1 0 0 0

          1 1 1 0 1 1 1 1

          從下到上將每列看成是一個16進制數,我得到8個16進制數

          10000010=0x82

          11111111=0xff

          10000000=0x80

          00000000=0x00

          11100011=0xe3

          10010001=0x91

          10001001=0x89

          10000111=0x87

          這樣我們得到了我們想要的一組掃描碼{0x82,0xff,0x80,0x00,0xe3,0x91,0x89,0x87}

          將前一程序的數組數據改成我們得到的掃描碼,我們得到新的C51程序

          #include

          code unsigned char led[]={0x82,0xff,0x80,0x00,0xe3,0x91,0x89,0x87};

          void main(void)

          {

          unsigned int i,j;

          while(1)

          {

          for(j=0;j8;j++){

          P0=~led[j];

          for(i=600;i>0;i--);

          }

          for(i=8000;i>0;i--);

          for(i=8000;i>0;i--);

          }

          }

          編譯下載后,將運行進的電路板來回晃晃看……,哈,“12”已隱約出現在眼前。

          

        旋轉LED屏原理介紹

          

        旋轉LED屏原理介紹

          哈哈,是不是成功離我們已經不遠了。

          最后是發揮部分。接著要做的事就是解決如何讓這些LED運動,如何檢測運行時的開始和結束,如何給運動著的系統供電,如何控制運動著的系統….等等。不同的解決方案造就各具特色的LED旋轉屏。



        關鍵詞: 旋轉 LED屏 原理介紹

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 武鸣县| 梁山县| 兴海县| 电白县| 海丰县| 文水县| 栖霞市| 岳普湖县| 南漳县| 凤庆县| 延寿县| 潮安县| 桂东县| 甘洛县| 广汉市| 石阡县| 博白县| 华容县| 青阳县| 高青县| 乌兰察布市| 凤庆县| 东兴市| 宁波市| 涞水县| 拉萨市| 新密市| 肃南| 香港 | 乡宁县| 德兴市| 鄂伦春自治旗| 五原县| 古丈县| 海原县| 忻州市| 临颍县| 咸丰县| 深水埗区| 霍山县| 肥西县|