新聞中心

        EEPW首頁 > 光電顯示 > 設計應用 > 應對智能手機的背光驅動干擾

        應對智能手機的背光驅動干擾

        作者: 時間:2012-10-16 來源:網絡 收藏

        單片機STC12C5616 的外部時鐘選擇22. 118 4 MHz,便于串行口波特率的精確控制; 引腳P3. 0和P3. 1為UART 接口,通過通信接口芯片MAX232 芯片實現控制卡和PC 機之間的通信連接; 引腳P2. 0 ~ P2. 3為4 位數據線,該數據線一方面連接存儲器SST26VF016B 的4 位數據口,另一方面通過74HC245 后連接到LED 單元板輸出接口的數據線上。 在控制卡上設計有2 個單色LED單元板輸出接口,接口J1 使用數據線D0和D1,接口J2 使用數據線D2和D3; 引腳P1. 7為SPI 時鐘輸出,SPI 時鐘輸出線同時連接到串行Flash 存儲器SST26VF016B 和LED 單元板的時鐘輸入; 引腳P1. 4為串行Flash 存儲器SST26VF016B 的片選信號; 引腳P3. 5為LED 單元板的數據鎖存信號; 引腳P3. 7為LED 單元板的使能信號輸出; 引腳P1. 0 ~P1. 3為LED 單元板的行選擇信號輸出; J1 和J2 連接頭用來連接顯示屏在高度方向上的LED 單元板,以符合門頭屏64 點高度要求。

        該電路的設計可以靈活地在單片機、串行存儲器和LED 單元板相互之間實現3 種不同的數據訪問模式,分別是:

        (1) 單片機和存儲器之間的正常訪問。

        由圖3 可以看出,單片機STC12C5616 和串行Flash 存儲器SST26VF016B 之間的連接是參照數據手冊進行連接的,可以實現正常的數據存取,同時該數據也會進入LED 單元板上的移位寄存器緩沖區,但只要LED 單元板上的數據鎖存RCK 沒有得到有效信號,進入LED 單元板的數據是不顯示出來的無效數據。

        (2) 單片機和LED 單元板之間數據通信。

        將單片機引腳P1. 4置高電平,即將串行Flash存儲器的使能端無效,這時存儲器的數據端口呈高阻狀態,單片機和LED 單元板之間數據通信就不會受到存儲器數據口的影響,可以將單片機的數據正常輸出到LED 單元板上。

        (3) 存儲器和LED 顯示屏之間的數據傳輸。

        首先采用第( 1) 種模式,單片機先向串行存儲器輸出命令字、存儲地址和虛擬字節,然后將單片機的數據口P2. 0 ~ P2. 3全部置高電平,通過SPI 時鐘從串行存儲器讀取顯示數據,同時以DMA方式進入LED 單元板,當讀取完一行數據后,在LED單元板上的數據鎖存端RCK 上產生有效信號,就可以顯示該行數據。 當采用這種模式時,一定要將單片機STC12C5616 的引腳P2. 0 ~ P2. 3設置為弱上拉模式。

        4 超長LED 顯示屏顯示程序設計

        在1 /16 單色LED 顯示屏硬件電路設計中,74HC595 采用直通方式連接。 根據直通方式特點,預先對單色顯示數據進行優化組織,將組織后的顯示數據預先存放在串行Flash 存儲器SST26VF016B 中。 如圖4 所示,單片機輸出顯示每行數據時按輸出數據→送移位脈沖→地址加1的順序重復進行,顯示完一行后,RCK 鎖存顯示,通過ABCD 切換行選通線。

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

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

        以LED 顯示屏的水平方向點數為4 096 點為例,其顯示一幀數據的程序代碼如下:

        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 個字節地址

        SendSQI_Byte( ( Addr 》 16) 0xff) ;

        SendSQI_Byte( ( Addr 》 8) 0xff) ;

        SendSQI_Byte( ( Addr0xff) ;

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

        P2 = P2 |0x0f;

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

        SPDAT = 0xff; / /啟動第1 次SPI 發送

        Data_Length = ( Data_Length 》 3) - 1;

        while( Data_Length! = 0)

        { / /SPI 時鐘每次傳輸8 個脈沖

        while( ( SPSTAT0x80) == 0) ;

        SPSTAT = 0x80; / /清接收標志

        SPDAT = 0xff; / /啟動SPI 發送

        Data_Length -- ;

        }

        while( ( SPSTAT0x80) == 0) ;

        SPSTAT = 0x80; / /清接收標志

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

        CS = 1; /* disable devicce * /

        EN = 0;

        RCK = 1; RCK = 0;

        PI = ( ( P10xf0) | Ln

        ) ;

        EN = 1;

        }

        }

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

        5 測試

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

        圖5 LED 屏信號測試

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 威海市| 扶余县| 宁德市| 扎兰屯市| 建湖县| 洪湖市| 白城市| 梁山县| 临汾市| 乐安县| 遵义县| 盐山县| 武穴市| 天峻县| 宁德市| 海伦市| 安远县| 青神县| 名山县| 介休市| 云林县| 甘谷县| 张家川| 客服| 丰宁| 德保县| 绍兴县| 宣汉县| 开鲁县| 镇雄县| 克什克腾旗| 泰来县| 南城县| 南涧| 兴文县| 衡水市| 龙山县| 安康市| 克山县| 安阳市| 丰都县|