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

类别:.NET开发 点击:0 评论:0 推荐:

C#操作IO端口2-控制液晶/荧光显示器

作者: Levent S。  翻译:Aweay

 

题外话

上面文章发表之后,很多朋友都说这太简单了,还以为使用c#来编写代码完成IO操作呢,不就是调用现有DLL吗?相反这篇文章在Codeproject上却得到了所有读者的厚爱(得分4。82分,这个分数还在升高),不知道这是不是外国程序员都比中国程序员的水平低呢?好了闲话少说,开始本次的讨论:

 

演示下载

源代码下载

完成后的演示图片:

什么是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。

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

上面是2个不同的具有背光的LCD(背面), 他们都拥有第15/16条引线。

针脚引线

123

根据上面的表格, 我把第一针(Vss), 第二(Vdd/Vo), 第三(Vee/Vo)叫做电源接线。第一根是地线,你必须把他接到地上;第二根是+5V的电源线。在我的程序里使用机箱内的IDE电源接口线提供电压。第三根线是LCD对比对的调整,我使用一个电压计来改变LCD的对比度。

456

Pin4(RS),5(R/W),6(E)是用来控制LCD的。Pin4是选择寄存器,如果该针是低电平,则LCD通过发送命令可以感知到数据;如果是高电平,则LCD可以发送或者接收8/4位的字符数据。Pin5读写线,如果该针是低电平,你可以向LCD写字符,如果是高电平你可以读取字符数据或者状态信息。在我的程序里,没有任何读取的操作,所以我把它接地保持低电平。Pin6是保护,它被用于初始化在LCD这数据针脚间进行实际的命令或者数据交换。

7891011121314

8条线是数据线,可以从LCD传输或者获取数据,每次8位或者4位。在我的程序里使用8位传输模式,因为我是使用并行口,所以他本来就可以使用8位的数据线。

1516

这两根针是为了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文章系统好像不能放下太多的内容, 没有办法我断开了...

本文地址:http://com.8s8s.com/it/it45269.htm