在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>C語(yǔ)言|源代碼>LCD驅(qū)動(dòng)編寫(xiě)總結(jié)

LCD驅(qū)動(dòng)編寫(xiě)總結(jié)

2009-09-19 | rar | 322 | 次下載 | 10積分

資料介紹

LCD驅(qū)動(dòng)編寫(xiě)小結(jié)
3.1 背光:對(duì)于大部分的彩色LCD一定要接背光,我們才能看到屏上的內(nèi)容;
3.2 控制信號(hào):不同的LCD廠商對(duì)于控制信號(hào)有不同的叫法,
VFRAME:LCD控制器和LCD驅(qū)動(dòng)器之間的幀同步信號(hào)。該信號(hào)告訴LCD屏的新的一幀開(kāi)始了。LCD控制器在一個(gè)完整幀顯示完成后立即插入一個(gè)VFRAME信號(hào),開(kāi)始新一幀的顯示;
VLINE:LCD控制器和LCD驅(qū)動(dòng)器之間的線同步脈沖信號(hào),該信號(hào)用于LCD驅(qū)動(dòng)器將水平線(行)移位寄存器的內(nèi)容傳送給LCD屏顯示。LCD控制器在整個(gè)水平線(整行)數(shù)據(jù)移入LCD驅(qū)動(dòng)器后,插入一個(gè)VLINE信號(hào);
VCLK:LCD控制器和LCD驅(qū)動(dòng)器之間的像素時(shí)鐘信號(hào),由LCD控制器送出的數(shù)據(jù)在VCLK的上升沿處送出,在VCLK的下降沿處被LCD驅(qū)動(dòng)器采樣;
VM:LCD驅(qū)動(dòng)器的AC信號(hào)。VM信號(hào)被LCD驅(qū)動(dòng)器用于改變行和列的電壓極性,從而控制像素點(diǎn)的顯示或熄滅。VM信號(hào)可以與每個(gè)幀同步,也可以與可變數(shù)量的VLINE信號(hào)同步。

3.3 數(shù)據(jù)線:也就是我們說(shuō)的RGB信號(hào)線,不過(guò)需要與硬件工程是配合的是他采用了哪種接線方法,24位16位或其它。對(duì)于16位TFT屏又有兩種方式,在寫(xiě)驅(qū)動(dòng)前你要清楚是5:6:5還是5:5:5:I,這些與驅(qū)動(dòng)的編寫(xiě)都有關(guān)系
3.4 要注意一下LCD的電源電壓,對(duì)于手持設(shè)備來(lái)說(shuō)一般都為5V或3.3V,如果LCD的需要的電源電壓是5v,那就要注意,電壓只有3.3V的電壓需要提高到5V,否則你可能能將屏點(diǎn)亮,但顯示的圖像要等到太陽(yáng)從西邊出來(lái)的那一天才能正常,呵呵,我可吃過(guò)苦頭的哦!
3.5 3.3V邏輯電壓轉(zhuǎn)變成5V邏輯電壓電路圖
3.6 最后還有一個(gè)問(wèn)題,有些LCD屏還需要一顆伴侶芯片,就是S3C2410手冊(cè)中的那顆LPC3600。這可能在LCD的手冊(cè)中都有論述吧,我沒(méi)有遇到過(guò)這樣的屏,所以也不是很清楚,不過(guò)現(xiàn)在的大部分LCD屏應(yīng)該都不需要這個(gè)討厭的家伙了
3.7 還得提醒大家一下,S3C2410到LCD屏的連線千萬(wàn)千萬(wàn)別超過(guò)0.5米,否則會(huì)給你帶來(lái)麻煩,我也是吃過(guò)苦頭的,LCD屏上面的部分顯示任何信息都是正確的,而只有屏的底部會(huì)有時(shí)正確有時(shí)錯(cuò)誤,折騰了好一陣,才知道是連線太長(zhǎng)的緣故!
3.8 好了,在硬件工程師的幫助下,硬件接好了,那就該我們做軟件的干活了,編寫(xiě)驅(qū)動(dòng)吧
3.9 讓我們首先看一下RGB數(shù)據(jù)結(jié)構(gòu)的定義
static struct lcd_rgb ***_lcd_rgb_16 = {
red: //-- offset:11 length:5
green: //-- offset:5 length:6
blue: //-- offset:0 length:5
transp: //-- offset:0 length:0
};
3.10 這是對(duì)16位色的RGB顏色進(jìn)行定義,R:G:B:I = 5:6:5:0,即我們常說(shuō)的565顯示方式。
3.11 隨便寫(xiě)一個(gè)16位數(shù)據(jù)的顏色數(shù)據(jù)(為了分析的方便,我把它寫(xiě)成二進(jìn)制)
RGB = 10101101 10111001 根據(jù)上面的結(jié)構(gòu)定義我們來(lái)分析一下RGB各是多少(因?yàn)闆](méi)有透明色,我們不去分析)
a) blue: {offset: 0, length: 5} 偏移量為0,長(zhǎng)度為5,我們從那個(gè)RGB中提取出來(lái)便是 “11001”
b) green:{offset: 5, length: 6} 偏移量為5,長(zhǎng)度為6,我們從那個(gè)RGB中提取出來(lái)便是101 101
c) red: {offset: 11, length: 5 } 偏移量為11,長(zhǎng)度為5,我們從那個(gè)RGB中提取出來(lái)便是 10101
d) 我們得到了一個(gè)RGB值為21:45:25,就是這個(gè)顏色
e) 那么反過(guò)來(lái),有了RGB的值我們?cè)撊绾?,因?yàn)镽GB的有效位數(shù)都不足一個(gè)字節(jié)(8位),那我們只能忍痛割愛(ài)了,舍棄掉低位數(shù)據(jù),代碼如下:
r = R & 0xF8;
g = G & 0xFC;
b = B & 0xF8;
high = r | (g<<5);
low = (g<<3) | (b>>3);
color= (high << 8) | low;
記住,這段代碼在GUI程序中是有用的
3.12 很重要的:
a)顏色位數(shù),bpp:16如果你的LCD屏是TFT的,那一般都可以達(dá)到16位色或24位色,這也要看硬件怎么連接了,根據(jù)情況進(jìn)行設(shè)置即可;
b) LCD屏的寬度和高度xres: 240,yres: 320這個(gè)就不用多說(shuō)了,你的屏的分辨率是多少就設(shè)置成多少唄。
3.12 寄存器的設(shè)置,這些也不困難。下面就讓我們一起一口一口的將S3C2410的LCD寄存器統(tǒng)統(tǒng)吃掉!
首先介紹一下我這塊屏,這是日立的一塊TFT屏,大小為640X240,可以支持到16位色。
與驅(qū)動(dòng)有關(guān)的一張表,
3.13 看一下LCD寄存器1的設(shè)置。
LINECNT --- 這是一個(gè)只讀的數(shù)據(jù),我們當(dāng)然沒(méi)有必要理它
CLKVAL --- 這可是一個(gè)很有用的參數(shù),其實(shí)沒(méi)必要管它后面的計(jì)算,我們可以通過(guò)實(shí)際的測(cè)試來(lái)得出一個(gè)有效的值,對(duì)于PNRMODE --- 這個(gè)應(yīng)該不用多做解釋,大家一看都明白了,對(duì)于TFT屏,只能設(shè)置成11,而對(duì)于CSTN屏,可能需要根據(jù)實(shí)際屏的信息去設(shè)置,我遇到的屏都設(shè)置成10,即8bit單掃描模式。對(duì)于4bit單掃描、4bit雙掃描、8bit單掃描的BPPMODE --- 這個(gè)參數(shù)更不用多說(shuō)了吧,就是設(shè)置屏的顏色位數(shù)嘍。
3.14 LCD 控制器 2,對(duì)于 TFT 屏必須要填
看一下圖二 LCD屏資料,對(duì)比一下得出如下信息:
LCD2_VBPD:
Vertical back po
LCD2_VFPD:
Vertical front porc
LCD2_VSPW:
Vsync Valid width
關(guān)于LINEVAL在程序的后面將
經(jīng)過(guò)分析,我們知道了如何設(shè)置LCD2:
3.15 LCD 控制器 3
對(duì)于 TFT 屏,很容易將 HBPD 和 HFPD 找出來(lái),如下
porch 典型值為 37
porch 典型值為 32
此處暫時(shí)不管
LCD3_HBPD:
Horizontal back
LCD3_HFBD:
Horizontal back
對(duì)于HOZVAL同樣會(huì)在后面提到,
經(jīng)過(guò)分析,我們知道了如何設(shè)置LCD3:
3.16 LCD 控制器 4
對(duì)于 TFT 屏,需要設(shè)置 HSPW 的值,這個(gè)在 LCD 手冊(cè)上也很容易
_HSPW:
典型值為 5意思,有什么作用,我從來(lái)不動(dòng)它,只取它最初的那個(gè)值13
經(jīng)過(guò)分析,我們知道了如 何設(shè)置 LCD4:
3.17 LCD 控制器 5
這個(gè)寄存器的看起來(lái)比較復(fù)雜,但是無(wú)外乎這幾類:
a.只讀信息:VSTATUS和HSTATUS只讀的東東,設(shè)置它也沒(méi)
b.TFT屏的顏色信息:BPP24BL、FRM565TFT屏的顏色信息,這個(gè)我們?cè)贚CD的硬件連接時(shí)已經(jīng)提到了,根據(jù)具體的接線方式,設(shè)置信息。
c.控制信號(hào)的極性,這些信息主要是使S3C2410的信號(hào)輸出極性與LCD屏的輸入極性題,需要根據(jù)具體的硬件進(jìn)行設(shè)置,較為常見(jiàn)的是vline/hsync 、VFRAME/VSYNC脈沖的極性。
d.顏色信息的字節(jié)交換控制位:BSWP、HWSWP
這兩位用來(lái)控制字節(jié)交換和半字交換,主要用來(lái)大小頭的問(wèn)題,如果
輸出到屏上的漢字左右互換了,或者輸出到屏上的圖花屏了,可以更改這個(gè)選項(xiàng)。
e.我的這塊TFT的信息設(shè)置如下:lcdcon5,一塊 CSTN 屏的信息:lcdcon5
f.FrameBuffer 起始寄存器 2 和 FrameBuffer 起始寄存器 3
這兩個(gè)寄存器的設(shè)置比較重要,在此我給出12位色CSTN屏和16位色TFT的設(shè)置代碼:
g.RGB Loopup Table Register
這三個(gè)寄存器的在驅(qū)動(dòng)256色CSTN屏的時(shí)候需要使用,我在別的芯片上使用過(guò),因?yàn)檫@顆芯片支持12位色,所以沒(méi)有去調(diào)試,我給出兩組可能的值:
S3C44B0上的
rREDLUT = 0xFCA86420;
rGREENLUT = 0xFCA86420;
rBLUELUT = 0xFFFFFA50;
Jupiter上的
rREDLUT = 0xFEC85310
rGREENLUT = 0xFEC85310
rBLUELUT = 0xFB40
3.18 好了,各個(gè)寄存器的設(shè)置完成了,最后在驅(qū)動(dòng)CSTN屏的時(shí)候需要提醒大家一句,CSTN的信號(hào)引腳中有一個(gè)叫VM/DISP的信號(hào)線,這個(gè)信號(hào)線的作用就是打開(kāi)LCD的顯示開(kāi)關(guān),讓其進(jìn)行顯示,它可以接到任何一個(gè)GPIO口上。S3C2410中提供了一個(gè)VM信號(hào),可以將LCD的這個(gè)信號(hào)與S3C2410的VM信號(hào)相接即可,然后在驅(qū)動(dòng)中一定要加上如下語(yǔ)句(藍(lán)色選中部分):
否則你的LCD可能沒(méi)有任何顯示哦(對(duì)于TFT屏不需要這個(gè)語(yǔ)句)
3.19. 驅(qū)動(dòng)寫(xiě)好了,重新Make,下載就可以了。如果一切順利,在TFT屏或256色的CSTN屏上會(huì)有一個(gè)漂亮的小蜻蜓(應(yīng)該是蜻蜓吧)出現(xiàn)。注意,并不是蜻蜓出現(xiàn)了就代表你的驅(qū)動(dòng)OK了,還要用GUI程序做進(jìn)一步的測(cè)試,因?yàn)槟骋粋€(gè)或幾個(gè)參數(shù)雖然不正確,但是仍然能夠看到小蜻蜓的,但顯示圖形的時(shí)候就有問(wèn)題了。另外,在驅(qū)動(dòng)CSTN到12位色的時(shí)候,我們?cè)谄辽峡床坏叫◎唑眩ㄎ业腘塊CSTN屏上都沒(méi)見(jiàn)到小蜻蜓),我想,可能是armLinux本身不支持12位色顯示,或者我們某些地方?jīng)]搞對(duì)的原因吧,但這不代表你的驅(qū)動(dòng)有問(wèn)題,用GUI程序?qū)慒rameBuffer,看看能否的到正確的結(jié)果。
3.20. GUI程序的編寫(xiě)
3.21 其實(shí)要在LCD上顯示圖像,說(shuō)白了就是把數(shù)據(jù)(包含顏色)寫(xiě)到FrameBuffer中對(duì)應(yīng)的位置就可以了用mmap函數(shù)使用戶空間的一段地址關(guān)聯(lián)到設(shè)備內(nèi)存(FrameBuffer)上。無(wú)論何時(shí),只要程序在分配的地址范圍內(nèi)進(jìn)行讀取或者寫(xiě)入,實(shí)際上就是對(duì)設(shè)備的訪問(wèn),使用 mmap 可以既快速又簡(jiǎn)單地訪問(wèn)顯示卡的內(nèi)存。對(duì)于象這樣的性能要求比較嚴(yán)格的應(yīng)用來(lái)說(shuō),直接訪問(wèn)能給我們提供很大不同。
3.22 不過(guò)我曾將幫一個(gè)網(wǎng)友調(diào)試了一個(gè)S3C44B0上的GUI程序,在他的GUI中mmap函數(shù)總會(huì)出錯(cuò),因?yàn)闆](méi)有拿到他的硬件和驅(qū)動(dòng)源碼,沒(méi)有分析出其中的原因,所以只得用write函數(shù),直接向fb0寫(xiě)入數(shù)據(jù),奇怪的是只寫(xiě)入一部分?jǐn)?shù)據(jù)好像都不起任何作用,只得整屏數(shù)據(jù)寫(xiě)入才搞定了。這可就比較痛苦了,不過(guò)好在他只是寫(xiě)入的黑白數(shù)據(jù),數(shù)據(jù)量還不是很大,要是彩色的那可真的痛苦了
3.23 另外,我還想多啰嗦兩句,F(xiàn)rameBuffer的像素點(diǎn)與LCD屏上的像素點(diǎn)的對(duì)應(yīng)關(guān)系 ,深入了解一下對(duì)程序的理解可能會(huì)更清楚一點(diǎn)。我們知道黑白(2色)顏色用0和1就可以表示了,也就是1位數(shù)據(jù)就可以了,那1個(gè)字節(jié)就可以表示8位數(shù)據(jù),假如這個(gè)字節(jié)是10101010,F(xiàn)rameBuffer的偏移地址為0,則在LCD屏上便會(huì)顯示出4個(gè)黑點(diǎn),黑點(diǎn)中間會(huì)有4個(gè)白點(diǎn)出現(xiàn)(假如1是黑色);對(duì)于4色則用00、01、10、11就可以表示出四種顏色,即用兩位數(shù)據(jù)可以表示一位數(shù)據(jù),那同樣是10101010,則對(duì)應(yīng)于LCD屏上則顯示的是顏色值為10,長(zhǎng)度為4(8/2)的一條直線;同理,對(duì)于8位色(256色),則8位數(shù)據(jù)才能表示出一個(gè)點(diǎn)的顏色值,10101010在LCD屏上就只能顯示為顏色值為10101010的點(diǎn)了。
3.24 有了上面的基礎(chǔ)我們就可以很好的理解這個(gè)語(yǔ)句了:
即FrameBuffer的大小=LCD屏的寬度 * LCD屏的高度 * 每像素的位數(shù) / 每字節(jié)的位數(shù)
例如,一個(gè)320*240的黑白平,F(xiàn)rameBuffer的大小為
320 * 240 * 1 / 8 = 9600 (字節(jié))
而一個(gè)320 * 240的16位色LCD的FrameBuffer的大小則為
3.25 TFT屏16位色的畫(huà)點(diǎn)函數(shù)
3.26 5) TFT屏16位色下顯示24色位圖函數(shù)
320 * 240 * 16 / 8 = 153600(字節(jié)

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1電子電路原理第七版PDF電子教材免費(fèi)下載
  2. 0.00 MB  |  1490次下載  |  免費(fèi)
  3. 2單片機(jī)典型實(shí)例介紹
  4. 18.19 MB  |  92次下載  |  1 積分
  5. 3S7-200PLC編程實(shí)例詳細(xì)資料
  6. 1.17 MB  |  27次下載  |  1 積分
  7. 4筆記本電腦主板的元件識(shí)別和講解說(shuō)明
  8. 4.28 MB  |  18次下載  |  4 積分
  9. 5開(kāi)關(guān)電源原理及各功能電路詳解
  10. 0.38 MB  |  10次下載  |  免費(fèi)
  11. 6基于AT89C2051/4051單片機(jī)編程器的實(shí)驗(yàn)
  12. 0.11 MB  |  4次下載  |  免費(fèi)
  13. 7藍(lán)牙設(shè)備在嵌入式領(lǐng)域的廣泛應(yīng)用
  14. 0.63 MB  |  3次下載  |  免費(fèi)
  15. 89天練會(huì)電子電路識(shí)圖
  16. 5.91 MB  |  3次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234313次下載  |  免費(fèi)
  3. 2PADS 9.0 2009最新版 -下載
  4. 0.00 MB  |  66304次下載  |  免費(fèi)
  5. 3protel99下載protel99軟件下載(中文版)
  6. 0.00 MB  |  51209次下載  |  免費(fèi)
  7. 4LabView 8.0 專業(yè)版下載 (3CD完整版)
  8. 0.00 MB  |  51043次下載  |  免費(fèi)
  9. 5555集成電路應(yīng)用800例(新編版)
  10. 0.00 MB  |  33562次下載  |  免費(fèi)
  11. 6接口電路圖大全
  12. 未知  |  30320次下載  |  免費(fèi)
  13. 7Multisim 10下載Multisim 10 中文版
  14. 0.00 MB  |  28588次下載  |  免費(fèi)
  15. 8開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
  16. 未知  |  21539次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935053次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537791次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234313次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233045次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191183次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
  14. 158M  |  183277次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138039次下載  |  免費(fèi)
主站蜘蛛池模板: 亚州免费一级毛片 | 日本黄色片在线播放 | 国产午夜精品视频 | 国内精品久久久久久久久野战 | 玖玖激情| 国产免费爽爽视频免费可以看 | www.狠狠操.com | 久久久久国产精品四虎 | 天天夜天干天天爽 | 国产产一区二区三区久久毛片国语 | 黄视频国产 | 国产成人三级经典中文 | 阿v视频在线观看免费播放 爱爱视频天天干 | 在线看av网址 | 中文字幕视频一区 | 全部免费特黄特色大片农村 | 黄色录像三级 | 日韩夜夜操 | 亚洲综合在线最大成人 | 午夜免费啪视频 | 高清一级毛片一本到免费观看 | 四虎影视永久在线 yin56xyz | 中文字幕在线二区 | 在线精品视频成人网 | 成人国产日本亚洲精品 | 国产国产人免费人成成免视频 | 亚洲一区视频在线 | 丁香婷婷成人 | 日本人善交69xxx | 日韩草逼 | 国产一区二区在线视频播放 | 天天干天天摸天天操 | 午夜欧美成人久久久久久 | 国产情侣自拍小视频 | 天天拍天天干天天操 | 超级淫小黄文大全很污的那种 | 免费日本黄色片 | 成年视频在线观看 | 免费一级视频在线播放 | 国产亚洲美女精品久久久2020 | 久久国产美女免费观看精品 |