<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 光電顯示 > 設(shè)計(jì)應(yīng)用 > 基于多端口串行Flash的條形LED顯示屏控制

          基于多端口串行Flash的條形LED顯示屏控制

          作者: 時(shí)間:2012-11-21 來(lái)源:網(wǎng)絡(luò) 收藏
           首先采用第( 1) 種模式,單片機(jī)先向串行存儲(chǔ)器輸出命令字、存儲(chǔ)地址和虛擬字節(jié),然后將單片機(jī)的數(shù)據(jù)口P2. 0 ~ P2. 3全部置高電平,通過(guò)SPI 時(shí)鐘從串行存儲(chǔ)器讀取顯示數(shù)據(jù),同時(shí)以"DMA"方式進(jìn)入LED 單元板,當(dāng)讀取完一行數(shù)據(jù)后,在LED單元板上的數(shù)據(jù)鎖存端RCK 上產(chǎn)生有效信號(hào),就可以顯示該行數(shù)據(jù)。 當(dāng)采用這種模式時(shí),一定要將單片機(jī)STC12C5616 的引腳P2. 0 ~ P2. 3設(shè)置為"弱上拉"模式。

            4 超長(zhǎng)LED 顯示屏顯示程序設(shè)計(jì)

            在1 /16 單色LED 顯示屏硬件電路設(shè)計(jì)中,74HC595 采用直通方式連接。 根據(jù)直通方式特點(diǎn),預(yù)先對(duì)單色顯示數(shù)據(jù)進(jìn)行優(yōu)化組織,將組織后的顯示數(shù)據(jù)預(yù)先存放在串行 存儲(chǔ)器SST26VF016B 中。 如圖4 所示,單片機(jī)輸出顯示每行數(shù)據(jù)時(shí)按"輸出數(shù)據(jù)→送移位脈沖→地址加1"的順序重復(fù)進(jìn)行,顯示完一行后,RCK 鎖存顯示,通過(guò)ABCD 切換行選通線。

          基于多端口串行Flash的條形LED顯示屏控制

          圖4 1 /16 掃描單色F3. 75 或F5. 0 單元板( 64 × 32 點(diǎn)) 連接方式。

            以LED 顯示屏的水平方向點(diǎn)數(shù)為4 096 點(diǎn)為例,其顯示一幀數(shù)據(jù)的程序代碼如下:

            woid Display( unsigned long begin_Addr)

            {

            unsigned char Ln

            ,Bv = 1;

            unsigned int Data_Length,Lw = 4096;

            unsigned long Addr;

            Data_Length = Bv* Lw

           ?。?;

            for ( Ln = 0; Ln 16; Ln + + )

            {

            Addr = Begin_Addr + Ln* Data_Length;

            CS = 0;

            SendSQI_Byte( 0x0B) ; / /送讀命令

            / /送3 個(gè)字節(jié)地址

            SendSQI_Byte( ( Addr 》 16) 0xff) ;

            SendSQI_Byte( ( Addr 》 8) 0xff) ;

            SendSQI_Byte( ( Addr0xff) ;

            SendSQI_Byte( ( 0xff) ; / /送虛字節(jié)

            P2 = P2 |0x0f;

            SPCTL = 0xd0; / /允許SPI 接口

            SPDAT = 0xff; / /啟動(dòng)第1 次SPI 發(fā)送

            Data_Length = ( Data_Length 》 3) - 1;

            while( Data_Length! = 0)

            { / /SPI 時(shí)鐘每次傳輸8 個(gè)脈沖

            while( ( SPSTAT0x80) == 0) ;

            SPSTAT = 0x80; / /清接收標(biāo)志

            SPDAT = 0xff; / /啟動(dòng)SPI 發(fā)送

            Data_Length -- ;

            }

            while( ( SPSTAT0x80) == 0) ;

            SPSTAT = 0x80; / /清接收標(biāo)志

            SPCTL = 0x90; / /禁止SPI 接口

            CS = 1; /* disable devicce * /

            EN = 0;

            RCK = 1; RCK = 0;

            PI = ( ( P10xf0) | Ln

            ) ;

            EN = 1;

            }

            }

            在設(shè)計(jì)程序時(shí),僅在換行時(shí)關(guān)閉顯示屏,避免它產(chǎn)生余輝,其余時(shí)間都點(diǎn)亮。 在該程序中,Bv為數(shù)據(jù)線在垂直方向使用595 的組數(shù); Lw為L(zhǎng)ED 顯示屏水平方向像素點(diǎn)數(shù); Ln為當(dāng)前LED 顯示屏顯示數(shù)據(jù)行號(hào)。 當(dāng)顯示數(shù)據(jù)時(shí),采用存儲(chǔ)器和LED 顯示屏的數(shù)據(jù)輸出模式,單片機(jī)先向串行存儲(chǔ)器輸出"讀數(shù)據(jù)"命令字"0x0B",然后輸出24 位地址和虛擬字節(jié),再使單片機(jī)數(shù)據(jù)口輸出高電平,就可以根據(jù)LED 顯示屏的長(zhǎng)度輸出SCK 脈沖。 送完一行數(shù)據(jù)后,禁止SPI 接口,RCK 鎖存信號(hào)有效,切換至下一行,按重復(fù)步驟繼續(xù)輸出顯示數(shù)據(jù)。

            5 測(cè)試

            經(jīng)過(guò)測(cè)試后,顯示屏顯示正常,沒(méi)有抖動(dòng)情況,使用邏輯分析儀測(cè)試了其刷新率,如圖5( b) 所示,信號(hào)A 的電平寬度表示顯示1 行所需要的時(shí)間,其寬度為1. 036 16 ms,顯示1 幀的時(shí)間為16 ×1. 036 16 ms≈16 ms,所以LED 顯示屏的刷新率為1 /16 ms = 62. 5 Hz. 而當(dāng)LED 顯示屏的刷新率大于50 次/s 時(shí),就可以滿足設(shè)計(jì)要求,故本設(shè)計(jì)能夠滿足正常顯示要求。 通過(guò)測(cè)試SCK 信號(hào),如圖5( a)所示,可以看出SCK 信號(hào)每8 個(gè)脈沖1 組,每組之間的時(shí)間間隔僅為570 ns,該時(shí)間主要消耗在判斷SPI 數(shù)據(jù)傳輸完成標(biāo)志和循環(huán)上。

          基于多端口串行Flash的條形LED顯示屏控制

          圖5 LED 屏信號(hào)測(cè)試

            6 結(jié)論

            本文提出了基于多端口串行 存儲(chǔ)器的LED 顯示系統(tǒng),利用單片機(jī)的SPI 接口產(chǎn)生可控時(shí)鐘,將多端口串行 存儲(chǔ)器中的顯示數(shù)據(jù)以"DMA"方式直接輸出至超長(zhǎng)條形LED 顯示屏。

            其制造成本低廉,根據(jù)本文程序及邏輯分析儀得到的時(shí)序圖可知,該方法可以4 096 × 64 點(diǎn)陣單色LED 顯示屏,在超長(zhǎng)顯示屏市場(chǎng)上有很好的應(yīng)用前景。


          上一頁(yè) 1 2 下一頁(yè)

          關(guān)鍵詞: Flash LED顯示屏 控制

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();