加入收藏夹
杭州电子计算机工作室 欢迎您! 本站永久域名:http://www.hificat.com   公司简介 || 返回首页 || 汇款须知 || 汇款确认及留言 || English || 论坛

手把手教你使用PIC单片机控制1602液晶屏(C语言版)——站长原创,如需引用请注明出处

    看到这里,我们已经学完了数码管理论与应用,相信你已经可以用它来显示任何数字了吧。下面,我们再来学一下更高层的显示方式——液晶屏显示,与数码管相比,它显得更为专业,漂亮。液晶显示屏以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用,增强型51实验板所配带的是1602型液晶屏,它是工控系统中使用最为广泛的液晶屏之一,相信你学会了对它的控制,那你对其它的液晶屏的控制也能得心应手,毕竟基本原理都差不多。

    1602型液晶屏是一种用5x7点阵图形来显示字符的液晶显示器,根据显示的容量可以分为1行16个字、2行16个字、2行20个字等等,常用的为2行16个字,我们也以此为例来介绍一下相应的编程方法。

    如表2所示,整个液晶屏采用标准的16脚接口,其中VSS为电源地,VDD接5V正电源,V0为液晶显示屏对比度调整端,直接接电源正极时对比度最弱,接地时对比度最高。RS为寄存器选择端,高电平时选择数据寄存器、低电平时选择指令寄存器。RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。E端为使能端,当E端由低电平跳变成高电平时,液晶屏执行命令。D0——D7为8位双向数据线。

编号

符号

引脚说明

与单片机接口

编号

符号

引脚说明

与单片机接口

1

VSS

电源地

9

D2

数据I/O

P1.2

2

VDD

电源正极

10

D3

数据I/O

P1.3

3

V0

液晶显示偏压信号

11

D4

数据I/O

P1.4

4

RS

数据/命令选择端

P3.5

12

D5

数据I/O

P1.5

5

RW

读写选择端

P3.6

13

D6

数据I/O

P1.6

6

E

使能信号

P3.7

14

D7

数据I/O

P1.7

7

D0

数据I/O

P1.0

15

BLA

背光源正极

8

D1

数据I/O

P1.1

16

BLK

背光源负极

表2

液晶屏内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如表3所示,

表3

这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”,如图6所示。


图6

1602型液晶屏内部的控制器共有11条控制指令,如表4所示,

序号

指令

RS

RW

D7

D6

D5

D4

D3

D2

D1

D0

1

清显示

0

0

0

0

0

0

0

0

0

1

2

光标返回

0

0

0

0

0

0

0

0

1

*

3

置输入模式

0

0

0

0

0

0

0

1

I/D

S

4

显示开/关控制

0

0

0

0

0

0

1

D

C

B

5

光标或字符移位

0

0

0

0

0

1

S/C

R/L

*

*

6

置功能

0

0

0

0

1

DL

N

F

*

*

7

置字符发生存储器地址

0

0

0

1

字符发生存储器地址(AGG)

8

置数据存储器地址

0

0

1

显示数据存储器地址(ADD)

9

读忙标志或地址

0

1

BF

计数器地址(AC)

10

写数到CGRAM或DDRAM

1

0

要写的数

11

从CGRAM或DDRAM读数

1

1

读出的数据

表4

它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)

    指令1:清显示,指令码01H,光标复位到地址00H位置。
    指令2:光标复位,光标返回到地址00H。
    指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。
    指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。
    指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。
    指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。
    指令7:字符发生器RAM地址设置。
    指令8:DDRAM地址设置。
    指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。
    指令10:写数据。
    指令11:读数据。

   由于液晶显示屏是个慢显示器件,所以在执行每条指令之前一定要确认液晶屏的“忙标志”为低电平,表示不忙,否则指令失效。要显示字符时要先输入显示字符地址,也就是告诉液晶屏在哪里显示字符,表5是1602型显示屏的内部显示地址.

00

01

02

03

04

05

06

07

08

09

0A

0B

0C

0D

0E

0F

10

27

40

41

42

43

44

45

46

47

48

49

4A

4B

4C

4D

4E

4F

50

67

表5

    比如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?答案是不可以这样,因为从指令表中我们可以看到,写入显示地址时要求最高位D7恒定为高电平1,所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)

以下是在液晶屏的第二行第一个字符的位置显示字母“A”的程序,效果如图6所示:

#include<pic.h>

void _delay_ms(char a) //毫秒级延时子函数
{
unsigned char i,j;
for(i=0;i<a;i++)
for(j=0;j<40;j++);

}

void enable(void) //控制命令的子函数
{
PORTA=PORTA&0xFD;
PORTA=PORTA&0xFB;
PORTA=PORTA&0xF7;
_delay_ms(9);
PORTA=PORTA|0x08;
}

void main()
{
_delay_ms(9); //调用延时子程序
ADCON1=0x07; //设置RA口全部为普通数字IO口
TRISA=0x00; //定义RA口为输出
TRISC=0x00; //定义RC口为输出
_delay_ms(9);
PORTC=0x01; //清屏
enable();
PORTC=0x38; //设置8位2行5x7点阵
enable();
PORTC=0x0F; //设置显示器开、光标开、闪烁开
enable();
PORTC=0x06; //设置文字不动,光标自动右移
enable();
PORTC=0x0C; //设置写入显示起始地址
enable();
PORTC=0x41; //字母"A"的代码
PORTA=PORTA|0x02;
PORTA=PORTA&0xFB;
PORTA=PORTA&0xF7;
_delay_ms(9);
PORTA=PORTA|0x08;

while(1); //while死循环
}



增强型PIC实验的1602液晶显示部分原理图如上所示。PIC单片机芯片与1602液晶屏对应接口如下:

RA1——RS端     RA2——RW端     RA3——E端     RC口——液晶屏数据端

现在我们已经知道如何来显示自己要显示的字符了,可以从表3查表计算后得出。因此,我们可以由此改写出各种各样的显示程序。

    大家可以看到,程序的前半部分主要是完成1602液晶屏的内部初始化及配置工作,和实际显示字符相关的程序代码主要由以下这几句完成:

PORTC=0x41; //字母"A"的代码
PORTA=PORTA|0x02;
PORTA=PORTA&0xFB;
PORTA=PORTA&0xF7;
_delay_ms(9);
PORTA=PORTA|0x08;

    因此,我们要更改液晶显示内容,也可以从这几句话来下手,讲到这里,相信你对其显示原理已经有所了解了,可以自己发挥自己的想象来修改一下程序代码,看看显示结果会有什么变化,有没有达到你所需要的目标。

    左图中,更改显示部分程序代码后,1602液晶屏分两行显示本站网址URL和联系电话的实验实例。

以下是部分实验源程序演示实验视频录像

增强型PIC实验板1602LCD液晶显示实验演示录像之一

>>>点击此处下载RM视频文件 ——2007年02月21日 制作加入


增强型PIC实验板1602LCD液晶显示实验演示录像之二

>>>点击此处下载RM视频文件 ——2007年02月21日 制作加入

nike mercurialnike free runfred perry pololongchamp sacralph lauren poloabercrombie

专业生产 智能家居控制系统 GSM远程遥控开关 串口继电器控制盒 GPRS MODEM 单片机开发板 电子制作散件套件
我们专注于智能家居控制系统,GPRS数据采集系统,物联网智能控制方向 晶控电子----让我们的生活更美好 品质更卓越 生活更智能
联系地址:浙江省杭州市登云路428号 浙江时代电子市场4楼852室 邮政编码:310011 Email:hificat@163.com
电话:0571-88009850 56789853 销售:1号线  技术支持:2号线  传真:3号线 智能家居:4号线 代理招商:5号线
销售QQ:1198450005 销售咨询 技术QQ-1:1275636157 技术咨询 技术QQ-2:420951892 技术咨询
杭州晶控电子有限公司 版权所有 2003-2012 HANGZHOU KinCony ELECTRONICS CO.,LTD 网站备案:浙ICP备11001927号