點(diǎn)擊上方「 嵌入式云IOT技術(shù)圈 」,選擇「置頂公眾號(hào)」第一時(shí)間查看嵌入式筆記! 來源 | CSDN博客-黃逸芬 版權(quán)聲明:本文為博主原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接和本聲明。本文鏈接:
https://blog.csdn.net/weixin_42881419/article/details/104189012LCD操作原理 LCD屏幕上的點(diǎn)稱為像素 屏幕后面有電子槍【紅綠藍(lán)】:一邊移動(dòng),一邊發(fā)出顏色 每來一個(gè)clk,移動(dòng)一個(gè)像素 R、G、B三組線確定顏色 接收到HSYNC(水平同步信號(hào))脈沖,電子槍從最右邊跳到最左邊。(跳到下一行) 接收到VSYNC[垂直同步信號(hào)]從最下邊跳到最上邊。(跳到原點(diǎn)) LCD時(shí)序圖 LCD硬件原理圖 006 LCD設(shè)置 打開LCD4.3芯片手冊(cè),根據(jù)芯片手冊(cè)設(shè)置 2440_LCD時(shí)序圖 LCD display config 可以通過
調(diào)整四邊黑框 調(diào)整
屏幕邊框 BPP(bit per pixel) BPP:在FrameBuffer中
每個(gè)像素占據(jù)多少位 ,
硬件 上LCD的BPP是確定的 但是可以對(duì)LCD進(jìn)行封裝 16條線,每個(gè)像素占16位數(shù)據(jù) ,16BPP002 S3C2440_LCD控制器 功能:1.從內(nèi)存中(FrameBuffer)取出某個(gè)像素的數(shù)據(jù):把FrameBuffer的地址告訴LCD控制器,BPP,分辨率2.配合其他信號(hào)把數(shù)據(jù)發(fā)送給LCD:把時(shí)序告訴LCD控制器,設(shè)置引腳的極性
BLOCK DIAGRAM 16BPP 調(diào)色板[ palette]本質(zhì):內(nèi)存
16BPP中,本來用16bit表示1像素,也可用利用調(diào)色板,用8位表示;8BPP:偽彩色;16/24BPP:真彩色。 那么當(dāng)使用像素深度為8pp時(shí)候,像素深度和我們的帶寬不一致,我們的顏色要用16位表示,如果直接用上肯定不可能,那我們就可以選擇用調(diào)色板,調(diào)色板中存放了256種16bpp的顏色,這時(shí)候我們color存放的就不是真實(shí)的顏色值了,而是存放的是調(diào)色板中256種顏色的索引,成線性關(guān)系一一對(duì)應(yīng),這樣我們大大減輕了系統(tǒng)的負(fù)擔(dān)。用16bpp還是8bpp這得取決實(shí)際情況,16bpp肯定比8pp清晰,但同時(shí)帶來的負(fù)荷也更加重。
過程:FrameBuffer中8bit —> LCD控制器 —> 調(diào)色板中取16bit【用8bit作為索引,取出真正的顏色】 —> LCD 003LCD編程_框架與準(zhǔn)備 定義結(jié)構(gòu)體 typedef?struct?pins_polarity{ ?int?vclk;?/*?normal:在下降沿獲取?*/ ?int rgb;?/* normal:高電平表示1 */ ?int hsync;??/* normal:高脈沖?*/ ?int vsync;??/* normal:高脈沖?*/ }pins_polarity,*p_pins_polarity;typedef?struct?time_sequence{ ?/*?垂直方向?*/ ?int?tvp;/*?vysnc脈沖寬度?*/ ?int?tvb;/*?上邊黑框,Vertical?Back?porch?*/ ?int?tvf;/*?下邊黑框,Vertical?Front?porch?*/ ?/*?水平方向?*/ ?int?thp;/*?hysnc脈沖寬度?*/ ?int?thb;/*?左邊黑框,Horizontal?Back?porch?*/ ?int?thf;/*?右邊黑框,Horizontal?Front?porch?*/ }time_sequence,*p_time_sequence;定義lcd參數(shù)結(jié)構(gòu)體 typedef?struct?lcd_params{ ?/*?引腳極性?*/ ?pins_polarity?pins_pol; ? ?/*?時(shí)序?*/ ?pins_sequence?time_seq; ? ?/*?分辨率,bpp?*/ ?int?xres; ?int?yres; ?int?bpp; ? ?/*?framebuffer的地址?*/ ?unsigned?int?fb_base; }lcd_params,*p_lcd_params;004LCD_編程_抽象出重要結(jié)構(gòu)體 結(jié)構(gòu)體傳參 005LCD_LCD控制器 S3C2440_controller.c:根據(jù)S3C2440數(shù)據(jù)手冊(cè),設(shè)置
LCD 控制器相關(guān)寄存器
引腳初始化 void?jz2440_lcd_pin_init(void) { ?/*?初始化引腳?:?背光引腳*/ ?GPBCON?