首页 理论教育 12864LCD的扫描硬件原理及12864液晶的管脚描述

12864LCD的扫描硬件原理及12864液晶的管脚描述

时间:2023-11-23 理论教育 版权反馈
【摘要】:图7.204×4矩阵键盘键值扫描硬件原理图12864LCD是一种经常应用于单片机系统中的显示器件,它由128×64个点构成。表7.2RS、RW描述表7.3是12864液晶的管脚号和管脚描述。表7.312864液晶的管脚号和管脚描述续表注释1:如在实际应用中仅适用并口通信模式,可将PSB接固定高电平。液晶屏幕可显示写入该RAM的信息。其实编程的实现就是写入地址,然后连续写入32个字节的数据。

12864LCD的扫描硬件原理及12864液晶的管脚描述

本实例中要用到4×4键盘,系统需要完成4×4键盘的扫描,确定有键按下后需要获取其键值,根据预先存放的键值表,逐个进行对比,从而进行按键的识别,并将相应的按键值进行显示。

键盘扫描的实现过程如下:对于4×4键盘,通常连接为4行、4列,因此要识别按键,只需要知道是哪一行和哪一列即可,为了完成这一识别过程,首先输出4列中的第一列为低电平,其他列为高电平,读取行值;然后再输出4列中的第二列为低电平,读取行值,以此类推,不断循环。系统在读取行值的时候会自动判断,如果读进来的行值全部为高电平,则说明没有按键按下,如果读进来的行值不全为高电平,则说明键盘该列中必定有至少一个按键按下,读取此时的行值和当前的列值,即可判断到当前的按键位置。获取到行值和列值以后,组合成一个8位数据的编码,根据得到的编码再对每个按键进行匹配,找到键值后在液晶上显示。4×4矩阵键盘扫描的硬件原理图如图7.20所示。

本实例中使用反转法读取键盘值,首先将列线作为输出线,行线作为输入线。置输出线全部为0,此时行线中呈低电平0的为按键所在行,如果全部都不是0,则没有按键按下。其次将第一步反过来,即将行线作为输出线,列线作为输入线。置输出线全部为0,此时列线呈低电平的为按键所在的列。这样,就可以确定了按键的位置(X,Y),当然还要注意软件去抖动。

图7.20 4×4矩阵键盘键值扫描硬件原理图

12864LCD是一种经常应用于单片机系统中的显示器件,它由128×64个点构成。由于12864液晶屏可以显示128×64个像素点阵,因此,这种液晶屏常用来显示一些图形,或者显示一些字体较为复杂的文字,比如中文。

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

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

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

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

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

RS、RW描述见表7.2。

表7.2 RS、RW描述

表7.3是12864液晶的管脚号和管脚描述。

表7.3 12864液晶的管脚号和管脚描述

续表

注释1:如在实际应用中仅适用并口通信模式,可将PSB接固定高电平。
注释2:模块内部接有上电复位电路,因此在不需要经常复位的场合可将该端悬空。
注释3:如背光和模块共用一个电源,可以将模块上的JA、JK用焊锡短接。

对12864的学习首先要了解其内部资源,知道了它的内部结构,就可以更加方便地使用它。先介绍几个英文名词:

DDRAM(Data Display Ram):数据显示RAM。液晶屏幕可显示写入该RAM的信息。

CGROM(Character Generation ROM):字符发生ROM。里面存储了中文汉字的字模,也称作中文字库,编码方式有GB2312(中文简体)和BIG5(中文繁体)。(www.xing528.com)

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

GDRAM(Graphic Display RAM):图形显示RAM,这一块区域用于绘图。液晶屏幕可显示写入该RAM的信息,它与DDRAM的区别在于,往DDRAM中写的数据是字符的编码,字符的显示先是在CGROM中找到字模,然后映射到屏幕上,而往GDRAM中写的数据是图形的点阵信息,每个点用1 bit来保存其显示与否。

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

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。

(1)DDRAM数据读写

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

(2)CGRAM数据读写

CGRAM读写之前先写地址,写CGRAM的指令为0x40+地址。但是写地址时只需要写第一行的地址,例如第一个字符就是0x40+00H,然后连续写入2个字节的数据,之后地址指针会自动加1,跳到下一行的地址,然后再写入2个字节的数据。其实编程的实现就是写入地址,然后连续写入32个字节的数据。读数据也是先写首地址,然后假读一次,接着连续读32个字节的数据。

(3)GDRAM的读写

首先说明对GDRAM的操作基本单位是一个字,也就是2个字节,就是说读写GDRAM时一次最少写2个字节,一次最少读2个字节。

写数据:先开启扩展指令集(0x36),然后送地址,这里的地址与DDRAM中的地址略有不同,DDRAM中的地址只有一个,那就是字地址。而GDRAM中的地址有2个,分别是字地址(列地址/水平地址X)和位地址(行地址/垂直地址Y),表7.3中的垂直地址就是00H~31H,水平地址就是00H~15H,写地址时先写垂直地址(行地址)再写水平地址(列地址),也就是连续写入两个地址,然后再连续写入2个字节的数据。表7.3左边为高字节右边为低字节。为1的点被描黑,为0的点则显示空白。这里列举个写地址的例子:写GDRAM地址指令是0x80+地址。被加上的地址就是上面列举的X和Y,假设我们要写第一行的2个字节,那么写入地址就是0x00H(写行地址)然后是0x80H(写列地址),之后才连续写入2个字节的数据(先高字节后低字节)。再如写屏幕右下角的2个字节,先写行地址0x9F(0x80+32),再写列地址0x8F(0x80+15),然后连续写入2个字节的数据。编程中写地址函数直接用参数(0x+32),而不必自己相加。

读数据:先开启扩展指令集,然后写行地址、写列地址,假读一次,再连续读2字节的数据(先高字节后低字节)。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈