36引脚lcd12864

2020-01-15   来源:书摘名言

LCD12864解释
篇一:36引脚lcd12864

RE 为基本指令集与扩充指令集的选择控制位:

RE=1: 扩充指令集动作

RE=0: 基本指令集动作

DL 为选择控制接口:

DL=1: 8-BIT 控制接口

DL=0: 4-BIT 控制接口

G 绘图开关控制位:

G=1 :绘图显示ON

G=0 :绘图显示OFF

在一个指令中不能同时改变“RE”和“DL”位的。

所以要分两次进行定义。

lcd_wcmd(0x34); //扩充指令操作

是先确定“DL”“G”位。

“G”位的改变只能在扩充指令操作中进行。

lcd_wcmd(0x30); //基本指令操作

是再确定“RE”位的。

SR=1允许输入垂直卷动地址

SR=0允许输入IRAM地址

SL=1脱离睡眠模式

SL=0进入睡眠模式

R/L=1右移

R/L=1左移

I/D-bit1:1 读写一个字符后指针+1,且光标+1

0 读写一个字符后指针-1,且光标-1

// S-bit0:1 当写一个字符后,整屏显示左移(N=1)或右移(N=0),以得到光标不动而屏幕移动的效

// S/C-bit3:1 画面平移一个字符位;0 光标平移一个字符位

在仔细研究了上面关于它的 X啊 Y啊 那些坐标的定位啊 写满了哪些地址会自增啊 哪些不会啊 什么的,最后感觉脑袋里有了一种朦胧的概念„„哟西,反正不会弄坏,就先随便写个程序试试。

于是乎,嘀咕嘀咕„„捣鼓捣鼓„„反反复复又弄了一个多小时后,终于摸清了它显示的规律„„

LCD12864实现画图功能的思路:

首先,画图指令属于扩充指令集,要使用这些指令必须在12864初始化之后写命令字(0x34)进入扩充指令集设定状态。

接着要做的事就是指定我们的图片要从哪里写入(即写入的XY坐标,这个是最关键,也是最难理解的部分)。因为我们这里是显示一整个画面的图片,所以我们就从12864的第一个点开始显示。那这个点的坐标是怎么定位的呢?我们往这个点写入数据后,要是接着再写数据,那坐标值会怎样变化呢?首先我们要弄清楚12864究竟是怎么把数据写入到GDRAM(绘图显示RAM)中去的。12864(ST7920驱动芯片)把屏幕分成上下两部分(如上图中把垂直坐标分成了两部分的00~1F)。当我们把坐标值写给LCD后(怎么写后面会说),ST7920控制芯片对LCD屏幕的控制过程可以用下面的图片来表示:(后来发现下面那幅图片有点问题„„它这里在水平坐标上的00到0F,应该理解为是同一面的,也就是在12864上,水平坐标00到0F处于同一面,而不是上下屏的关系,其实大家只要看箭头,明白控制芯片是按什么顺序写GDRAM的就可以了^_^)

如图片上所标注,在向GDRAM中写入要显示的图片时,我们先指定从X:00、Y:00处(也就是第①处)开始写入数据(如何指定后面会说明),我们先在第①处写图形数据(按照图片所标注,第15位在最左边,第0位在最右边,即在写入的时候LCD会先写高位字节,接着再写低位字节),接着LCD会自动把坐标定位到同一行第②处的开头,此时我们可以接着告诉LCD在这里写入图形数据,依此类推,当我们写满16次后,第00行(包括上半屏和下半屏的)就全写满了。那么我们接下去写入数据会出现什么情况呢?答案是LCD又自动从第00行的第①处重新开始写了。这是因为ST7920控制芯片设计出来就这样,在写入的时候它只会在水

平方向(X轴上)地址自增,并且在增加到0F地址之后就会变成00地址从头开始写。从这里我们可以明白,每次写满一行(共16部分)后就必须在程序里人为地把垂直方向(Y轴)的地址加1,不然就会造成只是在同一行重复写入的现象(俺前面试验了好多次都是这个问题)。

依据

datasheet,进行坐标设定的时候首先设垂直地址,接着设定水平地址,这两个指令是连续写 如何在写入的时候定位初始XY坐标呢?入LCD的(就是进入扩充指令集设定状态后,只需要RS引脚置低电平,RW引脚置低电平,接着连续写入上面两个命令,垂直地址在前,列地址在后就可以了),我们先来看看关于设定GDRAM地址的指令:

实验三 LCD12864液晶显示
篇二:36引脚lcd12864

36引脚lcd12864。

实验三 LCD12864液晶显示

摘要:本设计以超低功耗MSP430单片机为微控制器,以4位/8位并行,2线或

3线串行多种接口方式的LCD12864为输出显示器。通过对MSP430单片机进行编程,在LCD12864上显示8×4行16×16点阵的汉字。

关键字:MSP430 LCD12864

目 录

一.方案论证 ................................................................................................................. 4

液晶显示器的论证与选择.............................................................................................. 4

二.LCD12864的工作原理 .............................................................................................. 4

1.引脚功能说明............................................................................................................ 4

LCD12864采用20接口,各引脚接口说明如表3所示:................................................... 4

2. 指令说明 ................................................................................................................. 5

三. 实验框图和电路图 ............................................................................................... 7

1. 系统框图 ................................................................................................................. 7

2. 电路原理图 .............................................................................................................. 7

四. 实验程序设计 ...................................................................................................... 7

五. 系统测试 ............................................................................................................ 11

1. 测试方案 ................................................................................................................ 11

2. 测试结果 ................................................................................................................ 11

3. 测试分析与结论 .....................................................................................................12

一.方案论证

液晶显示器的论证与选择

方案一:采用带中文字库的LCD12864。LCD12864具有4 位/8 位并行、2

线或3 线串行多种接口方式,可以显示8×4 行16×16 点 阵的汉字。也可完成图形显示。低电压低功耗是其一显著特点。

方案二: 采用LCD1602。LCD1602显示内容为16X2,即可以显示两行,每行

16个字符液晶模块,只能显示字符和数字。

通过论证可知LCD12864显示内容多,功能多,低电压低功耗,因此选用方案一。

二.LCD12864的工作原理

1.引脚功能说明

LCD12864采用20接口,各引脚接口说明如表1所示: 表1 引脚说明表

将模块上的J8和“GND”用焊锡短接。

注释2:模块内部接有上电复位电路,因此在不需要经常复位的场合可将该端悬空。

注释3:如背光和模块共用一个电源,可以将模块上的JA、JK用焊锡短接。 2.指令说明

指令表2(RE=0:基本指令)

液晶显示12864
篇三:36引脚lcd12864

事无巨细,LCD12864

次写了

1602的使用,这次来写写LCD12864。

作为绝大多数单片机学习板的液晶显示模块之一,LCD12864功能要比LCD1602要强悍许多。仅仅是1602的两行英文字母,数字和各种符号,严格来说勉强能显示几个中文,是无法满足我们的需求的。当需要显示一些稍微复杂的图形的时候,12864的用处就显现出来了。下面是两个正在工作的LCD12864:

跟1602一样,各种型号的LCD12864在价格,性能,效率上也都是大同小异。据我所知,市场上全新的12864价格在50到80不等,感觉有点贵。不过,如果你要买的话,最好了解清楚它是不是带字库的。什么是字库呢?就是在12864里的CGROM存储器里存放有可调用显示的绝大部分的中文和各种符号。这和我们调用GCC-AVR的各种头文件里的子函数有点类似:如果没有这个头文件,那么你只能自己去编写;同样如果12864没有字库,你也需要自己去编一个字库,只是方式上是通过图形取模软件来转换实现的。建议对自己实力不太自信的朋友购买带字库的LCD12864。

LCD12864,即像素为128*64的显示液晶。它的每一行横向一共有128个可显示点,每一列纵向有64个,这些“点”其实也都是一个个发光二极管。它可以在一个16*16的点阵区域上显示一个中文;也可以在一个8*16的点阵区域显示一个非中文字符,一般称为半宽字体。即一个中文字所占显示面积是一个非中文字符的两倍。

LCD12864其实还有个叫法叫12864图形点阵,看出关键了么?对了,点阵二字。归根结底,它是一个点阵。既然是点阵,那么它的工作原理就和我们以前接触的LED点阵类似。即在要点亮的“点”上赋予正向压降即可。理解这点,对使用12864的图形显示功能有基础作用。 关于LCD12864的引脚结构和功能,并非全部的LCD12864引脚都是一样的。在此无法一一叙述。我们论坛板子的LCD12864接口是20个引脚,并行数据总线的LCD12864。下文我只以这种情况作论述,但是无论何种LCD12864,一通百通。

现在先看看LCD12864的一些内部存储器:

CGROM,Character Generator ROM,字形产生只读存储器,里面存储了供我们调用的中文。注意改存储器只读不写。

HCGROM,Half CGROM,半宽字形产生只读存储器,里面存储了供我们调用的英文,数字以及符号。也一样只读不写。

CGRAM,Character Generator RAM,字形产生随机存储器,12864允许我们自己自定义字符,CGRAM最多可以提高4组16*16的空间供我们存放自定义字符。

DDRAM,Data DisplayRAM,数据显示随机存储器,即用来存放将被显示的字符数据。 ICON RAM,图标随机存储器,用以存储将被显示的图标数据。 GDRAM,GraphicDynamic RAM,动态图形随机存储器,用以存储供显示的图形。

以下是论坛板子的管脚图:

我们要关注的分别是VL,RS,RW,EN,D0~D7,CS1,CS2还有VEE这些管脚:

VL引脚,是偏压信号脚,外接一个10K电位器可以调整LCD的对比度。说法上是偏压信号,其实决定LCD12864对比度的是流入改引脚的电流,所以如果是用AVR板子的ISP或者电脑的USB作为LCD的驱动电源,会得到十分暗淡的显示效果,所以建议用专用5V电源驱动LCD12864。这点要注意。36引脚lcd12864。

RS引脚,寄存器选择功能,当为低电平是选中命令寄存器,反之选中数据寄存器。 RW引脚,读写选择功能,当为低电平时对LCD进行写操作,反之进行读操作。

EN引脚,脉冲信号功能,在负脉冲时将数据从总线写入LCD或将数据从LCD读出总线。 CS1和CS2引脚,分别对应LCD的两个半屏,高电平时对应半屏可用。

注:每一块12864都分为两个半屏,上下两半或者左右两半,制造工艺使然。

读写时序图:36引脚lcd12864。

大家仔细观察后可以惊奇的发现,LCD12864的读写时序和LCD1602的几乎一摸一样!!对的,除了时钟脉冲的正负沿之分,这两块LCD的书写时序完全一致,甚至他们的寄存器控制字都非常相似,这使我不禁想象这两个LCD是不是出自同一人之手。

看到8位并口写时序图:

因为是写时序,所以RW引脚为低电平,根据写命令和写数据之分决定RS引脚的电平,之后给EN引脚一个正脉冲,接着将数据送到8位并口数据线,然后EN一个负脉冲将数据写入LCD12864。读时序与写时序只在RW的电平有唯一区别,对比一看便知。

值得一提的是,在每一次向LCD12864写完一个八位字节之后,都要等待12864向数据总线返回一个“忙”或者“闲”的信号,一定要在12864返回“闲”信号之后,才能对12864进行下一次读写。

诸多言语也无法详尽表述,以下附上详细注释的源程序希望不明白的朋友可以仔细把每一

行都看懂,并不是很长(请下载附件)

: LCD 12864.rar (1.31 KB)

有许多值得注意的地方:

1、在12864的初始化过程中,注意功能设定寄存器的设置要写两次,因为“同一指令的动作不能同时改变DL 和RE,需先改变DL再改变RE才能确保设置正确”。 2、要在每次读写12864之前检测忙信号,而不是读写完之后。

3、在读出忙信号之前,要将对应的IO口置为上拉电阻使能的输入模式。

4、注意忙信号读出之后,因为其位于寄存器的最高位,所以要做”按位与”处理将其分离。

5、而读出忙信号之后,在下一次写操作之前,要记得将对应IO改回输出模式。

6、注意12864的第一行到第四行的地址依次分别为:0x80,0x90,0x88,0x98;你可以把12864看做是一个每行可以显示16个16*16的点阵图形,共有两行的LCD,只是它把每一行都平均截成两段,并且第一行截断后分别作为新四行中的第一和第三行,第二行作为新四行的第二和第四行。所以新四行的第一和第三行的地址是相连的,二四行也是相连的。

7、12864每一行可以最多显示8个中文,16个半宽字体。但是,在基本指令状态下,他的起始地址只能以全宽单位定义。即你无法写起始地址为“第1个半宽位置”或者“第3个半宽位置”……那如果一定要在某个半宽位置开始显示呢?笔者只是勉强用空格代替半宽字符实现的。应该有更好的办法,希望各位读者可以找出来。

8、注意器件手册中提供了初始化流程,其中各个步骤直接的延时时间不都相同,要严格达到要求。

9、如果实在不想做忙检测,则请在每一次读写完毕之后调用延时函数,确保LCD处于“闲”的状态。

以上只是粗略说明了LCD12864最基本的用法,但是12864本身是以出色的图形显示甚至是动态图形显示为标榜的。所以大家要在掌握最基本的用法之后,还要深入开拓它的图像显示功能,显示出更好的图形。在此笔者已经成功用之显示任意图片,但是篇幅实在太长无法叙述,有兴趣的朋友可以找我,我愿意分享经验,一起学习探讨。

12864液晶学习笔记
篇四:36引脚lcd12864

学习笔记:12864液晶模块的详细使用

(2012-10-17 09:23:32)

转载▼

标签: 分类:电子学

杂谈

备注:这篇文章是对12864操作的具体介绍,仅限刚接触12864的新手,大神请拍砖,文章写的较散,建议先参考12864手册及控制驱动器ST7920英文手册有个初步理解之后再阅读该篇文章,将会有更深的认识。强烈建议阅读ST7920英文手册,细节内容里面有详细介绍,中文的12864也是从中译过来的。

本文分三个步骤介绍12864的内部资源原理,指令集详细讲解,以及应用例子。

36引脚lcd12864。

对12864的所有操作概括起来有4种:

1)、读忙状态(同时读出指针地址内容),初始化之后每次对12864的读写均要进行忙检测。

2)、写命令:所有的命令可以查看指令表,后续讲解指令的详细用法。写地址也是写指令。

3)、写数据:操作对象有DDRAM、CGRAM、GDRAM。

4)、读数据:操作对象也是DDRAM、CGRAM、GDRAM。

对12864的学习首相要了解其内部资源,知道了它里面有哪些东西,你就可以更加方便的使用它。

先介绍几个英文的名字:

DDRAM:(Data Display Ram),数据显示RAM,往里面写啥,屏幕就会显示啥。

CGROM:(Character Generation ROM),字符发生ROM。里面存储了中文汉字的字模,也称作中文字库,编码方式有GB2312(中文简体)和BIG5(中文繁体)。笔者使用的是育松电子的QC12864B,讲解以此为例。

CGRAM:(Character Generation RAM),字符发生RAM,,12864内部提供了64×2B的CGRAM,可用于用户自定义4个16×16字符,每个字符占用32个字节。

GDRAM:(Graphic Display RAM):图形显示RAM,这一块区域用于绘图,往里面写啥,屏幕就会显示啥,它与DDRAM的区别在于,往DDRAM中写的数据是字符的编码,字符的显示先是在CGROM

中找到

字模,然后映射到屏幕上,而往GDRAM中写的数据时图形的点阵信息,每个点用1bit来保存其显示与否。

HCGROM:(Half height Character Generation ROM):半宽字符发生器,就是字母与数字,也就是ASCII码。

至于ICON RAM(IRAM):貌似市场上的12864没有该项功能,笔者也没有找到它的应用资料,所以不作介绍。

下面就围绕着上面列举的这列资源展开对12864的讲解:

DDRAM:

笔者使用的这块12864内部有4行×32字节的DDRAM空间。但是某一时刻,屏幕只能显示2行×32字节的空间,那么剩余的这些空间呢?它们可以用于缓存,在实现卷屏显示时这些空间就派上用场了。 DDRAM结构如下所示:

80H、81H、82H、83H、84H、85H、86H、87H、88H、89H、8AH、8BH、8CH、8DH、8EH、8FH

90H、91H、92H、93H、94H、95H、96H、97H、98H、99H、9AH、9BH、9CH、9DH、9EH、9FH

A0H、A1H、A2H、A3H、A4H、A5H、A6H、A7H、A8H、A9H、AAH、ABH、ACH、ADH、AEH、AFH

B0H、B1H、B2H、B3H、B4H、B5H、B6H、B7H、B8H、B9H、BAH、BBH、BCH、BDH、BEH、BFH

地址与屏幕显示对应关系如下:

第一行:80H、81H、82H、83H、84H、85H、86H、87H

第二行:90H、91H、92H、93H、94H、95H、96H、97H

第三行:88H、89H、8AH、8BH、8CH、8DH、8EH、8FH

第四行:98H、99H、9AH、9BH、9CH、9DH、9EH、9FH

说明:红色部分的数据归上半屏显示,绿色部分的数据归下半屏显示。一般我们用于显示字符使用的是上面两行的空间,也就是80H~8FH,2个字节,也就是1个字,所以可以用于存储字符编码的空间总共是128字节。因为每个汉字的编码是2个字节,所以每个地址需要使用2个字节来存储一个汉字。当然如果将2个字节拆开来使用也可以,那就是显示2个半宽字符。

DDRAM内部存储的数据是字符的编码,可以写入的编码有ASCII码、GB2312码、BIG5码。笔者使用的12864字库貌似不太全,字符“数”都无法显示,而是显示其他字符。如果显示长篇汉字文章就不太适合吧。 DDRAM数据读写:

所有的数据读写都是先送地址,然后进行读写。对DDRAM写数据时,确保在基本指令集下(使用指令0x30开启),然后写入地址,之后连续写入两个字节的数据。读数据时,在基本指令集下先写地址,然后假读一次,之后再连续读2个字节的数据,读完之后地址指针自动加一,跳到下一个字,若需要读下一个字的内容,只需再执行连续读2个字节的数据。这里的假读需要注意,不光是读CGRAM需要假读,读其他的GDRAM、DDRAM都需要先假读一次,之后的读才是真读,假读就是读一次数据,但不存储该数据,也就是说送地址之后第一次读的数据时错误的,之后的数据才是正确的。(dummy为假读)

关于编码在DDRAM中的存储需要说明事项如下:

1)、每次对DDRAM的操作单位是一个字,也就是2个字节,当往DDRAM写入数据时,首先写地址,然后连续送入2个字节的数据,先送高字节数据,再送低字节数据。读数据时也是如此,先写地址,然后读出高字节数据,再读出低字节数据(读数据时注意先假读一次)。

2)、显示ASCII码半宽字符时,往每个地址送入2个字节的ASCII编码,对应屏幕上的位置就会显示2个半宽字符,左边的为高字节字符,右边的为低字节字符。

3)、显示汉字时,汉字编码的2个字节必须存储在同一地址空间中,不能分开放在2个地址存放,否则显示的就不是你想要的字符。每个字中的2个字节自动结合查找字模并显示字符。所以,如果我们往一个地址中写入的是一个汉字的2字节编码就会正确显示该字符,编码高字节存放在前一地址低字节,编码低字节存放在后一地址高字节,显然他们就不会结合查找字模,而是与各地址相应字节结合查找字模。

36引脚lcd12864

http://m.myl5520.com/mingrenmingyan/100637.html

展开更多 50 %)
分享

热门关注

14岁儿子摸爸爸的小鸡鸡该说什么

书摘名言

能让人感动的想对老师说的真心话

书摘名言

cad天井平面图怎么表示

书摘名言

吕氏春秋,卷十二,知分

书摘名言

国际展会承办的意义

书摘名言

新形势下学校德育面临的挑战和出路研究

书摘名言

厦门出入境缴费

书摘名言

荷兰泛航航空公司行李规定

书摘名言

林权证宗地图

书摘名言

十八大以来纪检监察工作新举措

书摘名言