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