要讓 TFT液晶屏實(shí)現(xiàn)橫屏顯示(Landscape 模式),大體上有兩種方法:硬件/驅(qū)動芯片支持旋轉(zhuǎn) 和 軟件中旋轉(zhuǎn)圖像內(nèi)容。
橫屏顯示的實(shí)質(zhì)是把液晶屏幕的“行/列掃描順序”或“像素坐標(biāo)映射”做90度(或 270 度)旋轉(zhuǎn)。也就是說:
原來屏幕橫向的寬度變成縱向高度,縱向高度變成寬度。
像素 (x, y) 在內(nèi)存或幀緩存中對應(yīng)的位置需要變換。
驅(qū)動 IC 或控制器(TCON 或 GPU/MCU 的 LCD 控制部分)要能支持這種坐標(biāo)變換或者其寄存器中有旋轉(zhuǎn)控制功能。
某些 TFT面板的驅(qū)動芯片內(nèi)建有旋轉(zhuǎn)命令(常見如 ST 系列 IC 的 “Memory Access Control register”(MADCTL)或類似名稱的寄存器),可以設(shè)置屏幕的掃描方向/行列交換/列行遞增或遞減等,從而使顯示畫面旋轉(zhuǎn)。
例如在 Focus LCD 的應(yīng)用說明中,就提到通過驅(qū)動芯片的某些控制寄存器命令來設(shè)定 Landscape/Portrait 模式。
控制器若支持,還可以在 init 初始化流程里配置這些寄存器。
如果屏幕驅(qū)動或硬件不支持旋轉(zhuǎn)功能,就要在軟件端做圖像內(nèi)容的旋轉(zhuǎn)/坐標(biāo)轉(zhuǎn)換。常見場景包括使用某些圖形庫(比如 LVGL、TFT_eSPI、Adafruit GFX 等)。方法如下:
1.在庫中調(diào)用旋轉(zhuǎn)函數(shù)(setRotation()、rotation 參數(shù)等)。如 TFT_eSPI 庫里,有表示旋轉(zhuǎn) 90 度。
2.在 UI 或繪制流程中交換“橫 / 縱”分辨率(width / height),并根據(jù)當(dāng)前旋轉(zhuǎn)狀態(tài)變換繪圖坐標(biāo) (x, y) → (new_x, new_y)。
3.如果使用圖形界面庫(如 LVGL),版本較新的一些支持軟件旋轉(zhuǎn)模式,可以在配置中打開旋轉(zhuǎn)支持,并在刷新回調(diào)中處理圖像變換。
這里提供一個(gè)典型的實(shí)現(xiàn)流程:
步驟 | 操作內(nèi)容 |
1. 查驅(qū)動 IC 是否支持旋轉(zhuǎn)
|
1. 查驅(qū)動 IC 是否支持旋轉(zhuǎn)看面板/驅(qū)動 IC 的 datasheet,是否有 MADCTL 或類似 “Memory Access Control / Orientation / Scan Direction / RGB Order / Row/Column交換” 的寄存器設(shè)置。 |
2. 修改初始化時(shí)序 /寄存器配置 | 如果支持,在初始化過程中寫入正確的寄存器值以設(shè)定旋轉(zhuǎn)模式,例如 90°/270°。 |
3. 調(diào)整分辨率參數(shù) | 在軟件或者驅(qū)動庫里,把 width 和 height 調(diào)換。例如原來是 800×480 橫屏,現(xiàn)在 portrait 的話調(diào)成 480×800;反之亦然。 |
4. 更新繪圖邏輯 /坐標(biāo)映射 | 如果軟件繪圖中有固定坐標(biāo)(例如 drawText(x,y))要適配旋轉(zhuǎn)后的坐標(biāo)映射;某些庫已經(jīng)封裝好這個(gè);如果自己寫要注意行列互換,并可能有方向翻轉(zhuǎn)的問題。 |
5. 測試并校準(zhǔn) | 測試圖像顯示是否正常(沒有變形/反轉(zhuǎn)/顏色錯(cuò)位等)。檢查觸摸屏如果有的話,觸摸坐標(biāo)也要同步旋轉(zhuǎn)/交換。 |
在絕大多數(shù)應(yīng)用中,通過軟件編程來設(shè)置驅(qū)動芯片的寄存器是實(shí)現(xiàn)橫屏顯示最便捷、最可靠的方式。
優(yōu)先查閱數(shù)據(jù)手冊: 在開始任何工作之前,請務(wù)必仔細(xì)閱讀你所用TFT液晶屏的數(shù)據(jù)手冊。手冊中通常會詳細(xì)說明如何通過寄存器配置實(shí)現(xiàn)屏幕旋轉(zhuǎn)。
利用現(xiàn)有庫函數(shù): 如果你使用的是開源項(xiàng)目或成熟的開發(fā)平臺(如STM32、Arduino),通常會有現(xiàn)成的GUI(圖形用戶界面)庫,這些庫通常已經(jīng)封裝了屏幕旋轉(zhuǎn)的函數(shù)。你只需調(diào)用一個(gè)簡單的setRotation(1)或類似函數(shù),就可以輕松實(shí)現(xiàn)橫屏顯示。
觸摸屏校準(zhǔn): 如果你的屏幕帶有觸摸功能,在旋轉(zhuǎn)后,觸摸坐標(biāo)系也需要相應(yīng)地進(jìn)行調(diào)整。例如,原本的X軸可能變成新的Y軸,反之亦然。這需要在軟件中進(jìn)行相應(yīng)的坐標(biāo)映射和校準(zhǔn)。
性能損耗:軟件旋轉(zhuǎn)通常需要在內(nèi)存中重新排列像素/圖像,可能占用較多 MCU/CPU 資源。硬件旋轉(zhuǎn)(驅(qū)動 IC 支持的)效率更高。
觸摸屏同步問題:如果屏幕帶觸摸功能,觸摸輸入的坐標(biāo)也要做相應(yīng)的旋轉(zhuǎn)/映射,否則觸摸點(diǎn)與顯示內(nèi)容不對應(yīng)。
存儲器 / 幀緩沖大?。盒D(zhuǎn)后部分庫可能需要額外幀緩沖或中間緩存來處理像素轉(zhuǎn)換。
分辨率兼容性:有些顯示控制器在某些方向上的分辨率支持可能有限制(特別在那些沒專門設(shè)計(jì)支持旋轉(zhuǎn)功能的小屏或舊驅(qū)動 IC)。
顯示效果差異:某些角度旋轉(zhuǎn)后可能導(dǎo)致掃描方向不同(行掃描 vs 列掃描),圖像亮度/響應(yīng)稍有差異或偏暗/偏亮在某些邊緣。
杭州立煌科技有限公司作為一家專注于工業(yè)領(lǐng)域的液晶顯示驅(qū)動方案提供商,與京東方(BOE)、天馬(TIANMA)、龍騰(IVO)、友達(dá)(AUO)、群創(chuàng)(Innolux)、京瓷(Kyocera)等多家全球領(lǐng)先液晶面板制造商建立深度合作關(guān)系,專業(yè)供應(yīng)多品牌、全系列的工業(yè)級液晶顯示屏與定制化解決方案。