用C#操作IO端口2-控制液晶/熒光顯示器-1

C#操作IO端口2-控制液晶/熒光顯示器<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

作者: Levent S。  翻譯:Aweay

 

題外話

上面文章發表之後,很多朋友都說這太簡單了,還以爲使用c#來編寫代碼完成IO操作呢,不就是調用現有DLL嗎?相反這篇文章在Codeproject上卻得到了所有讀者的厚愛(得分4。82分,這個分數還在升高),不知道這是不是外國程序員都比中國程序員的水平低呢?好了閒話少說,開始本次的討論:

 

演示下載

源代碼下載

完成後的演示圖片:

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />CSDN_Dev_Image_2003-11-241636290.jpg

什麼是LCD? 它是做什麼用的?

不要害怕, 我不會像其他文章那樣給你上一堂歷史課,而是告訴你爲什麼從LCD(Liquid Crystal Displays, 液晶顯示器)被髮明至今我仍然在使用LCD? 起初我們使用LED(發光二極管), 到了70時代就出現了我們現在使用的LCD, LCD的最大特點就是它不僅可以顯示數字, 還可以顯示字符和各種各樣的符號。 點擊這裏查看基於LCD的數據表,這些數據表給出了LCD的規格信息。 LCD有一個HD44780(日立)兼容的KS0066U控制器, 三星生產這樣的控制器, 如果你對電子原材料感興趣可以到這裏下載控制器信息。這裏的控制器不像今天的圖形LCD的控制器那麼複雜, 但它同樣被廣泛用於商業/工業產品中。

再讓我們來解釋一下什麼是VFD, VFD(Vacuum Fluorescent Displays, 真空熒光顯示器)非常的類似於LCD。 它們通常被用於微波和便攜計算器中。這裏有一幅VFD的圖片。關鍵在於HD44780控制器同樣適用於VFD。 與LCD相比, 我更喜歡VFD, 因爲它比LCD更亮一些, 當然VFD也更昂貴一些, 在我的這篇文章裏以LCD爲例。

LCD是什麼樣子呢? 在我的文章裏使用2x16的LCD, 就像上面的圖像顯示的那樣。 還用很多其他類型的LCD, 比如: 1x8, 2x8, 1x16, 2x20, 1x40等, 不同的LCD也有不同供應商。如果你需要大於80字符的LCD, 你可以使用2個控制器。 我不再討論任何關於LCD結構的信息, 如果你想了解這方面知識, 可以查閱如下地址:

l          三星的LCD結構和類型

l          夏普的LCD技術原理

LCD的連接

大部分的LCD都有14根連線, 他們是D0-D7(數據線), E(使能信號), R/W(讀寫信號), RS(寄存器選擇), Vee或者Vo(對比度), Vdd或者Vcc(+5伏電源), Vss(地線)。 因此對於一個標準的無背光LCD有8條數據線, 3條電源線和3條控制線。 如果LCD擁有背光, 則需要附加2條線,分別是(VB+)和(VB-或者地線), 下面有一個表格列舉裏這些針腳的定義:

標準LCD針腳排布 (Character number <80)

Pin

Symbol/Alternate Symbol

Possibility

Function

1

Vss

-

Power supply (GND)

2

Vdd/Vcc

-

Power supply (+5V)

3

Vee/Vo

-

Contrast adjust

4

RS

0/1

0 = Instruction input / 1 = Data input

5

R/W

0/1

0 = Write to LCD module / 1 = Read from LCD module

6

E

1, 1-->0

Enable signal

7

DB0

0/1

Data pin 0

8

DB1

0/1

Data pin 1

9

DB2

0/1

Data pin 2

10

DB3

0/1

Data pin 3

11

DB4

0/1

Data pin 4

12

DB5

0/1

Data pin 5

13

DB6

0/1

Data pin 6

14

DB7

0/1

Data pin 7

If your LCD has more than 80 characters (like 4x40)

15

E2

1, 1->0

Enable signal row 2 & 3

16

 

 

Not used mostly

這是LCD的背面:

HY1602B (Hyper 1602B) with KS0065 controller (compatible with HD44780) and backlight。

CSDN_Dev_Image_2003-11-241636292.jpg

1602-04 with KS0066U controller (compatible with HD44780) and backlight。

CSDN_Dev_Image_2003-11-241636294.jpg

上面是2個不同的具有背光的LCD(背面), 他們都擁有第15/16條引線。

針腳引線

根據上面的表格, 我把第一針(Vss), 第二(Vdd/Vo), 第三(Vee/Vo)叫做電源接線。第一根是地線,你必須把他接到地上;第二根是+5V的電源線。在我的程序裏使用機箱內的IDE電源接口線提供電壓。第三根線是LCD對比對的調整,我使用一個電壓計來改變LCD的對比度。

Pin4(RS),5(R/W),6(E)是用來控制LCD的。Pin4是選擇寄存器,如果該針是低電平,則LCD通過發送命令可以感知到數據;如果是高電平,則LCD可以發送或者接收8/4位的字符數據。Pin5讀寫線,如果該針是低電平,你可以向LCD寫字符,如果是高電平你可以讀取字符數據或者狀態信息。在我的程序裏,沒有任何讀取的操作,所以我把它接地保持低電平。Pin6是保護,它被用於初始化在LCD這數據針腳間進行實際的命令或者數據交換。

8條線是數據線,可以從LCD傳輸或者獲取數據,每次8位或者4位。在我的程序裏使用8位傳輸模式,因爲我是使用並行口,所以他本來就可以使用8位的數據線。

這兩根針是爲了LCD的背光設計的,背光非常適合於用在昏暗的環境,我們經常可以看到多種背光顏色的LCD。

電路

我們的電路到底需要一些什麼東西呢?下面的表格就是了:

No:

描述

1。

與HD44780兼容的並行端口的LCD

2。

一般的並口打印機電纜

3。

Normal twin power cable

4。

10 way housing and the PCB header

5。

6 way housing and the PCB header

6。

IDE接口

7。

16終端的的PCB

8。

數字萬用表

9。

花點功夫編寫我的程序:)

*

10K的電壓計

 

電路圖(電壓計)

 

電路圖(無壓計) 

如果你的連接正確,將會得到下面這樣的顯示:

 

 

<未完> 由於CSDN文章系統好像不能放下太多的內容, 沒有辦法我斷開了...

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章