精品国产成人av在线免_国产高潮免费视频_成人综合久久网_可以看毛片的网址_日本在线视频www色_无码精品国产一区二区三区免费_午夜福利123_女同性恋一区二区_jizzjizz国产精品喷水_六月丁香激情网

LCD控制器設置及LCD驅動分析代碼,LCD驅動程序原理詳解

作者: 51Touch     時間:2018-05-21     源于:電子發燒友    總點擊:
【導讀】:要使一塊LCD正常的顯示文字或圖像,不僅需要LCD驅動器,而且還需要相應的LCD控制器。在通常情況下,生產廠商把LCD驅動器會以COF/COG的 形式與LCD玻璃基板制作在一起,而LCD控制器則是由外部的電路來實現

LCD驅動分析_LCD控制器設置及代碼詳解。

1. LCD工作的硬件需求:

要使一塊LCD正常的顯示文字或圖像,不僅需要LCD驅動器,而且還需要相應的LCD控制器。在通常情況下,生產廠商把LCD驅動器會以COF/COG的 形式與LCD玻璃基板制作在一起,而LCD控制器則是由外部的電路來實現,現在很多的MCU內部都集成了LCD控制器,如S3C2410/2440等。通 過LCD控制器就可以產生LCD驅動器所需要的控制信號來控制STN/TFT屏了。

2. S3C2440內部LCD控制器結構圖:


 

LCD驅動分析_LCD控制器設置及代碼詳解

我們根據數據手冊來描述一下這個集成在S3C2440內部的LCD控制器:

a:LCD控制器由REGBANK、LCDCDMA、TIMEGEN、VIDPRCS寄存器組成;

b:REGBANK由17個可編程的寄存器組和一塊256*16的調色板內存組成,它們用來配置LCD控制器的;

c:LCDCDMA是一個專用的DMA,它能自動地把在偵內存中的視頻數據傳送到LCD驅動器,通過使用這個DMA通道,視頻數據在不需要CPU的干預的情況下顯示在LCD屏上;

d:VIDPRCS接收來自LCDCDMA的數據,將數據轉換為合適的數據格式,比如說4/8位單掃,4位雙掃顯示模式,然后通過數據端口VD[23:0]傳送視頻數據到LCD驅動器;

e:TIMEGEN由可編程的邏輯組成,他生成LCD驅動器需要的控制信號,比如VSYNC、HSYNC、VCLK和LEND等等,而這些控制信號又與REGBANK寄存器組中的LCDCON1/2/3/4/5的配置密切相關,通過不同的配置,TIMEGEN就能產生這些信號的不同形態,從而支 持不同的LCD驅動器(即不同的STN/TFT屏)。

3. 常見TFT屏工作時序分析:


 

  LCD提供的外部接口信號:

  VSYNC/VFRAME/STV:垂直同步信號(TFT)/幀同步信號(STN)/SEC TFT信號;

  HSYNC/VLINE/CPV:水平同步信號(TFT)/行同步脈沖信號(STN)/SEC TFT信號;

  VCLK/LCD_HCLK:象素時鐘信號(TFT/STN)/SEC TFT信號;

  VD[23:0]:LCD像素數據輸出端口(TFT/STN/SEC TFT);

  VDEN/VM/TP:數據使能信號(TFT)/LCD驅動交流偏置信號(STN)/SEC TFT 信號;

  LEND/STH:行結束信號(TFT)/SEC TFT信號;

  LCD_LPCOE:SEC TFT OE信號;

  LCD_LPCREV:SEC TFT REV信號;

  LCD_LPCREVB:SEC TFT REVB信號。

  所有顯示器顯示圖像的原理都是從上到下,從左到右的。這是什么意思呢?這么說吧,一副圖像可以看做是一個矩形,由很多排列整齊的點一行一行組成,這些點稱之為像素。那么這幅圖在LCD上的顯示原理就是:

  A:顯示指針從矩形左上角的第一行第一個點開始,一個點一個點的在LCD上顯示,在上面的時序圖上用時間線表示就為VCLK,我們稱之為像素時鐘信號;

  B:當顯示指針一直顯示到矩形的右邊就結束這一行,那么這一行的動作在上面的時序圖中就稱之為1 Line;

  C:接下來顯示指針又回到矩形的左邊從第二行開始顯示,注意,顯示指針在從第一行的右邊回到第二行的左邊是需要一定的時間的,我們稱之為行切換;

  D:如此類推,顯示指針就這樣一行一行的顯示至矩形的右下角才把一副圖顯示完成。因此,這一行一行的顯示在時間線上看,就是時序圖上的HSYNC;

  E:然 而,LCD的顯示并不是對一副圖像快速的顯示一下,為了持續和穩定的在LCD上顯示,就需要切換到另一幅圖上(另一幅圖可以和上一副圖一樣或者不一樣,目 的只是為了將圖像持續的顯示在LCD上)。那么這一副一副的圖像就稱之為幀,在時序圖上就表示為1 Frame,因此從時序圖上可以看出1 Line只是1 Frame中的一行;

  F:同樣的,在幀與幀切換之間也是需要一定的時間的,我們稱之為幀切換,那么LCD整個顯示的過程在時間線上看,就可表示為時序圖上的VSYNC。

  上面時序圖上各時鐘延時參數的含義如下:(這些參數的值,LCD產生廠商會提供相應的數據手冊)

  VBPD(vertical back porch):表示在一幀圖像開始時,垂直同步信號以后的無效的行數,對應驅動中的upper_margin;

  VFBD(vertical front porch):表示在一幀圖像結束后,垂直同步信號以前的無效的行數,對應驅動中的lower_margin;

  VSPW(vertical sync pulse width):表示垂直同步脈沖的寬度,用行數計算,對應驅動中的vsync_len;

  HBPD(horizontal back porch):表示從水平同步信號開始到一行的有效數據開始之間的VCLK的個數,對應驅動中的left_margin;

  HFPD(horizontal front porth):表示一行的有效數據結束到下一個水平同步信號開始之間的VCLK的個數,對應驅動中的right_margin;

  HSPW(horizontal sync pulse width):表示水平同步信號的寬度,用VCLK計算,對應驅動中的hsync_len;

  對于以上這些參數的值將分別保存到REGBANK寄存器組中的LCDCON1/2/3/4/5寄存器中:(對寄存器的操作請查看S3c2440數據手冊LCD部分)

  LCDCON1:17 - 8位CLKVAL

  6 - 5位掃描模式(對于STN屏:4位單/雙掃、8位單掃)

  4 - 1位色位模式(1BPP、8BPP、16BPP等)

  LCDCON2:31 - 24位VBPD

  23 - 14位LINEVAL

  13 - 6位VFPD

  5 - 0位VSPW

  LCDCON3:25 - 19位HBPD

  18 - 8位HOZVAL

  7 - 0位HFPD

  LCDCON4: 7 - 0位HSPW

  LCDCON5:

4. 幀緩沖(FrameBuffer):

幀緩沖是Linux為顯示設備提供的一個接口,它把一些顯示設備描述成一個緩沖區,允許應用程序通過 FrameBuffer定義好的接口訪問這些圖形設備,從而不用去關心具體的硬件細節。對于幀緩沖設備而言,只要在顯示緩沖區與顯示點對應的區域寫入顏色值,對應的顏色就會自動的在屏幕上顯示。

  下面看看2440test里面的lcd.c文件

  static void PutPixel(U32 x,U32 y,U16 c)

  {

  if(x《SCR_XSIZE && y《SCR_YSIZE)

  LCD_BUFFER[(y)][(x)] = c;

  }

  很容易發現TFT LCD上顯示單個像素的函數實際上很簡潔

  看來似乎只需要LCD_BUFFER[(y)][(x)] = c這一句話

  下面就來分析下,是如何通過這一句話來實現在LCD上顯示單個像素的

  先分析下LCD_Init()即LCD初始化函數

  rLCDCON1 = (LCD_PIXCLOCK 《《 8) | (3 《《 5) | (12 《《 1);

  LCDCON1 0x4d000000

  #define LCD_WIDTH 240

  #define LCD_HEIGHT 320

  #define LCD_PIXCLOCK 4

  #define LCD_RIGHT_MARGIN 36

  #define LCD_LEFT_MARGIN 19

  #define LCD_HSYNC_LEN 5

  #define LCD_UPPER_MARGIN 1

  #define LCD_LOWER_MARGIN 5

  #define LCD_VSYNC_LEN 1

  CLKVAL[17:8] = 4

  TFT: VCLK = HCLK / [(CLKVAL+1) * 2] ( CLKVAL》=0 )

  MMODE[7] = 0

  PNRMODE[6:5] = 11 TFT LCD panel

  BPPMODE[4:1] = 1100 16bpp for TFT

  ENVID[0] = 0 Disable

  rLCDCON2 = (LCD_UPPER_MARGIN 《《 24) | ((LCD_HEIGHT - 1) 《《 14) | (LCD_LOWER_MARGIN 《《 6) | (LCD_VSYNC_LEN 《《 0);

  LCDCON2 0x4d000004

  VBPD = 1

  VBPD(vertical back porch):表示在一幀圖像開始時,垂直同步信號以后的無效的行數,對應驅動中的upper_margin

  LINVAL = 240 – 1

  LINVAL:LCD屏的垂直大小

  VFPD = 5

  VFPD(vertical front porch):表示在一幀圖像結束后,垂直同步信號以前的無效的行數,對應驅動中的lower_margin

  VSPW = 1

  VSPW(vertical sync pulse width):表示垂直同步脈沖的寬度,用行數計算,對應驅動中的vsync_len

  rLCDCON3 = (LCD_RIGHT_MARGIN 《《 19) | ((LCD_WIDTH - 1) 《《 8) | (LCD_LEFT_MARGIN 《《 0);

  LCDCON3 0x4d000008

  HBPD = 36

  HBPD(horizontal back porch):表示從水平同步信號開始到一行的有效數據開始之間的VCLK的個數,對應驅動中的left_margin

  HOZVAL = 320 – 1

  HOZVAL:LCD屏的水平大小

  HFPD = 19

  HFPD(horizontal front porth):表示一行的有效數據結束到下一個水平同步信號開始之間的VCLK的個數,對應驅動中的right_margin

  rLCDCON4 = (13 《《 8) | (LCD_HSYNC_LEN 《《 0);

  LCDCON4 0x4d00000c

  MVAL = 13

  HSPW = 5

  HSPW(horizontal sync pulse width):表示水平同步信號的寬度,用VCLK計算,對應驅動中的hsync_len

  # define LCD_CON5 ((1《《11) | (1 《《 9) | (1 《《 8) | (1 《《 3) | (1 《《 0))

  rLCDCON5 = LCD_CON5;

  LCDCON5 0x4d000010

  HWSWP = 1 Swap Enable

  PWREN = 1 Enable PWREN signal

  INVVFRAME = 1 VFRAME/VSYNC pulse polarity Inverted 選擇負極性脈沖

  INVVLINE = 1 VLINE/HSYNC pulse polarity Inverted 選擇負極性脈沖

  FRM565 = 1 5:6:5 Format

  rLCDINTMSK |= 3;

  INT_FrSyn = 1 LCD frame synchronized interrupt Masked

  INT_FiCnt = 1 LCD FIFO interrupt Masked

  rTCONSEL &= (~7);

  rTCONSEL &= ~((1《《4) | 1);

  MODE_SEL = 0 Sync mode

  RES_SEL = 0 320 x 240

  LPC_EN = 0 LPC3600 Disable

  rTPAL = 0x0;

  Temporary palette register enable bit Disable

  volatile static unsigned short LCD_BUFFER[SCR_YSIZE][SCR_XSIZE];

  #define LCD_ADDR ((U32)LCD_BUFFER)

  #define M5D(n) ((n)&0x1fffff)

  rLCDSADDR1 = ((LCD_ADDR 》》 22) 《《 21) | ((M5D(LCD_ADDR 》》 1)) 《《 0);

  rLCDSADDR2 = M5D((LCD_ADDR + LCD_WIDTH * LCD_HEIGHT * 2) 》》 1);

  rLCDSADDR3 = LCD_WIDTH;

  LCDSADDR1 0x4d000014 幀緩沖起始寄存器1

  LCDBANK[29:21] = (U32)LCD_BUFFER 》》 22

  These bits indicate A[30:22] of the bank location for the video buffer in the system memory. LCDBANK value cannot be changed even when moving the view port. LCD frame buffer should be within aligned 4MB region, which ensures that LCDBANK value will not be changed when moving the view port. So, care should be taken to use the malloc() Function

  系統內存地址A[30:22]處的Bank位置為圖像緩沖。LCDBANK的值在視圖移動的值在視圖移動時不能改變,LCD幀緩沖應該在4MB區域對齊,保證LCDBANK的值在移動視圖時不會改變。

  LCDBASEU[20:0] = ((U32)LCD_BUFFER 》》 1)&0x1fffff

  For dual-scan LCD : These bits indicate A[21:1] of the start address of the upper address counter, which is for the upper frame memory of dual scan LCD or the frame memory of single scan LCD.

  For single-scan LCD : These bits indicate A[21:1] of the start address of the LCD frame buffer.

  雙掃描:表明高地址計數器的起始地址A[21:1],用于LCD雙掃描的上部幀內存或者單掃描的幀內存

  單掃描:表明LCD幀緩沖的起始地址A[21:1]

  LCDSADDR2 0x4d000018幀緩沖起始寄存器2

  LCDBASEL[20:0] = ((LCD_ADDR + LCD_WIDTH * LCD_HEIGHT * 2) 》》 1)& 0x1fffff

  = (LCD_ADDR 》》 1 + LCD_WIDTH * LCD_HEIGHT)& 0x1fffff

  For dual-scan LCD: These bits indicate A[21:1] of the start address of the lower address counter, which is used for the lower frame memory of dual scan LCD.

  For single scan LCD: These bits indicate A[21:1] of the end address of the LCD frame buffer.

  LCDBASEL = ((the frame end address) 》》1) + 1

  = LCDBASEU + (PAGEWIDTH+OFFSIZE) x (LINEVAL+1)

  雙掃描:表明低地址計數器的起始地址A[21:1],用于LCD雙掃描的下部幀內存或者單掃描的幀內存

  單掃描:表明LCD幀緩沖的結束地址A[21:1]

  LCDSADDR3 0x4d00001c幀緩沖起始寄存器3

  OFFSIZE = 0

  PAGEWIDTH = 320 虛擬屏頁寬(半字數量) 定義了幀中的視圖域寬度

  程序分析至此,大概已經清楚是如何通過LCD_BUFFER[(y)][(x)] = c來實現在LCD上顯示單個像素了。

  就是在設置好各個LCD寄存器之后,通過將LCD_BUFFER地址與LCDBANK以及LCDBASEU、LCDBASEL對應之后,通過改變LCD_BUFFER里不同單元存儲的值(即像素的顏色),即可在LCD相應位置上做出顯示。

  那么在應用不同LCD的時候,只需對LCDCONx以及LCDSADDRx做出相應的配置,在創建一個數組,做出上述的地址映射即可。

  關于VCLK計算,由于配置的是TFT,可用到公式VCLK = HCLK / [(CLKVAL+1) * 2] ( CLKVAL》=0 )

  設置的FLK為400MHz,HCLK為100MHz,CLKVAL = 4,因此VLCK = 10MHz


相關閱讀:電視生產線    量子點技術    液晶顯示技術    OLED技術    QDOLED    屏下指紋識別    供應商    匯頂科技    光學指紋芯片    
關于我們 | 廣告服務 | 聯系我們 | 版權聲明 | 隱私政策 | 網站地圖 | 友情鏈接 | 歡迎投稿 | 加入收藏 | 意見反饋 | 經銷商加入
網站廣告、經銷商加盟、觸摸屏軟件銷售: 028-85108892 13183843395 028-66219290 聯系人: 張小姐 產品購買聯系方式如下:
地址:成都市高升橋東路2號高盛中心1109室 電話: 028-85108892 13183843395 028-66219290
版權所有 Copyright(C) 2003-2017 All rights reserved 中國觸摸屏網 電子郵件: 51touch@126.com touch8@gmail.com
業務合作QQ:觸摸屏技術,觸摸屏報價,觸摸屏軟件咨詢 43361182 觸摸屏軟件制作與技術支持:觸摸屏軟件,觸摸查詢系統,觸摸查詢軟件 893008608 媒體合作QQ: 893008608

2000人超級QQ觸摸屏群:59897879 171220106


分享到
精品国产成人av在线免_国产高潮免费视频_成人综合久久网_可以看毛片的网址_日本在线视频www色_无码精品国产一区二区三区免费_午夜福利123_女同性恋一区二区_jizzjizz国产精品喷水_六月丁香激情网
欧美一级黄色录像片| 久久国产精品国产精品| 午夜免费福利在线| 成年人视频大全| 男女视频一区二区三区| 97久久国产亚洲精品超碰热| 免费看黄在线看| 91欧美视频在线| 草草久久久无码国产专区| 天天干天天操天天干天天操| 亚欧在线免费观看| 一卡二卡三卡视频| 久久久久久久久久一区| 国产亚洲综合视频| 日日噜噜噜噜久久久精品毛片| 97超碰人人爱| 欧美一级特黄a| 强伦女教师2:伦理在线观看| 国产又粗又长又大的视频| 日日噜噜噜噜久久久精品毛片| 精品国产一区二区三区无码| 亚洲高清在线不卡| 国内自拍视频网| 啊啊啊一区二区| 欧美一区二区三区综合| 91欧美一区二区三区| 亚洲五月天综合| 精品视频在线观看一区| 五月天男人天堂| 超碰成人在线播放| 欧美黄色一级片视频| www黄色日本| 久久亚洲精品无码va白人极品| 国产树林野战在线播放| 污污的视频免费观看| 黄色av免费在线播放| 日韩中文字幕在线视频观看| 蜜臀精品一区二区| 国产免费xxx| 樱空桃在线播放| 免费看av软件| 中国一级黄色录像| 九九久久九九久久| 在线观看17c| 精品人妻大屁股白浆无码| 国产免费内射又粗又爽密桃视频| 日本高清免费观看| 手机精品视频在线| 超碰91在线播放| 成人性生交视频免费观看| 亚洲精品免费一区亚洲精品免费精品一区 | 国产91美女视频| 熟女少妇在线视频播放| 浮妇高潮喷白浆视频| 内射国产内射夫妻免费频道| 欧美亚洲一二三区| 黑鬼大战白妞高潮喷白浆| 玩弄japan白嫩少妇hd| 成年人在线观看视频免费| 婷婷激情四射五月天| 在线观看国产福利| 国产免费一区二区三区四在线播放| 黄色一级片网址| 欧美国产视频一区| 免费欧美一级视频| 日本激情视频在线| 日韩av一卡二卡三卡| 五月天综合婷婷| 日韩精品 欧美| www.天天射.com| 1314成人网| 国产素人在线观看| 久草福利视频在线| 亚欧美一区二区三区| 日韩一级免费看| 日韩a在线播放| 一区二区久久精品| 日本免费a视频| 国产精品动漫网站| 污免费在线观看| 青青青免费在线| 男女猛烈激情xx00免费视频| 成年人小视频网站| 日本黄色播放器| 黄色动漫网站入口| 中文字幕日韩久久| 妞干网在线视频观看| 色多多视频在线播放| 国产资源第一页| 日韩免费高清在线| 麻豆映画在线观看| 国产成人久久婷婷精品流白浆| 最新免费av网址| 国产午夜福利在线播放| 日韩成人精品视频在线观看| 国内少妇毛片视频| 91看片在线免费观看| www.国产在线播放| 日韩高清第一页| 日韩a级在线观看| 国产三级三级看三级| 日本精品久久久久久久久久| 天堂网在线免费观看| 欧美一级欧美一级| 红桃视频 国产| 国产女大学生av| 影音先锋成人资源网站| 欧美伦理片在线看| 日韩精品在线中文字幕| 欧美国产日韩另类| av免费在线播放网站| 污污污污污污www网站免费| 中文字幕在线综合| 黄色一级片播放| 黄色一级大片免费| 亚洲欧美手机在线| 日本男人操女人| 欧美 丝袜 自拍 制服 另类| 亚洲精品国产久| 国产真人无码作爱视频免费| 无码av天堂一区二区三区| 加勒比av中文字幕| 日本免费观看网站| 日日橹狠狠爱欧美超碰| 4444亚洲人成无码网在线观看| www.色就是色.com| 国产视频在线视频| 大陆av在线播放| 中国老女人av| 一级做a免费视频| 国产嫩草在线观看| 日韩一级在线免费观看| av高清在线免费观看| 国产精品视频网站在线观看| 91精品视频国产| 伊人国产在线视频| 亚洲视频在线观看一区二区三区| 国产免费黄色小视频| 精品人妻人人做人人爽| 麻豆视频传媒入口| 香蕉视频色在线观看| 奇米影视四色在线| 亚洲最大综合网| 欧美两根一起进3p做受视频| 国产超级av在线| 国产二区视频在线播放| av在线播放天堂| www.国产在线视频| 国产日本在线播放| 国产免费一区二区视频| 妺妺窝人体色www看人体| 性生活免费观看视频| 色香蕉在线观看| 亚洲第一精品区| 女女同性女同一区二区三区按摩| 日本www高清视频| www.爱色av.com| 久久在线中文字幕| 搞av.com| 日本韩国欧美在线观看| 男人天堂av片| 午夜精品久久久久久久无码 | 中文字幕第100页| 三级a三级三级三级a十八发禁止| 黄色aaa级片| 欧美特黄aaa| 黄频视频在线观看| 99re6这里有精品热视频| 男女日批视频在线观看| 波多野结衣之无限发射| av免费观看网| 老司机午夜av| 五月花丁香婷婷| 日韩不卡一二区| 阿v天堂2018| wwwxxx黄色片| 在线观看日本一区二区| 青青草原国产免费| 免费看毛片的网址| 国产无套内射久久久国产| 91香蕉视频导航| 中文字幕av久久| 2018日日夜夜| 日本成人在线免费视频| 天天干天天av| 国产高清不卡无码视频| 免费看一级大黄情大片| 91n.com在线观看| 国产日本欧美在线| av7777777| 手机版av在线| 2019日韩中文字幕mv| 亚洲人成色77777| 中文字幕在线视频一区二区| 日本精品久久久久久久久久| 热久久精品国产| 女女同性女同一区二区三区按摩| 国产h视频在线播放| 亚洲欧美偷拍另类| 青青青在线视频播放|