产品动态
全国统一服务热线:
15382323032
客服QQ:3234659108
手机:15382323032
地址:浙江省杭州市西湖区文一西路830号蒋村商务中心B楼2-8007室
12864液晶模块的介绍
本小节的目录:
8.1,12864液晶模块的简介
8.2,12864液晶模块连接到单片机的原理图
8.3,12864液晶模块时序图的分析以及程序编写
液晶屏是一种非常能给人带来视觉享受的东西!例如上的液晶屏,液晶电视,………,浪漫一点的还有液晶灯,以及迷人的液晶鞋,炫酷的液晶手表等等!但是不管怎么说,还是要先学会使用最简单的液晶吧!
8.1.1)12864液晶模块的简介
比较常用的12864液晶模块有黄绿背光的、蓝色背光的,有带/不带字库的,其控制芯片主要是KS0108、T6863、ST7920等等,这里本人所使用的为ST7920为控制芯片的JX12864K1液晶屏。但是不管用什么类型的12864,其使用操作都大同小异!当然,如果你会使用1602了,那么12864的使用也会变得事半功倍!
1)关于12864液晶模块的说明:
1,可显示出汉字以及图形,内置有8192个中文汉字(16X16点阵)、128个字符(8X16点阵)以及64X256点阵显示RAM(GDRAM),显然是要比1602高级!
2,可以选择8位并行或者是4位串行的操作
3,可以显示出128列× 64行的内容,可以实现文字与图形混合显示功能、可以自由的去设置光标、显示移位功能、垂直画面旋转功能、反白显示功能、休眠模式等等
图1 12864液晶模块实物图
2)12864液晶接口的说明:
图2 12864的液晶接口图
简介上图:
1,引脚3(VL):一般接一个103的电位器,用于调节液晶屏的显示亮度。
2,引脚15(PSB):高电平时选择并口,低电平时选择串口
3,引脚16(NC):空脚即不需要接任何的管脚即可。
3)12864状态字说明
表8-1 状态字的分布表
STA7 D7 |
STA6 D6 |
STA5 D5 |
STA4 D4 |
STA3 D3 |
STA2 D2 |
STA1 D1 |
STA0 D0 |
||
STA0~STA6 | 当前地址指针的数值 | - | |||||||
STA7 | 读/写操作使能 | 1:禁止 0:使能 | |||||||
严格来说,对于控制器在每次进行读写操作之前,都必须要进行一个读写检测,确保STA7是0。也即一般程序之中所谓的判断忙操作。
8.1.2)12864液晶模块的指令说明
表8-2基本的指令表
指令名称 | 指令码 | 指令说明 | |||||||
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | ||
清屏 | L | L | L | L | L | L | L | H |
清屏:1、数据指针清零 2、所有显示清零 |
归位 | L | L | L | L | L | L | H | * | AC = 0,光标、画面回HOME位 |
输入方式 设置 |
L | L | L | L | L | H | ID | S |
ID=1→AC自动增一; ID=0→AC减一 S=1→画面平移; S=0→画面不动 |
显示开 关控制 |
L | L | L | L | H | D | C | B |
D=1→显示开;D=0→显示关 C=1→游标显示;C=0→游标不显示 B=1→游标反白;B=0→光标不反白 |
移位控制 | L | L | L | H | SC | RL | * | * |
SC=1→画面平移一个字符; SC=0→光标 R/L=1→右移;R/L=0→左移 |
功能设定 | L | L | H | DL | * | RE | * | * |
DL=0→8位数据接口; DL=1→4位数据接口 RE=1→扩充指令; RE=0→基本指令 |
设定 CGRAM 地址 |
L | H | A5 | A4 | A3 | A2 | A1 | A0 | 设定CGRAM地址到地址计数器(AC),AC范围为00H~3FH需确认扩充指令中SR=0 |
设定 DDRAM 地址 |
H | L | A5 | A4 | A3 | A2 | A1 | A0 |
设定DDRAM地址计数器(AC) 第一行AC范围:80H~8FH 第二行AC范围:90H~9FH |
表8-3扩充指令表
指令名称 | 指令码 | 指令说明 | |||||||
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | ||
待命模式 | L | L | L | L | L | L | L | H | 进入待命模式后,其他指令都可以结束待命模式 |
卷动 RAM 地址选择 |
L | L | L | L | L | L | H | SR |
SR=1→允许输入垂直卷动地址 SR=0→允许输入IRAM地址(扩充指令)及设定CGRAM地址 |
反白显示 | L | L | L | L | L | H | L | R0 | R0=1→第二行反白;R0=0→第一行反白(与执行次数有关) |
睡眠模式 | L | L | L | L | H | SL | L | L |
D=1→脱离睡眠模式; D=0→进入睡眠模式 |
扩充功能 | L | L | H | DL | * | RE | G | * |
DL=1→8位数据接口; DL=0→4位数据接口 RE=1→扩充指令集; RE=0→基本指令集 G=1→绘图显示开; G=0→绘图显示关; |
设定 IRAM地址 卷动地址 |
L | H | A5 | A4 | A3 | A2 | A1 | A0 |
SR=1→A5~A0为垂直卷动地址 SR=0→A3~A0为IRAM地址 |
设定 绘图RAM 地址 |
H | L | L | L | A3 | A2 | A1 | A0 |
垂直地址范围:AC6~AC0 水平地址范围:AC3~AC0 |
A6 | A5 | A4 | A3 | A2 | A1 | A0 |
8.1.3) 12864显示坐标关系
1)汉字显示坐标
表8-4汉字显示坐标地址表
行名称 | 列地址 | |||||||
第一行 | 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 |
2)绘图坐标分布图
图3 12864液晶绘图显示坐标
水平方向有128个点,垂直方向有64个点,在更改绘图RAM时,由扩充指令设置GDRAM地址,设置顺序为先垂直后水平地址(连续2个字节的数据来定义垂直和水平地址),最后是2个字节的数据给绘图RAM(先高8位,后低8位)。
最后总结一下12864液晶模块绘图的步骤,步骤如下:
1) 关闭图形显示,设置为扩充指令模式。
2) 写垂直地址,分上下半屏,地址范围为:0~31。
3) 写水平地址,两起始地址范围分别为:0x80~0x87(上半屏)、0x88~0x8F(下半屏)。
4) 写数据,一帧数据分两次写,先写高8位,后写低8位。
5) 开图形显示,并设置为基本指令模式。
在此说明一点,也是好多新人模糊的地方。ST7920可控制256*32点阵(32行256列),而12864液晶模块实际的行地址只有0-31行,12864液晶的32-63行是从0-31行的第128列划分出来的。也就是说12864的实质是“256×32”,只是这样的屏“又长又窄”,不适用,所以将后半部分截下来,拼装到下面,因而有了上下两半屏之说。再通俗点说第0行和第32行同属一行,行地址相同;第1行和第33行同属一行,以此类推。
如果还不明白,暂时不需要深究,当会用的时候,自然而然就会明白了!
8.2)12864液晶模块连接单片机原理图
图4 麦光单片机开发板中液晶连接单片机图
有些初学者可能会问? 为什么电路图是这样连接的,读者可以对照上图2即知
接口说明:
1)液晶1、2为电源接口; 19、20为背光电源。
2) 液晶3端为液晶对比度调节端,其中连接一个10KΩ电位器来调节液晶对比度第一次使用时,在液晶上电状态下,调节至液晶上面一行显示出黑色小格为止。
3) 液晶4端为向液晶控制器写数据、命令选择端,接单片机的P3.5口。
4)液晶5端为读、写选择端,接单片机的P3.4口。
5)液晶6端为使能信号端,接单片机的P3.3口。
6)液晶15端为串(L)、并(H)口选择端,接单片机的P3.2口。
7)液晶16、18为空管脚口,在硬件上不做连接。
8)液晶7~14为8位数据端口,依次接单片机的P0口。
8.3,12864液晶模块时序图的分析和程序编写
这里本人只介绍并行操作,串行操作基本留给感兴趣的读者去探索吧!
1) 并行写操作时序图
图5 12864写操作时序图
相信看懂1602的人都很容易知道时序图了,在此不多说
/*************************************************
函数功能: 写命令数据到LCD
入口参数: Cmd
出口参数: void
RS=L; RW=L, E=高脉冲,D0~D7=指令码
**************************************************/
void Write_LCD_Command(Uchar8 Cmd) // 写命令
{
LCD_Busy_Wait(); // 忙检测
LCD_Rs = 0;
LCD_Rw = 0;
LCD_En = 0;
P0 = Cmd;
Delay_1ms(5);
LCD_En = 1;
Delay_1ms(5);
LCD_En = 0;
}
/*************************************************
函数功能: 写数据
入口参数: Data
出口参数: void
RS = H, RW = L, E= 高脉冲, D0~D7= 数据。
*************************************************/
void Write_LCD_Data(Uchar8 Date) // 写数据
{
LCD_Busy_Wait(); // 忙检测
LCD_Rs = 1;
LCD_Rw = 0;
LCD_En = 0;
P0 = Date;
Delay_1ms(5);
LCD_En = 1;
Delay_1ms(5);
LCD_En = 0;
}
以上程序的说明基本跟1602液晶是一样的
/*******************************************************
函数功能:行列(位置)选择,设定显示位置
入口参数:X(行)、Y(列)
出口参数:无
******************************************************/
void lcd_pos(Uchar8 X, Uchar8 Y)
{
Uchar8 pos;
if(X ==1) {X = 0x80;} // 第一行
else if(X == 2) {X = 0x90;} // 第二行
else if(X == 3) {X = 0x88;} // 第三行
else if(X == 4) {X = 0x98;} // 第四行
pos = X+Y;
Write_LCD_Command(pos); // 显示地址
}
由于程序太长,为了更好的编辑,本人已将剩下的程序上传,需看可下载。
本人见过有些程序中没有忙检测也是可以的,但个人一直认为:加上忙检测LCD_Busy_Wait()是非常有必要的,为什么?1,对于电子学习的一种严谨,培养这种意识吧 2,为日后我们使用更大,更复杂液晶的时候避免出现不必要的麻烦呀!3,一颗不严谨,不靠谱的心,如何给女人安全感呀?嘿嘿………..
怎么说液晶也算是有点娇气的东东啦!并且很多液晶价格蛮贵的!还是建议看看杭州精显科技有关于液晶使用注意事项吧:
1.处理
(1)要避免在处理机械振动和对模块施加外力,都可能使屏不显示或损坏。
(2)不能用手或坚硬工具或物体接触、按压、磨擦显示屏,否则屏上的偏光片被物体划坏。
(3)如果屏破裂液晶材料外漏,液晶可以通过空气被吸入,而且要避免液晶与皮肤接触,如果接,触应立即用酒精冲洗,然后再用水彻底冲洗。
(4)不能使用可溶有机体来清洗显示屏。因为这些可溶的溶剂对偏光片不利,清洗显示屏时,可
用棉花蘸少量石油苯轻轻擦拭或用透明胶带粘起脏物。
(5)要防止高压静电产生的放电,将损坏模块中的 CMOS 电路。
(6)不能把模块放在温度高的地方,尤其不能长时间放在湿度大的地方,最好把模块放在温度为
0℃-35℃,湿度低于 70%的环境中。
(7)模块不能贮存在太阳直射的地方。
2.操作
(1)当电源接通时,不能组装或拆卸模块。
(2)在电源电压的偏差、输入电压的偏差及环境温度等最坏条件下,也不能超过最大的额定值,
否则将损坏 LCD 模块。
最新资讯
- 2024-07-05 高亮液晶屏在工业和航空领域的应用
- 2024-07-05 低温环境下工业液晶屏的性能差异分
- 2024-06-25 立煌的LH0255ZJ01条形屏的相关介绍
- 2024-06-14 高温对工业液晶显示屏封装材料的影
- 2024-06-12 京东方MV238FHB-NG0的简介
- 2024-06-12 深入探讨宽屏分辨率的工作原理
- 2024-06-12 深入探讨宽屏分辨率的工作原理
- 2024-06-06 如何选择适合自己的宽屏触摸屏产品
- 2024-06-06 极端环境挑战下超宽温液晶屏的应用
- 2024-06-05 条形屏是如何根据客户的需求来进行