1:LCD基本工作原理
(1) LCD(Liquid Crystal Display)液晶顯示,液晶特性:在電信號的驅(qū)動下液晶分子進行旋轉(zhuǎn),旋轉(zhuǎn)會影響透光性,因此整個液晶面板
后面用白光(背光)來照射,通過不同的電信號讓液晶分子進行旋轉(zhuǎn)性透光,此時液晶面板就會看到顯示不同的顏色。液晶本身不發(fā)光,而是
位于后面的背光發(fā)的光。
(2) 白光是由多種顏色的光組合而成,光的實質(zhì)是一種波,不同波長/頻率的波具有不同的顏色,人眼可見光波長在390~780NM,RGB色彩模式是工業(yè)界的一種顏色標準,
是通過對紅(R)、綠(G)、藍(B)三個顏色通道的變化以及它們相互之間的疊加來得到各式各樣的顏色的,RGB即是代表紅、綠、藍三個通道的顏色,這個標準幾乎包括了人類視
力所能感知的所有顏色,是目前運用最廣的顏色系統(tǒng)之一。
(3) 210控制器可以采用RGB888顏色編碼模式,紅綠藍各8位,紅色綠色藍色又稱為三原色光,用英文表示就是R(red)、G(green)、B(blue)。在電腦中,RGB的所謂“多少”
就是指亮度,并使用整數(shù)來表示。通常情況下,RGB各有256級亮度,用數(shù)字表示為從0、1、2...直到255。共256級。計算機所能表達的顏色種類個數(shù),這個參數(shù)叫:像素深度bpp。
(4) LCD顯示圖像原理:LCD屏幕是由一個個像素點組成的矩陣(如resolution 1024*768,橫向有1024個像素點,縱向有768個
像素點),每個像素點都可以被單獨控制亮或者不亮或者亮度強弱等,LCD圖像就是通過不同的顏色強度的像素點組合而成。我們可采用RGB888編碼來表示每個像素
點的顏色模式(強弱、顏色等等),一幀數(shù)據(jù)就表示在LCD矩陣的每個像素點對應(yīng)的顏色模式。
(5) SoC如何控制LCD顯示原理:
LCD驅(qū)動器:LCD驅(qū)動器一般與LCD面板集成在一起,面板需要一定的模擬電信號來控制液晶分子,LCD驅(qū)動器芯片負責(zé)給面板提供控制液晶分子的模擬電
信號,驅(qū)動器的控制信號(數(shù)字信號)來自于LCD控制器的提供的接口。
LCD控制器:LCD控制器集成在SoC內(nèi)部,它負責(zé)通過數(shù)字接口向外部的LCD驅(qū)動器提供要顯示的像素數(shù)字信號。它必須按照一定的時序和LCD驅(qū)動器通信,LCD
控制器受SoC控制,SoC會從內(nèi)存中拿出像素數(shù)據(jù)給LCD控制器并最終傳給LCD驅(qū)動器。
顯存:SoC在內(nèi)存中選一段內(nèi)存,用來存放顏色數(shù)據(jù),然后通過配置將LCD控制器和這一段內(nèi)存連接起來,構(gòu)成一個映射關(guān)系,一旦這個關(guān)系建立以后
,LCD控制器就會自動從顯存中讀取像素數(shù)據(jù)傳給LCD驅(qū)動器,LCD驅(qū)動器會自動的控制每個像素點的液晶分子,以形成最終的圖像,建立這個映射以后
就不需要SoC在來參與任何行為了。
總結(jié)一下:SoC控制LCD液晶顯示的過程分為兩個部分:
(1) SoC的LCD控制器引出一定的引腳與LCD驅(qū)動器連接,按照標準設(shè)置一定的時序;
(2) 把LCD要顯示的像素信息放入內(nèi)存中,在通過設(shè)置LCD控制器中的寄存器,與LCD控制器建立映射;
之后過程就是LCD控制器芯片與驅(qū)動器芯片自動完成的事情了,整個LCD圖像的顯示過程就是這樣。
(6) LCD接口技術(shù):從電平角度來講LCD都是TTL電平,TTL缺陷是容易受到外界影響,傳輸距離近,一般像手機平板等直接用軟排線
連接即可,而遠距離則需要轉(zhuǎn)換,轉(zhuǎn)換方式為:TTL--》VGA--》TTL。
(7) 補充
虛擬屏幕疊加:
(1)虛擬屏幕的意思是,我們平時看到的屏幕上顯示出來的場景實際是很多個屏幕顯示疊加在一起的效果(譬如新聞圖像、電視臺臺標、下方飄動的字幕新聞)
(2)像S5PV210的LCD控制器中有5個虛擬屏幕Window0到Window4,虛擬屏幕不存在于真實而存在于內(nèi)存中。(之前講過,LCd顯示時實際是顯示的是對應(yīng)的內(nèi)存中的顯存區(qū)域的數(shù)值)
虛擬屏幕其實就是一個內(nèi)存中的顯存區(qū)域,有幾個顯存區(qū)域就有幾個虛擬屏幕,但是這些虛擬屏幕都被映射到一個真實的顯示屏上面,所以將來真實的現(xiàn)實效果實際是這幾個虛擬屏幕的顯示內(nèi)容的疊加。
(疊加時要注意上面一層會覆蓋下面一層,所以要注意誰在前誰在后,設(shè)置寄存器時有這個選項)
(3)使用虛擬屏幕而不是整個LCD使用一個顯存是有一定好處的:第一,可以保證不污染源圖像,方便程序處理;第二,可以減少屏幕刷新,提高顯示效率,減少CPU工作量。
虛擬顯示
(1)如何實現(xiàn)在小分辨率的屏幕上(真實)顯示大分辨率的圖像
(2)細節(jié)上,我們需要屏幕上看到不同圖像時,需要對顯存區(qū)域進行刷新。即使我們只需要屏幕顯示移動一點點,整個屏幕對應(yīng)的顯存空間也需要整個重新刷新,工作量和完全重新顯示一幅圖像是一樣的。
這個顯然不好,這樣CPU刷新屏幕的工作量太大了,效率很低。
(3)如何能夠在顯示一個大圖片的不同區(qū)域時讓CPU刷新屏幕工作量減少?有,方法就是虛擬顯示。具體做法就是在內(nèi)存中建立顯示緩存的時候?qū)嶋H建立一個很大的區(qū)域,然后讓LCD去對應(yīng)其中的一部分
區(qū)域作為有效的顯示區(qū)域。將來要顯示大圖像時,直接將大圖像全部一次性加載入顯示緩存區(qū),然后通過移動有效顯示區(qū)域就可以顯示大圖像的不同區(qū)域了。
2:S5PV210 LCD時序
看一下核心板原理圖:LCD接線為24條VD數(shù)據(jù)輸出線,用來傳輸RGB888 24位顏色數(shù)據(jù),VCLK時鐘線,HSYNC:水平同步信號線;VSYNC:垂直同步信號線,VDEN:數(shù)據(jù)使能線;
HSPW+1:HSYNC線上不工作是為低電平,拉高HSPW+1時鐘,在拉低,表示要準備開始傳輸顏色數(shù)據(jù);(這個時間可以理解為切換到下一行所消耗的時間)
HBPD+1:在經(jīng)過HBPD+1時鐘,VDEN線拉高,表示VD線上之后的都是RGB顏色數(shù)據(jù),所以只有當VDEN信號線為高電平是,才認為是發(fā)送的真實數(shù)據(jù),
開始發(fā)送水平顏色信息以后就會連續(xù)發(fā)送,如1024*768分辨率LCD,會一直把水平的1024個像素點的顏色數(shù)據(jù)都發(fā)送完以后才會拉低VDEN。(這個時間理解為
準備傳輸水平數(shù)據(jù)所要消耗時間)
HOZVAL+1:1024-1不表示時鐘,而是表示水平像素個數(shù)-1
表示傳輸橫線顏色數(shù)據(jù)的總時鐘,如一個時鐘頻率傳輸1個bit位,每個顏色數(shù)據(jù)設(shè)置為32位,橫向共傳輸1024個b顏色數(shù)據(jù),總的時鐘為1024*32;
HFPD+1:數(shù)據(jù)傳輸完以后首先把VDEN拉低HFPD+1時鐘,整個水平傳輸周期完成;(這個時間可以理解為,結(jié)束數(shù)據(jù)傳輸所消耗時間)
VSPW+1:同樣可以理解為切換整幀圖像數(shù)據(jù)所消耗時間;
VBPD+1:準備傳輸整幀數(shù)據(jù)消耗時間;
LINEVAL+1:768-1;
VFPD+1:結(jié)束傳輸整幀數(shù)據(jù)的同步時間;
要注意,這幾個時序參數(shù)本身是LCD屏幕本身的參數(shù),與LCD控制器無關(guān)。所以同一個主板如果接的屏幕不一樣則時序參數(shù)設(shè)置也會不同。
3:相關(guān)寄存器
寄存器:DISPAY_CONTROL 設(shè)置為10或11;RGB模式可行即可;
VIDCON0:Video Main Control 0 Register
bit18-26選擇為RGB模式
bit18:設(shè)置RGB數(shù)據(jù)傳輸為并行還是串行,因為有24根數(shù)據(jù)線所以為并行;
bit2選擇時鐘源,選HCLK 連的是HCLC_DSYS 為166MHz
bit4:開啟分頻;
bit13-6設(shè)置時鐘大小,時鐘頻率要小于控制器的最大時鐘,也要小于LCD驅(qū)動器的最大時鐘。
bit0 bit1為使能控制信號都使能
VIDCON1寄存器 Video Main Control 1 Register
bit5 bit6設(shè)置HSYNC和VSYNC的極性,如果LCD的高低電平脈沖是相同的話,則Normal,如果極性相反則Invert。
VIDTCON0:設(shè)置時序,根據(jù)LCD數(shù)據(jù)手冊中的時序來設(shè)置
VIDTCON1
VIDTCON2
WINCON0寄存器
bit1:使能window0
bit5-2選擇RGB888模式
bit15:設(shè)置輸出順序為 red green blue還是 blue green red 設(shè)置為1:BGR 設(shè)置為0:RGB
VIDOSD0A VIDOSD0B這兩個寄存器是用來設(shè)置內(nèi)存中window0的大小;
比如設(shè)置為LCD屏幕的尺寸(即左上坐標為(0, 0) 右下坐標為(1023, 767))
VIDOSD0C也是設(shè)置內(nèi)存中window0的大小
比如設(shè)置為LCD屏幕的尺寸=1024*768
VIDW0xADD0Bx設(shè)置內(nèi)存中window0的起始地址的
VIDW0xADD1Bx設(shè)置內(nèi)存中window0的結(jié)束地址的
SHODOWCON寄存器來設(shè)置虛擬windows顯示的;
以下位可以分別設(shè)置哪個windows顯示;
補充:看核心板、地板原理圖相應(yīng)引腳要設(shè)置為LCD的引腳模式,LCD背光要打開;
以下位詳細代碼:
#include 'lyq.h'
#define _ZLS_MODE_
#define RED (0xFF0000)
#define GREEN (0x00FF00)
#define BLUE (0x0000FF)
#define WHITE (0xFFFFFF)
//配置相關(guān)引腳
#define GPF0CON 0xE0200120
#define GPF1CON 0xE0200140
#define GPF2CON 0xE0200160
#define GPF3CON 0xE0200180
#define GPD0CON 0xE02000A0
#define GPD0DAT 0xE02000A4
#define DISPLAY_CONTROL 0xE0107008
//配置控制器
#define VIDCON0 0xF8000000
#define VIDTCON0 0xF8000010
#define VIDCON1 0xF8000004
#define VIDTCON1 0xF8000014
#define VIDTCON2 0xF8000018
#define WINCON0 0xF8000020
#define VIDOSD0A 0xF8000040
#define VIDOSD0B 0xF8000044
#define VIDOSD0C 0xF8000048
#define VIDW00ADD0B0 0xF80000A0
#define VIDW00ADD1B0 0xF80000D0
#define SHODOWCON 0xF8000034
#define _RGB_GPF0CON (*(unsigned int*)0xE0200120)
#define _RGB_GPF1CON (*(unsigned int*)0xE0200140)
#define _RGB_GPF2CON (*(unsigned int*)0xE0200160)
#define _RGB_GPF3CON (*(unsigned int*)0xE0200180)
#define _RGB_GPD0CON (*(unsigned int*)0xE02000A0)
#define _RGB_GPD0DAT (*(unsigned int*)0xE02000A4)
#define _RGB_DISPLAY_CONTROL (*(unsigned int*)0xE0107008)
//配置控制器
#define _RGB_VIDCON0 (*(unsigned int*)0xF8000000)
#define _RGB_VIDTCON0 (*(unsigned int*)0xF8000010)
#define _RGB_VIDCON1 (*(unsigned int*)0xF8000004)
#define _RGB_VIDTCON1 (*(unsigned int*)0xF8000014)
#define _RGB_VIDTCON2 (*(unsigned int*)0xF8000018)
#define _RGB_WINCON0 (*(unsigned int*)0xF8000020)
#define _RGB_VIDOSD0A (*(unsigned int*)0xF8000040)
#define _RGB_VIDOSD0B (*(unsigned int*)0xF8000044)
#define _RGB_VIDOSD0C (*(unsigned int*)0xF8000048)
#define _RGB_VIDW00ADD0B0 (*(unsigned int*)0xF80000A0)
#define _RGB_VIDW00ADD1B0 (*(unsigned int*)0xF80000D0)
#define _RGB_SHODOWCON (*(unsigned int*)0xF8000034)
#define FB_ADDR (0x23000000)
//Horizontal Pulse Width 20
//Horizontal Back Porch 140
//Horizontal Front Porch 160
//Horizontal effective Time 1024
//Vertical Pulse Width 3
//Vertical Back Porch 20
//Vertical Front Porch 12
//Vertical Valid 600
#ifdef _ZLS_MODE_
#define HSPW (40) // 1~40 DCLK
#define HBPD (10 - 1) // 46
#define HFPD (240 - 1) // 16 210 354
#define VSPW (20) // 1~20 DCLK
#define VBPD (10 - 1) // 23
#define VFPD (30 - 1) // 7 22 147
#else
#define HSPW (20) // 1~40 DCLK
#define HBPD (140) // 46
#define HFPD (160) // 16 210 354
#define VSPW (3) // 1~20 DCLK
#define VBPD (20) // 23
#define VFPD (12) // 7 22 147
#endif
#define ROW (600)
#define COL (1024)
#define FB_ADDR (0x23000000)
#define HOZVAL (COL-1)
#define LINEVAL (ROW-1)
#define LeftTopX (0)
#define LeftTopY (0)
#define RightBotX (COL - 1)
#define RightBotY (ROW - 1)
unsigned int *pfb = (unsigned int *)FB_ADDR;
void lcd_init(void)
{
//設(shè)置相應(yīng)引腳為LCD模式
_RGB_GPF0CON = 0x22222222;
_RGB_GPF1CON = 0x22222222;
_RGB_GPF2CON = 0x22222222;
_RGB_GPF3CON = 0x22222222;
//設(shè)置背光開啟,輸出低電平
_RGB_GPD0CON &= ~(0xF << 0);
_RGB_GPD0CON |= (0x1 << 0);
_RGB_GPD0DAT &= ~(0x1 << 0);
//設(shè)置FIMD的輸出為RGB模式輸出
_RGB_DISPLAY_CONTROL &= ~(3 << 0);
_RGB_DISPLAY_CONTROL |= (2 << 0);
上一篇:[S5PV210] 網(wǎng)絡(luò)掛載文件系統(tǒng)
下一篇:arm匯編偽指令詳解
推薦閱讀最新更新時間:2025-05-23 10:45




設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦
- 意法半導(dǎo)體推出用于匹配遠距離無線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設(shè)置字重-ESP32篇
- 使用樹莓派進行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲html,css,js文件,以及網(wǎng)頁和arduino的通訊
- ESP32 freeRTOS使用測試
- API調(diào)用小記(Touchdesigner和ESP32)
- 關(guān)于ESP32/8266使用async-mqtt-client庫的一些基本介紹
- NCP110AFCT105T2GEVB:NCP110 WLCSP4 評估板
- AD9200SSOP-EVAL,用于評估 AD9200 完整 10 位、20 MSPS A/D 轉(zhuǎn)換器的評估板
- 基于DA14580_ADXL362原理圖(小米手環(huán)方案)
- 用于儀表的 2.7 至 11V 儀表放大器
- 可調(diào)臺燈
- 針對交流性能進行優(yōu)化的 18 位、250 kSPS 數(shù)據(jù)采集系統(tǒng)
- 200W Natural Interleaving 轉(zhuǎn)換模式 PFC 反激 LED 驅(qū)動器參考設(shè)計
- DC2732A,LTC2949 電流、電壓和演示板高壓電池組的充電監(jiān)控器
- LT1185CT 折返式電流調(diào)節(jié)器限制的典型應(yīng)用電路
- AD8615AUJZ-R2單電源緩沖DAC輸出運算放大器典型應(yīng)用電路
- 座椅、天窗、電動尾門應(yīng)用 國產(chǎn)車規(guī)級高壓霍爾效應(yīng)傳感器推薦
- 突發(fā)!又一車企車機“崩了”
- 寧德時代為陳立泉院士頒發(fā)“卓越貢獻獎”
- 一文速覽吉利雷神 AI 電混 2.0 發(fā)布會重點
- 2025年1-4月ADAS供應(yīng)商裝機量排行榜:頭部集中與國產(chǎn)突圍并存
- 國內(nèi)飛行汽車無線通信測試成功,通信安全新突破
- SPAD席卷車載激光雷達市場
- 大聯(lián)大品佳集團推出基于Microchip和ams OSRAM產(chǎn)品的10Base-T1S萬級像素大燈方案
- 哈曼推出采用三星Neo QLED技術(shù)的全新顯示屏
- Syntiant推出超低功耗汽車AI創(chuàng)新技術(shù) 提升車輛安全性和用戶體驗
- 超聲波探傷儀的電池的保養(yǎng)
- 機器人來了,是好還是壞
- 鹵素水分測定儀的故障及處理
- ILIFE智意X785智能規(guī)劃掃地機器人,生活好助手值得信奈
- 臭氧檢測儀的作用特點都有哪些
- 協(xié)作機器人市場競爭激烈 人機協(xié)作大勢成趨
- 韓國醫(yī)療康復(fù)機器人普及將從此前以供應(yīng)商為中心轉(zhuǎn)向以用戶為中心
- 機器人技術(shù)被視為是才能變革制造業(yè)的主要改造技術(shù)
- 多功能DONI智能掃地機器人實力除塵 超高顏值外表吸引不少用戶的眼光
- 對實現(xiàn)下一代機器人至關(guān)重要的幾項關(guān)鍵傳感器技術(shù)大盤點