這可能是最古老、最簡(jiǎn)單的液晶屏了,型號(hào)是1602A,它是上世紀(jì)80的產(chǎn)物,但是直到現(xiàn)在它還是非常受歡迎,在很多設(shè)備上都可以看到它的身影。
接下來(lái)我們就來(lái)講一下這種屏幕是如何工作的。
這是它顯示的圖案,如果放大來(lái)看,會(huì)發(fā)現(xiàn)它的像素就是一個(gè)個(gè)的小方塊。
如果我們讓它的像素全部顯示出來(lái)是這樣的。
它橫著有16個(gè)這樣的區(qū)域,豎著有兩個(gè),所以這種屏幕的型號(hào)是1602。
每一個(gè)區(qū)域橫著數(shù)有5個(gè)像素,豎著數(shù)有7個(gè)像素,每個(gè)區(qū)域就是35個(gè)像素,所以整個(gè)屏幕就是1120個(gè)像素。
那這個(gè)玩意兒是怎么控制這1000多個(gè)像素的呢?
要搞明白這個(gè)問(wèn)題,我們首先要知道它的一個(gè)像素是怎么控制的。
屏幕的最下面是一層LED背光板,當(dāng)我們給它接上電,它就可以發(fā)光。
在它的上面有一層液晶,每一個(gè)像素都是由一小塊液晶來(lái)控制的。
當(dāng)我們不給液晶施加電壓,它幾乎是完全透明的。
而當(dāng)我們給某一小塊液晶施加電壓之后,它就不透光了,因此形成了一個(gè)的小黑點(diǎn),也就是我們看到的像素點(diǎn)。
因?yàn)椴恍枰曙@示,所以只需要讓液晶介于透光和不夠光兩種狀態(tài)之間就可以,我們只需要控制液晶的高低電壓,就能控制一個(gè)像素點(diǎn)了。
如果是控制一個(gè)像素點(diǎn),那很簡(jiǎn)單,讓微控制器的引腳直接控制液晶的電壓就可以了。
但是面對(duì)1120個(gè)像素點(diǎn),微控制器就力不從心了。
因?yàn)橐话愕奈⒖刂破饕_數(shù)量有限,沒(méi)辦法控制1000多塊液晶。
針對(duì)這個(gè)疼點(diǎn),聰明的人類開(kāi)發(fā)了一個(gè)
顯示芯片HD44780U,它有80個(gè)引腳。
這樣我們只需要要把要發(fā)送的東西丟給這個(gè)芯片,它就能控制液晶屏的像素點(diǎn)了,極大的方面了我們的編程工作,形象一點(diǎn)來(lái)說(shuō),這個(gè)顯示芯片其實(shí)充當(dāng)著計(jì)算機(jī)當(dāng)中顯卡的角色。
可以看一下1602屏的背面,這個(gè)大黑點(diǎn)里面封裝的就是HD4478U芯片。采用這種封裝能節(jié)省成本。
1602上有16個(gè)引腳,它的數(shù)據(jù)引腳有8個(gè)。
通過(guò)這些引腳我們就能控制LCD屏幕了。
因?yàn)橐粔K區(qū)域只有35個(gè)像素,所以它只能顯示數(shù)字、字母和符號(hào)這些簡(jiǎn)單的信息,一共能顯示240個(gè)字符。不能顯示漢字。
這些字符基本上都是通過(guò)ascii碼進(jìn)行編碼的,只需要8位0或者1的排列組合,就能表示這
就能表述這些字符。所以它的數(shù)據(jù)引腳正好也是是8根線。
比如大寫(xiě)字母A的ASCLL碼是0100 0001,那我們只需要讓微控制器的這8個(gè)引腳分別輸出相應(yīng)的高低電平就可以了。
但是我們還沒(méi)有指定這個(gè)大寫(xiě)字母A要發(fā)到哪一塊區(qū)域。
因此HD44780U為每一塊區(qū)域都設(shè)計(jì)了一個(gè)字節(jié)的DRAM(內(nèi)存),這個(gè)DRAM就相當(dāng)于我們現(xiàn)在顯卡的顯存,可以對(duì)比一下,Nvidia最新旗艦顯卡4090顯存是24GB。
而我們這塊顯示芯片一共也才80個(gè)字節(jié)??梢詸M著顯示40個(gè)字符,豎著顯示兩個(gè)字符。所以它可以同時(shí)控制80個(gè)字符。
我們看LCD屏幕一共也才能顯示32個(gè)字符,那這個(gè)芯片為什么能控制80個(gè)字符呢?
因?yàn)檫@個(gè)HD44780U芯片是通用芯片,不單單是用來(lái)控制這一種規(guī)格的屏幕。
如果用來(lái)控制1602的話,它的顯存永遠(yuǎn)都是有48字節(jié)用不到的。
在微控制器給它發(fā)送數(shù)據(jù)之前,都需要先發(fā)送顯存的地址,然后再發(fā)送數(shù)據(jù),這樣數(shù)據(jù)就會(huì)被保存在相應(yīng)的顯存里面。
比如我們想讓第一塊區(qū)域顯示A,就需要先發(fā)送第一塊顯存的地址,然后再發(fā)送A的ASCLL碼。這樣就能在第一塊區(qū)域顯示A了。
這就是我們微控制器的編程思路,因?yàn)橛羞@個(gè)顯示芯片的存在,讓編程變的簡(jiǎn)單了很多。
那這個(gè)顯示芯片又是怎么控制這塊LCD屏幕的呢。
這是HD44780U的引腳分布圖,直接控制液晶像素點(diǎn)的是這些引腳,COM引腳控制橫向像素,SEG引腳控制縱向像素,比如我們控制A這個(gè)字符。就需要這些引腳分別輸出不同的電壓就可以了。
但還有一個(gè)問(wèn)題,就拿第一塊區(qū)域來(lái)說(shuō),這些引腳是沒(méi)辦法同時(shí)控制每一個(gè)像素的。
比如我們控制第一行的時(shí)候,先讓COM端為低電壓。然后再來(lái)控制它的SEG引腳,就能控制第一行的像素了,如果是顯示像素就給這個(gè)引腳高電壓,不顯示就給它低電平。
但在同一時(shí)間就沒(méi)有辦法控制其它行的像素了。因此人們想到了掃描的控制方式,比如先控制第一行像素,然后再來(lái)控制第二行像素,這樣逐行掃描,就能控制所有的像素了。
那這樣我們?nèi)搜鄄痪涂吹剿恢痹趻呙枇藛幔?/p>
當(dāng)然不會(huì)了,這里面運(yùn)用了人眼的視覺(jué)暫留,它的掃描頻率很快,所以我們看到的就是靜止的畫(huà)面。
但還有一個(gè)問(wèn)題,你看它一共有40個(gè)SEG引腳,而一個(gè)字符縱向有5個(gè)像素點(diǎn),這樣的話它就只能控制縱向的8個(gè)區(qū)域,那另一半?yún)^(qū)域怎么控制呢?
剛才我們不是說(shuō)它內(nèi)置了80個(gè)字節(jié)的顯存嗎?那應(yīng)該能控制80個(gè)字符呢?
現(xiàn)在怎么只能控制16個(gè)字符呢?
它確實(shí)能控制80個(gè)字符,但如果超過(guò)16個(gè)字符,就沒(méi)有多余的引腳了,因此就得就得借助驅(qū)動(dòng)電路。
你看這個(gè)1602的背面,除了主控HD44780U之外,還有一個(gè)HD44100H的驅(qū)動(dòng)芯片,它就是來(lái)協(xié)助主控完成另一半的顯示任務(wù)的。
這是它的引腳分布,它正好也有40個(gè)SEG引腳。
把它和主控連到一塊,就可以控制LCD所有的像素了。
主控是通過(guò)串行方式給這個(gè)驅(qū)動(dòng)芯片發(fā)送信息,然后這個(gè)驅(qū)動(dòng)芯片就可以控制它引腳的狀態(tài)了。
現(xiàn)在正好能控制的就是32個(gè)字符個(gè)字符。
如果我們給它再加3塊驅(qū)動(dòng)芯片,然后再換一款能顯示80個(gè)字符的液晶屏,它就能控制80個(gè)字符了。
此時(shí)顯示芯片HD44780U的性能正好被榨干了,就是再讓它多控制一個(gè)像素都是不可能的,因?yàn)榇藭r(shí)的顯存已經(jīng)滿了。
這就是我對(duì)1602屏幕的理解,希望對(duì)你有幫助。
審核編輯:劉清
評(píng)論