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

原创 2003年11月27日 00:42:00

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

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

作者: Levent S。  翻译:Aweay编码在你开始编码前,你需要了解基本的HD44780控制器指令。下表是来自日立网站上的介绍,为了好理解,我加入了一些额外的信息。InstructionCod...
  • Aweay
  • Aweay
  • 2003年11月27日 00:26
  • 2860

驱动学习笔记--IO端口操作

驱动学习笔记--IO端口操作。
  • faithzzf
  • faithzzf
  • 2016年12月05日 23:09
  • 480

Linux 快速操作IO端口

在嵌入式设备中对GPIO的操作是最基本的操作。一般的做法是写一个单独驱动程序,网上大多数的例子都是这样的。其实linux下面有一个通用的GPIO操作接口,那就是我要介绍的 “/sys/class/gp...
  • a_tu_
  • a_tu_
  • 2015年08月12日 15:09
  • 1898

Linux 对 IO 端口的操作

Linux  对IO端口的操作方法:1)直接使用I/O端口操作函数           1。在设备打开或者驱动模块被加载时,申请I/O端口区域;                    request_...
  • kenxausten
  • kenxausten
  • 2010年09月06日 16:45
  • 1866

如何用C语言操纵AVR的IO端口(以ICCAVR为例):

如何用C语言操纵AVR的IO端口(以ICCAVR为例):    举例一:将PB0定义为输出,且输出为高电平  DDRB=BIT(0);//定义 PB0为输出  PORTB|=BIT(0);//...
  • afgh369
  • afgh369
  • 2013年12月11日 16:05
  • 349

用C#操作IO端口1-用并口控制发光二极管

用C#操作IO端口1-用并口控制发光二极管作者: Levent S.  翻译:Aweay 为什么要写这篇文章,不可否认,用C#编写这类程序不是非常合适的, 相信来CSDN的很多朋友都能用其他语言轻松编...
  • Aweay
  • Aweay
  • 2003年11月07日 01:02
  • 5273

C#关闭显示器,打开显示器

本人公司的显示器有点问题,就是电源开关fgi
  • sunbingzibo
  • sunbingzibo
  • 2014年10月11日 16:48
  • 2023

用C#列举显示器可用设置列表并进行设置

在孟子E章的"孟宪会之精彩世界"里找到一个文章,地址如下:http://dotnet.aspx.cc/article/2l9uxy9l-mdvh-4zi3-hpn1-rpb9kv5z63ym/read...
  • hbxtlhx
  • hbxtlhx
  • 2007年03月15日 16:43
  • 3382

Linux 下IO端口编程访问

以前写的一篇笔记,偶尔翻出来了,放在这里做个纪念 Linux 下IO端口编程访问 这里记录的方法是在用户态访问IO端口,不涉及驱动程序的编写。 首先要包含头文件 /usr/include/asm/i...
  • liyuanbhu
  • liyuanbhu
  • 2014年06月30日 13:21
  • 4960

linux系统中的IO操作

同步IO分为阻塞IO、非阻塞IO、信号驱动的IO和多路转接IO。 阻塞IO: 一直阻塞进程直到完成IO操作。 非阻塞IO: 有数据时进行IO操作,没有数据时立即返回不阻塞进程。 信号驱动IO: 当...
  • c1194758555
  • c1194758555
  • 2016年10月22日 19:39
  • 701
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用C#操作IO端口2-控制液晶/荧光显示器-1
举报原因:
原因补充:

(最多只允许输入30个字)