新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 旋轉LED燈原理和應用

        旋轉LED燈原理和應用

        作者: 時間:2016-11-30 來源:網絡 收藏
        這是用此思路編的流水燈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;j<8;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;j<8;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顯示并不難。
        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 定结县| 武定县| 安西县| 修水县| 辉南县| 福海县| 永丰县| 贵阳市| 扬中市| 深水埗区| 淳安县| 龙里县| 榆中县| 滦平县| 台东县| 西吉县| 康乐县| 丹巴县| 湘潭市| 无棣县| 夏津县| 浮山县| 龙江县| 山东| 广南县| 阳新县| 静海县| 尖扎县| 五大连池市| 惠安县| 台南县| 分宜县| 台东市| 曲周县| 临高县| 萨迦县| 沈阳市| 无为县| 忻城县| 新津县| 玛多县|